gpt4 book ai didi

embedded - Initrd、Ramdisk、Initramfs、uclinux

转载 作者:行者123 更新时间:2023-12-02 20:16:38 26 4
gpt4 key购买 nike

我正在coldfire板M5272C3上进行uclinux移植。现在我有从 RAM 运行的内核,并使用 romfs 作为我的根文件系统。我不清楚一些术语的含义以及何时使用它们......

请用最简单的方式解释一下:

问题1:initrd是什么?为什么我们需要它?

问题2:什么是虚拟磁盘?为什么以及在哪里我们需要这个?

问题3:initramfs是什么?为什么以及在哪里使用它?

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

另请参阅文档/引用书以深入了解这些术语......

谢谢福加特

最佳答案

一个ramdisk仅指内存中的磁盘镜像。它是使用 ramfs 实现的内核中的VFS驱动。 ramdisk 的内容将在下次重新启动或重新启动时被删除。

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

简单来说,initrdinitramfs指的是早期用户空间 root filesystem (又名 rootfs )这将让您在内存中运行一个非常小的文件系统。

文档位于 Documentation/filesystems/ramfs-rootfs-initramfs.txt Linux 内核源代码树的一部分,它还会为您提供这些内容的详细描述。

什么是initrd

需要这种早期文件系统的一种常见情况是加载硬盘 Controller 的驱动程序模块。如果驱动程序存在于硬盘驱动器上,那就变成了先有鸡还是先有蛋的问题。将这些驱动程序作为早期 rootfs 的一部分有助于内核加载任何检测到的硬盘 Controller 的驱动程序,然后才能从硬盘驱动器挂载实际的根文件系统。此问题的另一个解决方案是将所有驱动程序模块内置到内核中,但这样会增加内核二进制文件的大小。这种文件系统镜像通常称为 initrd 。它是使用 ramfs 来实现的。或tmpfs 。它是使用环回 block 设备进行模拟的。

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

那么它与 initramfs 有何不同?然后呢?

initramfsinitrd 相比,是一个更早期的文件系统它内置于内核中(当然由内核配置控制)。

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

config BLK_DEV_INITRD

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

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

更新:

刚刚偶然发现a similar question

This可能也有用

关于embedded - Initrd、Ramdisk、Initramfs、uclinux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15444917/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com