HS-DHGLのカーネル(2.6.22)再構築
BuffaloのLinkStation(HS-DHGL)のカーネルを2.6.22で再構築してみました。
うちのHS-DHGLは新しいやつなので古いやつでも同じようにできるかはわかりません。
とりあえず忘れないように残しておく。クロスコンパイルも暇なときにやってみよう。
カーネルソースの展開ディレクトリを/mntに用意してmount --bind する
/dev/sda2は500Mしかないのでしかたなく/mntで作業することにした。
# mkdir /mnt/usr_src # mount --bind /mnt/usr_src /usr/src
ちなみに fstab に以下を記述しておけば自動でマウントしてくれる
/mnt/usr_src /usr/src none defaults,bind 0 0
mkimage コマンド作成
このコマンドでuImageを作ります。
# cd /usr/src # wget ftp://ftp.denx.de/pub/u-boot/u-boot-1.3.0.tar.bz2 # tar jxf u-boot-1.3.0.tar.bz2 # cd u-boot-1.3.0 # make cp926ejs_config # make tools # cp tools/mkimage /usr/local/sbin/
カーネルソースとコンフィグファイル取得
# cd /usr/src # svn checkout https://linkstationwiki.svn.sourceforge.net/svnroot/linkstationwiki/kernel_arm9/trunk/src/linux-2.6.22/ # svn checkout https://linkstationwiki.svn.sourceforge.net/svnroot/linkstationwiki/kernel_arm9/trunk/configs/ # tar jxf linux-2.6.22.tar.bz2 # cp configs-2.6/linux-2.6.22-config linux-2.6.22/.config
NICのドライバにパッチを当てる
http://forum.nas-central.org/viewtopic.php?p=40839&sid=909fafadf0d7ef3012f97ca9488465cc#p40839
Index: arch/arm/mach-mv88fxx81/LSP/core.c =================================================================== --- arch/arm/mach-mv88fxx81/LSP/core.c (revision 333) +++ arch/arm/mach-mv88fxx81/LSP/core.c (working copy) @@ -924,7 +924,6 @@ memcpy(mvMacAddr, mv_uboot->macAddr, 6); } - memcpy(mvMacAddr, mv_uboot->macAddr, 6); break; } Index: drivers/net/egiga/mv_ethernet_main.c =================================================================== --- drivers/net/egiga/mv_ethernet_main.c (revision 333) +++ drivers/net/egiga/mv_ethernet_main.c (working copy) @@ -2257,7 +2257,7 @@ int i; for (i=0 ; i<6 ; i++) { - if (mvMacAddr[i] != 0) break; + if (mvMacAddr[i] != 0xFF) break; } /* if mvMacAddr is Zero then read from the Port itself */ if (i==6)
このパッチファイルを作るくらいなら手動で編集したほうが早いんでviで編集した。
カーネルビルド
menuconfigで何を設定するかによりますがmakeに2時間くらいかかります。
# cd /usr/src/linux-2.6.22 # make menuconfig # make uImage && make modules
カーネル差し替え
# cd /usr/src/linux-2.6.22 # make modules_install # mv /boot/uImage.buffalo /boot/uImage.buffalo.org # cp arch/arm/boot/uImage /boot/uImage.buffalo
再起動
あとは神に祈るのみ。
起動しなかったらHDDを別のマシンに繋いで /boot/uImage.buffalo.org を /boot/uImage.buffalo に上書きして起動しなおしてください。