晚上稍微有点空,开始编译内核和busybox,我下的内核,原来是写的2.6,但下下来后看到了是3,算了,就先用着吧。
编译内核:
- make ARCH=arm versatile_defconfig
- make ARCH=arm menuconfig //将Kernel Featurer中的EABI选上,不知道做什么用的?
- make ARCH=arm CROSS_COMPILE=arm-linux- all
- 然后在arch/arm/boot中找到zImage,拷贝出来
编译busybox,这个主要是用busybox建一个文件系统:
- make ARCH=arm CROSS_COMPILE=arm-linux- defconfig
- make ARCH=arm CROSS_COMPILE=arm-linux- install
制作文件系统:
- $cd busybox/_install
- $mkdir proc sys dev etc etc/init.d
- $vim etc/init.d/rcS
- #!/bin/sh
- mount -t proc none /proc
- mount -t sysfs none /sys
- /sbin/mdev -s
- 然后将arm-linux-gcc中的armVFP/lib拷贝到_install中,这个是因为编译完的busybox是没有共享链接库的
- $ cd _install
- $ find . | cpio -o --format=newc > ../rootfs.img
- $ cd ..
- $ gzip -c rootfs.img > rootfs.img.gz
测试一把:
qemu-system-arm -M versatilepb -m 128M -kernel zImage -initrd rootfs2.img.gz -nographic -append "root=/dev/ram rdinit=/sbin/init console=ttyAMA0"
成功!
这里我必须加上-nographic和console=ttyAMA0否则通过telnet的方式,什么都不显示,不知是否是我的qemu有点问题。