我有一个使用以下内容创建的 Ubuntu 映像:
qemu-img create -f qcow2 -b focal-server-cloudimg-amd64-disk-kvm.img test.qcow2 20G
它启动了,cloud-init 也正常工作了。我现在安装了一个新内核
apt install linux-generic
这似乎引入了我想要使用的 initrd 和内核:
$ ls /boot
System.map-5.4.0-1062-kvm grub vmlinuz
System.map-5.4.0-109-generic initrd.img vmlinuz-5.4.0-1062-kvm
config-5.4.0-1062-kvm initrd.img-5.4.0-1062-kvm vmlinuz-5.4.0-109-generic
config-5.4.0-109-generic initrd.img-5.4.0-109-generic vmlinuz.old
efi initrd.img.o
问题是我无法让 grub 加载通用内核。根据文档,我只需编辑 /etc/default/grub:
GRUB_DEFAULT=3
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
然后执行update-grub
并重新启动。我尝试了 GRUB_DEFAULT 的所有可能值,但总是被忽略。原始 KVM 内核始终启动。似乎某个地方的某个参数存在冲突。我做对了吗?还是错过了一步?
更新:我仍然想解决这个问题,但我发现有一个使用 cloud-init 和通用内核的 Ubuntu 版本。所以我现在正在使用它。因此,如果您需要这个,请使用:
focal-server-cloudimg-amd64.img
代替
focal-server-cloudimg-amd64-kvm.img