Booting Ubuntu from a network filesystem

‹ Building debian .deb packages from source | Installing Ubuntu onto a NFS mount ›

It is possible to boot Ubuntu over the network on a computer with no local hard drive. You need:

  • A DHCP server that supports PXE
  • A TFTP server with enough space to host the kernel binary
  • An NFS server with enough space to host the root filesystem

The steps involved are:

  1. Configure your BIOS to boot your client computer over the network using PXE, or create a CD or USB drive containing iPXE (previously gPXE, previously Etherboot)
  2. When you turn on the client computer, PXE requests its IP address and networking configuration using DHCP
  3. The DCHP server sends back some extra information telling the client computer where the TFP server is (and an initial filename to fetch)
  4. The client computer downloads the file (usually pxelinux.0, the PXELINUX bootloader) over TFTP and executes it.
  5. pxelinux.0 downloads configuration files and a linux kernel binary via TFTP and then executes the kernel with command line parameters specified in the configuration files.
  6. Those command line parameters are set up to tell the kernel to use NFS for its root filesystem

Subscribe to All Posts - Wesley Tanaka