EXT4根文件系统制作与挂载

在我们目前用到的芯片平台中,大多数的根文件系统是采用EXT4的方式制作和挂载的,下面进行说明。

一、制作根文件系统

可以使用buildroot或者debootstrap的方式先构建根文件系统所需的组件。由于buildroot方式我们用得比较多,也比较熟悉,这里说明一下用debootstrap的方式,如下:

1、从网站上下载所需的ubuntu的根文件系统包

sudo debootstrap --arch armhf --foreign xenial xenial  http://mirrors.ustc.edu.cn/ubuntu-ports/
cp /usr/bin/qemu-arm-static xenial/usr/bin/
chroot xenial/ /debootstrap/debootstrap --second-stage
chroot xenial/ /bin/bash

2、制作EXT4的文件系统

make_ext4fs -s -l 2000M rootfs.ext4 xenial/

制作好的rootfs.ext4即可在BSP包中使用,并最终在终端上挂载了。

3、raw ext4文件的手动制作方式,即先制作文件格式,再往内填充数据

1)创建临时文件夹

mkdir -p rootfs_tmp

2)制作一个2GB的ext4空白文件:

dd if=/dev/zero of=rootfs.ext4 bs=1024 count=2097152

3)将新建的rootfs.ext4文件格式化为ext4格式

sudo mkfs.ext4 rootfs.ext4

4)将rootfs.ext4文件挂载到前面我们新建的临时目录rootfs_tmp

sudo mount -o loop rootfs.ext4 ./rootfs_tmp

5)往rootfs_tmp中填充文件

cd ./rootfs_tmp
cp -avrf ../busybox_rootfs/* ./

6)卸载挂载的rootfs.ext4文件,即完成ext4文件系统的制作

sudo umount ./rootfs_tmp

二、手动挂载根文件系统

第一步中我们制作出来的ext4根文件系统,在服务器上还不能直接挂载,因为它是sparse image,挂载的话是需要raw image的。

sparse image是一种需要多少空间就分配多少的镜像(虚拟机的磁盘镜像文件就是这种镜像,虽然安装系统时候指定了磁盘大小,但占用的磁盘空间并没有那么大,而是随里面的文件大小增大而变大)。 raw ext4 image,即raw image,使用file可以看到它是一个完整的ext4分区镜像(包含很多全零的无效填充区),可以直接使用mount进行挂载。

sparse image和raw image互转

simg2img rootfs.sparse rootfs.sparse2raw
img2simg rootfs.ext4 rootfs.ext42sparse

sparse image:

test@server:~/work$ file rootfs.ext4
rootfs.ext4: Android sparse image, version: 1.0, Total of 131072 4096-byte output blocks in 3990 input chunks.

sparse image 转为 raw image

test@server:~/work$ simg2img rootfs.ext4 rootfs.raw

ram image:

test@server:~/work$ file rootfs.raw
rootfs.raw: Linux rev 1.0 ext4 filesystem data, UUID=57f8f4bc-abf4-655f-bf67-946fc0f9f25b (extents) (large files)

手动挂载ext4根文件系统

sudo mount -t ext4 -o loop rootfs.raw rootfs/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值