Я пытаюсь установить гостевую систему rhel внутри хоста rhel с помощью kvm и автоматически запускать гостевую гостевую систему после завершения установки.
В файле кикстарта есть команда «reboot», которая должна указать RHEL перезапустить после установки.
сценарий находится в / root / install_machine, а переменные определены в верхней части сценария
virt-install \
--name=$name-$ip_short \
--arch=x86_64 \
--ram=$memory \
--os-type=linux \
--os-variant=virtio26 \
--hvm \
--connect=qemu:///system \
--network bridge:br0 \
--vcpus=$cpus \
--accelerate \
--autostart \
--disk path=/kvm/disks/$name-$ip_short.img,size=$disk_size \
--location $location \
--vnc \
-x "ks=$ks_file ksdevice=eth0 ip=$ip_long netmask=255.255.255.0 gateway=$gateway dns=8.8.8.8"
Я вхожу в машину и запускаю скрипт
ssh -X root@virtual_server
/root/install_machine
открывается окно virt-viewer, я смотрю intall, смотрю, как он перезагружается, и он отлично работает.
Но если я вхожу в систему без графики, я получаю сообщение об ошибке «Не удается открыть дисплей» (что ожидается), затем система устанавливается, а затем выключается, и мне приходится запускать ее вручную.
ssh root@virtual_server
/root/install_machine
Starting install...
Retrieving file .treeinfo...
Retrieving file vmlinuz...
Retrieving file initrd.img...
Creating storage file test2-178.img
Creating domain...
Cannot open display:
Run 'virt-viewer --help' to see a full list of available command line options
Domain installation still in progress. You can reconnect to
the console to complete the installation process.
Я также попытался запустить сценарий из cron, машина установлена, но остается в выключенном состоянии, и мне нужно вручную включить ее.
Есть ли какие-либо предложения по поводу того, что я могу попытаться установить и запустить без моего участия? Полагаю, я мог бы отслеживать процесс и запускать "virsh start $ name- $ ip_short", но это кажется хакерским. Похоже, он должен перезапуститься самостоятельно. Добавление --noautoconsole в virt-install тоже не помогает ...
возможно, не самое чистое решение, но это работает (с определениями, определенными в верхней части скрипта)
virsh destroy $name-$ip_short
virsh undefine $name-$ip_short
rm -fr /kvm/disks/$name-$ip_short.img
virt-install \
--name=$name-$ip_short \
--arch=x86_64 \
--ram=$memory \
--os-type=linux \
--os-variant=virtio26 \
--hvm \
--connect=qemu:///system \
--network bridge:br0 \
--vcpus=$cpus \
--accelerate \
--autostart \
--disk path=$disk_directory/$name-$ip_short.img,size=$disk_size \
--location http://$domain/$location_path \
--vnc \
--noautoconsole \
-x "ks=http://$domain/$ks_path ksdevice=eth0 ip=$ip_long netmask=255.255.255.0 gateway=$gateway dns=$dns"
finished="0";
while [ "$finished" = "0" ]; do
sleep 5;
if [ `virsh list --all | grep "running" | grep "$name-$ip_short" | wc -c` -eq 0 ];
then
#echo "setup finished, start vm $name-$ip_short"
finished=1;
virsh start $name-$ip_short
fi
done