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:
Hey great guide, just one small typo, its not /nexenta_os/platform, its just /platform…didnt worked for me so i checked their menu.lst and confirmed the typo. Thanks
thanks for the post, helped me set up my PXE boot installer for Nexenta. I encountered some issues, and managed to figure out that the location to copy the pxegrub to has a typo, it should be /var/lib/tftpboot/boot/grub/pxegrub. The “boot” part of the path was missing. Also, I am using 3.1.5, and there isn’t a “pxeloader” file, just “pxegrub”.