Monday, November 26, 2012

openSUSE: Disable graphical screens for an all-text boot

(First of all, have you tried hitting ESC when the boot splash appears?)

OK! It's time to get rid of the boot-time eye candy so you can see what's really going on when the system boots.


The boot process on a modern Linux distribution like openSUSE is complex, but for our purposes here we can say it is essentially a four-step process:
  1. BIOS
  2. bootloader (grub2 in this case)
  3. kernel
  4. INIT

The key to understanding the eye-candy and figuring out how to get rid of it, is to understand that each of these four phases does its own thing with the screen. In terms of "splashes" (graphical boot screens that hide the "messy" technical stuff on the text console), each phase does its own, overwriting the previous phase's splash. So, the BIOS does a splash, grub2 does its splash, the kernel then does its own splash, and then finally an init script might start and replace the kernel's splash with yet another one.

Distributions like openSUSE put a lot of time and effort into unifying the various splashes so as to generate an appearance of the boot process being a single entity.

BIOS splash


Disabling the BIOS splash is beyond the scope of this document. Usually it's straightforward: you go into the BIOS settings and disable it.

grub2 splash


If you RTFM, you might find Section 9.5 of the openSUSE 12.2 Reference, which says:

Disabling the SUSE screen by default

    Add the kernel parameter splash=0 to your boot loader 
    configuration. 

OK, let's do it. Edit the file /etc/default/grub and find the line that begins with:

GRUB_CMDLINE_LINUX_DEFAULT=

Within that line, you'll see that the splash=  parameter is set to something (splash=silent on my system). Change this to splash=0. On my system, the line then looks like this:

GRUB_CMDLINE_LINUX_DEFAULT=" video=1280x800 resume=/dev/disk/by-id/ata-
FUJITSU_MHZ2160BH_G1_K60WT8929FJ6-part1 splash=0 quiet showopts"

Also, you can comment out the lines that start with:
GRUB_THEME=
GRUB_BACKGROUND=

Then, as instructed in the comments at the beginning of /etc/default/grub, run the following command as root:

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

Reboot and enjoy the textual goodness!

Kernel


You now have an all-text boot up to the point where the kernel loads and throws up its splash. You can verify that the splash=0 is present in the kernel command line by running
# dmesg | less

and examining the top portion of the file, where it says:
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-3.4.11-2.16-desktop 
root=UUID=59072130-4a05-4169-b61e-01da32a24287 video=1280x800 
resume=/dev/disk/by-id/ata-FUJITSU_MHZ2160BH_G1_K60WT8929FJ6-part1 
splash=0 quiet showopts

At this point you can remove several 'plymouth'-related packages, if they are installed:
# zypper rm libply2

TO BE CONTINUED...

No comments:

Post a Comment