QEMU运行Linux内核

安装qemu

sudo apt install qemu

根文件系统制作
busybox下载
https://busybox.net/downloads/busybox-1.36.1.tar.bz2

配置

make menuconfig
 ...
    Settings  ---> 
        ...
        # 静态编译busybox
        --- Build Options  
        [*] Build static binary (no shared libs) 
        ...
    ...

编译

make -j15
make install

创建根文件系统需要的一些目录

cd _install/
mkdir -p dev etc home lib mnt proc root sys tmp var

新建需要的文件

cd _install/
vi etc/inittab

ect/inittab内容如下

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

inittab语法

:::

id : /dev/id
runlevels : 忽略
action : 何时执行,有以下选项 sysinit, respawn, askfirst, wait, once,restart, ctrlaltdel, and shutdown
process : 应用程序或脚本

mkdir -p etc/init.d/
vi etc/init.d/rcS
chmod 755 etc/init.d/rcS
etc/init.d/rcS

内容如下:

echo "----------mount all in fstab----------------"
/bin/mount -a #读取/etc/fstab,加载文件系统
mkdir -p /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
echo "****************Hello itas109******************"
echo "Kernel Version:linux-5.4.50"
echo "***********************************************"
etc/fstab

内容如下:

#device mount-point type option dump fsck
proc  /proc proc  defaults 0 0
temps /tmp  rpoc  defaults 0 0
none  /tmp  ramfs defaults 0 0
sysfs /sys  sysfs defaults 0 0
mdev  /dev  ramfs defaults 0 0

添加设备文件

cd _install
cd dev
sudo mknod console c 5 1
sudo mknod null c 1 3
sudo mknod tty1 c 4 1

生成ramdisk文件

#!/bin/bash
sudo rm -rf rootfs.ext4
sudo rm -rf fs
dd if=/dev/zero of=./rootfs.ext4 bs=1M count=32
mkfs.ext4 rootfs.ext4
mkdir fs
sudo mount -o loop rootfs.ext4 ./fs
sudo cp -rf ./_install/* ./fs
sudo umount ./fs
gzip --best -c rootfs.ext4 > rootfs.img.gz

运行

qemu-system-x86_64 -kernel ./bzImage -initrd rootfs.img.gz -append "root=/dev/ram0 init=/linuxrc"
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

平查斯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值