(先进到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