QEMU运行简易linux环境(x86)

准备linux kernel和环境

获取linux kernel code

git clone https://github.com/torvalds/linux.git

安装依赖项

这里以ubuntu平台为例

sudo apt-get install libncurses5-dev flex bison libssl-dev libelf-dev

设置编译ARCH环境为x86

export ARCH=x86 

制作busybox文件系统

运行简易linux环境前我们需要制作一个简易的文件系统供运行,这里我们使用busybox

安装编译busybox

#下载busybox,建议先检查版本并下载最新版,这里使用1.33.1版本
wget https://busybox.net/downloads/busybox-1.33.1.tar.bz2
#解压
tar xvjf busybox-1.33.1.tar.bz2
#进入busybox目录编译
make menuconfig
	----------------------------------menuconfig-----------------------------------------
	Settings--->
		--- Build Options
		[*] Build static binary (no shared libs) 
     -------------------------------------------------------------------------------------
make && make install

编译成功后busybox目录下会出现名为_install的文件
我们将_install文件拷贝到对应的linux工程文件夹内,并创建一些必要的文件/文件夹

cp -r ./busybox-1.33.1/_install ./linux-6.10.6/_install
cd ./linux-6.10.6/_install/
mkdir etc
mkdir dev
mkdir mnt
mkdir -p etc/init.d

在_install/etc/init.d目录下新建rcS文件,并写入以下内容:

#vim etc/init.d/rcS
mkdir -p /proc
mkdir -p /tmp
mkdir -p /sys
mkdir -p /mnt
/bin/mount -a
mkdir -p /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev –s

最好给rcS文件设置权限

chmod 755 rcS

在_install/etc目录创建fstab文件,并写入以下内容:

proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tempfs /dev tmpfs defaults 0 0
debugfs /sys/kernel/debug debugfs defaults 0 0

在_install/etc目录创建inittab文件,并写入以下内容:

::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
::askfirst:-/bin/sh
::ctrlaltdel:/bin/umount -a -r

在_install/dev文件夹下新建设备节点(可能需要用sudo权限)

mknod console c 5 1
mknod null c 1 3

至此busybox的环境已经准备完成了,准备编译linux源码

编译Linux

进入linux kernel目录下,配置config文件,使kernel支持ramdisk, 并且默认使用_install文件夹内的环境

make menuconfig
	----------------------------------menuconfig-----------------------------------------
	General setup--->
		[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
		(_install) Initramfs source file(s)
	Device Drivers --->
      	[*] Block devices  --->
      		<*>   RAM block device support
            (65536) Default RAM disk size (kbytes)
     -------------------------------------------------------------------------------------
make #开始编译

初次编译需要等待较长时间,若编译成功,在编译log最后会看到编译kernel Image的路径,需要记下这个路径之后会使用到
![编译日志](https://img-blog.csdnimg.cn/68b295df13a04fe5b1eaef19b8c3074e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAYjExMzQ5Nzc1MjQ=,size_14,color_FFFFFF,t_70,g_se,x_16

运行QEMU

安装QEMU

#下载qemu,建议下载最新版
wget https://download.qemu.org/qemu-6.0.0.tar.bz2

tar xvjf qemu-6.0.0.tar.bz2

#编译需要的一些工具
sudo apt-get install ninja-build pkg-config libglib2.0-dev libpixman-1-dev

#进入qemu路径,注意不同版本文件名可能不同
cd qemu-6.0.0/
./configure
make && make install

运行Linux

若QEMU安装成功,那么我们所需要运行Linux的所有软件都已经安装完成了,
输入以下指令即可运行简易Linux环境

qemu-system-x86_64 -M pc -kernel ../linux-6.10.6/arch/x86/boot/bzImage -append "rdinit=/linuxrc console=ttyAMA0 console=ttyS0" -nographic

-kernel 编译的linux kernel image文件
-nographic 无图形界面模式,如果使用终端需要这个参数
QEMU运行Linux
运行成功后会看到这样的日志输出,可以运行基本Linux命令

退出QEMU Linux

先按ctrl+A,再按X,即可退出QEMU Linux

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值