我在 U 盘上安装了 Clonezilla,我想对操作系统进行一些修改。具体来说,我想插入一个可运行的脚本,/usr/sbin
以便轻松运行我自己的备份命令,从而减轻备份的痛苦。
主文件系统位于/live/filesystem.squashfs
USB FAT-32 分区下。
如何在我的 Linux 机器上安装此读/写功能以便能够添加/删除/更改文件?我正在运行 Ubuntu 12.04 衍生版本。
答案1
这假设您是根并且它squashfs-tools
已安装在您的系统上:
复制filesystem.squashfs
到某个空目录,例如:
cp /path/to/filesystem.squashfs /path/to/workdir
cd /path/to/workdir
解压该文件,然后将其移至其他位置(这样您仍然可以将其作为备份):
unsquashfs filesystem.squashfs
mv filesystem.squashfs /path/to/backup/
进去squashfs-root
,根据您的口味添加/修改,然后重新创建1 filesystem.squashfs
:
cd /path/to/workdir
mksquashfs squashfs-root filesystem.squashfs
将新创建的文件复制filesystem.squashfs
到 USB 驱动器上现有的文件上,例如:
cp filesystem.squashfs /mnt/clonezilla/live/
然后重新启动并使用您的 LIVE USB。
1:查阅手册了解您可以通过、点赞-b 4M -comp lz4
等-comp xz -Xbcj x86
的其他选项
答案2
如果您的系统支持某些 uion 文件系统,例如奥夫斯或者覆盖文件系统,您不必提取原始的 squashfs 文件。
例如覆盖文件系统使用(启用它的内核选项):您可以将您的squashfs.file安装到/调频或者先去别的地方。准备一个可写文件系统,其中包含 2 个目录/到和/温度。准备另一个可写目录/鳍对于合并结果。将它们作为一个overlayfs安装到您的系统上---
mount -t overlay -o lowerdir=/fm,upperdir=/to,workdir=/temp overlay /fin
现在您可以添加/修改文件/鳍。一切完成后,您可以 mksquashfs/鳍到一个新的 squashfs 文件,
mksquashfs /fin newfile; umount /fin
,然后根据需要清除/卸载所有其他使用的目录。
这南瓜文件系统还有一些联盟通常用于现场CD。
答案3
这里,我找到了另一个答案:
bash# mount dir.sqsh /mnt/dir -t squashfs -o loop
答案4
这是一个基于 Martian2020 答案的脚本,可以使用 overlayfs 来完成此操作。我正在创建一个 fstab 文件,以便使用它可以轻松恢复mount -a --fstab
#!/bin/bash
set -eu
src=$(realpath $1)
tgt_dir=$(dirname $(realpath ${2-$src}))
tmp=${2-$(dirname $src)/$(basename --suffix=.squashfs $src)}
tgt_name=$(basename $tmp)
target=$tgt_dir/$tgt_name
workdir=$tgt_dir/.$tgt_name-work
lowerdir=$tgt_dir/.$tgt_name-lower
upperdir=$tgt_dir/.$tgt_name-upper
fstab=$target/fstab
echo $src $target $workdir $lowerdir $upperdir
set -x
mkdir $workdir
mkdir $upperdir
mkdir $lowerdir
mkdir $target
cat > $fstab <<EOT
# This fstab can be used with "sudo mount --fstab $fstab -a" or appended to
# /etc/fstab
$src $lowerdir squashfs loop,ro 0 0
overlay $target overlay lowerdir=$lowerdir,upperdir=$upperdir,workdir=$workdir 0 0
EOT
sudo mount --fstab $fstab -a