ramdisk.gzの作成
initrd用のRAM DISKを作成します。
landisk:/share/src/kernel# dd if=/dev/zero of=ramdisk bs=1024 count=2048
landisk:/share/src/kernel# mke2fs ramdisk
landisk:/share/src/kernel# mount -o loop ramdisk /mnt
/mnt にinitrdの起動システムを構築します。
/mnt/bin下のコマンドは全てbusyboxを使用しました。
landisk:/share/src/kernel# find /mnt
/mnt
/mnt/lost+found
/mnt/bin
/mnt/bin/cp
/mnt/bin/ln
/mnt/bin/ls
/mnt/bin/mv
/mnt/bin/rm
/mnt/bin/sh
/mnt/bin/ash
/mnt/bin/cat
/mnt/bin/env
/mnt/bin/pwd
/mnt/bin/sed
/mnt/bin/yes
/mnt/bin/echo
/mnt/bin/expr
/mnt/bin/test
/mnt/bin/chgrp
/mnt/bin/chmod
/mnt/bin/chown
/mnt/bin/lsmod
/mnt/bin/mkdir
/mnt/bin/mknod
/mnt/bin/mount
/mnt/bin/rmmod
/mnt/bin/sleep
/mnt/bin/touch
/mnt/bin/modprobe
/mnt/bin/insmod
/mnt/bin/umount
/mnt/bin/busybox
/mnt/busybox.config
/mnt/dev
/mnt/dev/console
/mnt/dev/hda
/mnt/dev/hda1
/mnt/dev/hda2
/mnt/dev/hda3
/mnt/dev/hda4
/mnt/dev/hda5
/mnt/dev/hdb
/mnt/dev/hdb1
/mnt/dev/hdb2
/mnt/dev/hdb3
/mnt/dev/hdb4
/mnt/dev/hdb5
/mnt/dev/sda
/mnt/dev/sda1
/mnt/dev/sda2
/mnt/dev/sda3
/mnt/dev/sda4
/mnt/dev/sda5
/mnt/dev/sdb
/mnt/dev/sdb1
/mnt/dev/sdb2
/mnt/dev/sdb3
/mnt/dev/sdb4
/mnt/dev/sdb5
/mnt/dev/ttySC0
/mnt/dev/ttySC1
/mnt/lib
/mnt/lib/modules
/mnt/lib/modules/ehci-hcd.ko
/mnt/lib/modules/ohci-hcd.ko
/mnt/lib/modules/usb-storage.ko
/mnt/lib/modules/usbcore.ko
/mnt/linuxrc
/mnt/proc
/linuxrc はこの様な物を準備しました。
usb-storage.koをinsmodしてから、デバイスが認識されるまで、sleepで待たせています。
これを行わないと、すぐさまマウントシーケンスに突入してしまい、ハングアップします。
USB1.1のデバイスを接続する場合は、もう少し待ったほうが良いかもしれません。
補足:赤文字の部分は FireWireのデバイスからLinuxをブート を参考にした。
SCSIバス(エミュレーション)のスキャンを行っているらしい。
成功する時と失敗する時があって、なんか不安定なんだよな〜!
#!/bin/sh
export PATH=/bin
mount -nt proc none /proc
insmod /lib/modules/usbcore.ko
sleep 2
insmod /lib/modules/ehci-hcd.ko
sleep 2
insmod /lib/modules/ohci-hcd.ko
sleep 2
insmod /lib/modules/usb-storage.ko
sleep 10
echo "scsi add-single-device 0 0 0" > /proc/scsi/scsi
echo "scsi add-single-device 1 0 0" > /proc/scsi/scsi
echo "scsi add-single-device 2 0 0" > /proc/scsi/scsi
sleep 5
#echo "0x303" > proc/sys/kernel/real-root-dev
umount proc
exit 0
圧縮します。
landisk:/share/src/kernel# umount /mnt
landisk:/share/src/kernel# gzip -9 ramdisk