24

I've got a Hyper-V on a WINDOWS 10 Surface and I'm using Ubuntu 15.04 as a guest OS. I've successfully resized the Ubuntu screen in a Hyper-V with Windows 8 and 14.04 using the recommendations found in these forums. In the current case however I've had no luck resizing. With the huge pixel count on the Surface 4 it make the guest Ubuntu a real pain in the ass to use.

I'd welcome any suggestions.

Screen shot of Hyper-V client

32

Edit /etc/default/grub with your editor of choice. Remember to use sudo:

For example:

sudo nano /etc/default/grub

Change this line:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

To this.

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash video=hyperv_fb:1920x1080"

Then in a console type:

sudo update-grub
reboot

Unfortunately, this is the highest resolution you can use for Linux Hyper-V guests.

Other virtualization solutions have guest additions which allow for higher resolutions like VMware and VirtualBox.

Note: If you have added the RemoteFX 3D Video Adapter in your VM settings you may have to remove it in order for this change to work. And do reboot your ubuntu guest for it to take effect.

| improve this answer | |
  • 1
    the folder is named "default", not "defaults", and it's "video=", not "video-". So, the correct line would be: GRUB_CMDLINE_LINUX_DEFAULT="quiet splash video=hyperv_fb:1920x1080" – MattSlay Dec 26 '16 at 12:55
  • 3
    I also had to add 'sudo apt-get install linux-image-extra-virtual' to get the HyperV display driver – mhouston100 Jan 1 '17 at 7:41
  • 4
    I had a RemoteFX video adapter added to my VM (generation 2). I had to remove the RemoteFX video adapter to get this to work. – E. Moffat Nov 22 '17 at 18:12
  • 1
    This solution worked for me on my Gen 1 VM, but only after removing the RemoteFX adapter from the settings as @E.Moffat mentioned. – Herohtar May 11 '18 at 20:24
  • 1
    Seems not working on Ubuntu 20.04. – Anduin May 14 at 5:59
4

Since this question was asked (re ~ Ubuntu 15.04) things have progressed significantly with regards to Hyper-V & Ubuntu 18.04.1 with regards to ‘Enhanced Session Mode’.

There are two approaches currently:

A. New System ~~ Optimized Ubuntu Desktop images available in Microsoft Hyper-V gallery

B. Existing System ~~ manually configure xRDP to support ‘Enhanced Session Mode’

Here are the details:

Option A)

  1. In Hyper-V, on your server & select [Quick Create]
  2. In the [Create Virtual Machine] dialog, select [Ubuntu 18.04.1 LTS] && then [Create Virtual Machine]
  3. Then complete the standard Ubuntu installation options
  4. ‘Enhanced Session Mode’ will prompt you to setup screen resolution, local resources, etc.
  5. Note/Caution ~ if you have problems using drives, then you may want to de-select the [Printers]

Here are the links to where I sourced the information:

Optimised Ubuntu Desktop images available in Microsoft Hyper-V gallery

Run Ubuntu virtual machines made even easier with Hyper-V Quick Create

Option B)

  1. Modify Ubuntu 18.04 to use xrdp

    1.1 Get the scripts from GitHub

    sudo apt-get update
    sudo add-apt-repository ppa:git-core/ppa
    sudo apt update; sudo apt install git
    git clone https://github.com/jterry75/xrdp-init.git ~/xrdp-init
    

    1.2 Make the scripts executable and run them...

    cd ~/xrdp-init/ubuntu/18.04/
    sudo chmod +x install.sh
    sudo ./install.sh
    reboot
    

    1.3 <After Reboot> Run script again to finish setting up VM

    cd ~/xrdp-init/ubuntu/18.04/
    sudo ./install.sh
    
  2. Shutdown Ubuntu VM

  3. Register Ubuntu Session ~ run this command on host PC using powershell with admin rights:

    Set-VM -VMName YourUbuntuVMNameHere -EnhancedSessionTransportType HvSocket
    
  4. Restart VM

  5. Connect/Login to XRDP from Hyper-V (note ~ enter username - must be lowercase)

  6. Note/Caution ~ if you have problems using drives, then you may want to de-select the [Printers]


Here is the link to where I sourced the information:

| improve this answer | |
  • I'm getting Set-VM : A parameter cannot be found that matches parameter name 'EnhancedSessionTransportType'. when I try and do this. – PhonicUK Apr 19 '19 at 14:33
  • I don't have admin rights on my work computer. But I was still able to run the Set-VM command. – andrew lorien Nov 30 '19 at 23:02
  • Quick note: You need to disable auto-login in Ubuntu, otherwise xrdp login will fail. – Stuart Aitken Apr 28 at 11:38
  • The question for "Enhanced Mode" never comes up. It seems it's activated but I can't find settings for it anywhere :-(. – Steffen Roller Jun 24 at 16:23
1

For some reason, changing the grub config doesn't work on my Surface Book either (and I saw another Surface user complain about the same issue). I haven't found a solution yet, but here's something I can work with:

Install an X-Server for windows (e.g. xming), login to your virtual machine using ssh and set the DISPLAY variable (export DISPLAY= < your host ip>). You can also add that line to your ~/.bashrc to have it execute automatically when you login, otherwise you'll have to do that for each session.

This allows you to start your linux gui programms from ssh and work with them as if they were running natively on your host (much faster too, at least in my experience).

For convenience, I create an internal virtual switch in hyper-v and set up network sharing with that virtual device, so that my host always has the IP 192.168.137.1. This allows you to access the internet in the VM while having a static IP for your host.

Another solution which also works and gives you the full linux desktop experience (albeit slower than with X-forwarding over ssh): Install xrdp on linux as described here and use windows' remote desktop client to connect to your virtual machine. This will give you your native resolution, but is still a bit slow due to software rendering.

| improve this answer | |
0

additionally, to get rid of the 'could not apply the stored configuration for monitors CRTC 351' popup, you can delete the user's monitor.xml file: $ rm ~/.config/monitors.xml

| improve this answer | |

Not the answer you're looking for? Browse other questions tagged or ask your own question.