Ubuntu – Unable to boot official Vagrant boxes for 20.04

20.04vagrantvirtualbox

I am trying to use the official ubuntu/focal64 Vagrant box to run some new VMs. I have tried with versions v20200518.0.0 and v20200522.0.0 (the newest as of my testing). I am using Vagrant 2.2.9 and I tried with both VirtualBox 6.0.4 and 6.1.8.

My Vagrantfile is extremely simple:

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/focal64"
  config.vm.box_version = "20200522.0.0"

  config.vm.define "db1" do |db1|
    db1.vm.network "private_network", ip: "192.168.56.10"
  end

  config.vm.define "db2" do |db2|
    db2.vm.network "private_network", ip: "192.168.56.11"
  end

  config.vm.define "app1" do |app1|
    app1.vm.network "private_network", ip: "192.168.56.20"
  end
end

(Later on I plan to add provisioning to each of those boxes, but this is a simple test just to get started.)

The problem is that these boxes will not boot. Here is the error I get:

[  148.806822] VFS: Cannot open root device "PARTUUID=43931bda-01" or unknown-block(0,0): error -6
[  151.754729] Please append a correct "root=" boot option: here are the available partitions
[  154.534996] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
[  157.312019] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.4.0-31-generic #35-Ubuntu
[  159.842670] Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006

After that there is a stack trace, but I can't get a screenshot because the box reboots too quickly.

When I try to use the ubuntu/bionic64 images, those work fine. Only the new focal64 images seem to be broken.

How can I get these VMs to boot?

Best Answer

This issue was caused by a change to the images: older images connected a serial console to output to a file, but this behavior was removed due to a user request.

A fix is in progress (originally here), but it has not yet been merged.

In the mean time, the simplest workaround is to create a serial port and redirect it to nowhere:

vm.customize [ "modifyvm", :id, "--uartmode1", "file", File::NULL ]