You will need:
- A laptop running a modern Linux
- Windows with WSL is fine, too.
- macOS might work, if you can build iPXE there.
- A USB flash drive that can store at least 512kB. (256kB should suffice, if that’s all you have.)
- Download the source code for the iPXE open source boot firmware:
git clone git://git.ipxe.org/ipxe.git
cd ipxe/src
- Within this directory, edit the
config/console.h
file. Remove the slashes at the beginning of this line:#define CONSOLE_SERIAL /* Serial port console */
and save the file. - Type
make bin-i386-efi/ipxe.efi
, and wait while iPXE builds.- If you’re unable to build iPXE, you probably need to install some of its build requirements.
- Format your flash drive as FAT32.
- I’ve only tested this with one big partition.
- Some people say you have to use a flash drive with a GPT label, but this is not the case on the Xserve1,1.
- Make the directory
efi/boot
on the flash drive. Find theipxe.efi
file you built, and place it in that directory. Rename it tobootia32.efi
. - Unmount and remove the flash drive.
- Plug the flash drive into the Xserve. Unplug all other disks from the server (just back out the internal disks a little bit).
- Connect to the Xserve serial port using a serial cable, and open your favorite serial terminal program at the 115200 bit rate. The details of this are left as an exercise for the reader.
- I used a DB9 to RJ45 adapter, and a Cisco console cable.
- I used this command line:
screen /dev/ttyUSB0 115200
- Within a minute, you should see iPXE start to boot from the network! Once you see this, alternate between pressing Ctrl+C and Ctrl+B until you are dropped to the iPXE prompt.
- Push the internal hard disks back in (hotplug them).
- Type these lines into the prompt:
dhcp
ifconf
kernel http://ftp.us.debian.org/debian/dists/stable/main/installer-i386/current/images/netboot/debian-installer/i386/linux console=ttyS0,115200n8 nokaslr mirror/suite=stable initrd=initrd.gz
initrd http://ftp.us.debian.org/debian/dists/stable/main/installer-i386/current/images/netboot/debian-installer/i386/initrd.gz
boot - Install Debian, but once you reach the step “Finishing the installation,” drop to a shell using the installer menu.
- Edit the file
/target/boot/grub/grub.cfg
. On the first kernel line, remove the wordquiet
, and add the following:console=ttyS0,115200n8 nokaslr
- nano is available in the installer environment.
- Exit this shell, finish the Debian installation, and boot into the installed system.
- Create the file
/etc/modprobe.d/ipmi.conf
with these two lines:blacklist ipmi_si
blacklist ipmi_msghandler - Edit the file
/etc/default/grub
and edit theGRUB_CMDLINE_LINUX
variable so that it looks like this:GRUB_CMDLINE_LINUX="console=ttyS0,9600n8 nokaslr"
- Run these commands:
depmod -a
update-initramfs -u
update-grub - Reboot the system.
You are now running Debian 10 for i386. To migrate to an amd64 kernel:
dpkg --add-architecture amd64
apt updateapt install linux-image-amd64
sudo apt remove linux-image*686*
- Reboot the system.
If you want to migrate to an amd64 userspace:
- Follow the Debian wiki instructions on crossgrading, but do not reboot!
- Ensure the
grub-efi-ia32
package is installed. - Edit
/etc/default/grub
and restore the changes you made toGRUB_CMDLINE_LINUX
above, if they are missing. dpkg-reconfigure grub-efi-ia32
; when asked “Force extra installation to the EFI removable media path,” select Yes. When asked “Update NVRAM variables to automatically boot into Debian,” select No.- Run
update-grub
for good measure. - Now reboot the system.
No comment yet, add your voice below!