linux ramdisk根文件系统,根文件系统与ramdisk

一、文件系统

文件系统,是管理文件数据的一堆程序。操作系统,可以通过这些程序,从块设备中,读取或者写入文件。

常见的一些文件系统:

◾FAT32

◾NTFS

◾EXT2

◾EXT3

二、扇区和簇

扇区,是块设备(硬盘,nandflash,SD卡)读取和写入的最小单位。一般是512字节。

簇是文件系统,管理的最小单位,一般是扇区的整数倍。如4k,16k,32k。

在文件系统中,一个文件占用的大小是簇的整数倍,如下图,一个簇的大小是4K,因此即使一个只有313字节的文件,也会占用4K的空间。

c1b6893061761f34569e50fb11c8963d.png

三、根文件系统

根文件系统是一种特殊的文件系统,特殊就在于它必须有特定的目录结构以及特定的文件。如下图所示,就是一个跟文件系统目录以及文件。

23bc09f2689e6fb9a2d105d8e34f3057.png

linux启动时,第一个必须挂载的是跟文件系统。

目前制作跟文件系统,使用 busybox 工具。

四、linux操作文件

linux用户,通过open函数,打开文件。linux会切换到内核层,调用VFS,而VFS会根据文件所处的文件系统,调用文件系统的驱动函数。而文件系统的驱动函数,会调用块设备的驱动程序,从外部块设备读取数据。

d6dc3815c7e05dd40dad6df094fc33c7.png

五、linux的initrd(虚拟文件系统)

linux从2.6内核开始支持2种格式的initrd(虚拟文件系统),一种是传统格式的文件系统系统image-initrd, 其核心文件是 /linuxrc。

另外一种格式的initrd是cpio格式,使用cpio工具生成,核心文件,变为 /init。我们一般使用这种格式的initrd,作为ramdisk。

六、什么是ramdisk

内存盘。从系统内存中,划出一部分当作硬盘使用。可以将应用程序,安装到ramdisk中,然后去执行。

在linux中,ramdisk有2种:

◾initrd:linux内核2.0开始支持,大小固定

◾initramfs: linux内核2.4开始支持,大小可变

amdisk并非是一个实际的文件系统,而是一种将实际的文件系统转入内存的机制,因此可以作为跟文件系统。linux可以根据该机制,读取文件。

实际上,ramdisk,使用的文件系统是ext2。

七、linux挂载initrd

设备树的chosen节点,增加

linux,initrd-start 和 linux,initrd-end 属性。

3c451febfdcecb3d6ab50d95ac34f55a.png

八、linux和ramdisk

linux在启动的时候,会去挂载根文件系统,载入驱动或者应用程序执行。ramdisk可以制作成根文件系统,供linux挂载。

九、linux制作ramdisk

使用file命令,查看ramdisk,可以确认ramdisk文件,是一个经gzip压缩的文件。

42b7e6ba78da6e1eea1c5ad563673c05.png

将ramdisk文件,增加.gz后缀,使用gunzip解压。再用file命令查看,可以确认ramdisk其实是经cpio压缩的文件。

8ae218caa3defa85f4d45bc44d751892.png

使用cpio命令,可以解压ramdisk文件。得到当初制作ramdisk的文件结构。

cpio -i –F

fd1370d28e7d38b982b3205db236688b.png

可以对文件结构,反向打包,得到ramdisk。

find . | cpio –o –H newc | gzip > ../ramdisk.img

25ee6aad0dbab5efe0b0f9acc3fd4bf0.png

更多相关阅读

原文首发于骏的世界博客

作者:卢骏

更多IC设计相关的文章请关注IC设计极术专栏,每日更新。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值