惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

云风的 BLOG
云风的 BLOG
P
Privacy International News Feed
Vercel News
Vercel News
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
博客园 - 叶小钗
F
Fortinet All Blogs
Security Archives - TechRepublic
Security Archives - TechRepublic
L
LINUX DO - 最新话题
AWS News Blog
AWS News Blog
Engineering at Meta
Engineering at Meta
Attack and Defense Labs
Attack and Defense Labs
Recent Announcements
Recent Announcements
Recent Commits to openclaw:main
Recent Commits to openclaw:main
PCI Perspectives
PCI Perspectives
Cloudbric
Cloudbric
AI
AI
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
IT之家
IT之家
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
J
Java Code Geeks
M
MIT News - Artificial intelligence
Cisco Talos Blog
Cisco Talos Blog
V2EX - 技术
V2EX - 技术
Webroot Blog
Webroot Blog
Microsoft Security Blog
Microsoft Security Blog
Cyberwarzone
Cyberwarzone
博客园 - 聂微东
G
Google Developers Blog
W
WeLiveSecurity
罗磊的独立博客
P
Privacy & Cybersecurity Law Blog
阮一峰的网络日志
阮一峰的网络日志
A
About on SuperTechFans
WordPress大学
WordPress大学
The GitHub Blog
The GitHub Blog
T
Tailwind CSS Blog
V
Visual Studio Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
S
Secure Thoughts
Apple Machine Learning Research
Apple Machine Learning Research
Hugging Face - Blog
Hugging Face - Blog
Google DeepMind News
Google DeepMind News
Google DeepMind News
Google DeepMind News
雷峰网
雷峰网
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
F
Full Disclosure
Blog — PlanetScale
Blog — PlanetScale
The Last Watchdog
The Last Watchdog
P
Proofpoint News Feed

博客园 - 于光远

泛型编程 分区理论知识整理 SPI协议及驱动开发框架 I2C协议及驱动开发框架 linux 内核 策略模式 单例模式 Linux性能分析:从监控到优化的完整工具链 C++模板元编程实现序列化与反序列化 引用 bootchart linux 脚本打印时间 接口编程 不定参数解析,结合tuple 独立于main运行的程序 类模板继承 std::ostream & operator<< Flash HIDL --HelloWorld
使用qemu 加载linux-6.18.1内核
于光远 · 2025-12-18 · via 博客园 - 于光远

制作根文件系统

使用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

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

posted @ 2025-12-18 15:48  于光远  阅读(80)  评论()    收藏  举报