为何要把文件夹形式的rootfs制作成单个rootfs镜像文件

    xiaoxiao2021-12-01  18

    假设目前我们已经有了rootfs,它是文件夹形式的,可以在pc 端浏览的rootfs。

    但是,我们的目的是:把此rootfs,弄到嵌入式开发板上。

    而嵌入式开发板上的rootfs所存放到的物理设备,往往都是nand flash。所以此时,没法直接把此rootfs,放到该nand flash上去,所以需要弄成,对应的格式的文件系统的镜像,比如用mk.jffs2制作成jffs2的镜像,用mkyaffs2image制作成yaffs2的镜像等等。

     

    做个类似对比:

    假如你的PC电脑,装的是Win7系统,你在你的E盘已经有了,如上所述的rootfs文件夹(包含对应的文件和文件夹),想要拷贝到F盘。

    那么,在正常的Win7系统内,相对还是很简单的,直接从E盘拷贝,到F盘粘贴,即可。

     

    但是,当你的电脑的硬盘没有安装(Win7)操作系统的时候:

    如果硬盘也没格式化,那么就根本不存在方法很方便的拷贝把rootfs从E盘到F盘;

    如果硬盘已经格式化好了,有了E盘和F盘,那从E盘拷贝rootf到F盘,也相对比较麻烦,因为你需要把应该挂载到别的电脑下,当做移动硬盘,然后在别人的系统里面执行此操作;

     

    与此类似的:

    嵌入式开发板上的nand flash,就是你的电脑的硬盘:

    一般来说,在你已有了rootfs的时候,你的开发板上的nand flash,并没有格式化->所以就不存在方法很方便的把你电脑上的rootfs,拷贝到你的nand flash上(的对应的位置)

    即使你的nand flash已经(通过uboot)格式化好了,一般也都是对应的jffs2或者yaffs2(或者是UBI) 等格式的文件系统,而你电脑上的rootfs(是基于windows的NTFS或者是FAT32),也没法直接拷贝到(jffs2/yaffs2/ubi/…)的nand flash上去;

    所以,为了,将你电脑上的rootfs(文件夹),能完整的拷贝复制到你的开发板上面的nand flash上去,那么就只有:

    1.先将你电脑上(NFTS/FAT32)的rootfs文件夹,弄成对应的格式的rootfs镜像文件,比如jffs2或者yaffs2的单个文件;

    2. 然后再通过uboot直接用nand命令(nand write/nand read等),把此文件,写入到对应的nand flash中。

     

    这样,才能实现我们要的效果,即把电脑上的(NTFS/FAT32格式的)rootfs(文件夹中的所有内容)完整的拷贝到(jffs2/yaffs2/ubi等格式的)nand flash上面去。

     

    最后,再将PC电脑和其硬盘,与嵌入式开发板和其nand flash,做个类比,就更容易明白了:

    普通PC电脑和嵌入式开发板之间的rootfs的比较

    普通PC电脑

    嵌入式开发板

    电脑上的rootfs(文件夹)

    —>>>

    开发板上的rootfs(文件夹)

    文件系统:NTFS/FAT32

    文件系统:jffs2/yaffs/UBI

    PC端:Win7操作系统

    嵌入式:Linux系统

    硬盘接口:IDE/SATA

    存储介质:Nand Flash

    硬盘介质:机械磁盘/SSD

     

    【总结】

    之所以要把PC上的rootfs文件夹,制作成对应的某种嵌入式文件系统的镜像文件,的原因是:

    嵌入式Linux中,针对Nand Flash的嵌入式文件系统(合适的,常用的有:jffs2,yaffs,UBI等),和普通PC电脑中的文件系统不同(Win7下常用NTFS/TAF32等)

    且嵌入式Linux系统中,不方便直接以文件(或文件夹)的形式,直接拷贝文件(从PC端到嵌入式开发板上)

    所以:

    1.不仅要把PC端的rootfs文件夹打包成一个单一的文件;

    2.还要把此单一的文件,制作成,和目标的嵌入式开发板上(的nand flash)所用的文件系统的格式相匹配,即弄成jffs2,yaffs2,UBI等格式。

    然后:

    才能把此rootfs镜像文件,通过Uboot,烧录到nand flash上,才能支持后续的嵌入式Linux kernel启动后,从对应的位置,读取nand flash上的rootfs,然后正常启动和运行嵌入式Linux。

    转载请注明原文地址: https://ju.6miu.com/read-679561.html

    最新回复(0)