qemu busybox模拟Linux启动

    今天做一个实验,蛋蛋都碎了,最后发现问题出

1)在了 qemu 上面,在这里我着重强调一点:能找到软件包就不要用源下的软件,源下的软件版本太低了,且安装的时候不是由你说了算。。。比如安装qemu时,如果用源 apt-get install 安装的话,安装的为1.0版本,且没有安装 KVM 的!导致了之后一连串的悲剧。。

2)编译内核源。。。(这个泪流满面唉)

闲话少说,看看步骤:

步骤一:准备安装qemu模拟器

1:在 http://wiki.qemu.org/Download 下载qemu版本    qemu-1.4.2.tar.bz2

2:解压 tar vxf qemu-1.4.2.tar.bz2   (这里有一个技巧,我常常记不清 用 jvxf 还是 zvxf  ,索性可以不写,系统会帮我们判断的^_^)

3:依次输入如下命令

./config

make                  (时间会很久哦)

make install

( 注意:可能会出现的错误:

a 、用make 命令会报一个错误  ./autogen.sh:4:autoreconf:not found   这是由于缺失了一个automake工具的缘故,解决方案:

sudo apt-get install autoconf automake libtool

b、在之后的运行qemu阶段,有可能还会报

VNC server running on `127.0.0.1:5900'

需要安装libsdl 开发库,然后再重新编译安装 QEMU。在 Debian lenny下:

            sudoapt-get install libsdl1.2-dev

其中 SDL 是 Simple DirectMediaLayer 的缩写。它是一个跨平台的多媒体库,它通过 OpenGL 和 2D 音频帧缓冲对音频,键盘,鼠标,游戏杆,3D硬件进行底层访问。


步骤二:下载并编译内核

1 到mirrors.ustc.edu.cn 下载相关的内核镜像并解压

2 我们采用i386的缺省编译
make -j4 i386_defconfig

make -j4

(在这里,我用这样编译的内核没有成功,后来我采用了全编译,编译时间不算,主要是找到这个错误花了好多时间,蛋蛋真碎了一地)


步骤三:安装busybox

(1)下载busybox 源码
到http://www.busybox.net/下载合适的busybox源码,我下载的是busybox-1.20.0.tar.bz2,拷贝到$KERNEL目录,输入命令解压

tar -xf busybox-1.20.0.tar.bz2

(2)编译busybox

make defconfig
make menuconfig
(注sudo apt-get install libncurses5-dev libncurses5-dbg libncurses5   (执行make menuconfig需要的库))

因为Linux运行环境当中是不带动态库的,所以必须以静态方式来编译BusyBox。修改

Busybox Settings --->
    Build Options --->
         [*] Build BusyBox as a static binary(no shared libs)

make 
make install

编译过程当中可能遇到

inetd.c:(.text.prepare_socket_fd+0x8a): undefined reference to `bindresvport'

make menuconfig
去掉不需要的功能,其它模块编译错误做法类似

Networking Utilities --->
    [ ] inetd

步骤四:准备跟文件系统

1)在你自己的目录下(随便哪个目录都行)

dd if=/dev/zero of=busyboxinitrd4M.img bs=4096 count=1024   //说明见http://blog.csdn.net/zhaowenchaofang/article/details/9138691
mkfs.ext3 busyboxinitrd4M.img             //说明见 http://blog.csdn.net/zhaowenchaofang/article/details/9138895
mkdir rootfs
sudo mount -o loop busyboxinitrd4M.img rootfs/
2)在busybox目录下输入如下命令

make CONFIG_PREFIX=(你自己的rootfs路径)/rootfs/ install

例如我的是

make CONFIG_PREFIX=/usr/src/rootfs/ install

3)再次切到你自己的目录下

umount rootfs


步骤五:运行qemu

qemu-system-i386 -kernel /usr/src/linux-3.9/arch/x86/boot/bzImage -initrd /usr/src/busyboxinitrd4M.img -append "root=/dev/ram init=/bin/ash"
当然也可以先

ln -s /usr/bin/qemu-system-i386 /usr/bin/qemu
之后  即可使用qemu命令了


运行结果如下:

qemu busybox模拟Linux启动_第1张图片

qemu busybox模拟Linux启动_第2张图片


参考:

1、http://www.tuicool.com/articles/aYraue

2、Build & Run Linux System Based on VMware&Ubuntu10.04

你可能感兴趣的:(linux)