Tiburon again saves the day

Useful code (e.g. code == program) has a tendency to save you lots of pain when other solutions fail you. Powerful code lets you do things that lesser codes mess up. Intelligently designed and written codes allow you to debug them easily and quickly, as well as their operational impacts.

None of these qualities describes grub. Grub is … well … grub.

If you have to deal with it on a daily basis, you understand what I mean by this. Grub simply sucks. My experience with grub2 suggests that its v2.0 of suckiness … all the suck taken to a whole new level with more features that can suck, and features which suck more than in grub v0.97.

Yeah, I am not a fan of grub. Though we (and the vast majority of other vendors out there) rely upon it for providing boot loading of our OSes. Because the other choices suck even worse.

Sort of like an election where you don’t seek to hire someone for a post, but to minimize the evil that someone in that post can do by picking the least evil of the choices.

Thats grub.

And when it fails … oh wow … does it ever fail. Usually at the least opportune time.

This is what happened.

We installed an updated kernel. Did our usual installation. The installation mechanism we’ve used for years. Works great. Hasn’t failed to date.

Final portion is adding an entry into the grub menu. Then the reboot.

Upon reboot, there’s a new grub entry.

With the old kernel.

Nothing I did would change this. Spent hours looking at this, tracing what happened. Installation by hand gave the same thing. Wiping grub on the disk, and rerunning resulted in the same failure mode.

Swapping in a replacement OS RAID drive and rerunning grub after syncing resulted in the same thing. Unless I forced it to boot from the new drive, in which case it gave me an error 18 on grub.

Google, which is usually my friend for these weird problems, wasn’t so helpful.

Did I mention that grub sucks? Not sure I did, I need to get it in there.

So the problem is, in a nutshell, that the wrong kernel and initrd are handed to the bootloader by way of a failing grub program.

Hmmmm…. We can’t not use grub. We have to use grub. And grub sucks.

Too bad we can’t just pxe boot the thing …. hey, wait, we can! Tiburon does this. All I need to do is to specify our kernel, initrd, and boot arguments.

"MMMMQ-dv4-2" : {
                "boot_args" : "ro md=md0,/dev/sda1,/dev/sdb1 root=/dev/md0 rhgb verbose console=ttyS2 console=tty0",
                "kernel"      : "",
                "initrd"      : ""

and …

Whammo. It works. No more fighting with grub. Literally, no more fighting with grub.

Tiburon can now pxe boot most flavors of diskless linux, bootable iso images, boot SmartOS (OpenSolaris/Illumos), and now standard local OS installs serving the kernel/initrd to work around ever using grub.

WOOT! This is SERIOUS powerful stuff.

Viewed 87645 times by 5718 viewers