晚上稍微有點空,開始編譯內核和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有點問題。