以下是您如何使用 KVM 在本地机器上使用 Fedora 云镜像的方法。
下载云图像。
wget https://mirrors.tuna.tsinghua.edu.cn/fedora/releases/35/Cloud/x86_64/images/Fedora-Cloud-Base-35-1.2.x86_64.qcow2
制作一个名为 my-disk.qcow2 的新本地支持映像(这样我们就不会写入我们下载的映像)。
qemu-img create -f qcow2 -b Fedora-Cloud-Base-35-1.2.x86_64.qcow2 my-disk.qcow2 20G
云镜像使用 cloud-init 在启动时配置自身,设置主机名、用户名、密码和 ssh 密钥等。您还可以在启动过程的两个阶段运行特定命令(请参阅下面的bootcmd和runcmd)并输出消息(请参阅下面的final_message)这对脚本化测试很有用。
使用以下内容创建一个名为meta-data的文件。
cat > meta-data << EOF
instance-id: Cloud00
local-hostname: cloud-00
EOF
接下来,创建一个名为user-data的文件,内容如下(根据需要修改)。这将默认用户设置为cloud密码为password(您可能更喜欢在文件中使用加密密码)并解锁帐户,以便您可以在终端登录(无需 SSH)。如果您愿意,也可以添加您自己的公共 SSH 密钥。
cat > user-data << EOF
#cloud-config
# Set the default user
system_info:
default_user:
name: cloud
plain_text_passwd: 'password'
groups: [wheel]
# Unlock the default user
chpasswd:
list: |
cloud:password
expire: False
# Other settings
ssh_pwauth: True
EOF
Cloud init 在启动时挂载 CD-ROM,因此使用 `genisoimage` 或 `mkisofs` 从这些文件中创建 ISO 映像。
genisoimage -output my-seed.iso -volid cidata -joliet -rock user-data meta-data
mkisofs -J -l -R -V "cidata" -iso-level 4 -o my-seed.iso user-data meta-data
如果您想通过 SSH 连接,您将需要某种桥接器。如果您已经在运行 libvirtd,那么您应该有一个 virbr0 网络设备(在下面的示例中使用)来为您的云实例提供本地网络。如果您没有设置网桥,您仍然可以在没有网络支持的情况下启动它(去掉下面的-netdev和-device行)。
现在我们准备启动它!
virt-install \
--name fedora\
--memory 1024 \
--disk my-disk.qcow2,device=disk,bus=virtio \
--disk my-seed.iso,device=cdrom \
--os-type linux \
--os-variant fedora30 \
--virt-type kvm \
--graphics none \
--network network=default \
--import
您应该会看到一个弹出窗口和 Fedora 加载和 cloud-init 配置实例。在登录提示时,您应该能够使用您在 user-data 中设置的用户名cloud和密码登录。