Other answers, despite their complexity, did not work for me on Ubuntu Server 12.04 LTS.
In my case, I wanted to have the Linux kernel console boot into a graphics mode supported by both my old CRT monitor and the integrated Intel graphics of my server.
sudo apt-get install hwinfo
sudo hwinfo --monitor will list the graphics modes supported by the monitor.
sudo hwinfo --framebuffer will list the graphics modes supported by the computer.
hwinfo command may be no longer available. One may use
Now, start editing
sudo nano /etc/default/grub
Assuming a previously unedited file, make the following changes:
GRUB_CMDLINE_LINUX_DEFAULT should contain at least
nomodeset, perhaps in addition to
splash on desktop systems.
On server systems, uncomment
GRUB_TERMINAL=console to see more messages passing during boot before entering in the graphics console.
Leave this line as a comment:
At the end of the file, add a line:
or replace the value by any other (comma separated) mode(s) that is(are) supported by your hardware. The values
ask should also work.
Finally, after saving the edited
/etc/default/grub with Ctrl+O and exiting with Ctrl+X, issue the following commands:
sudo apt-get autoremove
The first command will remove old Linux kernels as well as other files that are no longer needed. This saves a little time with
This answer will also work to decrease the resolution and/or refresh rate or frame buffer frequency on down-clocked systems. CRT monitors typically show flickering stripes when the refresh frequency is too high.