カーネル置き場、/dev/fl5 の作成


これまで、実験カーネルを置き換える際、 /dev/fl1 の前部 2MB と kernimg.bin とをくっつけて /dev/fl1 に書いていた。
標準カーネルが入っている前部 2MB を壊すと、 起動できなくなる危険があった。

/dev/fl1 の後ろ 1MB を /dev/fl5 として見えるようにする。
こうすることにより、カーネルの置き換えの際 kernimg.bin を /dev/fl5 に書くだけになり、 より安全に実験カーネルをおくことができるようになる。

ソース修正

drivers/block/flashdisk/flashdisk.c を修正する。
bash-2.04$ diff -c flashdisk.c.orig flashdisk.c
*** flashdisk.c.orig    Wed Jun 23 16:22:10 2004
--- flashdisk.c Sat Jul 17 12:13:25 2004
***************
*** 65,70 ****
--- 65,71 ----
        { 0xFFF00000,  0x70000  , ROM_ON_BORD },
        { 0xFFF70000,  0x10000  , ROM_ON_BORD },
        { 0xFFC00000,  0x400000 , ROM_ON_BORD },
+       { 0xFFE00000,  0x100000 , ROM_ON_BORD },
        { 0xFFF80000,  0x80000  , ROM_MINIPCI },
        { 0xFF800000,  0x600000 , ROM_MINIPCI },
        { 0xFFF00000,  0x80000  , ROM_MINIPCI },
bash-2.04$

コンパイル

make kernimg.bin を実行

fl1 への書き込み

いつものように、
[root@hackkit /root]# cat firmimg.bin.2M kernimg.bin > /dev/fl1
[root@hackkit /root]# cmp firmimg.bin /dev/fl1
cmp: ファイルfirmimg.binの末尾
[root@hackkit /root]# cmp firmimg.bin.2M /dev/fl1
cmp: ファイルfirmimg.bin.2Mの末尾
[root@hackkit /root]#

再起動

上で書いたカーネルを起動する。

******* Product Information *******
----------------------------------
Product Name: KURO-BOX(maru)
          VER: 1.00
         Date: 2004/7/10 15:6:33
----------------------------------
Firmware check:done.

>>root=/dev/hda12
second kernel

******* Product Information *******
----------------------------------
Product Name: KURO-BOX(ni)
          VER: 1.02
         Date: 2004/7/17 12:50:53
----------------------------------
Firmware check:Warning:invalid data size
done.

>>root=/dev/hda1
Now Loading...done.
Now Booting
Memory BAT mapping: BAT2=64Mb, BAT3=0Mb, residual: 0Mb
Linux version 2.4.17_kuro-box (yasunari@hackkit) (gcc version 2.95.3 20010315 (release/franzo/20010312)) #2 Sat Jul 17 12:18:35 JST 2004
KURO-BOX (C) 2004 KUROUTO-SHIKOU.
	:
	:
Vine Linux 2.6 (La Fleur de Bouard)
Kernel 2.4.17_mvl21-sandpoint on a ppc

hackkit login: 

確認

意図どおりになったかを確認する。

デバイスの作成

/dev/fl5 を作成する。
[root@hackkit /root]# mknod /dev/fl5 b 250 5

比較

[root@hackkit /root]# cmp kernimg.bin /dev/fl5
cmp: ファイルkernimg.binの末尾
念のため、もう一度書き込んで確認する。
[root@hackkit /root]# cat  kernimg.bin > /dev/fl5
[root@hackkit /root]# cmp kernimg.bin /dev/fl5
cmp: ファイルkernimg.binの末尾

よーし。これで、カーネルを作り直しても、

# cat kernimg.bin > /dev/fl5
だけで更新できるようになった。
ハックの記録 → カーネル 2.4.18 化

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