如何制作Ext4文件系统镜像
将来有一天,在一个目录上右击,会有一个选项是「生成Ext4镜像」。但是目前还没有,记录一下步骤。
个人认为,目前对Ext4镜像支持最活跃的是Google的Android了。那咱单独创建Ext4镜像使用时也向Android上靠拢。Android系统中System分区是在2.3以后默认使用Ext4了,从此后Ext4就好比Windows下的NTFS一样成了标配wikipedia_Ext4。
编译Android源码最后是使用make_ext4生成 Ext4镜像+签名(更新:合理使用make_ext4参数是不会导致添加签名的),如果需要纯Ext4镜像,那么需要再去掉签名,使用simg2img。这个两个工具都是在编译Android源码时编译出来的,如果没有Android源码编译环境,当然也可以使用Ubuntu社区已经整理好的工具集android-tools-fsutils,该工具集文件列表如下:(来自android-tools-fsutils/filelist)
/usr/bin/ext2simg
/usr/bin/ext4fixup
/usr/bin/img2simg
/usr/bin/make_ext4fs
/usr/bin/mkuserimg
/usr/bin/simg2img
/usr/bin/simg2simg
/usr/bin/simg_dump
/usr/bin/test_ext4fixup
/usr/share/doc/android-tools-fsutils/changelog.Debian.gz
/usr/share/doc/android-tools-fsutils/copyright
工具集安装方法:
sudo apt-get install android-tools-fsutils
制作Ext4文件系统镜像:
# 创建测试目录
mkdir /tmp/ext4 && cd /tmp/ext4 &&
mkdir test test_mount &&
echo "Hello Ext4" > test/HelloExt4.txt &&
# 生成名为test.ext4的Ext4镜像
make_ext4fs -l 512M test.ext4 test &&
# 挂载test.ext4到test_mount测试
mount -t ext4 -o loop test.ext4 test_mount &&
ls test_mount || echo "Error!"
以上放到一个名为test.sh的脚本中,执行正常结果如下:
$ sudo ./test.sh
Creating filesystem with parameters:
Size: 536870912
Block size: 4096
Blocks per group: 32768
Inodes per group: 8192
Inode size: 256
Journal blocks: 2048
Label:
Blocks: 131072
Block groups: 4
Reserved block group size: 31
Created filesystem with 12/32768 inodes and 4207/131072 blocks
HelloExt4.txt lost+found
扩展:将该文件系统挂载到Android设备中
# 获取root权限
su
# 进入sdcard目录
cd /sdcard
# 将test.ext4挂载test目录下
busybox mount -t ext4 -o loop test.ext4 test
# 查看test目录下内容
shell@hwH30-T00:/sdcard/test $ ls -l
-rw-r--r-- root root 11 2015-10-24 17:49 HelloExt4.txt
drwx------ root root 1970-01-01 08:00 lost+found
shell@hwH30-T00:/sdcard/test $