This is a comprehensive HOWTO to change your TTY (Ctrl+Alt+F1) and bootscreen resolution.
Introduction
I am sure we have all noticed the low, or extremely high resolution used while Ubuntu is booting up, and also of the TTY (Ctrl+Alt+F1). Depending on your version usually Ubuntu tries to intelligently decide the default. It is usually set to the maximum for your screen. Although Grub still has issues with non 16:9 resolutions. For most of us, this isn't so bad, but clearly this is sub optimal for some.
If you are having difficulties setting the resolution try something other then a 16:9 resolution and it will probably work. Otherwise continue below to learn more.
FOR 9.10 KARMIC KOALA AND LATER
Karmic Koala has switched to GRUB 2, and now the settings can be found in the file /etc/default/grub
Resolutions available to GRUB 2 can be displayed by typing vbeinfo in the GRUB 2 command line. The command line is accessed by typing "c" when the main GRUB 2 menu screen is displayed. (Hold the left shift key pressed before ubuntu loads to access it)
- Open /etc/default/grub with your text editor with root privilege.
Add the following new line using your preferred resolution-depth from the list that vbeinfo gave you. It should be like this if you have a 1280x800 screen:
GRUB_GFXPAYLOAD_LINUX=1280x800
Save the file and exit. (If you can't save the file you haven't opened it as root, go back and execute gksudo gedit /etc/default/grub providing your password.)
- Execute the command
sudo update-grub
- Restart your computer.
For 9.04 and before
The resolution of the TTY is set as a parameter given to the kernel before it loads. GRUB is responsible for booting the kernel, so we need to tell GRUB to tell the kernel what resolution we want. GRUB's list of boot options is contained in the file /boot/grub/menu.lst.
Open up the Terminal by going to Applications -> Accessories -> Terminal
Before you open up the file we should back it up. If you haven't tinkered with Gedit as root before Gedit will make a backup file menu.lst~ before it saves, but if you want you can do it yourself to make sure. Just type in the terminal:
sudo cp /boot/grub/menu.lst /boot/grub/menu.lst~
Enter your password when prompted. This will backup the file as menu.lst~.
- Now we open it up with:
gksudo gedit /boot/grub/menu.lst
- Look for the line (or first instance of the line):
kernel /boot/vmlinuz-2.6.15-25-686 root=/dev/sda2 ro quiet splash
where 686 is your CPU architecture such as 386, AMD64 or PPC, and /dev/sda2 is your hard drive partition such as /dev/hda1.
This is the command for your kernel, and we need to append a parameter to tell the kernel to boot into a certain resolution. This is done with the vga= flag, along with a special number for your desired screen resolution and color depth. Refer to the following table to see what your resolution's number is:
640x480
800x600
1024x768
1152x864
1280x1024
1600x1200
8bit
769
771
773
353
775
777
15bit
784
787
790
793
796
16bit
785
788
791
355
794
797
24bit
786
789
792
795
798
You will most likely want the 24bit color depth (AKA "True Color") (choose this if you are not sure) along with a decent resolution such as 1024x768 or 1280x1024. I, for example, want 24bit with 1280x1024 so I choose 795, and will append vga=795 to the line, giving me:
kernel /boot/vmlinuz-2.6.15-25-686 root=/dev/sda2 ro quiet splash vga=795
Go ahead and append vga= to the kernel line in menu.lst along with your screen resolution number form the table above, as in the example.
Save the file. (If you can't save the file you haven't opened it as root, go back and execute gksudo gedit /boot/grub/menu.lst providing your password.)
- Restart your computer.
If your computer dies on boot, get into recovery mode and replace the menu.lst file with the backup one with:
sudo cp /boot/grub/menu.lst~ /boot/grub/menu.lst
Then make a post in the forums to investigate why it didn't work!