示例:Fedora 镜像¶
本示例演示如何安装 Fedora 镜像,主要关注 Fedora 25。由于 Fedora 的安装过程可能因版本而异,因此如果您使用不同版本的 Fedora,安装步骤可能会有所不同。
下载 Fedora 安装 ISO¶
访问 Fedora 下载站点。
导航到 下载 Fedora Server 页面,以获取 Fedora Server ISO 镜像。
选择您要下载的 ISO 镜像。
例如,
Netinstall 镜像是一个不错的选择,因为它是一个较小的镜像,在安装过程中从互联网下载缺少的软件包。
启动安装过程¶
使用之前描述的 virt-manager 或 virt-install 命令启动安装过程。如果您使用 virt-install 命令,请不要忘记将您的 VNC 客户端连接到虚拟机。
假设
您的虚拟机镜像名称为
fedora;您需要在使用 virsh 命令操作镜像状态时使用此名称。您已将 netinstall ISO 镜像保存到
/tmp目录。
如果您使用 virt-install 命令,则命令应如下所示
# qemu-img create -f qcow2 /tmp/fedora.qcow2 10G
# virt-install --virt-type kvm --name fedora --ram 1024 \
--disk /tmp/fedora.qcow2,format=qcow2 \
--network network=default \
--graphics vnc,listen=0.0.0.0 --noautoconsole \
--os-type=linux --os-variant=fedora23 \
--location=/tmp/Fedora-Server-netinst-x86_64-25-1.3.iso
完成安装步骤¶
安装程序启动后,选择您喜欢的语言,然后单击 继续 以进入安装摘要。接受默认设置。
查看以太网状态¶
确保以太网设置处于 开启 状态。此外,请确保 IPv4 设置 的 方法 为 自动 (DHCP),这是默认设置。
主机名¶
安装程序允许您选择主机名。默认值 (localhost.localdomain) 即可。稍后您将安装 cloud-init 包,该包将在使用此镜像配置新实例时在启动时设置主机名。
分区磁盘¶
有不同的磁盘分区选项。默认安装使用 LVM 分区,并创建三个分区 (/boot、/、swap),这可以正常工作。或者,您可能希望创建一个单独的 ext4 分区,该分区挂载到 /,这也有效。
如果不确定,请使用安装程序的默认分区方案。虽然没有方案本质上优于其他方案,但将您想要动态增长的分区放在列表的末尾将允许它在不跨越另一个分区的边界的情况下增长。
选择要安装的软件¶
完成安装,使用默认选项。最简单的方法是选择 最小 安装,它将安装 SSH 服务器。
设置 root 密码¶
在安装过程中,请记住在提示时设置 root 密码。
分离 CD-ROM 并重新启动¶
等待安装完成。
要使用 virsh 命令弹出磁盘,libvirt 要求您在 CD-ROM 之前连接的相同目标上连接一个空磁盘,该目标可能是 hda。您可以使用 virsh dumpxml vm-image 命令确认适当的目标。
# virsh dumpxml fedora
<domain type='kvm' id='30'>
<name>fedora</name>
...
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<source file='/tmp/Fedora-Server-netinst-x86_64-25-1.3.iso'/>
<backingStore/>
<target dev='hda' bus='ide'/>
<readonly/>
<alias name='ide0-0-0'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
...
</domain>
从主机运行以下命令以使用 virsh 弹出磁盘并重新启动,以 root 身份。如果您正在使用 virt-manager,以下命令将有效,但您也可以使用 GUI 手动停止和启动来分离和重新启动它。
# virsh attach-disk --type cdrom --mode readonly fedora "" hda
# virsh reboot fedora
安装 ACPI 服务¶
为了使 hypervisor 能够重新启动或关闭实例,您必须在客户系统上安装并运行 acpid 服务。
以 root 身份登录到 Fedora 客户机,并运行以下命令以安装 ACPI 服务并配置其在系统启动时启动
# dnf install acpid
# systemctl enable acpid
配置 cloud-init 以获取元数据¶
实例必须与元数据服务交互才能在启动时执行多项任务。例如,实例必须获取 ssh 公钥并运行用户数据脚本。为了确保实例执行这些任务,请使用 cloud-init 包。
cloud-init 包会自动从元数据服务器获取公钥,并将其放置在帐户中。通过运行以下命令在 Fedora 客户机内部安装 cloud-init
# dnf install cloud-init
帐户因发行版而异。在基于 Fedora 的虚拟机上,该帐户称为 fedora。
您可以通过编辑 /etc/cloud/cloud.cfg 文件并添加一个包含不同用户的行来更改 cloud-init 使用的帐户名称。例如,要配置 cloud-init 将密钥放入名为 admin 的帐户中,请在配置文件中使用以下语法
users:
- name: admin
(...)
安装 cloud-utils-growpart 以允许分区调整大小¶
为了使根分区能够正确调整大小,请安装 cloud-utils-growpart 包,其中包含适当的工具,可以使用 cloud-init 允许磁盘调整大小。
# dnf install cloud-utils-growpart
禁用 zeroconf 路由¶
为了使实例能够访问元数据服务,您必须禁用默认的 zeroconf 路由
# echo "NOZEROCONF=yes" >> /etc/sysconfig/network
配置控制台¶
为了使 nova console-log 命令在 Fedora 上正常工作,您可能需要执行以下步骤
编辑
/etc/default/grub文件并配置GRUB_CMDLINE_LINUX选项。删除rhgb quiet并添加console=tty0 console=ttyS0,115200n8到该选项。例如... GRUB_CMDLINE_LINUX="rd.lvm.lv=fedora/root rd.lvm.lv=fedora/swap console=tty0 console=ttyS0,115200n8"
运行以下命令以保存更改
# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-4.10.10-200.fc25.x86_64 Found initrd image: /boot/initramfs-4.10.10-200.fc25.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-c613978614c7426ea3e550527f63710c Found initrd image: /boot/initramfs-0-rescue-c613978614c7426ea3e550527f63710c.img done
关闭实例¶
从实例内部,以 root 身份运行
# poweroff
清理(删除 MAC 地址详细信息)¶
操作系统在实例过程中将虚拟以太网卡的 MAC 地址记录在诸如 /etc/sysconfig/network-scripts/ifcfg-eth0 之类的位置。但是,每次镜像启动时,虚拟以太网卡都会有不同的 MAC 地址,因此必须从配置文件中删除此信息。
有一个名为 virt-sysprep 的实用程序,它执行各种清理任务,例如删除 MAC 地址引用。它将就地清理虚拟机镜像
# virt-sysprep -d fedora
取消定义 libvirt 域¶
现在您可以将镜像上传到 Image 服务,您不再需要让 libvirt 管理此虚拟机镜像。使用 virsh undefine vm-image 命令通知 libvirt
# virsh undefine fedora
镜像完成¶
使用 qemu-img create 命令创建的基础镜像文件已准备好上传。例如,您可以使用 openstack image create 命令将 /tmp/fedora.qcow2 镜像上传到 Image 服务。有关更多信息,请参阅 python-openstackclient 命令列表。