安装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>:<runlevels>:<action>:<process>
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"
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END