> 文章列表 > 命令备份ubuntu20.04 制作成 filesystem.squashfs ,然后制作成 可以启动的ISO

命令备份ubuntu20.04 制作成 filesystem.squashfs ,然后制作成 可以启动的ISO

命令备份ubuntu20.04 制作成 filesystem.squashfs ,然后制作成 可以启动的ISO

命令备份ubuntu20.04 制作成 filesystem.squashfs ,然后制作成 可以启动的ISO

要备份Ubuntu 20.04并制作成filesystem.squashfs和可启动的ISO,可以按照以下步骤进行操作:

1 备份Ubuntu 20.04系统,可以使用rsync命令将整个系统备份到外部磁盘。命令示例:

sudo rsync -avx / /path/to/backup/folder --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/run --exclude=/mnt --exclude=/media --exclude=/lost+found

上面的命令会将系统备份到指定的目标文件夹中,并排除一些系统目录以防止备份错误。

2 制作filesystem.squashfs

安装squashfs-tools,可以使用以下命令:

sudo apt install squashfs-tools

创建一个工作目录并将备份复制到该目录中,例如:

mkdir mybackup
sudo rsync -avx /path/to/backup/folder mybackup

将备份压缩成squashfs文件格式,例如:

sudo mksquashfs mybackup/ mybackup.squashfs

此命令将创建一个名为mybackup.squashfs的压缩文件,其中包含系统备份。

3 制作可启动的ISO

安装genisoimage,可以使用以下命令:

sudo apt install genisoimage

创建一个新目录并将制作好的squashfs文件移动到该目录中,例如

mkdir iso
sudo mv mybackup.squashfs iso/

创建一个新的ISO文件,例如:

sudo genisoimage -o mybackup.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -J -R -V "Ubuntu Backup" iso/

在上面的命令中,-o 指定生成的 ISO 文件名,-b 指定引导文件,-c 指定引导文件的位置,-V 指定卷标,iso/ 是要添加到 ISO 文件中的文件的位置。

下面是对mkisofs命令的各个参数的解析:

-R: 将文件权限、所有者和时间戳信息保存到 ISO 文件中。
-b: 指定 ISO 文件的引导映像文件路径。
-c: 用于保存 ISO 文件中的目录结构,并提供一种快速检索文件的方法。
-no-emul-boot: 禁用镜像启动的兼容性,确保它是真正的启动映像。
-boot-load-size: 设置映像引导扇区的大小。
-boot-info-table: 创建一个启动信息表格,用于引导镜像。
-input-charset: 指定输入文件的字符集。
-graft-points: 将文件添加到 ISO 文件中,并将它们映射到新的路径。
-o: 指定输出文件名。
总的来说,这些参数的作用是创建一个可以启动的 ISO 文件,其中包含文件的权限、所有者、时间戳信息和目录结构。-b参数用于指定引导映像文件,-boot-load-size参数设置引导扇区的大小,-boot-info-table参数创建一个启动信息表格,用于引导镜像。-o参数用于指定输出文件名。

这个命令将创建一个名为mybackup.iso的ISO文件,并将之前创建的squashfs文件添加到其中。ISO文件将被命名为"Ubuntu Backup"并可用于启动安装或恢复Ubuntu 20.04系统。

isolinux/isolinux.binisolinux/boot.cat 是在制作可启动ISO时需要用到的文件。
  • 1 isolinux/isolinux.bin 是ISOLinux引导程序,它负责在计算机启动时加载ISO中的操作系统。这个文件通常由ISOLinux项目提供,可以从 http://www.syslinux.org/wiki/index.php/Download 下载。
  • 2 isolinux/boot.cat 是ISO镜像的引导目录,包含了用于启动ISO的引导文件。这个文件可以使用 mkisofs 命令的 -boot-info-table 选项生成

filesystem.squashfs > 4G 时候,解决

File cd_root/casper/filesystem.squashfs is larger than 4GiB-1.
-allow-limited-size was not specified. There is no way do represent this file size. Aborting.

这个错误是因为ISO文件中包含的 filesystem.squashfs 文件大小超过了 4GiB 的限制。这是因为 32 位的 ISO9660 文件系统有一个 4GiB 的文件大小限制,而 filesystem.squashfs 文件通常会超过这个限制。

解决这个问题的一种方法是使用 UDF 文件系统而不是 ISO9660。UDF 文件系统支持更大的文件和更长的文件名,因此可以解决这个问题。可以在 genisoimage 命令中加入 -udf 参数,指定使用 UDF 文件系统:

genisoimage -o ubuntu.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -udf cd_root/

如果需要支持旧的光盘驱动器,则还需要加入 -iso-level 2 参数。

如果您使用的是 Ubuntu 官方的 ubuntu-iso-download 脚本,可以将 mkisofs 改为 xorriso,并加入 -udf 参数:

sudo xorriso -as mkisofs -iso-level 3 -V "Ubuntu 20.04.3 LTS amd64" -o ubuntu.iso -J -J -isohybrid-mbr /usr/lib/syslinux/mbr/isohdpfx.bin -c isolinux/boot.cat -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot -isohybrid-gpt-basdat -udf -graft-points cd_root/

这样就可以创建一个支持大于 4GiB 的 filesystem.squashfs 文件的可启动 ISO 文件了。