Around a year and a half ago I was suddenly hit with the desire to have my Slackware machine boot in graphical mode. A splash screen instead of those boot messages. Nothing real fancy, the Slackware 'S' on black background, or maybe just 'slackware' pasted across the screen. I don't why after 18 years I suddenly had this urge. I remember people would see a those words scrolling on the screen when I would boot up my machine and they would look at me like I was some super hacker, like really impressed. One of my co-workers saw me installing Slackware on my work laptop in the breakroom and said to me, "Looking at your screen right now let's me know I don't know sh*t about computers." I'm thinking to myself, he doesn't even realize how 80's ncurses is.
I realized that I really hadn't even paid a whole lot of attention to what was actually going on during the boot process, in a detailed way. I had finally broken down and made the switch to UEFI about a year before, and even so I was using eLILO to boot my machine. I did what I always did when I was on a mission to break my machine, I called on my old friend Google. There were two hits for graphical boot on a Slackware box. Both were around 10 years old, and to make a long story short, I tried both and they both left my machine completely locked up, and no splash screen or anything. It wasn't a total fail, I actually learned a great deal, partly what not to do, but I knew much more about what was actually happening in that brief time after the kernel gets loaded into memory and the root partition gets mounted. I also learned about how to recover from the infamous grub rescue prompt, and a whole lot more about that bootloader that's almost an OS itself. And that led eventually led me to the inner workings of the UEFI firmware, but that's a story for another time. Before I go over what needs to be done to implement graphical boot mode on a Slackware machine, let's go over the boot process real quick.
When we first power on a machine, the first one on the job is the firmware. It basically wakes everyone else up, hey rise and shine, does some basic checks for necessary hardware, you know memory, display, hard drive, keyboard, gets some low level drivers loaded, some security checks, then it looks in /EFI/Boot/ directory on the System partition for a file named bootx64.efi. Some systems will fail to boot if this file has any other name, depending on the manufacturer of the machine and also who wrote the firmware. On Linux machines this is where we normally get a chance to interrupt the boot process if need be. Most will see the grub menu, but many of us Slackers will have eLILO here. It's much simpler to write a config file for eLILO, but for graphical boot I had to convert to grub. Grub loads the kernel into memory, and initial ramdisk if necessary, the root partition is mounted read-only, drivers are loaded, basic services are started, the root partition gets remounted read-write as the machine goes into multi-user mode, and depending on the settings in /etc/inittab, you'll get either a login prompt on the text console, or the X server will be started, display manager will start and you'll be presented with a GUI login prompt. Now this is what gets me excited,( and extremely frustrated as well ), how do I make this machine do exactly what I want it to do? Like I already told you, the two hits I got both failed, but they left me with a very good starting point. Let's get to it.....