因此,我尝试使用带有最小图像的 cloud-init (https://cloud-images.ubuntu.com/minimal/releases/focal/release/ubuntu-20.04-minimal-cloudimg-amd64.img),但似乎根本不起作用。完全相同的过程适用于服务器映像 (https://cloud-images.ubuntu.com/releases/focal/release/ubuntu-20.04-server-cloudimg-amd64.img)。
我正在使用元数据和用户数据genisoimage -output cloud-init.iso -volid cidata -joliet -rock meta-data user-data
。
然后我启动它virt-install --connect qemu:///system --virt-type kvm --os-type linux --os-variant ubuntu20.04 --disk path=image.qcow2,bus=scsi,format=qcow2 --disk path=cloud-init.iso,device=cdrom --controller type=scsi,model=virtio-scsi --import --network network:default
在用户数据中,我尝试仅使用用户数据中的 runcmd 来触摸 /debug 来调试它,但之后手动启动它进行调查时没有这样的文件,所以 runcmd 似乎根本无法运行。请记住,完全相同的过程可以很好地与 server-cloudimg 配合使用。dpkg -l
在最小图像上运行显示正在安装的 cloud-init 包。
用户数据
#cloud-config
runcmd:
- touch /debug
元数据
instance-id: iid-0
答案1
以防有人遇到同样的问题。
评论来自安德鲁是正确的。但是我们仍然可以启动系统进行 IP 分配。
创建 cidata.iso
mkisofs -o cidata.iso -V cidata -J -r user-data meta-data
创建虚拟机。
sudo virt-install
--import
--connect qemu:///system
--name test
--ram $MEM
--vcpus $CPU
--disk path=/kvm/test.qcow2,size=10
--disk西数
--os-type linux
--os-variant ubuntu22.04
--network bridge:virbr0,model=virtio
--graphics none
--noautoconsole
如果仍然想尝试网络启动,请python3 -m http.server
从包含用户数据和元数据的文件夹运行,然后附加到 virt-install cmd。
--sysinfo type=smbios,system_serial=ds=nocloud-net;s=http://_gateway:8000/ //for network boot.