Last Update: "2007/11/09 18:47:39 makoto"
NetBSD
NetBSD の起動
libsa/boot
/usr/src/sys/arch/sandpoint/stand/netboot/
で nbmake-sandpoint すると、次のようなものが出来ます。
-rwxr-xr-x 1 makoto wheel 53780 Oct 26 08:47 netboot.bin*
-rwxr-xr-x 1 makoto wheel 65516 Oct 26 08:47 netboot*
これは DHCP/BOOTP と NFS を使って
network boot
するしくみです。
Makefile を見ると分りますが、
RELOC= 1000000
ENTRY= _start
100,0000 番地に置いて DINK32 から go するようなプログラムになっています。
また、現在は、Sandpoint 3X の com 口で 115,200bps の通信をする、という
前提で書かれています。
CPPFLAGS+= -DCONSNAME=\"com\" -DCONSPORT=0x3f8 -DCONSSPEED=115200
#CPPFLAGS+= -DCONSNAME=\"eumb\" -DCONSPORT=0x4600 -DCONSSPEED=115200
例えば dhcp サーバの /etc/dhcpd.conf に次のように書いておき、/etc/rc.d/dhcpd restart しておきます。
host sandpoint { # SandPoint
hardware ethernet 00:00:5b:00:xx:yy;
fixed-address 192.168.1.228;
next-server 192.168.1.210;
filename "netbsd-GENERIC";
option root-path "/export/src/obj/destdir.sandpoint";
}
ここで
hardware ethernet 00:00:5b:00:xx:yy; は予め調べておいた Sandpoint の MAC address,
fixed-address 192.168.1.228 は Sandpoint に割当てる IP address,
next-server 192.168.1.210
はこの後に NFS mount で カーネルを読むための NFS サーバ
のアドレスです。filename の項目は無視されます。
netboot 虫取中
実際には
-
netboot 自体のデバッグ中
-
100,0000 番地に置く方法として、network を使う方法もあるが、DINK32 の
ネットワーク経由の転送は必ずしも
現在安定に動かない
- 代替手段として、
一度別の機械で hard disk に書き、それを IDE 口に差して hard disk から RAM に写し、
場合によっては更に flash に書く
という事情があるため、
patch を当てて、
-
一度 flash に書いた、自己複写方式の netboot プログラムを ff00 0000
から起動
- ff00 0000 から起動すると、自分自身を 110 0000 に写して、制御をそこに移す
- 110 0000 から起動し、NFS でもう一度新しい (netbsd という名前の) netboot を (RELOC= の指定の) 200 0000 に読む
- 200 0000 から 新しい netboot が起動し netbsd.1 を読む
(新しい netboot はカーネルを netbsd ではなくnetbsd.1 という名前で読むというようにしておく)
- netbsd.1 に制御を移す
という二段 netboot 方式を使っています。
最新 patch は dmesg 画面から参照出来ます。
|