I have an old machine in an undisclosed location which I use as one of the offsite archives. Unfortunately there was something with power there, and then I hit one or two bugs in f2fs so it died. No big deal, I asked the person who takes care of it to plug another SSD. But.
The machine in question is HP ProLiant ML110 G6. It has IPMI in it (well, HP’s own iLO to be precise). And it has a java applet which you can use for virtual console, if you nerf your JVM enough so it will allow ALL the unsecure protocols. Within this applet, you can attach a virtual CD rom which then can be used to boot the machine and install it. But unfortunately, fedora’s netinst images are too large for it. The reads are slow but also the applet fails after some time (or after a number of sectors read).
So, how did I solve the problem? With the help of ipxe!
I used ipxe before but mostly to implement the automated software install - as opposed to classic pxelinux, ipxe can be scripted to download things over http which is much better than tftp, especially if you want to time reinstall 100 machines at once.
Ipxe can be made into 1 megabyte ISO image. So that’s what I did - tried to boot into it, then fooled around in ipxe console to confirm that it can see the network card, then wrote a bootstrap script and ran make bin/ipxe.iso EMBED=/home/stingray/script.kpxe.
And this is what was in script.kpxe:
|
|
Of course this would look much simpler if you have working DHCP on the network. I didn’t.