找不到 Ubuntu 树的 hvm 内核

TFu*_*uto 7 kvm virtualization

这个命令:

virt-install   \
   --name bla  \
   --ram=1024  \
   --disk path=/home/me/libvirt/images/bla.qcow2,bus=virtio,size=10  \
   --location /home/me/Downloads/ubuntu-18.10-desktop-amd64.iso
Run Code Online (Sandbox Code Playgroud)

报告:

ERROR    Couldn't find hvm kernel for Ubuntu tree.
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

(因为关于这个问题有很多重复的帖子和答案,我也回答一下。)

TFu*_*uto 8

而不是使用

 --location /home/me/Downloads/ubuntu-18.10-desktop-amd64.iso
Run Code Online (Sandbox Code Playgroud)

 --cdrom /home/me/Downloads/ubuntu-18.10-desktop-amd64.iso
Run Code Online (Sandbox Code Playgroud)

区别在于(来自手册页):

-c CDROM , --cdrom=CDROM
File or device use as a virtual CD-ROM device for fully virtualized guests. It can
be path to an ISO image, or to a CDROM device. It can also be a URL from which to 
fetch/access a minimal boot ISO image. The URLs take the same format as described
for the "--location" argument. If a cdrom has been specified via the "--disk" 
option, and neither "--cdrom" nor any other install option is specified, the 
"--disk" cdrom is used as the install media.

-l LOCATION , --location=LOCATION
Distribution tree installation source. virt-install can recognize certain 
distribution trees and fetches a bootable kernel/initrd pair to launch the 
install. 
Run Code Online (Sandbox Code Playgroud)

所以在这种情况下正确的命令是:

virt-install   \
   --name bla  \
   --ram=1024  \
   --disk path=/home/me/libvirt/images/bla.qcow2,bus=virtio,size=10  \
   --cdrom /home/me/Downloads/ubuntu-18.10-desktop-amd64.iso
Run Code Online (Sandbox Code Playgroud)


小智 7

从技术上讲,您可以将 --location 与更新的 virt-install 1.5+ 和 Cole Robinson解释的参数一起使用。我测试了一下,确实如此。

然而,在我看来,让 Ubuntu 运行起来--location是一件很痛苦的事情。我终于让它与以下--location完整命令一起工作:

virt-install \
    -n ubuntu -r 2048 \
    --os-variant=ubuntu19 \
    --location http://us.archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/ \
    --disk /var/lib/libvirt/images/ubuntu20.img,size=10,device=disk,bus=virtio \
    --graphics none -w bridge=br0,model=virtio \
    --extra-args 'console=ttyS0,115200n8 serial' \
    --force \
    --debug
Run Code Online (Sandbox Code Playgroud)

确保您浏览了 URL 以--location获取您想要的 Ubuntu 的正确版本。我相信你会进行一些尝试和错误......

使用 CentOS.iso镜像时,我没有遇到这个问题,--location并且使用起来效果很好。


小智 6

在尝试使用 virt-install 安装 Ubuntu 20.04.1 服务器时,我一直在努力解决这个问题。我发现一些答案很有帮助,但找到了不同的解决方案。

第一的。最初的问题引用了“桌面”iso 文件。不过,有关将 ISO 安装到 /mnt 的“live-server-amd64.iso”的解决方案实际上对我开始安装很有帮助。

然而,我的安装最终进展缓慢。我不完全确定为什么这么慢。当我试图取消永远需要的更新时,安装最终崩溃了。不过,还有另一种解决方案,它不涉及安装 ISO 和提供这些内核启动选项。

有一个旧版(非实时)版本的 Ubuntu 20.04.1 服务器可用。

http://cdimage.ubuntu.com/ubuntu-legacy-server/releases/20.04/release/

在这个线程上找到了它。

非实时 Ubuntu Server 20.04 版本

对于旧版 20.04.1 服务器,它实际上将使用 --location 参数而不是 --cdrom 参数运行,从而启用 --extra-args console=ttyS0 选项。


小智 5

我找到了一个解决方案:

mount -o ro /images/ubuntu-20.04-live-server-amd64.iso /mnt

cd /mnt

virt-install \
    --name myguest\
    --memory 4096 \
    --disk /vms/myguest.disk,size=40 \
    --cdrom /images/ubuntu-20.04-live-server-amd64.iso \
    --nographics \
    --os-type linux \
    --boot kernel=casper/vmlinuz,initrd=casper/initrd,kernel_args="console=ttyS0"
Run Code Online (Sandbox Code Playgroud)

安装结束时: virsh 编辑 myguest (并删除内核、initrd 和 args 行) virsh start myguest