关于使用Initramfs来挂载根文件系统的一些理解

时间:2022-08-04 16:29:43

关于使用Initramfs和ramdisk来挂载根文件系统的一些理解

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

转载请注明出处

CSDN作者:Andoubi

原文链接:http://blog.csdn.net/andoubi/article/details/51958927

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Initramfs和ramdisk文件系统都是基于内存的文件系统。若要选择这两种方式来挂载根文件系统,则在一开始配置内核是就应该设置好。通常在虚拟机上制作好根文件系统,然后配置内核,支持Initramfs和ramdisk:

General setup------------------->

[*] Initial RAM filesystem and ARM disk( initramfs/initrd)support

然后在下面一个条目输入制作好的根文件系统的路径全名。最终如下所示:(假设制作好的根文件路径是/home/rootfs)

General setup------------------->

[*] Initial RAM filesystem and ARM disk( initramfs/initrd)support

(/home/rootfs)Initramfs source file(s)

配置好之后,编译内核,然后将内核下载到开发板。运行内核之后,就能在开发板上看到你制作的根文件系统。


纠错:

        下面说的都是Initramfs文件系统,ramdisk文件系统时不一样的,它可以单独编译成镜像。


注意:这两种文件系统都是基于内存的,运行在RAM里,所以一断电就会消失,无法保存数据。所以,当你重启开发板时,你会发现,板子上的根文件系统里的内容没有任何的改变,之前创建的一些文件或者添加的数据全都消失了,之前删除的东西全都回来了。如果你想往板子上的linux系统添加一些文件,你必须回到虚拟机上制作好的根文件系统中,在这里添加你想添加的文件。然后重新编译内核,重新将内核下载到板子上,内核跑起来后,你会发现开发板出现了你刚才添加的文件。

这部分了解的不多,我的理解是:若用这两种方式挂载根文件系统,编译内核的时候,会将我们制作好的根文件系统整合到内核中,它们形成一个不可分离的整体。这个整体会被下载到nandflash中,运行系统时,根文件系统会在内存中跑起来,于是它出现在我们眼前。但是,它只在内存中跑着,不会跟nandflash同步数据,所以,我们往文件系统中所做的一切改动都仅仅在内存中,这些改动并不会同步回nandflash。因此,重启板子后,nandflash里面的文件系统还是那个文件系统,没有任何改动,原模原样。如果你想往板子上的系统添加文件,只能在你制作的根文件系统里添加,然后重新编译内核。这只是个人的理解,不知道对不对,还请知道的朋友在评论区介绍一下。