[ TOP | Recently ]

2010-07-06 NetBSD/netwalker #3.1


NetBSD単体でのNetWalkerのbootable SDカードの作成。とりあえず2GのSDカードで試した。

> disklabel -Ii sd1
	(Wしておく)
> disklabel -e sd1
	(以下のように書く)
> disklabel sd1
# /dev/rsd1d:
type: SCSI
disk: SD/MMCReader    
label: fictitious
flags: removable
bytes/sector: 512
sectors/track: 32
tracks/cylinder: 64
sectors/cylinder: 2048
cylinders: 1938
total sectors: 3970048
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0           # microseconds
track-to-track seek: 0  # microseconds
drivedata: 0 

6 partitions:
#        size    offset     fstype [fsize bsize cpg/sgs]
 a:   3970047         1 Linux Ext2      0     0        # (Cyl.      0*-   1938*)
 d:   3970048         0     unused      0     0        # (Cyl.      0 -   1938*)

> newfs_ext2fs -O 1 /dev/rsd1a
/dev/rsd1a: 1938.5MB (3970047 sectors) block size 4096, fragment size 4096
        using 16 block groups of 128.0MB, 32768 blks, 15520 inodes.
super-block backups (for fsck_ext2fs -b #) at:
32768, 98304, 163840, 229376, 294912,

> mount /dev/sd1a /mnt
> mkdir /mnt/boot
> echo /boot/netbsd.bin > /mnt/boot/boot.conf
> cp /usr/src/sys/arch/evbarm/compile/IMX51NETWALKER/netbsd.bin /mnt/boot/netbsd.bin
> umount /mnt

で boot するSDカードができた。(※)
大事な点は、Linux ext2fs の開始 offset を 1 にするのと、newfs_ext2fs -O 1 にしなければならない所。でないとbootしなかった。(内蔵flashから起動してしまう)

/boot/boot.conf に書くファイル名は場所さえ合ってればどこでもいいと思われ。試してないけどELF直接は無理かな

メモ。オリジナルのboot.conf
/boot/zImage quiet noinitrd root=/dev/mmcblk0p1 rw rootfstype=ext2 rootdelay=3 console=ttymxc0,115200

デバッグ用
/boot/zImage debug noinitrd root=/dev/mmcblk0p1 rw rootfstype=ext2 rootdelay=3 console=mxcuart,0x73fbc000,115200

(※)2015-04-24追記
newfsのblocksizeは4096でないとダメのようです。上では偶然4kになってますが、サイズの違うSDカードを使う場合は newfs_ext2fs -O 1 -b 4096 のようにしないといけないので注意。(参考: http://d.hatena.ne.jp/nonakap/20150424 )


EOF