I'm trying to switch from using VBox to KVM but wrestling with the following problem:
Has anyone else experienced this issue? If so, how did you solve it?
I am aware of the remote desktop/ssh workarounds, but would rather not use them because:
All input is valued.
Details follow:
Nothing jumps out from guest dmesg but maybe I don't know what to look for. I will post dmesg if someone thinks it will help (it's long).
Sanitized output from host after running
Please ask if more data needed.
- Using KVM with Virt-Manager, qxl video, spice display
- Host is Ubuntu Xenial
- Running 5 'buntu VMs: Mate-core, Gnome, Xubuntu-core, Lubuntu-core and Kubuntu.
- In all VMs, if KMS is enabled, both console and GUI boot only into 1024x768 resolution. Therefore, KMS is disabled with nomodeset.
- If nomodeset, all consoles properly boot into mode defined in GRUB_ GFXMODE=<what>x<ever>
- and all GUIs will properly autosense/autoconfigure into whatever resolution QEMU window is set at.
- Mate, Xubuntu and Gnome behave well.
- But under nomodeset, Lubuntu & Kubuntu display gigantic system dialogue boxes and highly magnified app windows in some applications.
- Kubuntu is the worst: this unwanted magnification affects every app except Firefox.
- Lubuntu is variable: LXTerminal is gigantic, so are some other system dialogues like Monitor Settings and Screensaver Settings. But XVT is proper resolution. So is PCManFM, Desktop Preferences, Network Connections and Printers.
- If I enable KMS by deleting nomodeset, then manually define a modeline/add mode/set mode using xrandr, then all apps and dialogue boxes have proper resolution, but I lose the ability to resize to an arbitrary resolution by dragging the QEMU window. This is a functionality I am unwilling to give up because I use a big monitor and like my VMs in portrait mode.
Has anyone else experienced this issue? If so, how did you solve it?
I am aware of the remote desktop/ssh workarounds, but would rather not use them because:
- I don't want to add further apps and services to my VMs, especially Lubuntu-core
- I am by equal measures curious and stubborn; I would like to know what is going on and want to wrestle this one to the ground.
All input is valued.
Details follow:
Code:
duckhook@Kubuntu:~$ xrandr
Screen 0: minimum 320 x 200, current 1200 x 1600, maximum 8192 x 8192
qxl-0 connected primary 1200x1600+0+0 0mm x 0mm
1024x768 60.00 +
3840x2160 60.00
3200x2400 60.00
2800x2100 60.00
2560x2048 60.00
2048x2048 60.00
2560x1600 60.00
2000x2000 60.00
2560x1440 60.00
2048x1536 60.00
1920x1440 60.00
1920x1200 60.00
1920x1080 60.00
1600x1200 60.00
1680x1050 60.00
1400x1050 60.00
1600x900 60.00
1280x1024 60.00
1440x900 60.00
1280x960 60.00
1366x768 60.00
1360x768 60.00
1280x800 60.00
1152x870 60.00
1152x864 60.00
1280x768 60.00
1280x760 60.00
1280x720 60.00
1024x600 60.00
960x640 60.00
832x624 60.00
800x600 60.00
800x480 60.00
640x480 60.00
1200x1600-0 0.06*
Code:
duckhook@Kubuntu:~$ cat /etc/default/grub
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n 'Simple configuration'
GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
# GRUB_CMDLINE_LINUX_DEFAULT="splash quiet"
GRUB_CMDLINE_LINUX_DEFAULT="nomodeset consoleblank=0"
GRUB_CMDLINE_LINUX=""
# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"
# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
GRUB_GFXMODE=1200x1600x16
GRUB_GFXPAYLOAD_LINUX=keep
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true
# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"
# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"
Code:
duckhook@Kubuntu:~$ lspci -vk | grep -iA8 vga
00:02.0 VGA compatible controller: Red Hat, Inc. QXL paravirtual graphic card (rev 04) (prog-if 00 [VGA controller])
Subsystem: Red Hat, Inc QEMU Virtual Machine
Flags: fast devsel, IRQ 10
Memory at f4000000 (32-bit, non-prefetchable) [size=64M]
Memory at f8000000 (32-bit, non-prefetchable) [size=64M]
Memory at fc054000 (32-bit, non-prefetchable) [size=8K]
I/O ports at c100 [size=32]
Expansion ROM at fc040000 [disabled] [size=64K]
Kernel modules: qxl
Sanitized output from host after running
Code:
duckhook@Prime:~$ virsh edit Kubuntu
Code:
<domain type='kvm'>
<name>Kubuntu</name>
<uuid>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx</uuid>
<memory unit='KiB'>4194304</memory>
<currentMemory unit='KiB'>4194304</currentMemory>
<vcpu placement='static'>2</vcpu>
<os>
<type arch='x86_64' machine='pc-i440fx-xenial'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
</features>
<cpu mode='custom' match='exact'>
<model fallback='allow'>SandyBridge</model>
</cpu>
<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>restart</on_crash>
<pm>
<suspend-to-mem enabled='no'/>
<suspend-to-disk enabled='no'/>
</pm>
<devices>
<emulator>/usr/bin/kvm-spice</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/mnt/duckhook/images/Kubuntu.qcow2'/>
<target dev='hda' bus='ide'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<target dev='hdb' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='0' target='0' unit='1'/>
</disk>
<controller type='usb' index='0' model='ich9-ehci1'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x7'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci1'>
<master startport='0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0' multifunction='on'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci2'>
<master startport='2'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x1'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci3'>
<master startport='4'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x2'/>
</controller>
<controller type='pci' index='0' model='pci-root'/>
<controller type='ide' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
</controller>
<controller type='virtio-serial' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</controller>
<interface type='bridge'>
<mac address='xx:xx:xx:xx:xx:xx'/>
<source bridge='br0'/>
<model type='rtl8139'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<serial type='pty'>
<target port='0'/>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</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='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<graphics type='spice' autoport='yes'>
<image compression='off'/>
</graphics>
<sound model='ich6'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</sound>
<video>
<model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<redirdev bus='usb' type='spicevmc'>
</redirdev>
<redirdev bus='usb' type='spicevmc'>
</redirdev>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</memballoon>
</devices>
</domain>