在 Radxa 设备(如 Rock Pi 或 Rockchip 开发板)中,initrd(Initial RAM Disk)是一个临时根文件系统,它在 Linux 内核启动过程中加载,负责挂载真正的根文件系统。以下是关于 Radxa 设备中 initrd 的关键点及操作指南:
1. initrd 的作用
- 驱动加载:提供内核启动所需的硬件驱动(如存储、网络驱动)。
- 挂载根文件系统:执行脚本挂载实际的根文件系统(如 eMMC、SD 卡或 NVMe)。
- 初始化任务:运行早期用户空间脚本(如解密磁盘、加载模块)。
2. 常见操作
(1) 查看 initrd 内容
Radxa 的 initrd 通常是 gzip 压缩的 cpio 归档文件。解压命令:
mkdir initrd-root && cd initrd-root
zcat /boot/initrd.img-* | cpio -idmv
(2) 重建 initrd
-
方法 1:使用
update-initramfs(Debian/Ubuntu 系统)sudo update-initramfs -u -k $(uname -r)生成的
initrd位于/boot/initrd.img-<内核版本>。 -
方法 2:手动创建(需在解压后的 initrd 目录内操作)
find . | cpio -H newc -ov | gzip -9 > ../new-initrd.img
(3) 修改 initrd 脚本
编辑解压后的 initrd 中的脚本(如 /scripts/init-top 或 /init),例如:
- 添加自定义驱动模块。
- 修改根文件系统挂载参数(如从 NVMe 而非 SD 卡启动)。
3. Radxa 启动配置
在 U-Boot 中指定 initrd 的引导参数(通常在 /boot/extlinux/extlinux.conf 或 U-Boot 环境变量中):
# 示例 extlinux.conf 配置
label linux
kernel /boot/vmlinuz-*
initrd /boot/initrd.img-* # 指定 initrd 路径
append root=/dev/mmcblk0p2 rootwait console=ttyS2,1500000
4. 故障排查
-
问题:内核无法挂载根文件系统
解决:检查initrd中是否包含正确的存储驱动(如sdhci-of-dwcmshc用于 SD 卡)。 -
问题:启动卡在
Loading initial ramdisk
解决:- 确认
initrd文件未被破坏:gzip -t /boot/initrd.img-*。 - 重新生成
initrd:sudo update-initramfs -u。 - 检查 U-Boot 是否正确加载
initrd到内存地址。
- 确认
5. 高级技巧
- 压缩方式优化:
使用更高压缩率的工具(如lz4)减少启动时间:sudo update-initramfs -u -v --compress lz4 - 精简 initrd:
移除未使用的模块(编辑/etc/initramfs-tools/modules)。
总结
在 Radxa 设备中,initrd 是系统启动的关键环节。通过维护 initrd 的驱动、脚本和配置,可确保设备可靠启动。操作时注意:
- 备份原始文件。
- 使用
update-initramfs工具管理 Debian/Ubuntu 系统。 - 通过 U-Boot 日志(
dmesg)诊断启动问题。
遇到具体问题可提供启动日志或配置文件,以便进一步分析!
斑梨电子 RADXA开发板Radxa Zero四核迷你主板 兼容树莓派Zero 2W外形
2022-09-20 10:57:59
如何从官方的boot.img里解包得到initrd镜像
的朋友。今天我们继续来坑填,抚慰下处女座朋友那颗爱完美的心灵吧。 问题出现在根文件系统挂载方面,挂载的节点不存在,问题可以定位在ramdisk镜像上。推测是官方固件的initrd里处理分区这一块做了更
LEON1985
2022-06-02 15:43:22
deepin 25 Beta版本成功适配Radxa ROCK 5系列开发板
近日,deepin(深度)社区宣布,deepin 25 Beta 版本已正式适配 Radxa ROCK 5 系列开发板,包括 ROCK 5B、ROCK 5B+ 和 ROCK 5 ITX 等型号。
2025-06-06 17:25:17
瑞莎科技推介Radxa Rock 5C/5C Lite开发板,搭载瑞芯微RK3处理器
Radxa Rock 5C在尺寸上为85 x 56毫米,装载了四核Cortex-A76、四核Cortex-A55及Mali-G610 MP4图形处理单元(GPU)的RK3588S2芯片,支持LPDDR4x内存规格,最大容量达32GB。
2024-04-08 11:31:38
瑞莎科技近日推出Radxa Rock 5C/Rock 5C Lite开发板
4 月 7 日消息,瑞莎科技近日推出 Radxa Rock 5C / Rock 5C Lite 开发板,搭载瑞芯微 RK3588S2 / RK3582 芯片,售价 29.9 美元(IT之家备注:当前约 216 元人民币)起。
2024-04-09 14:05:47
Linux配置kernel使用ramdisk文件系统
配置kernel使用ramdisk文件系统 修改 uboot 的环境变量: setenv initrd_high= 0 xffffffff setenv bootargs console=ttyS
2023-10-04 14:48:00
欧时RS的多款ROCK单板计算机技术优势
OKdo是物联网(IoT)和单板计算机领域的专家,ROCK由Radxa提供支持并基于可信赖的Rockchip处理器构建。
2023-05-11 11:04:52
分享一下RK3288 ubuntu-16.10系统的制作过程
和initrd.img打包成linux-boot.img烧到boot分区,resource.img单独烧到一个分区;2.zImage、initrd.img、resource.img合起来打包
hsdou月半
2022-07-27 17:33:25
你是否了解Linux中的Ramdisk与Initrd?
Ramdisk与硬盘分区有其不同的地方,例如RAM disk不适合作为长期保存文件的介质,掉电后Ramdisk的内容会随内存内容的消失而消失。
2019-05-05 14:35:38
想问一下kernel开机log是怎么输出的啊
= "earlyprintk=sunxi-uart,0x01c28000 loglevel=8 initcall_debug=1 console=ttyS0 init=/init"; linux,initrd-start = ; linux,initrd-end = ;};
飞毛腿452
2022-01-04 06:17:05
浅析Ramdisk制作供linux挂载的根文件系统过程
,调用VFS,而VFS会根据文件所处的文件系统,调用文件系统的驱动函数。而文件系统的驱动函数,会调用块设备的驱动程序,从外部块设备读取数据。五、linux的initrd(虚拟文件系统)linux从2.6
h1654155957.9921
2022-07-21 15:26:22
构建openstlinux-5.4-dunfell-mp1-20-06-24时为什么找不到 `update-desktop-database` 命令?
在构建 openstlinux-5.4-dunfell-mp1-20-06-24 时,我总是遇到以下错误:ERROR: st-image-resize-initrd-1.0-r0 do_rootfs
hucc
2023-02-03 06:32:01
嵌入式系统中的几种文件系统分别有哪些优缺点呢
RAM file system(CRAMFS),journaling flash file system v2(jiffs2),NFS,initrd,YAFFS2,ext4,squashfs,and ...
yu1004402274
2021-12-15 08:08:03
请问存储位置的内容如何固话到emmc中呢?
。update_emmc=mmc rescan;fatload mmc 0 ${loadaddr} /sdrun/${image}; fatload mmc 0 ${initrd_addr} /sdrun
jerry181855
2022-01-11 07:52:37
基于USB接口的移动存储设备构建微型操作系统
压缩,最后通过grub和initrd 实现系统的启动。2 微型桌面系统的构成本文是在LFS Live CD 6.3 宿主系统上,通过LFS技术构建基本Linux 系统后,使用chroot 命令转入
asd012
2019-06-10 05:00:05
bitbake期间出错这是个问题吗?我错过了什么?
/images/ st-image-resize-initrd.bb:ENABLE_PARTITIONS_IMAGE 未启用这是个问题吗?我错过了什么?谢谢
lining870815844
2022-12-01 07:05:05
如何使用分发包构建Linux映像?
吗?*************************************错误:st-image-resize-initrd-1.0-r0 do_rootfs:无法更新包索引文件。命令'['/home/toku
DengQilong
2022-12-05 07:25:42
构建Open ST Linux发行版时收到警告如何处理呢
你好!当我构建 Open ST Linux 发行版时,我收到以下警告:WARNING: st-initrd-1.0-r0 do_package: Manifest /home/ubuntu
法规处发
2022-12-23 10:22:33
在local.conf文件中更改yocto项目下载目录时会弹出注释如何处理呢
/openstlinux-5.15-yocto-kirkstone-mp1-v22.06.15/layers/meta-st/meta-st-openstlinux/recipes-st/images/st-image-resize-initrd.bb: ENABLE_PARTITIONS_IMAGE not enabled:45
iiiegsd
2022-12-06 06:52:41
如何去解决ping服务器报错的问题
} ${initrd_addr} ${fdt_addr};bootdelay=3bootdev=mmc2bootscript=echo Running bootscript from mmc
他在笑
2022-01-12 07:58:15
为什么无法为uuu工具编译一个可用的u-boot?
- 使用 mfgtools 的默认环境,使用默认环境运行 bootcmd_mfg: run mfgtool_args;if iminfo ${initrd_addr}; 然后如果测试 ${tee} = yes
sansamp
2023-04-19 08:06:19
LS1046A从qspi闪存启动显示“FDT 和 ATAGS支持未编译 - 挂起”如何修理?
'ls1046aa518' configurationTrying 'initrd' ramdisk subimageDescription:initrd for arm64Type:RAMDisk
jf_1689824260.1465
2023-04-06 08:11:03
从零开始制作Linux
让初学者遇到挫拆,攻破LFS的信心越来越低。本文教大家制作一个比LFS更简单的Linux系统,只有Grub、Linux kernel和最小的根文件系统initrd,原理和过程都非常简单。大家可以在这
andrewxuda
2019-07-04 09:00:00
RK3399使用Linaro编译器编译u-boot与kernel
),0x00002000@0x002BA000(baseparamer),-@0x002BC000(userdata)制作一个大小位8M的ext2格式镜像文件,并挂载到/mnt/initrd目录下 拷贝
牛牛爱吃草
2022-09-05 17:50:52
请问uboot中内核启动参数问题该怎么解决
;structtag_initrd initrd;structtag_serialnr serialnr;structtag_revision revision;structtag_videolfb
DDT6
2019-07-17 05:45:19
RockPi-S Ruby-HAT扩展板资料分享
描述RockPi-S Ruby-HAT项目描述Ruby-HAT 是 Radxa RockPi-S的扩展板。它的设计旨在与 RockPi-S 一起装入紧凑的体积中。眼镜Ruby-HAT 由以下外围设备
jfsdfa
2022-08-04 06:14:42
怎样才能将Uboot烧录到板上的emmc中?
bootcmd_mfg: run mfgtool_args;if iminfo ${initrd_addr}; 然后如果测试 ${tee} = yes; 然后 bootm ${tee_addr
heks
2023-06-08 08:28:58
在TS-7970板 (i.MX6 Quad) 上使用initrd启动时内核崩溃的原因?如何解决?
(使用无 initrd 的 Buildroot 映像进行测试)。为了允许启动生成 /boot/extlinux/extlinux.conf 文件的 Guix 系统,我调整了来自 U-Boot
阿兵888824
2023-03-21 07:44:04
Linux:QEMU的网络配置
。/linux-3.2/arch/arm/boot/zImage -initrd 。./initramfs -serial stdio -append 5.配置 qemu的网络: 主机和虚拟机之间可以相互ping通了。
2020-06-23 09:22:05