10 Guest 安装 #
VM Guest 由一个包含操作系统和数据文件的映像以及一个描述 VM Guest 虚拟硬件资源的配置文件构成。VM Guest 托管在 VM 主机服务器上并受其控制。本节提供有关安装 VM Guest 的概括说明。有关支持的 VM Guest 列表,请参见第 7 章 “虚拟化限制和支持”。
与运行操作系统需要满足的要求相比,虚拟机几乎没有什么要求。如果操作系统未根据虚拟机主机环境进行优化,将只能以全虚拟化模式在硬件辅助虚拟化计算机硬件上运行,并需要加载特定的设备驱动程序。提供给 VM Guest 的硬件取决于主机的配置。
您应该了解与在多个虚拟机上运行单个已许可操作系统副本相关的任何许可问题。有关详细信息,请查阅操作系统许可协议。
10.1 基于 GUI 的 Guest 安装 #
可以更改在创建新虚拟机时要应用的默认值。例如,要将 UEFI 设置为新虚拟机的默认固件类型,请从虚拟机管理器的主菜单中选择 › ,单击,然后将 设置为默认固件。
向导将帮助您完成创建虚拟机和安装其操作系统所需执行的步骤。要启动该向导,请打开虚拟机管理器并选择 › 。或者,启动 YaST 并选择 › 。
- 从 YaST 或虚拟机管理器中启动 向导。 
- 选择安装源 — 本地可用的媒体或网络安装源。要从现有映像安装 VM Guest,请选择。 - 在运行 Xen 超级管理程序的 VM 主机服务器上,您可以选择是要安装半虚拟化 Guest 还是全虚拟化 Guest。您可以在下选择相应的选项。根据此项选择,并非所有安装选项均可用。 
- 根据在上一步中所做的选择,您需要提供以下数据: - 在 VM 主机服务器上指定包含安装数据的 ISO 映像的路径。如果该映像是作为 libvirt 存储池中的卷提供的,您也可以使用来选择。有关更多信息,请参见第 13 章 “高级存储主题”。 - 或者,选择已插入到 VM 主机服务器光驱中的物理 CD-ROM 或 DVD。 
- 提供指向安装源的 。有效的 URL 前缀包括 - ftp://、- http://和- https://等。- 在 下,提供自动安装文件(例如 AutoYaST 或 Kickstart)的路径以及内核参数。提供 URL 后,应该就会自动正确检测到操作系统。如果情况并非如此,请取消选择,并手动选择和。 
- 要从现有映像安装 VM Guest,您需要在 VM 主机服务器上指定该映像的路径。如果该映像是作为 libvirt 存储池中的卷提供的,您也可以使用来选择。有关更多信息,请参见第 13 章 “高级存储主题”。 
- 如果您要创建虚拟机,手动配置其组件并在稍后安装其操作系统,则适合使用这种安装方法。要将 VM 调整为特定的产品版本,请开始键入版本名称(例如 - sles),然后在出现匹配项时选择所需的版本。
 
- 选择新虚拟机的内存大小和 CPU 数量。 
- 如果在第一步中选择了,则会省略此步骤。 - 设置 VM Guest 的虚拟硬盘。创建新磁盘映像,或者从存储池中选择一个现有的磁盘映像(有关详细信息,请参见第 13 章 “高级存储主题”)。如果您选择创建磁盘,将会创建一个 - qcow2映像,该映像默认存储在- /var/lib/libvirt/images下。- 设置磁盘是可选操作。例如,如果您正在直接从 CD 或 DVD 运行实时系统,可以通过停用来省略此步骤。 
- 在向导的最后一个屏幕上指定虚拟机的名称。如果您希望能够查看和更改虚拟化硬件选择,请选中。在下指定网络设备。使用时,系统会预先填充主机上的第一个网桥。要使用其他网桥,请在文本框中手动更新为该网桥名称。 - 单击。 
- (可选) 如果您在上一步中保留了默认设置,则会开始安装。如果您选择了,一个 VM Guest 配置对话框将会打开。有关配置 VM Guest 的详细信息,请参见第 14 章 “使用虚拟机管理器配置虚拟机”。 - 完成配置后,单击。 
安装将在一个虚拟机管理器控制台窗口中开始。某些组合键(例如 Ctrl–Alt–F1)会被 VM 主机服务器识别,但不会传递给虚拟机。虚拟机管理器提供“粘滞键”功能来绕过 VM 主机服务器。按 Ctrl、Alt 或 Shift 三次使该键成为粘滞键,然后按组合键中剩余的键便可将组合键传递给虚拟机。
例如,要将 Ctrl–Alt–F2 传递给 Linux 虚拟机,请按 Ctrl 三次,然后按 Alt–F2。也可以按 Alt 三次,然后按 Ctrl–F2。
在安装 VM Guest 期间以及安装之后,都可以在虚拟机管理器中使用粘滞键功能。
10.1.1 为虚拟机配置 PXE 引导 #
PXE 引导使虚拟机能够通过网络从安装媒体引导,而无需从物理媒体或安装磁盘映像进行引导。有关设置 PXE 引导环境的更多细节,请参见第 18 章 “准备网络引导环境”。
要使您的 VM 从 PXE 服务器引导,请执行以下步骤:
- 按照第 10.1 节 “基于 GUI 的 Guest 安装”中所述启动安装向导。 
- 选择方法。 
- 按照向导操作到最后一步,然后选中。单击确认。 
- 在屏幕上,选择。 
- 检查,并选中旁边的框。 
- 在下,选中 并单击确认。 
- 单击以开始安装。如果正确配置了 PXE 服务器,PXE 菜单屏幕将会显示。 
10.2 使用 virt-install 从命令行安装 #
virt-install 是个命令行工具,可帮助您使用 libvirt 库创建新虚拟机。如果您无法使用图形用户界面,或需要自动化虚拟机创建过程,此工具十分有用。
    
virt-install 是个复杂的脚本,其中包含大量命令行开关。下面是必需的开关。有关详细信息,请参见 virt-install (1) 的手册页。
    
- 一般选项
- --name VM_GUEST_NAME:指定新虚拟网络的名称。该名称必须在同一连接上超级管理程序已知的所有 Guest 中保持唯一。该名称用于创建和命名 Guest 的配置文件,您可以通过- virsh使用该名称来访问 Guest。该名称可以包含字母数字和- _-.:+字符。
- --memory REQUIRED_MEMORY:以 MB 为单位指定分配给新虚拟机的内存量。
- --vcpus NUMBER_OF_CPUS:指定虚拟 CPU 数量。要获得最佳性能,虚拟处理器数量应小于或等于物理处理器数量。
 
- 虚拟化类型
- --paravirt:安装半虚拟化 Guest。如果 VM 主机服务器支持半虚拟化和全虚拟化,这就是默认设置。
- --hvm:安装全虚拟化 Guest。
- --virt-type HYPERVISOR:指定超级管理程序。支持的值为- kvm或- xen。
 
- Guest 存储空间
- 指定 - --disk、- --filesystem或- --nodisks作为新虚拟机的存储类型。例如,- --disk size=10会在超级管理程序的默认映像位置创建 10 GB 磁盘,并将此磁盘用于 VM Guest。- --filesystem /export/path/on/vmhost指定 VM 主机服务器上要导出到 Guest 的目录。- --nodisks会安装没有本地存储空间的 VM Guest(适合使用实时 CD 的情形)。
- 安装方法
- 使用 - --location、- --cdrom、- --pxe、- --import或- --boot指定安装方法。
- 访问安装
- 使用 - --graphics VALUE选项指定如何访问安装。SUSE Linux Enterprise Server 支持值- vnc或- none。- 如果使用 VNC, - virt-install将尝试启动- virt-viewer。如果 virt-viewer 未安装或无法运行,请使用您偏好的查看器手动连接到 VM Guest。要明确阻止- virt-install启动查看器,请使用- --noautoconsole。要定义用于访问 VNC 会话的口令,请使用以下语法:- --graphics vnc,password=PASSWORD。- 如果您使用 - --graphics none,可以通过操作系统支持的服务(例如 SSH 或 VNC)访问 VM Guest。请参见操作系统安装手册了解如何在安装系统中设置这些服务。
- 传递内核和 initrd 文件
- 可以直接指定安装程序的内核和 Initrd,例如,指定来自网络来源的内核和 Initrd。要设置网络来源,请参见第 17.4 节 “手动设置 HTTP 储存库”。 - 要传递其他引导参数,请使用 - --extra-args选项。此选项可用于指定网络配置。有关详细信息,请参见第 8 章 “引导参数”。例 10.1︰ 从 HTTP 服务器加载内核和 initrd #- #- virt-install--location "http://example.tld/REPOSITORY/DVD1/" \ --extra-args="textmode=1" --name "SLES15" --memory 2048 --virt-type kvm\ --connect qemu:///system --disk size=10 --graphics vnc \ --network network=vnet_nated
- 启用控制台
- 默认不会对使用 - virt-install安装的新虚拟机启用控制台。要启用控制台,请如以下示例所示使用- --extra-args="console=ttyS0 textmode=1":- >virt-install --virt-type kvm --name sles12 --memory 1024 \ --disk /var/lib/libvirt/images/disk1.qcow2 --os-variant sles12 --extra-args="console=ttyS0 textmode=1" --graphics none- 安装完成后,VM 映像中的 - /etc/default/grub文件将会更新,在- GRUB_CMDLINE_LINUX_DEFAULT行中包含- console=ttyS0选项。
- 使用 UEFI 安全引导
- 注意SUSE 仅支持在 AMD64/Intel 64 KVM Guest 上使用 UEFI 安全引导。Xen HVM Guest 支持使用 UEFI 固件引导,但不支持 UEFI 安全引导。 默认情况下,使用 virt-install安装的新虚拟机会配置传统 BIOS。您可以通过--boot firmware=efi将这些虚拟机配置为使用 UEFI。系统会选择支持 UEFI 安全引导并已注册 Microsoft 密钥的固件。如果不需要安全引导,可以使用--boot firmware=efi,firmware.feature0.name=secure-boot,firmware.feature0.enabled=no选项来选择不支持安全引导的 UEFI 固件。也可以明确指定 UEFI 固件映像。有关为虚拟机使用 UEFI 的高级信息和示例,请参见第 10.3.1 节 “高级 UEFI 配置”。 
virt-install 命令行示例 #以下命令行示例将创建带有 virtio 加速磁盘和网卡的新 SUSE Linux Enterprise 15 SP2 虚拟机。它将创建新的 10 GB qcow2 磁盘映像作为存储空间,源安装媒体为主机 CD-ROM 驱动器。此命令行使用 VNC 图形,并会自动启动图形客户端。
- KVM
- >virt-install --connect qemu:///system --virt-type kvm \ --name sle15sp2 --memory 1024 --disk size=10 --cdrom /dev/cdrom --graphics vnc \ --os-variant sle15sp2
- Xen
- >virt-install --connect xen:// --virt-type xen --hvm \ --name sle15sp2 --memory 1024 --disk size=10 --cdrom /dev/cdrom --graphics vnc \ --os-variant sle15sp2
10.3 高级 Guest 安装方案 #
本节提供有关超出了正常安装范围的操作(例如手动配置 UEFI 固件、使用内存气球和安装附加产品)的说明。
10.3.1 高级 UEFI 配置 #
虚拟机使用的 UEFI 固件由 OVMF(开放虚拟机固件)提供。qemu-ovmf-x86_64 软件包中包含适用于 AMD64/Intel 64 VM Guest 的固件。AArch64 VM Guest 的固件由 qemu-uefi-aarch64 软件包提供。两个软件包都包含多个固件,每个固件都支持一组不同的特性和功能。这些软件包中还包含 JSON 固件描述符文件,用于描述各个固件的特性和功能。
libvirt 支持两种选择虚拟机 UEFI 固件的方法:自动和手动。如果使用自动选择方法,libvirt 将根据用户指定的一组可选功能选择固件。如果未明确指定功能,libvirt 将选择已启用安全引导并已注册 Microsoft 密钥的固件。使用手动选择方法时,必须明确指定固件的完整路径和任何可选设置。用户可以引用 JSON 描述符文件来查找满足其要求的固件。 
      
        使用 virt-install 时,可以通过为 boot 选项指定 firmware=efi 参数(例如,--boot firmware=efi)来启用自动固件选择。可以通过请求添加或删除固件功能来影响选择过程。以下示例演示了如何在禁用 UEFI 安全引导的情况下自动选择固件。
      
> virt-install --connect qemu:///system --virt-type kvm \
--name sle15sp5 --memory 1024 --disk size=10 --cdrom /dev/cdrom --graphics vnc \
--boot firmware=efi,firmware.feature0.name=secure-boot,firmware.feature0.enabled=no \
--os-variant sle15sp5
          为确保永久性 VM Guest 在其生命周期内始终使用相同的固件和变量存储区,libvirt 将在 VM Guest XML 配置中记录自动选择的固件。自动选择固件是一次性活动。选择固件后,仅当 VM Guest 管理员使用手动选择固件的方法明确更改固件时,固件才会更改。
        
loader 和 nvram 参数用于手动选择固件。其中 loader 是必需的,nvram 会定义一个可选的 UEFI 变量存储区。以下示例演示了如何在启用安全引导的情况下手动选择固件。
> virt-install --connect qemu:///system --virt-type kvm \
--name sle15sp5 --memory 1024 --disk size=10 --cdrom /dev/cdrom --graphics vnc \
--boot loader=/usr/share/qemu/ovmf-x86_64-smm-code.bin,loader.readonly=yes,loader.type=pflash,loader.secure=yes,nvram.template=/usr/share/qemu/ovmf-x86_64-smm-vars.bin \
--os-variant sle15sp5
libvirt 无法修改 UEFI 固件的任何特征。例如,它无法在启用了 UEFI 安全引导的固件中禁用 UEFI 安全引导,即使指定 loader.secure=no 也是如此。libvirt 将确保指定的固件可以满足任何指定的功能。例如,它将拒绝使用 loader.secure=no 禁用安全引导的配置,而是指定启用了 UEFI 安全引导的固件。
        
qemu-ovmf-x86_64 软件包中包含多个 UEFI 固件映像。例如,以下子集支持 SMM、UEFI 安全引导,并已注册 Microsoft、openSUSE 或 SUSE UEFI CA 密钥:
#rpm -ql qemu-ovmf-x86_64[...] /usr/share/qemu/ovmf-x86_64-smm-ms-code.bin /usr/share/qemu/ovmf-x86_64-smm-ms-vars.bin /usr/share/qemu/ovmf-x86_64-smm-opensuse-code.bin /usr/share/qemu/ovmf-x86_64-smm-opensuse-vars.bin /usr/share/qemu/ovmf-x86_64-smm-suse-code.bin /usr/share/qemu/ovmf-x86_64-smm-suse-vars.bin [...]
对于 AArch64 体系结构,该软件包名为 qemu-uefi-aarch32:
#rpm -ql qemu-uefi-aarch32[...] /usr/share/qemu/aavmf-aarch32-code.bin /usr/share/qemu/aavmf-aarch32-vars.bin /usr/share/qemu/firmware /usr/share/qemu/firmware/60-aavmf-aarch32.json /usr/share/qemu/qemu-uefi-aarch32.bin
*-code.bin 文件是 UEFI 固件文件。*-vars.bin 文件是对应的变量存储映像,可用作每个 VM 的非易失性存储模板。首次创建 VM 时,libvirt 会将指定的 vars 模板复制到每个 VM 路径的 /var/lib/libvirt/qemu/nvram/ 下。名称中不包含 code 或 vars 的文件可用作单个 UEFI 映像。它们没有太大的作用,因为每次经过 VM 关开机后,UEFI 变量都不会保存。
      
*-ms*.bin 文件包含存放在实际硬件上的 UEFI CA 密钥。因此,在 libvirt 中它们已配置为默认设置。同样,*-suse*.bin 文件包含预安装的 SUSE 密钥。还有一组不包含预安装密钥的文件。
      
有关 OVMF 的更多细节,请参见 http://www.linux-kvm.org/downloads/lersek/ovmf-whitepaper-c770f8c.txt。
10.3.2 对 Windows Guest 使用内存气球 #
内存气球是在运行时更改 VM Guest 所用内存量的方法。KVM 和 Xen 超级管理程序都提供此方法,但需要 Guest 也支持此方法。
基于 openSUSE 和 SLE 的 Guest 支持内存气球,而 Windows Guest 需要通过 Virtual Machine Driver Pack (VMDP) 来提供气球技术。要使设置的最大内存大于为 Windows Guest 配置的初始内存,请执行以下步骤:
- 安装最大内存等于或小于初始值的 Windows Guest。 
- 在 Windows Guest 中安装虚拟机驱动程序包,以提供所需的驱动程序。 
- 关闭 Windows Guest。 
- 将 Windows Guest 的最大内存重置为所需值。 
- 再次启动 Windows Guest。 
10.3.3 在安装中包含附加产品 #
某些操作系统(例如 SUSE Linux Enterprise Server)允许在安装过程中包含附加产品。如果附加产品安装源是通过 SUSE Customer Center 提供的,则无需进行特殊的 VM Guest 配置。如果安装源是通过 CD/DVD 或 ISO 映像提供的,则需要向 VM Guest 安装系统提供标准安装媒体映像和附加产品的映像。
如果您使用的是基于 GUI 的安装方法,请在向导的最后一步选择,并通过 › 添加附加产品 ISO 映像。指定映像的路径,并将设置为 。
        如果您是从命令行安装的,则需要使用 --disk 参数而不是 --cdrom 来设置虚拟 CD/DVD 驱动器。将使用第一个指定的设备进行引导。以下示例将 SUSE Linux Enterprise Server 15 连同 SUSE Enterprise Storage 扩展一起安装:
      
> virt-install \
 --name sles15+storage \
 --memory 2048 --disk size=10 \
 --disk /path/to/SLE-15-SP6-Full-ARCH-GM-media1.iso-x86_64-GM-DVD1.iso,device=cdrom \
 --disk /path/to/SUSE-Enterprise-Storage-VERSION-DVD-ARCH-Media1.iso,device=cdrom \
 --graphics vnc --os-variant sle15