I’ve tried to install Nexenta on a HP MicroServer N36L to replace the Windows-based storage server in my home lab.

Since the HP doesn’t have an optical drive (and I refuse to buy an outdated storage medium merely to install Nexenta), and the Nexenta installer doesn’t play nice with USB-based installation media, the only option left is to install Nexenta via the network, using DHCP and TFTP.

The Nexenta FAQ does have an article on PXE booting Nexenta, but it’s a bit short and contained some errors. With the help of Derek, I figured it out.

Preparation

  • I used an Ubuntu 11.10 x86 VM as the PXE host
  • I used the Nexenta Community Edition 3.1.3 ISO as an installation source

Ubuntu configuration

Install Ubuntu the way you like. After install, make sure the following requirements are met:

  • Fixed network settings (IP address)
  • Packages for DHCP, TFTP, and NFS are installed (tftpd-hpa isc-dhcp-server nfs-common)

NFS Export

The NFS export has to be v3, not v4. My /etc/exports looks like this:

/nex 10.10.10.0/24(rw,async)

where /nex is the folder on the Ubuntu system where I copied the entire contents of the ISO:

the 10.10.10.10/24 subnet is the subnet assigned to the DHCP-server later on. The IP-address of the Ubuntu VM is 10.10.10.86, so the NFS export is 10.10.10.86:/nex

TFTP root

Next, we need to configure the TFTP root directory to hold all relevant files.

  • Copy the contents of the ISO to /var/lib/tftpboot/nexenta_os/ so that the nexenta_os directory becomes the root for the ISO contents, like so:

  • Copy the ISO:/boot/grub/pxeloader file to /var/lib/tftpboot/grub/pxegrub

TFTP boot menu

I’ve included an example of a menu.lst here:

# Copy to /var/lib/tftpboot/boot/grub/menu.lst
default 0
timeout 10
title Nexenta PXE Instalation
#root (cd)
kernel$ /nexenta_os/platform/i86pc/kernel/$ISADIR/unix -B iso_nfs_path=
  10.10.10.86:/nex,atapi-cd-dma-enabled=0,atapi-other-dma-enabled=0
module$ /nexenta_os/platform/i86pc/$ISADIR/miniroot

Make sure the kernel$ and module$ are each a single line, and make sure there’s no space between iso_nfs_path=10.10.10.86:/nex

DHCP Config

I’ve included an example of a dhcpd.conf here:

# Copy to /etc/dhcp3/dhcpd.conf
ddns-update-style none;
authoritative;
option grubmenu code 150 = text;
default-lease-time 604800;
max-lease-time 864001;

subnet 10.10.10.0 netmask 255.255.255.0 {
 range 10.10.10.81 10.10.10.90;
 option subnet-mask 255.255.255.0;
 option routers 10.10.10.1;
 filename "/boot/grub/pxegrub";
 option grubmenu "/boot/grub/menu.lst";
 next-server 10.10.10.86;
}

Restart the DHCP service (sudo /etc/init.d/isc-dhcp-server restart) for the changes to take effect.

End Result

I’ve recorded a simple video of Nexenta installing on a virtual machine using above configuration: