On Feb 1, 2020, at 7:02 PM, Qu Wenruo <quwenruo.btrfs@xxxxxxx> wrote: > > Hi ext4 guys, > > Recently I found an image from android (vendor.img) has this RO feature > set, but kernel doesn't support it, thus no easy way to modify it. > (Although I can just modify the underlying block for my purpose, it's > just one line change, I still want a more elegant way). > > Thus it can only be mounted RO. So far so good, as from its name, it's > kinda of deduped (BTW, both XFS and Btrfs supports RW mount for > reflinked/deduped fs). > > But the problem is, how to create such image? > > Man page of mke2fs has no mention of such thing at all, and obviously > for whoever comes up with such "brilliant" way to block users from > modifying things, the "-E unshare_blocks" will just make the image too > large for the device. > > Or we must go the Android rabbit hole to find an exotic tool to modify > even one line of a config file? I believe that this feature was only implemented inside Google. However, if you want to make changes to some files in this filesystem there should be a number of ways to do it: - use "dd" to dump file block(s) from image, edit them, then write back. use "debugfs -c -R 'stat /path/to/file' vendor.img" for block addresses - use debugfs to clear the flag, mount the filesystem normally, then overwrite the file *in place* (using "dd" or similar) so that the blocks for the shared file are not reallocated due to unlink, write - make a simple patch for the kernel to "support" this feature, then mount it and modify the file in a similar manner Cheers, Andreas
Attachment:
signature.asc
Description: Message signed with OpenPGP