I recently got a Beelink mini-PC. For the size and price it’s pretty powerful; 32Gb RAM, 1TB SSD, AMD Ryzen 7 5700U. Definitely enough to spin up a few test VMs to play with things. So I installed Rocky9 and the virtualization group. I copied over some VM images from an older machine, and it worked! Yay!
Today I noticed the pc
machine type was deprecated and we should be using q35
. So I thought I’d try a new build.
virt-install --noreboot \
-n ttt \
-r 4096 \
--vcpus=1 \
--os-variant=rocky9 \
--machine q35 \
--accelerate \
-v '--network=bridge=br-lan,target=v-ttt' \
--disk path=/dev/SSD/vm.ttt \
-l https://dl.rockylinux.org/pub/rocky/9/BaseOS/x86_64/kickstart/ \
--nographics \
-x 'inst.ks=http://10.0.0.137/CentOS/kickstart/rocky9.cfg ksdevice=ens2 ip=dhcp console=ttyS0,9600'
This starts off well enough but then…
[ OK ] Reached target System Initialization.
[ OK ] Reached target Basic System.
[ 6.087558] IPv6: ADDRCONF(NETDEV_CHANGE): enp1s0: link becomes ready
[*** ] A start job is running for nm-wait-�ne-initrd.service (16s / no limit)
It hangs here for a long time… eventually it moves on
[ OK ] Finished nm-wait-online-initrd.service.
Starting dracut initqueue hook...
And it hangs here again. Eventually it fails
[ 199.704567] dracut-initqueue[1054]: Warning: dracut-initqueue: timeout, still waiting for following initqueue hooks:
[ 199.707335] dracut-initqueue[1054]: Warning: /lib/dracut/hooks/initqueue/finished/devexists-\x2fdev\x2froot.sh: "[ -e "/dev/root" ]"
[ 199.709730] dracut-initqueue[1054]: Warning: /lib/dracut/hooks/initqueue/finished/kickstart.sh: "[ -e /tmp/ks.cfg.done ]"
[ 199.712005] dracut-initqueue[1054]: Warning: /lib/dracut/hooks/initqueue/finished/nm.sh: "[ -f /tmp/nm.done ]"
[ 199.714195] dracut-initqueue[1054]: Warning: /lib/dracut/hooks/initqueue/finished/wait_for_disks.sh: "[ "$main_loop" -ge "10" ]"
[ 199.716576] dracut-initqueue[1054]: Warning: /lib/dracut/hooks/initqueue/finished/wait_for_settle.sh: "[ -f /tmp/settle.done ]"
[ 199.719097] dracut-initqueue[1054]: Warning: dracut-initqueue: starting timeout scripts
And lots more errors follow.
Now if I use the older pc-i440fx-rhel7.6.0
machine type then the bulld completes and everything is happy.
Even more odd, if I then virsh edit
the XML file and change the machine type (and the associated pci
definition to pci
)
<type arch='x86_64' machine='q35'>hvm</type>
...
<controller type='pci' index='0' model='pcie-root'/>
then the new VM still boots cleanly.
So it appears to be only on initial install that the hang occurs.
Any ideas why?
For complete reference, the kickstart file is pretty simple; most of it isn’t relevant to the problem because we’re not even getting that far!
text
url --url https://dl.rockylinux.org/pub/rocky/9/BaseOS/x86_64/os
repo --name=AppStream --mirrorlist https://mirrors.rockylinux.org/mirrorlist?repo=AppStream-9&arch=x86_64
poweroff
lang en_US.UTF-8
keyboard us
network --onboot yes --device eth0 --bootproto dhcp --ipv6 auto
rootpw --iscrypted $6$Tyeahyeahyeah
firewall --disabled
selinux --disabled
timezone --utc America/New_York
zerombr
clearpart --all --initlabel
part /boot --fstype=ext4 --asprimary --size=1024
part swap --asprimary --size=1024
part / --fstype=ext4 --asprimary --grow --size=1
%packages
@^minimal-environment
wget
ksh
dos2unix
logwatch
tar
postfix
bind-utils
bc
-iw*-firmware
%end
%addon com_redhat_kdump --disable --reserve-mb='auto'
%end