当前位置: 首页 > news >正文

使用qemu 加载linux-6.18.1内核

制作根文件系统

使用busybox制作根文件系统(ext4)

wget https://busybox.net/downloads/busybox-1.36.1.tar.bz2
tar -jxvf busybox-1.36.1.tar.bz2
cd busybox-1.36.1
make menuconfig

image

make -j8
# 安装到指定前缀目录(如./rootfs)
make install
image
cd ./rootfs  
# 进入BusyBox安装目录
# 1. 创建核心目录
mkdir -p dev proc sys tmp etc/init.d mnt root var/log# 2. 设置目录权限
chmod 777 tmp  
# 临时目录可读写
sudo chown root:root root  
# root目录归属root用户

image

cat > etc/init.d/rcS << EOF
#!/bin/sh# 挂载文件系统
mount -t proc proc /proc
mount -t sysfs sysfs /sys
mount -t tmpfs tmpfs /tmp
mount -o remount,rw /  # 重新挂载根目录为可读写# 创建设备节点(mdev自动管理设备)
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s# 启动shell(可选,若未配置inittab)
exec /bin/sh
EOF
# 添加执行权限
chmod +x etc/init.d/rcS

image

cat > etc/inittab << EOF
# 格式:<id>:<runlevels>:<action>:<command>
::sysinit:/etc/init.d/rcS  # 系统初始化
console::respawn:/bin/sh   # 控制台自动重启shell
::restart:/sbin/init       # 重启时执行init
::ctrlaltdel:/sbin/reboot  # Ctrl+Alt+Del触发重启
::shutdown:/bin/umount -a -r  # 关机卸载文件系统
EOF
ext4 镜像(适合块设备挂载)
# 创建128M的空镜像
dd if=/dev/zero of=rootfs.ext4 bs=1M count=128
# 格式化ext4
mkfs.ext4 rootfs.ext4
# 挂载并拷贝文件
mkdir -p tmp_mount
sudo mount rootfs.ext4 tmp_mount
sudo cp -r rootfs/* tmp_mount/
sudo umount tmp_mount
ramdisk(内存文件系统,调试更高效)
cd rootfs
find . -print0 | cpio --null -ov --format=newc > ../rootfs.cpio
cd ..
gzip rootfs.cpio  # 压缩(可选)

编译6.18内核(适配qemu)

从官网下载 https://www.kernel.org/
# 1. 加载QEMU通用配置(基础模板)
make defconfig  # 加载x86默认配置
make menuconfig # 图形化微调(关键配置如下)

image

make -j8

QEMU 启动 Linux 6.18 + 自定义根文件系统

qemu-system-x86_64 \
-M pc \ # 模拟PC平台
-kernel /data/linux-6.18.1/arch/x86_64/boot/bzImage \  # 自己编译的内核
-drive file=/data/busybox-1.36.1/rootfs.ext4,format=raw,if=virtio \  # 自定义根文件系统
-append "root=/dev/vda rw console=ttyS0 loglevel=8" \  # 根设备+串口输出
-m 1G \                  # 分配1G内存
-nographic               # 纯命令行模式

image

至此系统起来,可以做内核调试了。

 

http://www.rkmt.cn/news/122010.html

相关文章:

  • 2025-2026年宁夏银川AI优化哪家专业:三大专业机构指南
  • .NET反混淆终极指南:深入解析NETReactorSlayer核心技术与实战应用
  • 谓的“完美本地环境”,是不是开发者体验(DX)最大的谎言?
  • 3个月为某新能源初创公司配齐8人研发团队:聚目猎头的“精准匹配“秘诀
  • PDF 文件为什么打不开?常见原因与解决思路 - E
  • Vue打印设计神器:vue-plugin-hiprint零基础快速集成指南
  • 如何快速掌握星穹铁道自动化:解放双手的完整攻略
  • 2025年良心推荐:口碑与质量双优的布袋除尘器生产厂家名录,湿式打磨台/湿式除尘器/旋风分离器/布袋除尘器/水帘除尘器布袋除尘器制造厂哪个好 - 品牌推荐师
  • WinCDEmu虚拟光驱:告别物理光盘的智能解决方案
  • 结构线束EMC整改:事后补救到事前预防的范式转型|深圳南柯电子
  • Avue2使用bind关键字绑定深层次的结构对象属性(绑定多级对象到属性,与Yii框架的with属性无缝结合)
  • 震惊!选对酶制剂,这3家必须知道!
  • Scrcpy安卓投屏:从零开始的完整使用教程
  • Java常用语法,适合零基础小白,收藏这篇就够了
  • 1小时搭建数据分析原型:GROUP BY HAVING实践
  • DB-GPT终极教程:10分钟掌握Text2SQL实战应用
  • 软工毕设2026选题集合
  • 如何实现跨平台DMG文件处理?免费开源工具完整解决方案
  • Vectras VM Android虚拟机完整教程:手机变身全能桌面工作站
  • 告别卡顿延迟:Open WebUI的gRPC高性能通信全解析
  • 程序员必备:低代码神器盘点,别再把效率工具当“职业威胁”
  • 【金融风控图 Agent 实时分析核心机密】:揭秘毫秒级风险识别背后的黑科技
  • 通过css设置div区域的只读效果:让鼠标的禁用
  • 气象AI模型更新困局破解(20年专家实战经验倾囊相授)
  • NX二次开发 动态调用内部函数以启动宏为例
  • Kotaemon支持FIDO认证吗?无密码登录未来展望
  • 为什么传统工具被淘汰?生物信息Agent在序列分析中的5大碾压性优势
  • iflow和xiaomi mimo到底是谁的错
  • 基于单片机的发热理疗腰带控制器(有完整资料)
  • 藏!大模型入门到实战全攻略:小白也能看懂的学习路径+资源包