Linux initramfs深度解析: 从内核启动到根文件系统的桥梁(4) 📅 发布时间:2026/7/11 3:41:55 👁️ 浏览次数: 接前一篇文章Linux initramfs深度解析: 从内核启动到根文件系统的桥梁3实践示例1. 实例: 构建一个最小的initramfs让我们从头开始构建一个最小的initramfs来深化理解。这个示例使用busybox作为基础工具。第一步准备目录结构#!/bin/bash # 创建 initramfs 工作目录 INITRAMFS_DIRinitramfs mkdir -p $INITRAMFS_DIR/{bin,sbin,etc,lib,lib64,dev,proc,sys,root,newroot} # 复制必要的工具使用 busybox cp /bin/busybox $INITRAMFS_DIR/bin/ # 创建 busybox 的符号链接模拟各种命令 cd $INITRAMFS_DIR/bin for cmd in sh ls cat mount umount mkdir cp rm; do ln -sf busybox $cmd done cd - # 复制必要的库 cp /lib64/ld-linux-x86-64.so.2 $INITRAMFS_DIR/lib64/ cp /lib64/libc.so.6 $INITRAMFS_DIR/lib64/ cp /lib64/libm.so.6 $INITRAMFS_DIR/lib64/第二步创建初始化脚本#!/bin/sh # $INITRAMFS_DIR/init - initramfs 的核心启动脚本 # 挂载必要的伪文件系统 mount -t proc proc /proc mount -t sysfs sysfs /sys mount -t devtmpfs devtmpfs /dev # 尝试挂载根文件系统 # 假设根分区是 /dev/sda1 if ! mount -r /dev/sda1 /newroot; then echo Failed to mount root filesystem # 进入应急 shell /bin/sh exit 1 fi # 切换到真实根文件系统 cd /newroot pivot_root . initramfs # 或使用 switch_root 工具 # 卸载 initramfs现在位于 /initramfs umount -l /initramfs # 执行真实根中的 init exec /sbin/init第三步打包成cpio格式#!/bin/bash # 生成 cpio 格式的 initramfs cd $INITRAMFS_DIR find . -print0 | \ cpio -0 -o -H newc -F ../initramfs.cpio # 压缩 gzip -f ../initramfs.cpio mv ../initramfs.cpio.gz ../initramfs.img echo initramfs 已生成: initramfs.img第四步配置引导加载程序对于GRUB 2编辑/etc/default/grub# /etc/default/grub GRUB_CMDLINE_LINUXroot/dev/sda1 ro # 其他配置...然后在GRUB菜单项中指定 initramfs:menuentry Linux with Custom Initramfs { search --no-floppy --label --set root mylinux echo Loading Linux kernel... insmod gzio insmod part_msdos insmod ext2 set root(hd0,msdos1) linux16 /boot/vmlinuz-5.x.x root/dev/sda1 ro echo Loading initial ramdisk... initrd16 /boot/initramfs.img }第五步调试和验证# 1. 查看 initramfs 内容 gunzip -c initramfs.img | cpio -t # 2. 解压 initramfs 进行检查 mkdir -p extracted cd extracted gunzip -c ../initramfs.img | cpio -idmv ls -la # 3. 检查库依赖 ldd init ldd bin/busybox # 4. 使用 initramfs-tools 的内置验证 lsinitramfs initramfs.img这个例子虽然简化了很多细节实际的initramfs需要处理多种设备、文件系统等但展示了 initramfs的核心工作原理。现代工具如dracut本质上就是自动化这些步骤。工具与调试工具/命令用途示例lsinitramfs列出initramfs 内容lsinitramfs /boot/initramfs-5.10.0.imgcpio打包/解包cpio归档cpio -idmv initramfs.cpiodracut生成initramfsdracut /boot/initramfs-$(uname -r).imgmkinitramfsDebian风格的initramfs生成mkinitramfs -o /boot/initramfs.imggunzip解压gzip压缩gunzip -c initramfs.img.gzfile识别文件格式file initramfs.imgstrings提取文本字符串strings initramfs.img | grep -i versionstrace追踪系统调用strace -e traceopen,read initgrub-mkconfig自动生成GRUB配置grub-mkconfig -o /boot/grub/grub.cfg1. 调试技巧1查看initramfs解压过程在内核启动参数中添加rd.debug可以看到initramfs解压的详细日志# /etc/default/grub GRUB_CMDLINE_LINUXroot/dev/sda1 rd.debug2进入initramfs调试shell如果启动失败可以进入initramfs的调试shell# 在内核参数中添加 rd.break这会在initramfs中间断开打开一个shell供调试使用。此时根文件系统还未挂载或切换可以手动运行命令来诊断问题。3查看udev事件# 在 initramfs 中查看 udev 事件device enumeration udevadm control --log-prioritydebug # 或者查看内核日志 dmesg | grep -i udev\|device更多内容请看下回。
【仿真实战】从差分放大到三线制PT100测温:LTspice高精度信号调理全链路解析 1. 差分放大电路:从原理到LTspice仿真实战 差分放大电路是模拟电子领域的"抗干扰卫士",它的核心能力就像是一位精准的翻译官——只提取两个输入信号之间的差异部分(差模信号),同时忽略它们共有的干扰成分&am… 2026/4/2 3:15:55
提示工程代码审查避坑指南:10个容易犯的低级错误 提示工程代码审查避坑指南:10个容易犯的低级错误 引言:为什么提示工程需要“代码审查”? 在AI时代,提示词(Prompt)是人类与大语言模型(LLM)沟通的“桥梁”。就像程序员写代码需要评审… 2026/4/2 3:15:56
软考缺考率超 50%?学长扒一扒易弃考的 7 类人,弃考后果别忽视 考软考的小伙伴应该都发现了一个现象:每次报名的人乌泱泱一大片,但真正走进考场的人却少了一大半,部分地区的缺考率甚至直接超了 50%。作为考过软考的学长,今天就跟大家好好聊聊,那些最后放弃考试的人,大多… 2026/4/4 20:37:41
R语言 3种饼图方案对比:基础pie、ggplot2与ggforce的性能与适用场景 R语言三大饼图方案深度评测:从基础pie到ggforce的实战指南引言:为什么需要多种饼图方案?在数据可视化领域,饼图(Pie Chart)始终是一个充满争议但又不可或缺的存在。作为比例展示的经典形式,饼图… 2026/7/11 3:39:55
AI收入增速为何是移动互联网3倍?技术架构与变现效率深度解析 最近在技术圈和投资圈都频繁听到一个观点:AI 的收入增速是移动互联网和传统互联网时代的 3 倍。这个数据背后反映的不仅是市场热度,更是技术迭代速度和商业化效率的质变。作为开发者,我们不仅要关注技术实现,更要理解这股浪潮背后… 2026/7/11 3:39:55
流式输出为什么会中断?聊天、写作、问答产品常见的体验问题怎么解决 流式输出让 AI 产品更像实时对话,但它也带来了新的工程问题。用户看到文字逐步出现,会觉得响应更快;可一旦中途卡住、重复、断流或无法恢复,体验反而更差。聊天、写作、问答产品都需要认真处理流式输出稳定性。流式输出为什么容易… 2026/7/11 3:37:55
item026.7.10(1):高阻走线,铺铜要和它保持距离 前情提要:设计了一个低功耗两级管关断的adc电量检测电路设计Q:好的,现在drc也通过了。在铺铜和打过孔上,这个电路有什么讲究吗A:DRC 检查没有任何报错,说明基础线距和走线规则都没问题,这是个很… 2026/7/11 3:31:53
腾讯混元Hy3大模型:MoE架构与智能体能力的技术突破与实践指南 如果你正在寻找一个既能满足复杂任务处理需求,又具备高性价比的大模型方案,腾讯混元 Hy3 的正式发布值得重点关注。相比市场上动辄数千亿参数的"巨无霸"模型,Hy3 以 2950 亿总参数、210 亿激活参数的紧凑尺寸,实现了与参… 2026/7/11 3:29:53
不用PS折腾!4款轻量化电脑修图工具,搞定模糊、破损、批量修图 平时整理扫描文件、截图、旧照片,常会遇到画面模糊、存在划痕、尺寸歪斜等问题,专业修图软件操作步骤较多,这里分享几款本地工具,仅客观介绍功能,无推广内容。1. 鲲鲲修图工具主要用于图片基础修复与批量处理ÿ… 2026/7/11 3:27:52
5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 [特殊字符] 5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 🎬 【免费下载链接】zimuku_for_kodi Kodi 插件,用于从「字幕库」网站下载字幕 项目地址: https://gitcode.com/gh_mirrors/zi/zimuku_for_kodi 还记得那个深夜吗?你刚下载… 2026/7/11 0:00:11
工业信号干扰处理与FOD4216光耦应用实战 1. 工业环境中的信号干扰挑战在工业自动化领域,信号采集的准确性直接关系到整个控制系统的可靠性。典型的工业现场充斥着各种干扰源:大功率电机启停产生的电磁干扰、变频器工作产生的高频噪声、继电器触点火花放电,以及长距离传输引入的共模干… 2026/7/11 0:00:11
OpenHarmony 完整项目工程整合规范 + 模块化分层架构(API23+ 标准企业级结构) 摘要前面系列教程覆盖了 ArkUI 组件、路由、生命周期、本地存储、网络请求、Ability 底层全套基础能力,本篇统一梳理标准工程目录分层、模块化拆分、代码复用规范、全局工具统一管理、项目打包权限配置、常见工程报错统一解决方案,形成可直接用于课程设计… 2026/7/11 0:00:11
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/7 11:26:57
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/8 20:15:17
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/8 14:25:08