今天做一个实验,蛋蛋都碎了,最后发现问题出
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命令了
运行结果如下:
参考:
1、http://www.tuicool.com/articles/aYraue
2、Build & Run Linux System Based on VMware&Ubuntu10.04