Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

16.12. virt-sysprep:重置虚拟机设置

virt-sysprep 命令行工具可用于重置或取消配置客户机虚拟机,以便克隆可以从中创建克隆。此过程涉及删除 SSH 主机密钥、永久网络 MAC 配置和用户帐户。virt-sysprep 还可以自定义虚拟机,例如通过添加 SSH 密钥、用户或徽标。根据需要,可以启用或禁用每个步骤。
术语"sysprep"来源于与 Microsoft Windows 系统一起使用的系统准备工具(sysprep.exe)。尽管如此,这些工具目前无法在 Windows 客户机上工作。
注意
libguestfsguestfish 不需要 root 权限。如果被访问的磁盘镜像需要 root 访问权限才能读取或写入,您只需要以 root 身份运行它们。
virt-sysprep 工具是 libguestfs-tools-c 软件包的一部分,该软件包使用以下命令安装:
$ yum install libguestfs-tools-c
或者,使用以下命令只能安装 virt-sysprep 工具:
$ yum install /usr/bin/virt-sysprep
重要
virt-sysprep 修改客户机或磁盘镜像就位。要使用 virt-sysprep,guest 虚拟机必须离线,因此您必须在运行命令前关闭它。要保留客户机虚拟机的现有内容,必须首先进行快照、复制或克隆磁盘。有关复制和克隆磁盘的更多信息,请参阅 libguestfs.org
下列命令可与 virt-sysprep 一起使用:

表 16.1. virt-sysprep 命令

命令 描述 示例
--help 显示关于特定命令或整个软件包的简短帮助条目。有关其他帮助信息,请查看 virt-sysprep man page。 $ virt-sysprep --help
-a [file] 或 --add [file] 添加 指定的文件,它应该是来自客户机虚拟机的磁盘映像。磁盘镜像的格式是自动检测的。要覆盖此并强制使用特定格式,请使用 --format 选项。 $ virt-sysprep --add /dev/vms/disk.img
-c [URI] 或 --connect [URI] 如果使用 libvirt,连接到给定的 URI。如果省略,它将通过 KVM 管理程序进行连接。如果您直接指定客户机块设备(virt-sysprep -a),则根本未使用 libvirt $ virt-sysprep -c qemu:///system
-d [guest] 或 --domain [guest] 添加来自指定 guest 虚拟机的所有磁盘。可以使用域 UUID 而不使用域名。 $ virt-sysprep --domain 90df2f3f-8857-5ba9-2714-7d95907b1c9e
-n 或 --dry-run 或 --dryrun 在 guest 虚拟机上执行只读"dry run" sysprep 操作。它会运行 sysprep 操作,但会丢弃对磁盘所做的任何更改。 $ virt-sysprep -n
--enable [operations] 启用指定的 操作。要列出可能的操作,请使用 --list 命令。 $ virt-sysprep --enable ssh-hotkeys,udev-persistent-net
--format [raw|qcow2|auto] -a 选项的默认值是自动检测磁盘镜像的格式。这样做会强制在命令行中使用 -a 选项的磁盘格式。使用 --format 自动切换回后续 -a 选项(请参阅上面的 -a 命令)。 $ virt-sysprep --format raw -a disk.img 会针对 disk.img 强制原始格式(无自动探测),但 virt-sysprep --format raw -a disk.img --format auto -a another.img 会强制对 disk .img 强制实施原始格式(无自动探测 )。如果您有不受信任的原始格式的客户机磁盘镜像,您应该使用这个选项指定磁盘格式。这可避免出现恶意客户机的可能出现安全问题。
--list-operations 列出 virt-sysprep 程序支持的操作。它们每行列出,带有一个或多个以空格分隔的字段。输出中的第一个字段是操作名称,可提供给 --enable 标志。如果默认操作被启用,则第二个字段是 * 字符,如果没有启用,则为空。同一行中的附加字段包含操作的描述。 $ virt-sysprep --list-operations
--mount-options 为客户端虚拟机中的每个挂载点设置挂载选项。使用由分号分隔的 mountpoint:options 对列表。您可能需要在此列表旁边放置引号,以防止它被 shell。 $ virt-sysprep --mount-options "/:notime" 将以 notime 操作挂载根目录。
--SELinux-relabel 和 --no-selinux-relabel virt-sysprep 不总是在 guest 第一次引导时调度 SELinux 重新标记。在某些情况下,将执行重新标记(例如,virt-sysprep 已修改文件时)。但是,当所有操作都只删除文件时(例如,在使用 --enable delete --delete /some/file时)不会调度重新标记。使用 --selinux-relabel 选项总是强制 SELinux 重新标记,而使用 --no-selinux-relabel 设置时,不会调度重新标记。建议使用 --selinux-relabel 来确保文件具有正确的 SELinux 标签。 $ virt-sysprep --selinux-relabel
-q 或 --quiet 防止打印日志消息。 $ virt-sysprep -q
-v 或 --verbose 为调试启用详细消息。 $ virt-sysprep -v
-v 或 --version 显示 virt-sysprep 版本号并退出。 $ virt-sysprep -V
--root-password 设置 root 密码。可用于明确指定新密码,或者使用所选文件的第一行中的字符串 更为安全。
$ virt-sysprep --root-password password:123456 -a guest.img
或者
$ virt-sysprep --root-password file:SOURCE_FILE_PATH -a guest.img
如需更多信息,请参阅 libguestfs 文档