JAVA智慧社区系统粉丝生活同款系统支持跑腿家政本地生活上门服务商城微信小程序的功能逻辑
2026/5/7 8:31:28
在系统启动流程中,distro和ramdisk是两个关键概念,它们在 U-Boot 和 Linux 内核启动过程中扮演重要角色:
Distro Boot 是 U-Boot 的标准化启动框架,用于自动发现并加载操作系统(如 Linux 发行版),无需手动配置启动命令。
/boot目录搜索以下文件:vmlinuz-*# Linux 内核initrd.img-*# RAM 磁盘镜像*.dtb# 设备树文件# 启用 distro 启动=>setenv boot_targets"mmc0 usb0 pxe"# 按顺序扫描设备=>setenv bootcmd"run distro_bootcmd"# 使用 distro 框架=>saveenv/boot的磁盘即可启动Ramdisk 是内核启动时的临时根文件系统(加载到内存中),用于:
/dev/sda2)。| 类型 | initrd | initramfs |
|---|---|---|
| 实现方式 | 磁盘镜像(块设备) | CPIO 归档(直接解压到内存) |
| 加载速度 | 较慢 | 更快 |
| 现代性 | 旧式(Linux 2.4) | 主流(Linux 2.6+) |
| 文件路径 | /boot/initrd.img-5.4.0 | /boot/initramfs-5.4.0.img |
sudomkinitramfs -o /boot/initramfs-$(uname-r).imgsudodracut --force /boot/initramfs-$(uname-r).img当 U-Boot 的 Distro Boot 启动 Linux 时:
vmlinuz(内核) → 内存地址0x80000000initramfs.img(RAM 磁盘) → 内存地址0x83000000rk3588.dtb(设备树) → 内存地址0x86000000=>booti 0x80000000 0x83000000:0x500000 0x86000000# booti [内核地址] [initrd地址]:[大小] [设备树地址]/init脚本挂载真实根分区Loading initial ramdisk...原因:
=>load mmc0:1 0x80000000 /boot/vmlinuz=>load mmc0:1 0x83000000 /boot/initramfs.img=>booti 0x80000000 0x83000000$filesizesudoupdate-initramfs -u -k all💡总结:
- Distro Boot是 U-Boot 的智能启动管理器
- Ramdisk是内核挂载真实系统的“跳板”
二者协同实现从固件到操作系统的无缝过渡。