rootfs文件系统镜像的打包

需要更改android vendor路径下的文件,在拿到vendor.img后怎么去修改并打包呢?

ubuntu下,先看一下img的格式:

$ file vendor-19.1.img 
vendor-19.1.img: Android sparse image, version: 1.0, Total of 262144 4096-byte output blocks in 17 input chunks.

如果是Android sparse image,需要先转化为raw才能挂载:

$ simg2img vendor-19.1.img vendor-19.1-raw.img 
$ file vendor-19.1-raw.img 
vendor-19.1-raw.img: Linux rev 1.0 ext2 filesystem data, UUID=121c4496-fe10-4c9a-9248-157c6e1b966d, volume name "vendor" (extents) (large files) (huge files)

将img挂载到loop伪块设备上:

# 查看所有的loop设备
$ ls  /dev/loop*  
/dev/loop0  /dev/loop1  /dev/loop2  /dev/loop3  /dev/loop4  /dev/loop5  /dev/loop6  /dev/loop7  /dev/loop-control

# 查看已使用的loop设备[-l 或者 -a 都可以]
$ losetup -l
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE
/dev/loop1         0      0         0  0 /home/chu/android-img/vendor.img

# 删除已占用的loop设备[正在使用的可以换一个loop映射,不必删除]
$ sudo losetup -d /dev/loop1

# 将img映射到loop块设备
$ sudo losetup /dev/loop1 vendor-19.1-raw.img 

# 映射后可看到多了一个块设备
$ sudo fdisk -l
Disk /dev/loop1: 1 GiB, 1073741824 bytes, 2097152 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

# 块设备可以挂载到本地路径,此时可以修改内容了
$ mkdir vendor-test
$ sudo mount /dev/loop1  vendor-test
$ mount | grep loop
/dev/loop1 on /home/chu/android-img/vendor-test type ext4 (rw,relatime)


修改结束后,再次打包内容修改后的img:

# 卸载块设备
$ sudo umount vendor-test

# 删除占用的loop设备
$ sudo losetup -d /dev/loop1

# 此时vendor-19.1-raw.img 就是修改后的raw镜像,再打包成android格式
$ img2simg vendor-19.1-raw.img vendor-19.1-new.img

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值