ramdisk制作

ramdisk制作之前写的一篇制作 initramfs 的总结是将 initramfs 和内核 Image 打包在一起的方案 因为我们有款产品需要将 ramdisk 和 Image 分开存储 所以这篇文章讲解 ramdisk 分开引导的方案 1 Busybox 文件系统制作请参考之前的文章 https blog csdn net m0 article details 打包 ramdi

之前写的一篇制作initramfs的总结是将initramfs和内核Image打包在一起的方案,因为我们有款产品需要将ramdisk和Image分开存储,所以这篇文章讲解ramdisk分开引导的方案。

1.Busybox文件系统制作

请参考之前的文章:

https://blog.csdn.net/m0_/article/details/

2.打包ramdisk文件系统

这里推荐使用系统ramdisk制作工具genext2fs

(1)在虚拟机中使用apt-get安装genext2fs;

(2)打包ramdisk文件系统

genext2fs -b 4096 -d rootfs ramdisk.image //4096为指定打包ramdisk大小,可根据需要调整大小;

(3)压缩ramdisk.image文件

gzip -9 -f ramdisk.image

(4)如果是加载uImage可能还得加个u-boot的头,可利用u-boot源码tools目录下的mkimage工具

mkimage -n 'Ramdisk Image' -A arm -O linux -T ramdisk -C gzip -d ramdisk.image.gz ramdisk.image.gz.uboot

以上一个完整的ramdisk压缩包已经制作完成。

3.内核配置

(1)支持initrd/initramfs

ramdisk制作

(2)支持ramdisk内存块设备,Default Ram disk size根据自己制作的ramdisk包大小设置

ramdisk制作

ramdisk制作 

(3)支持EXT2/EXT4等文件系统

ramdisk制作

4.U-boot参数传递

setenv bootargs root=/dev/ram0 rw initrd=0x,8M init=/linuxrc console=ttyS0,n8

initrd指定内核加载ramdisk的内存地址,大小为8M,init指定ramdisk初始化程序

5.注意点

(1)检查内核各项配置是否完整,如ext2、ext4是否支持;

(2)检查ramdisk加载到内存中的位置是否有问题;

INITRD: 0x+0x00 is not a memory region - disabling initrd ... Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0)

(3)检查ramdisk大小和内核中的默认配置是否相差太大,不能识别ramdisk可能是这个问题;

(4)多试几个Busybox版本和交叉编译器版本,已经挂载上了但是起不来基本就是制作的文件系统有问题;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/218483.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午7:08
下一篇 2026年3月18日 上午7:09


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号