2i3*_*i3r 5 filesystems mount live-usb squashfs
假设我们有filesystem.squashfs
,我们可以通过以下方式附加到它:
mksquashfs somefile filesystem.squashfs
Run Code Online (Sandbox Code Playgroud)
它附加somefile
到 squashfs 文件的根目录。附加目录:
mksquashfs somedir/ filesystem.squashfs
Run Code Online (Sandbox Code Playgroud)
将里面的文件和目录附加somedir/
到squashfs文件的根目录。如果在 squashfs 树中存在目录或文件,mksquashfs
则将重命名新文件,而不是更改旧文件和目录。好吧,“附加”这个短语是有道理的。
我知道unsquashfs
哪个解压缩了 squashfs,但我很好奇是否有一种方法可以在不解压的情况下将新文件或目录添加到 squashfs 树中的现有子目录?
小智 2
当然,可以将目录或文件附加到squashfs_file。
人们必须了解 mksquashfs 的工作方式:粗略地说,它是增量添加数据压缩块,其方式与 Growthisofs 写入 DVD 类似;最后更新 TOC,即图像的表格内容。当然,你不能“清除”旧目录,因为增量写入只关心未来而不关心过去!!!!
但是有一种非常简单的方法可以修改squashfs文件,而无需取消整个映像的squashfs(这可能会占用RAM或存储设备上的大量空间......想想dvd_iso 3-5 GB映像!)。指导思想是这样的:
1挂载squashfs_file /mnt(挂载使用的存储远少于unsquashfs)
2 通过排除要修改的目录来重新构建squashfs_file,然后附加我们想要的新目录。
详细信息例如:
cp /mnt/specific_dir $home ##modify $home/specific_dir as needed
mksquashfs /mnt new_squashfs_file -wildcards -e specific_dir
mksquashfs $home/specific_dir new_squashfs_file -keep-as-directory
umount /mnt # cleanup
当然,mksquashfs 的所有其他选项都可以照常添加(块大小;压缩方案 ....-b 1048576 -comp xz ....)
为了便于说明,该示例显示了一个目录修改;但在 rootfs 上,您可以排除 etc usr ....然后在第二行追加机制中追加修改后的 etc usr 。
如果您需要在 4GB 内存“windows10 笔记本电脑”上重新管理整个 livecd ubuntu,而不涉及 ntfs 原始分区,那么这就是您要走的路。
希望有帮助,王吉。