Old Standards Never Die
Last week, I learned that old standards never die, they live on to make life more difficult for years to come.
A looong time ago, when I was in college, we used has a VAX server than the VMS operating system which had a file system naming standard that was case insensitive, only allowed a single dot between the name and the extension and included a version number. It clearly influenced the design of the High Sierra and ISO-9660 standards for CD-ROM filesystems. And last week, while working on some hardware where I couldn’t enable PXE due to customer restrictions, it bit me. In this situation, I was working with our IceBreaker 2716 servers and IceBreaker 4772 JBOD chassis configured using Nexenta software to create a cost effective, high performance VM storage subsystem. I needed the IceBreaker 2716’s to be configured to meet a customer requirement of PXE being disabled in the BIOS. But to be able to work with the system, it would have been very helpful to be able to boot a Linux NFS or readonly-root with access to a set of custom tools for firmware and diagnostics. Normally, we do that in the lab using PXE and NFS readonly root. But with PXE disabled, that wasn’t an option. There were multiple systems, so the solution needed to be quick, easy and cheap. I could reboot the systems multiple times to go into the BIOS, enable and disable PXE, but with multiple systems that would be a huge waste of time. A pile of USB keys could work, but I didn’t have enough USB thumb drives on hand. What I did have were CD-ROM blanks. Cheap! Easy to replicate! Awesome!
Because I already had infrastructure using the excellent PXELINUX support from H. Peter Anvin’s SYSLINUX package, it seemed like using ISOLINUX (the equivalent tool for CD-ROM’s) would let me just copy the config files, kernel and initrd to a CD and go. ISOLINUX says it
supports long names so I thought it should just work. It would be a tiny image, that I could write quickly and it would leverage the infrastructure I already had configured.
I created the CD, rebooted the machine and it failed to boot because mkisofs had to munge the filenames so that “vmlinuz-2.6.18-308.13.1.el5” became “VMLINUZ_2_6_18_308_13_1.EL5;1” but I had told ISOLINUX to look for the original name. Oops.
To avoid the issue altogether I just renamed the kernel to vmlinuz and created an empty file with a file name reflecting the kernel version as a reminder for myself.
- [ppokorny@rps1 ~]$ ls -l _iso
- -rw-rw-r–. 1 ppokorny ppokorny 0 Jan 29 00:30 2_6_32_279.el6
- -rw-r–r–. 1 ppokorny ppokorny 22531009 Jan 28 20:26 initramfs.img
- -rw-r–r–. 1 ppokorny ppokorny 24576 Jan 29 00:53 isolinux.bin
- -rw-r–r–. 1 ppokorny ppokorny 168 Jan 29 00:53 syslinux.cfg
- -rwxr-xr-x. 1 ppokorny ppokorny 3986608 Jan 28 20:26 vmlinuz
and changed syslinux.cfg to read:
- [ppokorny@rps1 ~]$ cat _iso/syslinux.cfg
- default linux
- label linux
- kernel vmlinuz
- append initrd=initramfs.img root=nfs:192.168.54.1:/var/lib/tftpboot/centos6u3 ro readonlyroot rd_NO_MD rd_NO_LVM rd_NO_DM
Now I could get back to doing the real work…