Working on a diskless architecture for dayjob I ran into the need to implement a diskless boot architecture. The options for the root filesystem were briefly the following:
Option 2 is nice but it does come with a “single point of failure” gotcha, namely the iSCSI server. Sure you can have a second one but I don’t really want to know what would happen if the SAN with the root filesystem goes offline. 3 is also nice but for me it was a slightly convoluted mess. Hence I opted for the ramdisk approach.
Thankfully, another kind soul has done something similar already. Here are some extra notes that I’ve found of use:
- Make a local copy of the root_archive command and adjust the UFS overhead to 50% instead of 10%. This will allow for some empty disk space in your root filesystem
- Remove the miniroot ramdisks that get installed with Solaris (/boot/x86.miniroot-safe and /boot/amd64/x86.miniroot-safe); you are building a ramdisk on your own, you don’t need to bundle two more within it
- Remove the boot_archive under /platform/i86pc
The above allow to cram a Solaris Core installation with a few extras (SSH, bash) in just 122 (compressed) MBytes.
# du -sh /var/tmp/ramdisk.img
This is it. Copy the ramdisk to your TFTP boot server, configure GRUB accordingly:
# cat /tftpboot/menu.lst.01000C29A6B8E8
title Solaris_10 Ramdisk
kernel$ /I86PC.Solaris_10-7/multiboot kernel/$ISADIR/unix
configure your DHCP server appropriately for a network boot and … profit 🙂
Which still leaves open the issue of DHCP server high availability, however this should be easy to tackle.