我正在尝试通过KVM使用自动安装。 步骤是:
所以我使用这个命令来安装我自定义的linux:
virt-install --name Kernel_Test --ram 16384 --vcpus=8 --os-type=linux --os-variant=rhel6 --vnc --hvm --disk path=/kvm_images//Kernel_Test.qcow2,device=disk,format=qcow2,size=50,bus=sata --boot hd,kernel=/tmp/my_vmlinuz,initrd=/tmp/my_image,kernel_args="append stage2=initrd:" --network bridge=bridge1,model=virtio --network bridge=bridge1,model=virtio --network bridge=bridge0,model=virtio
但是,它会陷入一个循环,如下所示:
我试图用下面的命令去掉内核相关的configuration,但没有成功:
virsh dumpxml <VMNAME> >> vmname.xml (do something to change vmname.xml, strip kernel/initrd boot part) virsh define vmname.xml
它仍然会保持循环,当我再次dumpxml时,它仍然保持内核/ initrd启动configuration。
因为我需要自动安装,所以如何才能让KVM只从destined kernel / initrd启动一次? 我已经在kernel= ...之前设置了引导序列--boot hd,但是它只是跳过它,并从本地内核/ initrd引导keesp。
如果直接引导内核,将始终使用它,并且常规引导顺序将被忽略。
处理这个问题的最好方法是不要使用直接内核启动来安装系统,而是传递一个你正在安装的Linux发行版的位置(可以在本地磁盘或远程Web服务器上,FTP或NFS服务器)。 这也允许你注入一个本地kickstart或preseed文件进行一个完全自动化的安装。 例如:
--boot hd --location http://mirror.centos.org/centos/7/os/x86_64 --initrd-inject=my_vm.ks --extra-args="ks=file:/my_vm.ks"
如果由于某种原因你不能这么做,那么在virt-install退出之后,传递--noreboot和hack XML。 您将不得不手动重新启动虚拟机。 请记住,在安装完成之前 ,virt-install可能会退出,因此重新启动VM将无法可靠地工作,并可能会中断正在进行的安装。