カーネルパッチ

LS-LGL

あけましておめでとうございます。
本年もぼちぼちマイペースでハックしていきますので、 どうぞよろしくお願いします。

おさらい

EABI で debootstrapをしようとしたところ、 FATAL: kernel too oldといわれた。

too old でないカーネルにするために、まずは カーネルのコンパイル方法を確認した。

ところが、 コンパイルしたカーネルで起動しようとすると initrd で起動 してしまった。

試行錯誤の結果、 /etc/linkstation_release を新しくすればよい ことを見つけ、 無事新しいカーネルで HDD Boot モードで起動するようにできた。

というわけで、カーネルを自分でコンパイルして 起動できるようにはなったので、 次は too old でないカーネルの作成。
「偽」餅屋はいつかボロを出すだろう。

カーネルパッチの構成

LS-LGL のカーネルがベースにしているバージョンは 2.6.12.6 。
以前はバージョンは3桁だったのに、、、浦島太郎。
最初に目的とするバージョンは 2.6.13 。
2.6.12.6 から 2.6.13 へのパッチだろうと patch-2.6.13 を見たら、
2.6.12 から 2.6.13 へのパッチだった。
[yasunari@giga tmp]$ less patch-2.6.13
	:
	:
diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
 VERSION = 2
 PATCHLEVEL = 6
-SUBLEVEL = 12
+SUBLEVEL = 13
 EXTRAVERSION =
 NAME=Woozy Numbat

	:
	:
こういう場合、どうすればいいのだろう???

無理やりパッチ?

2.6.12.6 のソースに patch-2.6.13 をあてる?。
2.6.12.1 ~ 2.6.12.6 の差分が reject するだろう。

2.6.12 まで戻してパッチ?

2.6.12.6 のソースに patch-2.6.12.6 を逆にあて 2.6.12.5 のソースを作り
2.6.12.5 のソースに patch-2.6.12.5 を逆にあて 2.6.12.4 のソースを作り
:
:
2.6.12.1 のソースに patch-2.6.12.1 を逆にあて 2.6.12 のソースを作り
最後に 2.6.12 のソースに patch-2.6.13 をあてる?。
手間はかかりそうだが、reject は少なそう。

lsp2.1.10 の差分を最新カーネルソースに?

そのほか、 オリジナルの 2.6.12.6 と LS-LGL 用のカーネル 2.6.12.6_lsp2.1.10 との差分を
現時点でのオリジナル最新ソース 2.6.23.12 へあてるという手もあるか。

2.6.12 へ

というわけで、無難に(?)2.6.12 まで戻してから 2.6.13 にしてみる。

カーネルソースの展開

LS-LGL のカーネルソース linux-2.6.12_lsp2.1.10.tar.gz を展開する。
[yasunari@giga ls-lgl]$ tar zxvf linux-2.6.12_lsp2.1.10.tar.gz
./linux-feroceon_2_1_10/
./linux-feroceon_2_1_10/buffalo/
	:
	:
[yasunari@giga ls-lgl]$ 

patch-2.6.12.6 を逆にあてる

[yasunari@giga ls-lgl]$ cd linux-feroceon_2_1_10/
[yasunari@giga linux-feroceon_2_1_10]$ zcat ../patch-2.6.12.6.gz | grep '^diff' | wc -l
     58
[yasunari@giga linux-feroceon_2_1_10]$
58 の差分のどれだけが reject することやら。
[yasunari@giga linux-feroceon_2_1_10]$ zcat ../patch-2.6.12.6.gz | patch -R -p1
patching file Makefile
Hunk #1 FAILED at 1.
Hunk #2 FAILED at 1149.
2 out of 2 hunks FAILED -- saving rejects to file Makefile.rej
patching file arch/i386/kernel/cpu/cpufreq/powernow-k8.c
	:
	:
patching file include/linux/if_shaper.h
patching file include/linux/skbuff.h
Hunk #1 succeeded at 1201 (offset 9 lines).
patching file include/linux/zlib.h
	:
	:
patching file security/keys/process_keys.c
[yasunari@giga linux-feroceon_2_1_10]$
reject は Makefile だけ。
[yasunari@giga linux-feroceon_2_1_10]$ cat Makefile.rej
***************
*** 1,7 ****
  VERSION = 2
  PATCHLEVEL = 6
  SUBLEVEL = 12
- EXTRAVERSION = .6
  NAME=Woozy Numbat

  # *DOCUMENTATION*
--- 1,7 ----
  VERSION = 2
  PATCHLEVEL = 6
  SUBLEVEL = 12
+ EXTRAVERSION =
  NAME=Woozy Numbat

  # *DOCUMENTATION*
***************
*** 1149,1155 ****
  #(which is the most common case IMHO) to avoid unneeded clutter in the big tags file.
  #Adding $(srctree) adds about 20M on i386 to the size of the output file!

- ifeq ($(src),$(obj))
  __srctree =
  else
  __srctree = $(srctree)/
--- 1149,1155 ----
  #(which is the most common case IMHO) to avoid unneeded clutter in the big tags file.
  #Adding $(srctree) adds about 20M on i386 to the size of the output file!

+ ifeq ($(KBUILD_OUTPUT),)
  __srctree =
  else
  __srctree = $(srctree)/
[yasunari@giga linux-feroceon_2_1_10]$
1つ目の reject は、、、EXTRAVERSION に -arm がついているから。 reject して当然。
あれ?
patch-2.6.12.6 って、2.6.12.5 から 2.6.12.6 へのパッチだと思ってたのに、 2.6.12 から 2.6.12.6 へのパッチだった。
「偽」餅屋のボロが(汗)

手で修正するが、今後も reject するので -arm は取る。

2つめは、もともと ifeq ($(KBUILD_OUTPUT),) だった。 この差分は、patch-2.6.12.4 に含まれるが、patch-2.6.12.4 が ちゃんとあたっていないみたい。

アーカイブ

スナップショットをアーカイブしておく。
linux-2.6.12_lsp2.1.10.tar.gz というファイル名にしたいが、 Buffalo からダウンロードした 2.6.12.6 が同名なので、 仕方なく linux-2.6.12.0_lsp2.1.10.tar.gz とする。
[yasunari@giga linux-feroceon_2_1_10]$ cd ..
[yasunari@giga ls-lgl]$ tar zcvf linux-2.6.12.0_lsp2.1.10.tar.gz linux-feroceon_2_1_10
linux-feroceon_2_1_10/
linux-feroceon_2_1_10/buffalo/
	:


LS-L250GL
楽天市場
Amazon
Yahoo! ショッピング
Sofmap
TSUKUMO ネットショップ
ValuMore!
ムラウチドットコム
uWorks
パソQ


中の様子を探る(7)HDD Boot にする
ハックの記録
LinkStation/玄箱 をハックしよう

カーネルパッチ(2)2.6.13

Copyright (C) 2003-2007 Yasunari Yamashita. All Rights Reserved.
yasunari @ yamasita.jp 山下康成@京都府向日市