linux制作img
linux制作ext4格式image有两种方法:1、raw image,这种img会把文件系统填充0,因此可以直接挂载,但是占用空间比较大;2、sparse image,这种img是稀疏描述,不能直接挂载,大小就是文件系统中文件的大小
raw img
先dd创建一个空的img文件,然后给他格式化成ext4,挂载这个img,最后把需要的文件放进去。
dd if=/dev/zero of=rootfs.img bs=1M seek=0 count=256
(或dd if=/dev/null of=rootfs.img bs=1M seek=256)
mkfs.ext4 -F -L "rootfs" root.img
mkdir mountpoint
sudo mount root.img mountpoint
cp <fs file> mountpoint
sync
sudo umount mountpoint
sparse img
需要用到一个Android的工具make_ext4fs,命令看起来很简单,但是有几个坑。
make_ext4fs <-s> -l 256M <-a root> -L linux roofs.img rootfs_source_dir
-s 参数是选择是否创建sparse格式,不加即为raw
-l 肯定是大小呗
-L 是label
-a root 是给linux做的,但是如果加了这个参数,那么最后出来的img中,权限会改变,与源目录文件不再一样,变成rw-r--r--
-a system 是给Android做的
这个工具最后出来的用户和组是root,而不是源目录文件的用户,这点要注意
fakeroot
fakeroot command
This is useful for allowing users to create archives (tar, ar, .deb
etc.) with files in them with root permissions/ownership. Without fakeroot one would need
to have root privileges to create the constituent files of the archives with the correct
permissions and ownership, and then pack them up, or one would have to construct the
archives directly, without using the archiver.archives directly, without using the archiver.
有时候我们想制作用户和组是root的img镜像,但是由于没有sudo,最终出来的却是源目录的用户,也就是编译者,此时就可以用这个东西欺骗一下虚拟出来一个root环境。