Posts here are mostly step-by-step guides on how to replicate something I have set up in the past. Read over my About page to see how I show commands/output and read the disclaimer.
Ubuntu 12.04 and Hyper-V have pretty good support for each other, but it’s not without a fair share of hiccups. I will go over all the steps required to install Xubuntu as a Hyper-V guest and configure remote access through VNC.
These instructions are intended for Hyper-V running on Windows 8 Pro.
Bonus Video
Base OS Install
Install Xubuntu 12.04 using whatever method you like, most likely using the Xubuntu 12.04 Desktop ISO.
Fixing the Blank Screen Issue
Boot up the machine with the Hyper-V viewer open. You will most likely see a blank screen until the login screen appears. Let’s fix that, because we will need to interact with the terminal without a GUI later.
Login to the VM’s desktop and fire up a terminal editor.
[user]$ sudo leafpad /etc/default/grub
Find the below lines, and make sure they are set accordingly. You may have to remove quiet splash
from one of the lines.
GRUB_CMDLINE_LINUX_DEFAULT="" GRUB_CMDLINE_LINUX=""
Next uncomment this line.
GRUB_TERMINAL=console
Save and close the text editor.
Now update the grub images.
[user]$ sudo update-grub
Finally reboot.
[user]$ sudo reboot
Now as the VM is booting up, you should see verbose boot messages before the login screen appears.
Disabling the GUI at Startup
It seems that Microsoft does not recommend using the Hyper-V viewer for day-to-day tasks with the guest machines. They recommend using RDP or some other form of remote access. In our case, we will use VNC.
First, we need to disable the GUI from launching by default.
Login into the VM guest and bring up a terminal.
[user]$ sudo leafpad /etc/init/lightdm.conf
Comment out these lines.
#start on ((filesystem # and runlevel [!06] # and started dbus # and plymouth-ready) # or runlevel PREVLEVEL=S)
Save and close the text editor.
[user]$ sudo reboot
Now if you are watching the VM boot, you will see verbose boot message resolve to a terminal login prompt instead of a GUI.
At this point, we have more commands to run, but it’s not important whether you run then through the Hyper-V manager or SSH using something like Putty.
Installing and Configuring the VNC Server
[user]$ sudo apt-get install vnc4server
[user]$ mkdir ~/.vnc [user]$ touch ~/.vnc/xstartup [user]$ chmod +x ~/.vnc/xstartup [user]$ vim ~/.vnc/xstartup
Copy in the below content.
#!/bin/sh [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources xsetroot -solid grey vncconfig -iconic & #xfce4-session & startxfce4 &
Save and close the text editor.
Run the below command as the user you want to server the VNC server under, mostly likely the user account you created during the OS setup.
[user]$ vncserver :0
You will be prompted to set a password if this is the first time launching the server.
Now let’s try to connect from a VNC client. I recommend using RealVNC. When connecting, set the compression and encryption to your liking. I turn the compression to as low as possible as I use it only over the LAN.
Once you have the VNC client installed, try and connect to your VM using the IP address or hostname.
If you ever need to manually kill the server, do it with this:
[user]$ vncserver -kill :0
Configuring an Upstart Script
So now we have a working Hyper-V guest with remote access, but what happens when the VM reboots? The VNC server will not start automatically with our current configuration. This is our last setup.
Login to the VM through SSH or the Hyper-V manager.
[root]$ sudo vim /etc/init/vnc-server.conf
Add the below content, replacing andrew
with your user name.
start on runlevel [2345] stop on runlevel [016] pre-start script su andrew -c 'vnc4server :0 -geometry 1920x1080' end script post-stop script su andrew -c 'vnc4server -kill :0' end script
Notice that I also set the screen resolution here. Adjust that to your liking.
Fixing the Tab Key
For whatever strange reason, the Tab key may not work when connected through VNC. Run the below command from a graphical terminal as the affected user to fix that.
[user]$ xfconf-query -c xfce4-keyboard-shortcuts -p /xfwm4/custom/'<'Super'>'Tab -r
Conclusion
At this point, this VM should no longer require the Hyper-V viewer. Simply power on the VM, wait a minute for it to boot, and then connect to it through VNC.