微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

embedded – Initrd,Ramdisk,Initramfs,uclinux

我正在使用uc linux移植冷冻板M5272C3.现在我的内核从RAM运行,romfs作为我的rootfile系统.
我不清楚他们的意思和使用时间.

请以最简单的方式解释我:

Q1:什么是initrd?为什么我们需要那个?

Q2:什么是ramdisk?为什么以及我们需要这个?

Q3:什么是initramfs?我们为什么以及在哪里使用它?

Q4:什么是ramfs?我们为什么以及在哪里使用它?

有关这些术语的深入了解,请参阅文档/参考书….

谢谢
Phogat

解决方法

ramdisk仅指内存中的磁盘映像.它是使用内核中的ramfs VFS驱动程序实现的. ramdisk的内容将在下次重启或电源循环时被擦除.

接下来我将为您提供有关initrd和initramfs的详细信息.

简单来说,initrd和initramfs都指的是早期的用户空间根文件系统(也就是rootfs),它可以让你在内存中运行一个非常小的文件系统.

该文档出现在linux内核源代码树的Documentation/filesystems/ramfs-rootfs-initramfs.txt部分,它还可以为您提供这些内容的长度描述.

什么是initrd?

需要这种早期文件系统的一种常见情况是加载硬盘控制器的驱动程序模块.如果驱动程序存在于硬盘驱动器上,则会成为鸡与蛋的问题.将这些驱动程序作为此早期rootfs的一部分,可帮助内核为任何检测到的硬盘控制器加载驱动程序,然后才能从硬盘驱动器安装实际的根文件系统.此问题的另一个解决方案是将所有驱动程序模块内置到内核中,但是您将以这种方式增加内核二进制文件的大小.这种文件系统映像通常称为initrd.它使用ramfs或tmpfs实现.它使用环回块设备进行模拟.

引导加载程序将内核映像加载到内存地址,将initrd映像加载到另一个内存地址,并告诉内核在哪里找到initrd,将引导参数传递给内核,并将控制传递给内核以使其继续引导过程.

那么它与initramfs有什么不同呢?

与内核中内置的initrd相比,initramfs是一个更早的阶段文件系统(当然由内核配置控制).

据我所知,initrd和initramfs都是由这个单一内核配置控制的,但它可能在最近的内核中被更改了.

config BLK_DEV_INITRD

我不会深入研究如何构建自己的initramfs,但我可以告诉你它只是使用cpio格式来存储文件,并且可以在构建内核时使用usr / Kconfig进行配置.即使您没有指定自己的initramfs映像,但已启用对initramfs的支持,内核也会自动嵌入一个非常简单的initramfs,其中包含/ dev / console,/ root和其他一些文件/目录.

此外,还有一个较新的tmpfs文件系统,它通常用于实现内存中的文件系统.事实上,较新的内核使用tmpfs而不是ramfs来实现initrd.

更新:

刚好偶然发现了a similar question

This也可能有用

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

相关推荐