(先進到newinitrd/bin下)
#cp /root/busybox-1.6.0/busybox . (這里是我下載的busybux,并編譯了支持ash,一個小型的shell)
#ln -s busybox ash
#ln -s busybox sleep
可以試一下整個newinitrd目錄作為根的效果了:
#cd (回到用戶目錄下)
#chroot newinitrd /bin/ash
BusyBox v1.6.0 (2007-06-12 22:55:20 CST) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
# exit
退出回到原來的bash和原來的根上面。(busybox同樣依賴于ld-linux.so.2和libc.so.6,請參考上面的方法把依賴的庫文件復制到lib目錄下)
第九:修改newinitrd目錄下的init腳本,讓它啟動運行時正確依次加載文件系統支持模塊、scsi支持模塊、scsi-disk支持模塊、usb支持模塊、usb-storage支持模塊、USB1.0/1.1總線驅動、USB2.0總線驅動,并在總線驅動的加載之間延時等待設備連入總線、發現與就序。由于usb驅動需要使用proc文件系統,還要確保先向根掛載了proc文件系統。
#cd ……(回到newinitrd目錄下)
#vi init 開始修改:
以下是我的init文件,請不要直抄而是按你的init的當前情況修改:
#!/bin/nash
mount -t proc /proc /proc (這里是第一個關鍵,有可能有些版本的mkinitrd會把這個mount放在后面,這樣usb模塊的加載有可能就不能正常工作)
setquiet
echo Mounting proc filesystem
echo Mounting sysfs filesystem
mount -t sysfs /sys /sys
echo Creating /dev
mount -o mode=0755 -t tmpfs /dev /dev
mkdir /dev/pts
mount -t devpts -o gid=5,mode=620 /dev/pts /dev/pts
mkdir /dev/shm
mkdir /dev/mapper
echo Creating initial device nodes
mknod /dev/null c 1 3
mknod /dev/zero c 1 5
mknod /dev/systty c 4 0
mknod /dev/tty c 5 0
mknod /dev/console c 5 1
mknod /dev/ptmx c 5 2
mknod /dev/rtc c 10 135
mknod /dev/tty0 c 4 0
mknod /dev/tty1 c 4 1
mknod /dev/tty2 c 4 2
mknod /dev/tty3 c 4 3
mknod /dev/tty4 c 4 4
mknod /dev/tty5 c 4 5
mknod /dev/tty6 c 4 6
mknod /dev/tty7 c 4 7
mknod /dev/tty8 c 4 8
mknod /dev/tty9 c 4 9
mknod /dev/tty10 c 4 10
mknod /dev/tty11 c 4 11
mknod /dev/tty12 c 4 12
mknod /dev/ttyS0 c 4 64
mknod /dev/ttyS1 c 4 65
mknod /dev/ttyS2 c 4 66
mknod /dev/ttyS3 c 4 67
echo Setting up hotplug.
hotplug
echo Creating block device nodes.
mkblkdevs
echo "Loading jbd.ko module" (從這里開始,依次先加載jdb和ext3,文件系統支持)
insmod /lib/jbd.ko
echo "Loading ext3.ko module"
insmod /lib/ext3.ko