71

I have a 64 bit Ubuntu 9.10 workstation with two virtualized guest OSes using KVM/QEMU. Also both 64-bit. One is Fedora 12 the other is beta of Ubuntu 10.04.

The problem is that I would like to use a larger size display that is configured by default. Both guest OSes have a maximum screen resolution of 1024x768. I would like to increase this to something like 1280x900 or 1440x900. The resolution of the host system is 1920x1080.

This configuration appears to be a result of the installation detecting the resolution being reported by the virtual screen during installation.

The only information I have found on the subject suggests modifying the xorg.conf file in the /etc/X11 directory. Neither guest system has this file.

I tried creating one by hand in the Fedora system and managed to render it completely unusable. Not a big deal as this is recently installed and can be reinstalled easily.

Is what I want to do possible? If so, how do I accomplish it?

3
  • 1
    +1 This is something I'd also really like to know. My HostOS native resolution is 1920x1080 and my GuestOS (Windows 7) is also stuck @ 1024x768. I'm pretty sure (from what I've read online so far) that qemu handles the hardware virtualization but I have no idea how to configure it to work with the physical graphics card. Commented Jul 29, 2010 at 5:30
  • 1
    Got it, see my answer. Commented Jul 29, 2010 at 9:10
  • 1
    Also see VNC display size on RedHat's libvirt mailing list.
    – jww
    Commented Feb 1, 2016 at 2:19

12 Answers 12

16

Add the '-vga std' flag to the command line

Basically, the virtual machine loads its own virtual driver. Hardware virtualization is necessary because virtual disk images are often copied to many different systems with diverse architectures. By abstracting the hardware the vm images are capable of doing this.

By using the '-vga std' flag you make the GuestOS load a standard VGA device that should be able to support resolution equal-to-or-greater than your physical card can handle.

For more info check out this article.

Note: If you're using an older version of kvm/qemu the you might need to use the '-std-vga' flag instead.

If you aren't able to reach resolutions greater than 1600x1200 note that there are still some issues with this option.

5
  • 4
    I have -vga std and can access high resultions from windows guests, but my ubuntu guest is stuck on 1024x768. Those linked posts are pretty old (2008 and 2010 respectively). Commented Oct 19, 2012 at 6:21
  • 5
    When you say "Add the '-vga std' flag to the command line", where did you add it? Do you launch the guest with virsh start <machine> -vga std? Or did you do something else?
    – jww
    Commented Feb 1, 2016 at 2:21
  • @jww On the first boot it can be set temporarily from the grub console. Add it as a kernel flag. After, the system is booted it can be added permanently to grub.conf the same way it was added through the grub console. Don't forget sudo update-grub to lock-in the settings after editing the grub config. Commented Feb 1, 2016 at 2:48
  • 1
    @MattConnolly -vga virtio allowed me to go up to 4096 x 2160: superuser.com/a/1331924/128124 Commented Jun 16, 2018 at 23:23
  • In this answer, I get link rot re "this article." Try the archive: web.archive.org/web/20160126004059/http://www.linux-kvm.com:80/… Commented Jul 3, 2018 at 4:57
30

-vga virtio

Using this option allows me to go all the way up to 4096 x 2160.

Of course, this is useless since my display only goes up to 1080p, so I set 1080p.

Then you can toggle fullscreen with Ctrl + Alt + F, or by passing -full-screen.

How I guessed it: virtio in general means: simulate a generic convenient VM machine without normal hardware restrictions.

Tested with this exact setup: https://askubuntu.com/questions/884534/how-to-run-ubuntu-16-04-desktop-on-qemu/1046792#1046792

As explained there, QEMU has a feature which automatically updates the resolution as you increase the host window size e.g. by dragging the borders with your mouse. But it also works if you go into the guest Ubuntu resolution settings. But if you select a huge guest resolution with a tiny host window, that will of course be useless (QEMU will have to sample multiple pixels into one), so generally you just want to let QEMU automatically scale for you.

This screenshot shows how my guest could go up to 4k:

enter image description here

2
  • 2
    This worked great with headless QEMU on Arch Linux, while connected with TigerVNC to the guest OS. Sway (Wayland) is my window manager. Commented Jul 24, 2020 at 13:52
  • 4
    This should probably be the modern accepted answer. The vga option was really laggy with the mouse -- perhaps because it was using software rendering, where as maybe the virtio option is gpu supported. Commented Jul 28, 2020 at 19:10
28

2021 Solution for virt-manager users

Steps

  • Open terminal
  • virt-manager
  • Open VM settings
  • Go to "Video" tab
  • Change to "Virtio"
  • Run / restart VM
  • Open settings in guest OS (eg I run Debian 10 with XFCE so I open XFCE settings)
  • Change display resolution

Here's a screenshot of the relevant tab on virt-manager

settings

5
  • 1
    After changing the display resolution inside the guest os. Resize to VM on virt-manager. View -> Resize to VM.
    – Nick Dong
    Commented Nov 13, 2022 at 12:05
  • "VM settings" now locates in "View -> Details" in the VM's console.
    – xuhdev
    Commented Jul 16, 2023 at 20:03
  • Can you also provide visual instructions on how to change the resolution in the guest OS?
    – Sun Bear
    Commented Apr 9 at 12:45
  • @SunBear It will depend on which OS you are using, and which desktop environment/window manager. There are essentially infinite possible combinations, and the methods between different operating systems (even different flavours of Linux) are dissimilar. This is something you would have to find out on a case by case basis, however for most Linux systems with a commonly used graphical DE it should be somewhere relatively obvious within the system settings. Commented Apr 10 at 21:11
  • My VM will not run when changing the video to Virtio. Just a note that others may have the same issue if running older OSes. Commented Jun 14 at 13:34
17

Use the vmvga Video Card

I use virt-manager (as I'm a complete noob to kvm and libvirt).

I was able to get higher resolutions on a Windows 7 guest by changing the video card from vga to vmvga in the virtual machine's settings window.

3
  • Me too ... but that doesn't change (always 1024x768) !
    – user315616
    Commented May 1, 2014 at 12:35
  • i going way back in my memory here, but i think i was able to change the screen resolution within the guest OS once it booted using the vmvga card.
    – diffalot
    Commented Sep 2, 2014 at 22:13
  • 1
    vmvga doesnt seem to exist anymore, but vga seems to work fine, as well as qxl Commented Dec 25, 2019 at 22:26
5

As of 2014, if you want to get better than the 1024x768 resolution offered by the Cirrus vGPU, and you are running KVM as your hypervisor on an x86_64 hostOS platform, you should look into using the QXL vGPU driver in the guestOS, coupled with the spice-server display. This can be configured from your virt-manager GUI settings (or of course from CLI args).

In my case, I created the VM using virt-install, put the OS on the vHDD using the normal vnc-style control and the normal cirrus-vGPU. Once everything was working, and all guestOS (and hostOS) software updates had been applied, I used virt-manager to change from vnc-display to spice-graphics, and from cirrus-video to QXL-video. It also helps to add the 'channel' to your VM for spice-vdagent[d] running inside the guest, which allows you to cut-n-paste data in between guestOS apps and hostOS apps pretty decently.

Besides offering high resolutions, the QXL/spice setup was a big improvement over the Cirrus/VNC setup when watching videos in the guestOS -- I actually got some thermal-trip warnings from the CPU when attempting to watch fullscreen videos in 1024x768 Cirrus/VNC, but the laptop ran cool and the fans were quiet when doing fullscreen 1920x1080 video with the more-efficient QXL/spice option. There are limitations on what sort of installations are supported by QXL/spice, but if your system(s) can use them, they are recommended for improved 2D and video-playback. http://www.linux-kvm.org/page/SPICE , scroll down to "Enabling SPICE using virt-manager". I wasn't prompted to add the channel, as the page claims, but it wasn't hard to add manually. If you are working with windows-guestOSes, or having trouble with the brief instructions at the linux-kvm.org site, see here -- http://www.spice-space.org/page/Documentation (but beware both the wiki and the main site are WOEFULLY out-of-date with many pages from 2009 through 2012, so tread carefully). The project is actively developed, but not very actively documented.

QXL/spice is not especially straightforward at the moment, and may not work in your desired software/hardware enVironment. Still, with a bit of elbow-grease it can be made to work, and the upside is significant (especially if battery-life and/or fan noise are concerns). You won't get truly high performance graphics -- investigate VFIO and VT-d/IOMMU passthru for that possibility iff you have the specialized CPU+GPU hardware needed and plenty of time to try and get it working. QXL/spice gives decent 2D and video-playback speed, though.

5

I know it's old, but I ended up here in June 2023. I installed Windows 11 on virt-manager and Windows was unable to change my screen resolution (locked at 1280x800, impossible to change). My video is configured as virtio in virt-manager and my user has been added to libvirt and libvirt-qemu groups. But none of that helped.

However, the solution was simple: install virtio-win drivers using an ISO image. Download it HERE. I chose Stable virtio-win ISO.

2
  • 2
    I can figure out the details. But this procedure resolved my resolution issues.
    – Lee Li
    Commented Jul 19, 2023 at 19:36
  • Auto resize on a Windows 11 virtual machine is working with this solution when selecting QXL in virt-manager video settings.
    – baptx
    Commented May 27 at 19:11
1
  1. Boot into shell mode with QEMU. If you use a custom kernel, then add init=/bin/bash after rw in the append argument. (e.g. -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw init=/bin/bash") Otherwise, you could boot into recovery mode, which will also give you a root shell. (This is all from the guest OS, the one you are running in QEMU)
  2. After you boot into shell mode, you will have a root/su shell, with no GUI.
  3. Now run: nano /etc/X11/xorg.conf. This will be a new file.
  4. Type:
Section "Screen"
    Identifier "Default Screen"
    SubSection "Display"
        Depth 16
        Modes "800x600" "640x480"
    EndSubSection
EndSection
  1. Reboot

NOTES:

  • The extra "640x480" is in case the "800x600" fails.
  • I can't get it to '1024x768'. It will just fall back to 800x600
1

-vga std is the default, so if it does not work for you, explicitly specify it is useless. -vga virtio should be a good option. While, remember install the drivers if it does not already installed kvm-guest-drivers-windows.

Sometimes, resolution is limited by ram or vram available for the display device. So if -vga type does not work, try to use

-vga none \
-device driver[,prop[=value][,...]] \

So you can adjust (increase the ram and vram) the display device to support larger resolutions.

-device driver[,prop[=value][,...]]

Add device driver. prop=value sets driver properties. Valid properties depend on the driver. To get help on possible drivers and properties, use -device help and -device driver,help.

qemu-system-x86_64 -device help

By this above command, you can get all possible drivers, then look Display devices: section to find the right device. For example, if you choose qxl-vga, then you can use:

qemu-system-x86_64 -device qxl-vga,help

Get the options available for this device.

Then you can use your device with its options like:

qemu-system-x86_64 \
  -vga none \
  -device qxl-vga,ram_size=268435456,vgamem_mb=256,vram_size=268435456 \
1

2023 called and the Spice Guest Tools is freely available here (look for the spice-guest-tools link):

https://www.spice-space.org/download.html

0
0

As of 2023, if you are using a Windows guest you can use Windows SPICE Guest Tools.

How to install Windows SPICE Guest Tools on QEMU/KVM Virtual Machine Manager

To start, make sure inside the VM manager "Show virtual hardware details" -> "Video < Model-Name >" you have QXL selected.

If it looks like this:

enter image description here

then you continue with the following steps.

The Process

  1. Start the Windows VM.

  2. Open your favorite browser, inside the Windows VM.

  3. Go to SPICE Website Download Page.

enter image description here

  1. Scroll down to "Windows binaries".

  2. In the first sentence you should see:

  • "Windows SPICE Guest Tools (spice-guest-tools)"
  • Click -> (spice-guest-tools) to download it on the Guest VM.

enter image description here

  1. Run through the installer. The defaults should be fine.

enter image description here

  1. Restart

You should now be able to change the "Display resolution" in the Windows VM.

enter image description here

Hopefully this helps.

0

In the guest install spice-vdagent, so guest and host can communicate window size changes.

-4

The solution "2021 Solution for virt-manager users" by user3728501 is work for me

I have follow the solution from him and this work for me THANK YOU!

I wrote this on 25 June 2021 at 8:28 a.m.

I use Ubuntu 20.04

before I install the new program I ran

sudo apt update && sudo apt upgrade -yy

then I search "how to install qemu virt-manager ubuntu 20.04" from google

I have install virt-manager qemu by follow : https://phoenixnap.com/kb/ubuntu-install-kvm

at the step to add user I ran :

sudo adduser $USER libvirt

sudo adduser $USER libvirt-qemu

reboot

after I the installation and add user done I have reboot my system

now my system has start up then I open the virt-manager(using my normal GUI interface)

just create one guest OS for testing in my case I have download Manjaro iso image in ~/Downloads so I will use this image and after create the guest os successfully I have run the "update" in my guest OS by the command

pamac update

then I shutdown my guest OS and back to my virt-manager window I selected :

Sorry they not allow me to post the image but the image link is here:

https://i.ibb.co/LCxJdkV/2021-06-25-qemu-guest-window-resize.png

by the way my Ubuntu 20.04 I am using i3wm instead of the default window manager as I like i3wm because it easier for me to using i3

I have my bash script : https://github.com/farookphuket/ubuntu_my_config.git

I am thai so my english speaking is quite bad I am sorry but I have make a video how do I setup i3wm for manjaro using my bash script :

https://www.youtube.com/watch?v=q3Sanjl93dQ

hope this help someone

thank you

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .