测试环境
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
试一下。
参考资料
- https://libvirt.org/formatdomain.html#operating-system-booting