您的位置:首页 > 运维架构 > Linux

用qemu搭建linux环境的最简单步骤(硬盘启动)

2015-07-06 09:13 302 查看
只有有了最基本的东西,才能在此基础上起飞!

环境: ubuntu14 x86_64 cpu

过程很简单,准备,制作和运行

----------------------------------------

甲: 准备

----------------------------------------

1. 获取源码: a. kernel b. busybox

方法任意,这里从略。目录如下:

~/misc/qemu$ ls

busybox linux-3.13.0

2. 源码编译:

cd ~/misc/qemu/linux-3.13.0G

make defconfig

make

成功编译出内核.

cd ~/misc/qemu/busybox

make menuconfig

选择静态编译: BusyboxSettings->Build options->Build Busybox as a static binary

make

成功编译出busybox

----------------------------------------

乙: 制作

----------------------------------------

a. 内核文件准备

cd ~/misc/qemu/linux-3.13.0

cp arch/x86/boot/bzImage ..

b 根文件系统制作

cd ~/misc/qemu

dd if=/dev/zero of=rootfs.img bs=1M count=10 #创建大小为10M到根文件系统

mkfs.ext3 rootfs.img #以ext3类型来格式化

mkdir rootdisk

sudo mount -t ext3 -o loop rootfs.img rootdisk #将img mount 到 loop设备上

cd rootdisk

mkdir dev proc sys 创建三个目录

#把busybox文件系统安装到根文件系统中

cd ~/misc/qemu/busybox

sudo make install CONFIG_PREFIX=~/misc/qemu/rootdisk

cd ~/misc/qemu

sudo umount rootdisk

rmdir rootdisk

制作完成后的目录:

~/misc/qemu$ ls

busybox bzImage linux-3.13.0 rootfs.img

----------------------------------------

丙: 运行

----------------------------------------

cd ~/misc/qemu

qemu-system-x86_64 -kernel bzImage -hda rootfs.img -append "root=/dev/sda init=/bin/ash"

内核启动, 熟悉的linux 环境出来了,ls, cat, .....

ctrl-alt 释放qemu 鼠标。

其他:

使用 -hda, 指明硬盘镜像, qemu-system 能够仿真硬盘, -cdrom 还可以仿真CD-ROM -boot 选项指定启动设备

默认为硬盘:
d
从 CD-ROM 引导,
a
从软盘引导,
c
从硬盘引导(默认),而
n
从网络引导

-append 是内核启动参数, root=/dev/XXX, root 是根文件系统之意,这个启动参数/dev 与 dev设备没有关系。只是约定名称

init=XXX, init 指明根文件系统第一个运行的程序。

----------------------------------------

进阶篇:

----------------------------------------

1. 调试内核

a. 编译时加上-g 选项

b. qemu-system-x86_64 启动时加-S 选项, 使内核启动冻结

c. ctrl+alt+2 可切换到qemo控制台,输入“gdbserver"

d. 另起一个终端,

cd ~/misc/qemu/linux-3.13.0

gdb vmlinux

target remote localhost:1234

开始调试内核。

还可以使用ddd 前端或 vimgdb 前端等, 已经着陆了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: