Only memtest and UEFI settings in GRUB menu

peter@localhost:~$ sudo touch /bin/foo
[sudo] password for peter: 
touch: cannot touch '/bin/foo': Read-only file system

I have triple checked that no Ubuntu Core storage device is involved. If you want, you can check the VM’s XML config. It’s pretty basic, really. I added a new VM and VMM selected the linux2024 template. Had to manually enable UEFI/TPM/SB by copy/pasting the example XML from the libvirt docs. In the meantime I’ve added a virtio (serial) console, for whatever that’s worth. I can assure you that this VM has never seen an Ubuntu Core image.

Apart from the serial console issue, @paddylandau seems to see exactly the same behavior, i.e. no desktop but a TTY login is possible. Something is wrong.

VM config
<domain type="kvm">
  <name>Ubuntu_Desktop_26.04</name>
  <uuid>b0ef2cd1-a37c-42df-b2ef-f2aa05e12d76</uuid>
  <title>Ubuntu Desktop 26.04</title>
  <metadata>
    <libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
      <libosinfo:os id="http://libosinfo.org/linux/2024"/>
    </libosinfo:libosinfo>
  </metadata>
  <memory unit="KiB">8388608</memory>
  <currentMemory unit="KiB">6291456</currentMemory>
  <memoryBacking>
    <source type="memfd"/>
    <access mode="shared"/>
  </memoryBacking>
  <vcpu placement="static">4</vcpu>
  <cputune>
    <emulatorpin cpuset="0-4"/>
  </cputune>
  <os firmware="efi">
    <type arch="x86_64" machine="pc-q35-noble">hvm</type>
    <firmware>
      <feature enabled="yes" name="enrolled-keys"/>
      <feature enabled="yes" name="secure-boot"/>
    </firmware>
    <loader readonly="yes" secure="yes" type="pflash">/usr/share/OVMF/OVMF_CODE_4M.ms.fd</loader>
    <nvram template="/usr/share/OVMF/OVMF_VARS_4M.ms.fd">/var/lib/libvirt/qemu/nvram/linux2024_VARS.fd</nvram>
  </os>
  <features>
    <acpi/>
    <apic/>
    <vmport state="off"/>
    <smm state="on"/>
  </features>
  <cpu mode="host-passthrough" check="none" migratable="on"/>
  <clock offset="utc">
    <timer name="rtc" tickpolicy="catchup"/>
    <timer name="pit" tickpolicy="delay"/>
    <timer name="hpet" present="no"/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <pm>
    <suspend-to-mem enabled="no"/>
    <suspend-to-disk enabled="no"/>
  </pm>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    <disk type="file" device="cdrom">
      <driver name="qemu" type="raw"/>
      <source file="/home/peter/Downloads/ubuntu-26.04-desktop-amd64.iso"/>
      <target dev="sda" bus="sata"/>
      <readonly/>
      <address type="drive" controller="0" bus="0" target="0" unit="0"/>
    </disk>
    <disk type="file" device="disk">
      <driver name="qemu" type="qcow2" cache="writeback"/>
      <source file="/var/lib/libvirt/images/ubuntu.qcow2"/>
      <target dev="sdb" bus="sata"/>
      <boot order="1"/>
      <address type="drive" controller="0" bus="0" target="0" unit="1"/>
    </disk>
    <controller type="usb" index="0" model="qemu-xhci" ports="15">
      <address type="pci" domain="0x0000" bus="0x02" slot="0x00" function="0x0"/>
    </controller>
    <controller type="pci" index="0" model="pcie-root"/>
    <controller type="pci" index="1" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="1" port="0x10"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x0" multifunction="on"/>
    </controller>
    <controller type="pci" index="2" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="2" port="0x11"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x1"/>
    </controller>
    <controller type="pci" index="3" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="3" port="0x12"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x2"/>
    </controller>
    <controller type="pci" index="4" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="4" port="0x13"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x3"/>
    </controller>
    <controller type="pci" index="5" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="5" port="0x14"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x4"/>
    </controller>
    <controller type="pci" index="6" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="6" port="0x15"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x5"/>
    </controller>
    <controller type="pci" index="7" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="7" port="0x16"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x6"/>
    </controller>
    <controller type="pci" index="8" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="8" port="0x17"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x7"/>
    </controller>
    <controller type="pci" index="9" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="9" port="0x18"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x0" multifunction="on"/>
    </controller>
    <controller type="pci" index="10" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="10" port="0x19"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x1"/>
    </controller>
    <controller type="pci" index="11" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="11" port="0x1a"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x2"/>
    </controller>
    <controller type="pci" index="12" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="12" port="0x1b"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x3"/>
    </controller>
    <controller type="pci" index="13" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="13" port="0x1c"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x4"/>
    </controller>
    <controller type="pci" index="14" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="14" port="0x1d"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x5"/>
    </controller>
    <controller type="pci" index="15" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="15" port="0x1e"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x6"/>
    </controller>
    <controller type="pci" index="16" model="pcie-to-pci-bridge">
      <model name="pcie-pci-bridge"/>
      <address type="pci" domain="0x0000" bus="0x08" slot="0x00" function="0x0"/>
    </controller>
    <controller type="sata" index="0">
      <address type="pci" domain="0x0000" bus="0x00" slot="0x1f" function="0x2"/>
    </controller>
    <controller type="virtio-serial" index="0">
      <address type="pci" domain="0x0000" bus="0x03" slot="0x00" function="0x0"/>
    </controller>
    <controller type="scsi" index="0" model="virtio-scsi">
      <address type="pci" domain="0x0000" bus="0x06" slot="0x00" function="0x0"/>
    </controller>
    <filesystem type="mount" accessmode="passthrough">
      <driver type="virtiofs"/>
      <source dir="/home/peter/VM/shared"/>
      <target dir="host_shared"/>
      <address type="pci" domain="0x0000" bus="0x07" slot="0x00" function="0x0"/>
    </filesystem>
    <interface type="network">
      <mac address="52:54:00:25:5c:b6"/>
      <source network="default"/>
      <model type="virtio"/>
      <address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
    </interface>
    <serial type="pty">
      <target type="isa-serial" port="0">
        <model name="isa-serial"/>
      </target>
    </serial>
    <console type="pty">
      <target type="serial" port="0"/>
    </console>
    <console type="pty">
      <target type="virtio" port="1"/>
    </console>
    <channel type="spicevmc">
      <target type="virtio" name="com.redhat.spice.0"/>
      <address type="virtio-serial" controller="0" bus="0" port="1"/>
    </channel>
    <input type="tablet" bus="usb">
      <address type="usb" bus="0" port="1"/>
    </input>
    <input type="mouse" bus="ps2"/>
    <input type="keyboard" bus="ps2"/>
    <input type="keyboard" bus="virtio">
      <address type="pci" domain="0x0000" bus="0x09" slot="0x00" function="0x0"/>
    </input>
    <input type="tablet" bus="virtio">
      <address type="pci" domain="0x0000" bus="0x0a" slot="0x00" function="0x0"/>
    </input>
    <tpm model="tpm-tis">
      <backend type="emulator" version="2.0"/>
    </tpm>
    <graphics type="spice">
      <listen type="none"/>
      <image compression="auto_lz"/>
      <jpeg compression="auto"/>
      <zlib compression="auto"/>
      <playback compression="on"/>
      <streaming mode="filter"/>
      <gl enable="yes" rendernode="/dev/dri/renderD128"/>
    </graphics>
    <sound model="ich9">
      <address type="pci" domain="0x0000" bus="0x00" slot="0x1b" function="0x0"/>
    </sound>
    <audio id="1" type="spice"/>
    <video>
      <model type="virtio" heads="1" primary="yes">
        <acceleration accel3d="yes"/>
      </model>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x0"/>
    </video>
    <redirdev bus="usb" type="spicevmc">
      <address type="usb" bus="0" port="2"/>
    </redirdev>
    <redirdev bus="usb" type="spicevmc">
      <address type="usb" bus="0" port="3"/>
    </redirdev>
    <watchdog model="itco" action="reset"/>
    <memballoon model="virtio">
      <address type="pci" domain="0x0000" bus="0x04" slot="0x00" function="0x0"/>
    </memballoon>
    <rng model="virtio">
      <backend model="random">/dev/urandom</backend>
      <address type="pci" domain="0x0000" bus="0x05" slot="0x00" function="0x0"/>
    </rng>
  </devices>
</domain>
mount output
peter@localhost:~$ mount
tmpfs on /run type tmpfs (rw,nosuid,nodev,size=1591376k,nr_inodes=819200,mode=755,inode64)
/dev/sda2 on /run/mnt/ubuntu-seed type vfat (rw,nosuid,nodev,noexec,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
/run/mnt/ubuntu-seed/snaps/pc-kernel_3390.snap on /run/mnt/kernel type squashfs (ro,relatime,errors=continue,threads=single)
/run/mnt/ubuntu-seed/snaps/core24_1587.snap on /run/mnt/base type squashfs (ro,relatime,errors=continue,threads=single)
/run/mnt/ubuntu-seed/snaps/pc_220.snap on /run/mnt/gadget type squashfs (ro,relatime,errors=continue,threads=single)
tmpfs on /run/mnt/data type tmpfs (rw,nosuid,relatime,inode64)
/dev/sda3 on /run/mnt/ubuntu-boot type ext4 (rw,relatime)
/dev/mapper/ubuntu-data-4f6b9629-0918-4466-aa9d-ca8c5d105fe9 on /run/mnt/host/ubuntu-data type ext4 (rw,nosuid,relatime)
/dev/mapper/ubuntu-save-6fbd1b9b-80b5-4976-9683-6421930ffd20 on /run/mnt/ubuntu-save type ext4 (rw,nosuid,nodev,noexec,relatime)
/run/mnt/ubuntu-seed/snaps/core24_1587.snap on / type squashfs (ro,relatime,errors=continue,threads=single)
tmpfs on /writable type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /etc/writable type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /etc/dbus-1 type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /etc/hosts type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /etc/iproute2 type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /etc/modprobe.d type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /etc/modules-load.d type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /etc/netplan type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /etc/network/if-up.d type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /etc/ssh type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /etc/sudoers.d type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /etc/systemd type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /etc/udev/rules.d type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /etc/cloud type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /etc/sysctl.d type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /etc/default/swapfile type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /etc/environment type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /etc/machine-id type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /etc/motd.d type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /etc/update-motd.d type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /etc/security/pwquality.conf type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /etc/polkit-1/actions type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /etc/polkit-1/rules.d type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /etc/fstab type tmpfs (rw,nosuid,nodev,size=1591376k,nr_inodes=819200,mode=755,inode64)
tmpfs on /snap type tmpfs (rw,nosuid,relatime,inode64)
/run/mnt/ubuntu-seed/snaps/pc-kernel_3390.snap on /usr/lib/firmware type squashfs (ro,relatime,errors=continue,threads=single)
/run/mnt/ubuntu-seed/snaps/pc-kernel_3390.snap on /usr/lib/modules type squashfs (ro,relatime,errors=continue,threads=single)
tmpfs on /var/snap type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /var/lib/snapd type tmpfs (rw,nosuid,relatime,inode64)
devtmpfs on /dev type devtmpfs (rw,nosuid,size=3424356k,nr_inodes=856089,mode=755,inode64)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,size=3978432k,nr_inodes=994608,inode64,usrquota)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=600,ptmxmode=000)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,nosuid,nodev,relatime,pagesize=2M)
mqueue on /dev/mqueue type mqueue (rw,nosuid,nodev,noexec,relatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recursiveprot,memory_hugetlb_accounting)
none on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
efivarfs on /sys/firmware/efi/efivars type efivarfs (rw,nosuid,nodev,noexec,relatime)
bpf on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,relatime,mode=700)
debugfs on /sys/kernel/debug type debugfs (rw,nosuid,nodev,noexec,relatime)
tracefs on /sys/kernel/tracing type tracefs (rw,nosuid,nodev,noexec,relatime)
configfs on /sys/kernel/config type configfs (rw,nosuid,nodev,noexec,relatime)
fusectl on /sys/fs/fuse/connections type fusectl (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k,inode64)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=24,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=7686)
tmpfs on /etc/group type tmpfs (rw,nosuid,nodev,size=1591376k,nr_inodes=819200,mode=755,inode64)
tmpfs on /etc/gshadow type tmpfs (rw,nosuid,nodev,size=1591376k,nr_inodes=819200,mode=755,inode64)
tmpfs on /etc/passwd type tmpfs (rw,nosuid,nodev,size=1591376k,nr_inodes=819200,mode=755,inode64)
tmpfs on /home type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /host type tmpfs (rw,nosuid,nodev,size=1591376k,nr_inodes=819200,mode=755,inode64)
/dev/mapper/ubuntu-data-4f6b9629-0918-4466-aa9d-ca8c5d105fe9 on /host/ubuntu-data type ext4 (rw,nosuid,relatime)
tmpfs on /etc/shadow type tmpfs (rw,nosuid,nodev,size=1591376k,nr_inodes=819200,mode=755,inode64)
tmpfs on /media type tmpfs (rw,relatime,inode64)
tmpfs on /mnt type tmpfs (rw,relatime,inode64)
tmpfs on /root type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /tmp type tmpfs (rw,relatime,inode64)
tmpfs on /var/cache/snapd type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /var/cache/apparmor type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /var/lib/cloud type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /var/lib/console-conf type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /var/lib/dbus type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /var/lib/dhcpcd type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /var/lib/extrausers type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /var/lib/private/systemd type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /var/lib/misc type tmpfs (rw,nosuid,relatime,inode64)
/dev/sda2 on /var/lib/snapd/seed type vfat (ro,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
tmpfs on /var/lib/sudo type tmpfs (rw,relatime,mode=700,inode64)
/dev/mapper/ubuntu-save-6fbd1b9b-80b5-4976-9683-6421930ffd20 on /var/lib/snapd/save type ext4 (rw,nosuid,nodev,noexec,relatime)
tmpfs on /var/lib/waagent type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /var/lib/systemd type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /var/log type tmpfs (rw,nosuid,relatime,inode64)
tmpfs on /var/tmp type tmpfs (rw,nosuid,relatime,inode64)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,nosuid,nodev,noexec,relatime)
/run/mnt/ubuntu-seed/snaps/snapd_26865.snap on /snap/snapd/26865 type squashfs (ro,nodev,relatime,errors=continue,threads=single,x-gdu.hide,x-gvfs-hide)
/run/mnt/ubuntu-seed/snaps/snapd_26865.snap on /usr/lib/snapd type squashfs (ro,nodev,relatime,errors=continue,threads=single)
/run/mnt/ubuntu-seed/snaps/core24_1587.snap on /snap/core24/1587 type squashfs (ro,nodev,relatime,errors=continue,threads=single,x-gdu.hide,x-gvfs-hide)
/run/mnt/ubuntu-seed/snaps/pc-kernel_3390.snap on /snap/pc-kernel/3390 type squashfs (ro,nodev,relatime,errors=continue,threads=single,x-gdu.hide,x-gvfs-hide)
/run/mnt/ubuntu-seed/snaps/pc_220.snap on /snap/pc/220 type squashfs (ro,nodev,relatime,errors=continue,threads=single,x-gdu.hide,x-gvfs-hide)
tmpfs on /run/snapd/ns type tmpfs (rw,nosuid,nodev,size=1591376k,nr_inodes=819200,mode=755,inode64)
nsfs on /run/snapd/ns/pc-kernel.mnt type nsfs (rw)
nsfs on /run/snapd/ns/pc.mnt type nsfs (rw)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=600920k,nr_inodes=150230,mode=700,uid=1000,gid=1000,inode64)