xorriso 制作 Linux 操作系统镜像
基本镜像制作
xorriso 是一个功能强大的命令行实用程序,可以用于创建和管理 ISO 9660 和 Rock Ridge 文件系统。要使用 xorriso 创建 ISO 镜像,请按照以下步骤操作:
-
首先安装 xorriso(如果尚未安装):
sudo apt-get install xorriso
执行 df -h 命令查看当前系统的磁盘分区情况,确认系统安装的位置,比如 /dev/sda1。
-
使用 rsync 命令将系统的所有文件复制到一个临时目录中,例如:
rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /mnt/tmp
这个命令会将系统中除了 /dev、/proc、/sys、/tmp、/run、/mnt、/media 和 /lost+found 以外的所有文件和目录都复制到 /mnt/tmp 目录中。
进入 /mnt/tmp 目录,检查文件和目录的完整性,确保所有文件都已正确复制。
-
使用以下命令创建 ISO 镜像:
xorriso -as mkisofs -R -J -joliet-long -l -iso-level 3 -o output.iso /mnt/tmp
这里的参数解释:
-
-as mkisofs
:让 xorriso 以 mkisofs 兼容模式运行。 -
-R
:使用 Rock Ridge 扩展名。 -
-J
:使用 Joliet 扩展名。 -
-joliet-long
:允许 Joliet 文件名超过 64 个字符。 -
-l
:允许使用较长的 ISO 文件名。 -
-iso-level 3
:设置 ISO 9660 文件系统的兼容性级别。3 级允许文件名最长 207 个字符,文件最大 2 GB。 -
-o output.iso
:指定输出 ISO 文件的名称和路径。 -
/path/to/your/folder
:要转换为 ISO 镜像的文件夹路径。
这条命令将在指定位置创建一个名为 output.iso 的 ISO 镜像。您可以根据需要自定义参数。
PS:这会创建一个名为 output.iso 的文件,它包含你的整个文件系统。你可以更改 output.iso 以选择不同的文件名。这将创建一个包含你的整个文件系统的 ISO 文件,但是,这个 ISO 文件并不是可引导的,并且不包含 Ubuntu 的安装器。这意味着你不能用这个 ISO 文件来在一个新的硬盘上安装 Ubuntu。
系统镜像还原
首先,确保你有一个可用的 Ubuntu LiveCD 或 USB 驱动器。
将包含 output.iso 文件的外部存储设备(如 USB 驱动器)连接到计算机。
从 LiveCD 或 USB 启动计算机。选择 "Try Ubuntu without installing"(不安装 Ubuntu 试用)选项。
-
在终端中,创建一个临时挂载点以挂载 output.iso 文件,并挂载该文件:
mkdir ~/temp_iso_mount sudo mount -o loop /path/to/output.iso ~/temp_iso_mount
请将 /path/to/output.iso 替换为实际的路径。
确定你要还原的系统分区。通常是 /dev/sdaX 或 /dev/nvme0n1pX(其中 X 是分区编号)。使用 lsblk 或 sudo fdisk -l 查找正确的分区。
-
创建一个新的临时挂载点,以便挂载要还原的系统分区:
mkdir ~/temp_system_mount sudo mount /dev/sdX ~/temp_system_mount
请将 /dev/sdX 替换为实际的设备和分区。
-
使用 rsync 复制所有内容。它比 cp 更适合用于系统文件,因为它可以更好地处理文件权限和特殊文件:
sudo rsync -aHAX --delete ~/temp_iso_mount/ ~/temp_system_mount/
-
操作完成后,卸载分区和 ISO 文件:
sudo umount ~/temp_system_mount sudo umount ~/temp_iso_mount
重新启动计算机,将启动设备设置为原始系统分区。
这将完成整个系统的还原。然而,请注意,在尝试此操作之前,一定要备份所有重要数据,因为此过程具有一定风险。
通过 dd 命令克隆操作系统
如果你要使用 dd 来创建磁盘的完整克隆,你可以按照以下步骤操作。但是,请注意,这将创建整个磁盘的镜像,包括所有分区和引导记录。
首先,你需要找出你想要克隆的磁盘的设备名。你可以使用 lsblk 或 fdisk -l 来查看系统上的磁盘和分区。假设你的磁盘设备名是 /dev/sda。
然后,你可以使用 dd 命令来创建磁盘的镜像。请确保你有足够的存储空间来保存整个磁盘的镜像。你可以将镜像保存到外部存储设备,或者到另一个足够大的内部磁盘上。以下是一个示例命令:
sudo dd if=/dev/sda of=/path/to/your/image.img bs=4M status=progress
在这个命令中,if 参数是你要克隆的磁盘,of 参数是你要保存镜像的位置,bs 参数设置了每次读写的块大小,status=progress 选项会显示复制过程的进度。
注意:这个操作需要管理员权限,因此需要使用 sudo。另外,这个命令会覆盖输出文件的所有内容,所以请确保你指定了正确的磁盘设备名和镜像文件路径。
要在新的硬盘上恢复这个镜像,你需要将硬盘连接到电脑,然后使用类似的 dd 命令,但是将输入和输出参数反转:
sudo dd if=/path/to/your/image.img of=/dev/sdb bs=4M status=progress
在这个命令中,if 参数是你的镜像文件,of 参数是你要写入的磁盘。同样,这个命令会覆盖目标磁盘的所有内容,所以请再次确保你指定了正确的设备名和镜像文件路径。
注意:在进行这种操作时,必须非常小心。错误的 dd 命令可以导致数据丢失。在执行任何这样的操作之前,你应该确保所有重要的数据都已经备份。
PS:
- 文件系统格式需要一致
- 新磁盘需要和原磁盘至少具有相同的容量。如果新磁盘的容量更小,那么 dd 命令将无法成功完成。
- 由于硬盘的 UUID(Universally Unique Identifier)也被复制过来,所以如果原硬盘和新硬盘同时存在于同一台电脑中,可能会导致问题。你可能需要更改新硬盘的 UUID。
- 如果你的系统配置(例如 /etc/fstab 文件)使用的是硬盘设备名称(如 /dev/sda)而不是 UUID,那么在新电脑上可能需要进行一些配置调整,因为硬盘设备名称可能会因硬件配置的不同而改变。
- 这种方法不能保证在所有硬件配置上都能工作,因为某些硬件驱动可能不同。如果你的源系统是在特定的硬件配置下安装和配置的,那么当你尝试在具有不同硬件配置的新电脑上启动时,可能会遇到问题。