APC8750にNetBSD/evbarmを移植するための記録 9/30
2014/01/26(日) 16:13 NetBSD はてブ情報 はてブに登録 はてブ数

さて、シリアルコンソールが動いてroot deviceを指定できるようになったので、/sbin/initを動かしてみたい。とはいえ、etherドライバもないし、SDのドライバもないのでmdデバイスを使ってメモリ上で動かしてみようと思う。512MBもメモリあるし。

conf/APCにoptions MEMORY_DISKシリーズをINSTALLからパクってくる。

ルートファイルシステムイメージのファイルを作る。
dd if=/dev/zero of=rootfs.img bs=12m count=1
vnconfig vnd0 rootfs.img
newfs /dev/rvnd0a
mount /dev/rvnd0a /mnt
イメージファイルの中身はevbarmのbase.tgz, etc.tgzを拾ってきて、sbin/init, bin/sh, dev/MAKEDEVあたりをコピー。
MAKEDEV allしないとpanicするので注意だな。
mdsetimage netbsd rootfs.img
でメモリディスクつきのkernelになる。簡単だね。
ただ、rescue/init, shで動かしてみると、initを実行するところで止まってしまう。
icu: establish_irq: is->is_irq=0x30
icu: unblock: irqbase=0x00000020, irqmask=0x00010000, irq_num=48, reg=0x00000008
rn_init: radix functions require max_keylen be set
boot device: <unknown>
root on md0a dumps on md0b
mountroot: trying nfs...
mountroot: trying msdos...
mountroot: trying ffs...
root file system type: ffs
WARNING: no TOD clock present
WARNING: using filesystem time
WARNING: CHECK AND RESET THE DATE!
init: copying out flags `-s' 3
init: copying out path `/sbin/init' 11
exec /sbin/init: error 2
init: copying out flags `-s' 3
init: copying out path `/sbin/oinit' 12
exec /sbin/oinit: error 2
init: copying out flags `-s' 3
init: copying out path `/sbin/init.bak' 15
exec /sbin/init.bak: error 2
init path (default /sbin/init): /rescue/init
init: copying out flags `-s' 3
init: copying out path `/rescue/init' 13
うーん、どこが変なのかな。資材が足りてないのか、mdsetimageがうまく動いてくれていないのか。initはバイナリをとってきたやつなのでデバッグ文も入れられらないし。

ディスクイメージの作り方ミスだと悲しすぎるのと改造版/sbin/initを作れるようにするためにbuild.sh releaseしよう。ちゃんとしたやり方でINSTALLカーネルが作られるはずだし。

そういや、initはconsoleをopenするのだろうか。まぁ、インストーラは絶対openするだろうからとにかくやってみるかな。

名前:  非公開コメント   

  • TB-URL  http://www.tokuda.net/diary/adiary.cgi/0837/tb/