Red Hat Enterprise Linux release 8.5 (Ootpa)
kernel-4.18.0-348.20.1.el8_5.x86_64
libvirt-6.0.0-37.1.module+el8.5.0+13858+39fdc467.x86_64
libvirt-client-6.0.0-37.1.module+el8.5.0+13858+39fdc467.x86_64
官网下载的guest image是没有root权限的,获得root访问权限的方法有很多,包括libguestfs来修改,或通过cloud-init在启动时候写入等等。还有一个官方重置Linux主机root密码的方法,详见Resetting the Root Password,这种方法的前提是你可以在内核引导前访问boot menu,这就引出了本文讨论的问题。如果你是Linux虚拟机,而且一启动就直接开始内核引导,没有在boot menu编辑启动参数的机会。这就可以通过本文的方法解决。
案例中的虚拟机名为Fedora-Cloud-Base-35
,通过以下命令可以启动虚拟机并进入console:
# virsh start Fedora-Cloud-Base-35 && virsh console Fedora-Cloud-Base-35
然而内核直接开始引导,没有编辑启动参数的机会。这时候可以通过virsh edit
命令检查一下该虚拟机的配置文件,根据情况添加下面两行到os
标签下:
<bootmenu enable='yes' timeout='30000'/>
<bios useserial='yes' rebootTimeout='0'/>
添加后的完整配置文件应该是这样(部分内容被省略):
# virsh dumpxml Fedora-Cloud-Base-35
<domain type='kvm' id='17'>
<name>Fedora-Cloud-Base-35</name>
......
<os>
<type arch='x86_64' machine='pc-q35-rhel8.2.0'>hvm</type>
<boot dev='hd'/>
<bootmenu enable='yes' timeout='30000'/>
<bios useserial='yes' rebootTimeout='0'/>
</os>
......
</domain>
这个配置会让boot menu等待30秒,你将有足够的时间做出反应。提示一下,如果你没有看到boot menu,可以尝试直接按e
试一下。