如何使用qemu模拟器加载built-in进initramfs文件系统的2.6.30.4内核
linux cpio initrd操作浅析如何在android上生成我们自己的ramdisk.img启动系统文件find . | cpio -o -H newc | gzip > ../ramdisk.cpio.gz可直接生成luther@gliethttp:/luther/linux-2.6.30.4$
./scripts/gen_initramfs_list.sh -o initramfs.gz -u 0 -g 0
/vobs/crosscomplie_tootls/busybox-1.14.3/_install/1.安装qemu虚拟器
luther@gliethttp:~$ sudo apt-get install qemu
2.编译busybox
luther@gliethttp:/vobs/crosscomplie_tootls/busybox-1.14.3$ make menuconfig
选择静态编译
luther@gliethttp:/vobs/crosscomplie_tootls/busybox-1.14.3$ make;make install
将examples/bootfloppy/etc/目录拷贝到_install目录下.
最后配置如下:
luther@gliethttp:/vobs/crosscomplie_tootls/busybox-1.14.3/_install$ rm etc/profile
luther@gliethttp:/vobs/crosscomplie_tootls/busybox-1.14.3/_install$ ln -s bin/busybox init 对于initramfs来说,kernel将initramfs内容释放到rootfs,然后执行initramfs中的init启动程序,所以这里建立一个软链接,以使initramfs能够正常工作.
luther@gliethttp:/vobs/crosscomplie_tootls/busybox-1.14.3/_install$ ls
bin dev etc init proc sbin sys
luther@gliethttp:/vobs/crosscomplie_tootls/busybox-1.14.3/_install$ tree dev etc proc sys
dev
`-- console
etc
|-- fstab
|-- init.d
| `-- rcS
`-- inittab
proc
sys
1 directory, 4 files
luther@gliethttp:/vobs/crosscomplie_tootls/busybox-1.14.3/_install$ vim etc/fstab
proc /proc proc defaults 0 0
luther@gliethttp:/vobs/crosscomplie_tootls/busybox-1.14.3/_install$ vim etc/inittab
::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
# tty2::askfirst:-/bin/sh
# ::ctrlaltdel:/bin/umount -a -r
luther@gliethttp:/vobs/crosscomplie_tootls/busybox-1.14.3/_install$ vim etc/init.d/rcS
#! /bin/sh
/bin/mount -a
/bin/mount -t sysfs sysfs /sys
/bin/mount -t tmpfs tmpfs /dev
/bin/mkdir /dev/pts
/bin/mount -t devpts devpts /dev/pts
/sbin/mdev -s # 自动动态创建开发板对应的/dev下设备
/bin/rm /init
3.编译内核
luther@gliethttp:/luther/works/linux-2.6.30.4$ make menuconfig
"General setup" ==>
[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
(/vobs/crosscomplie_tootls/busybox-1.14.3/_install) Initramfs source file(s)
luther@gliethttp:/luther/works/linux-2.6.30.4$ make
4.使用qemu虚拟器运行内核
luther@gliethttp:/luther/works/linux-2.6.30.4$ qemu-img create -f qcow pc.img 1k
luther@gliethttp:/luther/works/linux-2.6.30.4$ qemu -kernel arch/x86/boot/bzImage pc.img
也可以不用创建pc.img
luther@gliethttp:/luther/works/linux-2.6.30.4$ qemu -kernel arch/x86/boot/bzImage /dev/zero
或者
luther@gliethttp:/luther/works/linux-2.6.30.4$ qemu -kernel arch/x86/boot/bzImage /dev/null
效果图如下:
阅读(2312) | 评论(0) | 转发(0) |