当前位置: 首页 > 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.jsqmd.com/news/110701/

相关文章:

  • .NET反混淆终极指南:深入解析NETReactorSlayer核心技术与实战应用
  • AI助力JDK11下载与配置:一键搞定开发环境
  • Vue打印设计神器:vue-plugin-hiprint零基础快速集成指南
  • 如何快速掌握星穹铁道自动化:解放双手的完整攻略
  • 基于单片机的发热理疗腰带控制器(有完整资料)
  • 2026前瞻:头部家居品牌不容错过的五大黄金展会 —— 基于2025年行业数据与市场趋势的权威指南 - 匠子网络
  • 开源.NET 开发神器!Koala.Pro 应用套件:一站式通用业务管理解决方案
  • FlyFish:企业级数据可视化大屏快速搭建实战指南
  • 青龙面板v2.17.10:7个实战技巧搞定Node.js多版本管理
  • SKYNET Steam模拟器:零网络依赖的终极局域网游戏解决方案
  • Avue2使用bind关键字绑定深层次的结构对象属性(绑定多级对象到属性,与Yii框架的with属性无缝结合)
  • 基于物联网火灾报警系统(有完整资料)
  • linux 部署Open-AutoGLM
  • 震惊!选对酶制剂,这3家必须知道!
  • FLUX.1-DEV-BNB-NF4全攻略:4bit量化技术深度解析与工业级部署实践
  • 1小时搭建数据分析原型:GROUP BY HAVING实践
  • DB-GPT终极教程:10分钟掌握Text2SQL实战应用
  • 深度解析ET框架UI事件系统与委托交互机制
  • PyODBC 终极指南:轻松连接 Python 与各类数据库的完整解决方案
  • Java常用语法,适合零基础小白,收藏这篇就够了
  • 软工毕设2026选题集合
  • 告别卡顿延迟:Open WebUI的gRPC高性能通信全解析
  • Vectras VM Android虚拟机完整教程:手机变身全能桌面工作站
  • BlockTheSpot深度解析:打造无广告的纯净音乐体验方案
  • KiTTY完整使用指南:Windows上最强大的SSH客户端快速入门
  • 【金融风控图 Agent 实时分析核心机密】:揭秘毫秒级风险识别背后的黑科技
  • 通过css设置div区域的只读效果:让鼠标的禁用
  • 动漫资源管理终极指南:Mikan Project让追番不再迷茫![特殊字符]
  • 实时人像分割的性能突围:从主线程阻塞到Web Worker并行计算
  • 气象AI模型更新困局破解(20年专家实战经验倾囊相授)