Posted on | April 12, 2008 | Comments Off
Trying to update boot menus that employ odd chain loading schemes (such as Xen) with scripts is just asking for trouble. Nothing against the automatic tools that exist and do this, they just weren’t written with hypervisors and other kinds of microkernels in mind.
Switching gears effortlessly and without error is paramount these days, especially on virtualized disposable infrastructure. This week you might want a 64 bit kernel with 32 bit PAE privileged OS. Next week you might want all 64 bit. The week after that you might want Linux on top of L4. The following week, that same machine might need to join a cluster. Above all, you want to change gears on 30 servers at once without logging into any of them or using PXE.
I’ve been wanting to write utilities that abstract many text configurations in a SQLite database for ease of updates. Grub is as good as place as any to start.
Wouldn’t it be neat if you could update networking via one common tool that works the same way on any GNU distribution? Its entirely possible if all configuration data is stored in a SQLite database, the tool would produce text config files appropriate for the distribution.
Back to grub, I have 14 (yes 14) different kernels in my boot menu. There’s Xen’s stable and unstable trees, various flavors of 2.6.20, various release candidates for 2.6.25, the current 2.6.24 branch, then we get into Kerrighed and OpenSSI. Then enters updates from Ubuntu and the mangling begins.
Writing a single installer that updates a user’s boot menu across various distributions is a nightmare, you always end up breaking someone’s computer. It would be so much easier to just add a few fields to a database and re-generate the boot config.
Likewise, abstracting some stuff in /etc would make sense, control panels and other things would be much easier to port. The hardest part would be writing a tool to obtain existing configs and populate the database.
I’ve been looking for an excuse to get familiar with SQLites C libraries, looks like I found one