Answers:
以root用户filesystem.squashfs
身份复制到一些空目录,例如:
cp /mnt/clonezilla/live/filesystem.squashfs /path/to/workdir
cd /path/to/workdir
解压缩文件,然后将其移动到其他位置(因此您仍然可以将其作为备份):
unsquashfs filesystem.squashfs
mv filesystem.squashfs /path/to/backup/
进入squashfs-root
,根据您的喜好添加/修改,然后重新创建filesystem.squashfs
:
cd /path/to/workdir
mksquashfs squashfs-root filesystem.squashfs -b 1024k -comp xz -Xbcj x86 -e boot
将新创建的文件复制到filesystem.squashfs
USB驱动器上的现有文件,例如:
cp filesystem.squashfs /mnt/clonezilla/live/
然后重新启动并使用LIVE USB。
注意:上面的命令是的一部分squashfs-tools
。
/usr/bin
并重新打包后,在这里没有出现任何这些错误mksquashfs
。USB驱动器可以正常启动,我可以在实时会话中使用我的脚本。确保在运行之前不再将旧filesystem.squashfs
文件与修改squashfs-root
后的文件放在同一目录中mksquashfs
。
create_inode: could not create character device squashfs-root/dev/audio, because you're not superuser!
squashfs-root/dev/*
以常规用户身份创建设备文件(),需要root特权。
如果您的系统支持某些uion文件系统,例如aufs或overlayfs,则不必提取原始的squashfs文件。
例如,使用了overlayfs(启用它的内核选项):您可以将squashfs.file挂载到/ fm或其他位置。准备其中有2个目录的可写文件系统,例如/ to和/ temp。为合并结果准备另一个可写目录/ fin。将它们作为overlayfs一起安装到系统上-
mount -t overlay -o lowerdir=/fm,upperdir=/to,workdir=/temp overlay /fin
现在,您可以在/ fin中添加/修改文件。完成所有操作后,您可以将mksquashfs / fin转换为新的squashfs文件,
mksquashfs /fin newfile; umount /fin
,然后清除/卸载所有其他使用的目录。
该squashfs的一些的unionfs通常用于活CD。
如图所示,使用overlayfs是拥有伪“ squashfs rw”的最佳方法。但是,它需要在> 4.x内核(或ubuntu> 14.x trusty)上运行。
当坐在没有任何overlayfs / aufs / unionfs的较早的现场CD上时,另一种解决方案是利用squashfs自身的功能
重要:
without unsquashfs, so this can be done on low storage system
例:
修改squashfs的“ usr”目录
1 mount squashfs_file /mnt
2 cp -a /mnt/usr $HOME ##modify whatever $HOME/usr as needed
3 mksquashfs /mnt new_squashfs_file -wildcards -e usr
4 mksquashfs $HOME/usr new_squashfs_file -keep-as-directory
5 umount /mnt # cleanup
第三行临时构建squashfsfile,不包括olddir_usr
第4行将Modifyed-usr-dir附加到new_squashfsfile中
见这里追加squashfs 追加到squashfs文件内的子目录
Source directory entry bin already used! - trying bin_1
。可以肯定的是,在输出文件系统中,我有一个/bin
和一个/bin_1
,而不是合并文件夹。有任何想法吗?如果我使用-noappend,
文件系统运行,将无法正常工作。