Citrix Hypervisor (XenServer) Will not Boot After Intallation (Error 1962 on Lenovos)

You may find a fresh installation of Citrix Hypervisor (previously XenServer) will not boot on relatively older systems. In my case a Lenovo ThinkCentre from 2011 threw the error:

Error 1962: No operating system found. Press any key to repeat boot sequence.

This seems to be caused by the UEFI-enabled BIOS not supporting GUID Partition tables (GPT).

While it isn't necessary, I choose to force the BIOS' boot mode to Legacy:


Next we need to add the disable-gpt kernel command line argument when we run the installation.

If your BIOS supports UEFI booting when the Citrix Hypervisor installation media runs you'll be greeted with a fancy GRUB splash:


Enter menu.c32 at the prompt:


This will load the conventional menu you're probably accustomed to:


Press the E key to edit the boot arguments and add disable-gpt to the end of the linux kernel line as shown:


If you have already configured your BIOS to boot in legacy mode you will instead be greeted by a more minimalist boot menu:


Press the Tab key to edit boot options and append disable-gpt to the kernel command line:


Now continue to boot and complete the installation as normal.

Disable Obnoxious Red Hat Graphical Boot (Splash Screen) on Fedora/RHEL/CentOS

Bootsplashes are ostensibly implemented to make a pretty startup experience and protect new users from scary kernel and init messages.

You're not a new user and it could be hiding errors or other important notices like failed services and broken configurations.

That's fscking annoying.

Edit /etc/default/grub and delete rhgb quiet from the GRUB_CMDLINE_LINUX variable.

Make sure your /boot partition (if applicable) is mounted read-write. Now update the active GRUB configuration file:

grub2-mkconfig -o /boot/grub2/grub.cfg

Adjust TTY (Text Console/Terminal) Resolution for GRUB and Linux

Most modern linux distributions will attempt to set the text console (for historical reasons also referred to as TTY, for TeleTYpewriter) resolution to the primary display's maximum native resolution. You may find this is not the case on your system, or more commonly these days, that the virtual display resolution of your virtual machine is undesirable. Personally I most commonly find this to be a problem when working on virtual machines through the Citrix Hypervisor XenCenter client software; when using a smaller resolution on the client machine it is necessary to constantly scroll the Console tab/undocked window up and down or scale the display which results in degraded image quality.

In ye olden days one would set the resolution using a code and the vga= kernel command line option. You can still do that however if you are booting with GRUB you can set the gfxpayload environment variable with a human-readable resolution and both grub and the kernel will run a the specified resolution.

The following edits are made to the /etc/default/grub configuration file. GRUB configuration has become complicated over the years so this meta-configuration composed of variables was introduced as an alternative to directly editing the file actually used by the bootloader directly. Among other things it allows one to specify settings that persist and are applied to multiple boot options. Since kernel upgrades and the like may overwrite that file (depending on your distribution) it's best to play ball with this system. After making your edits make sure /boot is mounted read-write if it is on another partition and run your distribution's GRUB update script (common syntax below) as root to effect the changes to the active GRUB configuration file.

If you choose to do it the old way add your vga= line to GRUB_CMDLINE_LINUX_DEFAULT; if there are already options contained in this string append it with a space. The VGA codes are such:

Colour bits Colours 640×480 800×600 1024×768 1280×1024 1400×1050 1600×1200
8 bits 256 colors 769 771 773 775
15 bits 32,768 colors 784 787 790 793
16 bits 65,536 colors 785 788 791 794 834 884
24 bits 16,777,216 colors 786 789 792 795

In my case, I would like the console to be a manageable 800x600 with 24-bit colour. My vga option would look like: vga=789.

We can determine the video modes supported by GRUB by interrupting the boot menu and entering the GRUB command line on startup. Press the c key to enter the command line.

grub> set pager=1 grub> vbeinfo

This will display a table of supported resolutions. Back in /etc/default/grub we want to make sure the linux kernel inherits GRUB's resolution and doesn't try to do its own thing. We're going to add the nomodeset option instead of vga= to the kernel command line and specify GRUB's resolution in GRUB_GFXPAYLOAD_LINUX. Try to find these variables, they should already exist. If they do not, create them:


Now to update the active configuration file, depending on your system, run:

update-grub grub-update grub-mkconfig -o /boot/grub/grub.cfg grub2-mkconfig -o /boot/grub2/grub.cfg

Favourite RHEL/CentOS Packages

I frequently start a fresh install with the minimal distribution. This makes for a lean, space-efficient virtual machine but leaves a number of tools missing. This page serves as a (living/in progress) quick list of all the software I like to install as soon as a new environment is running so I don't have to reach for it later, in an emergency.

If you choose a different preconfiguration of packages (i.e. Server instead of Minimal) some of these tools will already be available, but it doesn't hurt to bundle them all on the same CLI.

Some of these packages will require enabling the Extra Packages for Enterprise Linux repos and you will probably end up needing them anyway:

dnf install epel-release

  • nano
  • net-misc
  • psmisc
  • bind-utils
  • whois
  • wget
  • nmap
  • screen
  • mlocate
  • youtube-dl

Text-based browsers elinks, links and lynx now require enabling the PowerTools repository:
dnf --enablerepo=PowerTools install elinks links lynx
NOTE as of RHEL 8 the repo is now called powertools with no capitalization.