initramfs文件系统

本文详细介绍了Linux系统中过渡根文件系统的概念及其机制,包括rootfs、ramfs、ramdisk和tmpfs等内存文件系统的特点及应用,并给出了initramfs的具体制作与使用步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux内核加载根文件系统执行/sbin/init程序前,需要找到根设备位置,如果根设备需要驱动的支持,内核有可能无能为力,通过提供一个过渡的临时根文件系统可以使得内核的设计更灵活简单.通常过渡的临时根文件系统基本上是内存文件系统.

常见的内存文件系统有:

rootfs,ramfs,ramdisk,tmpfs

1. rootfs:内核启动的初始始根文件系统,大部分linux系统正常运行后都会安装另外的文件系统,然后忽略rootfs

2. ramfs:基于内存的文件系统.ramfs文件系统没有容量大小的限制,它可以根据需要动态增加容量.直接利用了内核的磁盘高速缓存

3. ramdisk:基于ram的块设备,占据一块固定的内存,事先要使用特定的工具比如mke2fs格式化,还需要一个文件系统驱动来读写其上的文件空间固定导致容量有限,要想装入更多的文件需要重新格式化.Linux的块设备缓冲特性, ram disk上的数据被拷贝到page cache(对于文件数据)和dentry cache(对于目录项),导致内存浪费,它可能不停的动态增长直到耗尽系统的全部内存,所以只有root或授权用户允许使用ramfs

4. tmpfs:增加了容量大小的限制 + 允许把数据写入交换分区.由于增加了这两个特性,tmpfs允许普通用户使用

 

过渡根文件系统机制:将加载真正的根文件系统需要的设备驱动、工具以及初始化程序先加载到内存运行.

1. initrd: initial Ramdisk
/linuxrc文件,基于ramdisk技术,文件系统(ext2等)镜像文件 ————> cpio格式镜像文件
在内核启动完成后把它复制到/dev/ram块设备中, 作为内核加载真正根文件系统的过渡根文件系统

2. initramfs: initial RAM file system
init文件,cpio格式镜像文件
在内核启动完成后把它复制到rootfs中,作为内核初始的根文件系统,完成挂载系统真正的根文件系统

 

initramfs制作与使用:

我们学习都是从输出一个hello world开始的,所以这里就用过渡根文件系统输出hello world来说明.

1.编写程序

#include <stdio.h>

int main(int argc, char *argv[])
{
printf("Hello world Initramfs!\n");
sleep(999999999);
}
交叉编译:arm-linux-gcc -static hello.c -o init

2. 打包initramfs镜像
find .|cpio -o -H newc|gzip > ~/myinitramfs.cpio.gz
在内核中选择使用: 注意选择initramfs的压缩格式

3. 解包initramfs镜像
cpio -i -F myinitramfs.cpio --no-absolute-filenames
zcat myinitramfs.cpio.gz | cpio -i -d -H newc --no-absolute-filenames

4. 内核initramfs的构建
General setup --->
[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
(/rootfs_dir) Initramfs source file(s)
Built-in initramfs compression mode (None) ---> [] None [] GZIP

然后烧录的时候将文件系统烧录即可

转载于:https://www.cnblogs.com/CHYI1/p/5551022.html

根文件系统是指在内核启动时被挂载为最终根文件系统文件系统。可以通过指定内核启动参数"root=xxx"来挂载真正的根文件系统。然而,也可以使用initramfs内嵌式文件系统作为最终根文件系统或临时过渡的文件系统initramfs是一种ramfs文件系统,可以用来制作和使用根文件系统。 制作initramfs文件系统的方法有多种途径。其中一种方法是通过使用内核启动参数"initrd=addr,0x400000 root=/dev/ram rw"来指定initrd的下载地址、大小和设备节点。另一种方法是通过内核配置中的选项"General setup -> [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support (/rootfs_dir) Initramfs source file(s)"来指定根文件系统的来源目录。这样,我们就可以制作并使用initramfs根文件系统。 需要注意的是,initramfs根文件系统可以作为最终根文件系统,也可以作为临时过渡的文件系统。具体使用哪种方式取决于具体的需求和配置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [根文件系统(三)——initramfs文件系统制作](https://blog.youkuaiyun.com/zz2633105/article/details/120100571)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [initramfs 根文件系统](https://blog.youkuaiyun.com/u014426028/article/details/108085621)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值