Many administrators/users prefer to set up their servers as headless machines. If you're not sure what a headless machine is - it's a PC without a monitor. This is an outstanding way to use Linux as a server as typically people install Linux servers sans GUIs. Thing is, a problem has arisen with recent iterations of Linux distributions. In recent releases (especially with Ubuntu) the distributions do not use an X configuration. This is great for end-users on desktops because the operating auto-detects the graphics chip and monitor for auto-X configuration. This is a problem for a headless server as there will be monitor attached. When Ubuntu >= 10.04 gets to the monitor detection it will freeze and your headless server is worthless.
You could work around this by plugging in a monitor, mouse, and keyboard and letting the OS boot and then removing the monitor when the boot process has finished. This is a far from ideal solution. Fortunately the Linux community has come up with a temporary work around for this issue (I'm confident the distribution developers will come up with a much better solution soon). Let's take a look at the solution.
This solution requires that you create an /etc/X11/xorg.conf configuration file. I assume that anyone wanting to set up a headless server isn't afraid of manually creating/editing the xorg.conf file. If you are, make sure you back up any pre-existing xorg.conf file that might live in /etc/X11.
This guide also assumes that you already have a working server installation that you can successfully boot with an attached monitor. I will also assume you know what graphics card is in your server. You will need this information momentarily (so if you don't know it, dig around and find out what card you are using). With that being said, let's get on with it.
The first thing you need to do is to set up the xorg.conf configuration. If one already exists, copy it to /etc/X11/xorg.conf.OLD and then erase the contents of the /etc/X11/xorg.conf file. The new contents of that file will be:
Identifier "VNC Device"
Identifier "VNC Screen"
Device "VNC Device"
Monitor "VNC Monitor"
Identifier "VNC Monitor"
Once you have saved and closed that file you now need to edit the /etc/default/grub file and add the following line:
You can take this one step further and disable the splash screen for the boot process by setting the line:
to "quiet" instead of "quiet splash"
Save the /etc/default/grub file and then issue the command sudo update-grub to rebuilt grub.
To test this setup go ahead and boot the machine without the monitor attached. Once you have given it plenty of time to boot you can either VNC or ssh into the machine. If you get a successful connection you are good to go. If you do not get a successful connection plug the monitor back in and see where in the process it stopped. If you have a black screen revisit the configuration and make sure everything is correct. To further troubleshoot boot the machine with the monitor plugged in and check the /var/log/Xorg.0.log file for any errors. Hopefully you will find the setup above works like a champ.
Advertising revenue is falling fast across the Internet, and independently-run sites like Ghacks are hit hardest by it. The advertising model in its current form is coming to an end, and we have to find other ways to continue operating this site.
We are committed to keeping our content free and independent, which means no paywalls, no sponsored posts, no annoying ad formats (video ads) or subscription fees.
If you like our content, and would like to help, please consider making a contribution:
Ghacks is a technology news blog that was founded in 2005 by Martin Brinkmann. It has since then become one of the most popular tech news sites on the Internet with five authors and regular contributions from freelance writers.