news 2026/4/23 14:00:02

distro 和 ramdisk 区别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
distro 和 ramdisk 区别

在系统启动流程中,distroramdisk是两个关键概念,它们在 U-Boot 和 Linux 内核启动过程中扮演重要角色:


1. Distro(Distribution Boot)

核心作用

Distro Boot 是 U-Boot 的标准化启动框架,用于自动发现并加载操作系统(如 Linux 发行版),无需手动配置启动命令。

▶ 工作原理
  1. 扫描存储设备
    U-Boot 自动检测硬盘/SD卡/USB中的分区和文件系统(EXT4/FAT)。
  2. 查找启动文件
    /boot目录搜索以下文件:
    vmlinuz-*# Linux 内核initrd.img-*# RAM 磁盘镜像*.dtb# 设备树文件
  3. 加载并启动
    按预设规则加载内核、initrd 和设备树,传递参数并执行。
▶ 配置示例(U-Boot 环境变量)
# 启用 distro 启动=>setenv boot_targets"mmc0 usb0 pxe"# 按顺序扫描设备=>setenv bootcmd"run distro_bootcmd"# 使用 distro 框架=>saveenv
▶ 优势
  • 多系统兼容:自动支持 Debian/Ubuntu/Fedora 等发行版
  • 免配置启动:插入包含/boot的磁盘即可启动
  • 灵活扩展:支持网络启动(PXE)、USB 启动等

2. Ramdisk(initrd/initramfs)

核心作用

Ramdisk 是内核启动时的临时根文件系统(加载到内存中),用于:

  1. 挂载真实根文件系统
    • 提供驱动加载真实根分区(如加密的/dev/sda2)。
  2. 执行早期初始化
    • 激活 RAID/LVM 等复杂存储。
    • 解密磁盘(如 LUKS)。
  3. 故障恢复
    • 提供紧急 shell 修复系统。
▶ 类型对比
类型initrdinitramfs
实现方式磁盘镜像(块设备)CPIO 归档(直接解压到内存)
加载速度较慢更快
现代性旧式(Linux 2.4)主流(Linux 2.6+)
文件路径/boot/initrd.img-5.4.0/boot/initramfs-5.4.0.img
▶ 工作流程
U-BootLinux KernelinitramfsReal RootSystemd加载内核 + initramfs执行 /init 脚本加载磁盘驱动挂载 /dev/sda2切换至真实根文件系统启动 PID=1 进程U-BootLinux KernelinitramfsReal RootSystemd
▶ 生成工具
  • mkinitramfs(Debian/Ubuntu)
    sudomkinitramfs -o /boot/initramfs-$(uname-r).img
  • dracut(RHEL/Fedora)
    sudodracut --force /boot/initramfs-$(uname-r).img

Distro + Ramdisk 协同工作示例

当 U-Boot 的 Distro Boot 启动 Linux 时:

  1. U-Boot 从磁盘加载:
    • vmlinuz(内核) → 内存地址0x80000000
    • initramfs.img(RAM 磁盘) → 内存地址0x83000000
    • rk3588.dtb(设备树) → 内存地址0x86000000
  2. 启动命令:
    =>booti 0x80000000 0x83000000:0x500000 0x86000000# booti [内核地址] [initrd地址]:[大小] [设备树地址]
  3. Linux 内核接管后:
    • 解压 initramfs 到内存根文件系统
    • 执行/init脚本挂载真实根分区
    • 切换至磁盘中的完整系统

典型问题解决

❌ 故障:卡在Loading initial ramdisk...

原因

  • initramfs 缺失 SATA/USB 驱动 → 无法挂载真实根分区
    修复
  1. 在 U-Boot 中手动加载内核:
    =>load mmc0:1 0x80000000 /boot/vmlinuz=>load mmc0:1 0x83000000 /boot/initramfs.img=>booti 0x80000000 0x83000000$filesize
  2. 进入系统后重建 initramfs:
    sudoupdate-initramfs -u -k all

💡总结

  • Distro Boot是 U-Boot 的智能启动管理器
  • Ramdisk是内核挂载真实系统的“跳板”
    二者协同实现从固件到操作系统的无缝过渡。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 23:40:46

基于 Docker + GitLab + Kubernetes 的 CI/CD 流程实践

基于 Docker GitLab Kubernetes 的 CI/CD 流程实践 一、 引言二、核心概念:CI 与 CD2.1 持续集成(Continuous Integration, CI)核心目标 2.2 持续部署(Continuous Deployment, CD)CD 核心价值 三、 Docker GitLab …

作者头像 李华
网站建设 2026/4/16 17:01:33

刘二大人PyTorch深度学习实践第二讲笔记

个新坑,系统学一遍深度学习好做毕设,能到河工大挺激动的,赶紧给刘二大人投自荐简历,但是已读不回,还是自己太菜了........不过已经到河工大了挺好的,梦校第二讲线性模型image-20251125141224993image-20251…

作者头像 李华
网站建设 2026/4/23 13:10:43

再探二分查找

各位好久不见,不知不觉2025都快要结束了,是时候来再总结一次算法(入门)的经验了。 最近笔者看标准算法库时,注意到C算法库中只有两种二分查找的方法:lower_bound和upper_bound,分别用来查找第一…

作者头像 李华
网站建设 2026/4/18 4:59:58

自动化运维利器Ansible

前言 在如今的IT环境中,服务器数量越来越多,业务流程也越来越复杂。如果还靠手工登录每台服务器操作,不仅效率低,还容易出错。这时候,自动化运维工具就成了运维工程师的“救星”。 Ansible作为其中的佼佼者&#xff0c…

作者头像 李华
网站建设 2026/4/17 23:57:26

基于SpringBoot+Vue的台球厅管理系统(完整源码+万字论文+精品PPT)

这里写目录标题博主简介源码演示录像论文创作效果图【部分】开发框架以及工具介绍系统运行效果图资源可行性分析数据库表结构设计代码示例获取源码【支持定做】博主简介 👨‍💻 博主简介: 本人是CSDN特邀作者、博客专家、CSDN新星计划导师&a…

作者头像 李华