HP MicroServer Gen8: Boot TrueNAS from an SSD on the ODD Port using a GRUB USB Bootloader
The HP ProLiant MicroServer Gen8 is still a very useful small home server. It works well for TrueNAS, homelab setups, backup targets, or compact storage systems.
A common issue appears when you want to move away from booting TrueNAS from a USB flash drive and instead use a proper small SSD.
The MicroServer Gen8 has an internal SATA connector at the top of the chassis. This port was originally intended for an optical DVD drive. It is commonly called the ODD port and is mechanically very convenient for installing a small 2.5-inch SATA SSD.
The problem: with the four front drive bays populated, the server often does not boot directly from the SSD connected to the ODD port. Without the front drives installed, the SSD boots fine. As soon as the data drives are inserted again, the Gen8 usually tries to boot from Hard Drive C:, meaning one of the front bay drives.
The solution: use a small USB stick only as a GRUB bootloader. The actual TrueNAS installation remains on the SSD connected to the ODD port. The USB stick is barely written to and is therefore much less critical than using a USB stick as the full TrueNAS boot device.
Goal of the Setup
The final boot process looks like this:
HP MicroServer Gen8 BIOS
↓
internal USB stick with GRUB
↓
GRUB chainloads the SSD on the ODD port
↓
TrueNAS starts from the SSD
↓
data drives remain in the four front bays
The USB stick does not contain TrueNAS itself. It only contains GRUB and a small configuration file that starts the bootloader on the SSD.
Requirements
You need:
- HP MicroServer Gen8
- TrueNAS installed on an SSD connected to the ODD SATA port
- a small USB stick or internal SD card
- a Linux system to create the GRUB USB stick
- GRUB package for BIOS/Legacy boot
In my setup, the SSD on the ODD port appeared to GRUB as:
hd5
This can vary depending on drive order and BIOS detection. During the first test, it is useful to try several options or check the available drives from the GRUB console using ls.
Important: SATA Mode in BIOS
For TrueNAS, the onboard SATA controller should run in AHCI mode.
F9 → System Options → SATA Controller Options
AHCI should be enabled. Using the B120i RAID mode is not recommended for TrueNAS. TrueNAS works best when it can access the drives directly.
Prepare the USB Stick
First, identify the correct USB stick on your Linux system:
lsblk -o NAME,SIZE,MODEL,TYPE,MOUNTPOINT
Example output:
sda 500G Samsung_SSD disk
sdb 8G USB_Stick disk
└─sdb1
In this example, the USB stick is:
/dev/sdb
Warning: The following commands will completely erase the selected device. Make sure you have selected the correct USB stick.
Partition and Format the USB Stick
The USB stick is prepared with a classic MBR partition table and a small Linux partition.
sudo umount /dev/sdb1 2>/dev/null
sudo wipefs -a /dev/sdb
sudo parted -s /dev/sdb mklabel msdos
sudo parted -s /dev/sdb mkpart primary ext2 1MiB 100%
sudo parted -s /dev/sdb set 1 boot on
sudo mkfs.ext2 -F -L GRUBGEN8 /dev/sdb1
Now mount the partition:
sudo mkdir -p /tmp/usb
sudo mount /dev/sdb1 /tmp/usb
sudo mkdir -p /tmp/usb/boot
Install GRUB in Legacy BIOS Mode
The MicroServer Gen8 boots in classic BIOS/Legacy mode in this setup. Therefore GRUB must explicitly be installed as i386-pc.
On Debian, Ubuntu, or Proxmox, install the required package if needed:
sudo apt update
sudo apt install grub-pc-bin
Then install GRUB to the USB stick:
sudo grub-install \
--target=i386-pc \
--boot-directory=/tmp/usb/boot \
--recheck \
/dev/sdb
Important:
Correct: /dev/sdb
Wrong: /dev/sdb1
GRUB must be installed to the whole USB stick, not only to the partition.
Special Case: Proxmox
If you create the stick on a Proxmox system, grub-install may be blocked by proxmox-boot-tool. You may see a message saying that grub-install is disabled.
In that case, use grub-install.real directly:
sudo /usr/sbin/grub-install.real \
--target=i386-pc \
--boot-directory=/tmp/usb/boot \
--recheck \
/dev/sdb
If you see this error:
cannot find EFI directory
then the following parameter is usually missing:
--target=i386-pc
Without this parameter, GRUB tries to install an EFI bootloader on a UEFI-booted Linux system. For the MicroServer Gen8 USB chainloader, we need classic BIOS GRUB instead.
Create the GRUB Configuration
Now create the actual GRUB boot configuration:
sudo nano /tmp/usb/boot/grub/grub.cfg
In my setup, the SSD on the ODD port was detected by GRUB as hd5. Therefore the final configuration looks like this:
set timeout=3
set default=0
menuentry "TrueNAS SSD on ODD Port - hd5" {
insmod chain
set root=(hd5)
chainloader +1
boot
}
With this configuration, GRUB waits three seconds and then automatically boots the SSD on the ODD port.
Alternative Test Configuration
If you do not yet know the correct drive number, you can create several menu entries for testing:
set timeout=10
set default=0
menuentry "TrueNAS SSD on ODD Port - hd4" {
insmod chain
set root=(hd4)
chainloader +1
boot
}
menuentry "TrueNAS SSD on ODD Port - hd5" {
insmod chain
set root=(hd5)
chainloader +1
boot
}
menuentry "TrueNAS SSD on ODD Port - hd3" {
insmod chain
set root=(hd3)
chainloader +1
boot
}
menuentry "GRUB Shell" {
echo "Press 'c' to open the GRUB console."
echo "Use 'ls' to list detected drives."
sleep 5
}
During the first boot, test which entry works. Once the correct entry is known, reduce the grub.cfg to that single entry and set the timeout to three seconds.
Manually Check GRUB Drives
If none of the prepared entries work, press c in the GRUB menu to open the GRUB console.
Then run:
ls
Example output:
(hd0) (hd1) (hd2) (hd3) (hd4) (hd5)
You can then test manually:
set root=(hd5)
chainloader +1
boot
If that does not work, try:
set root=(hd4)
chainloader +1
boot
Or:
set root=(hd3)
chainloader +1
boot
As soon as TrueNAS starts, you have found the correct drive number.
Unmount the USB Stick Cleanly
After writing the configuration:
sync
sudo umount /tmp/usb
The USB stick can now be inserted into the internal USB port of the MicroServer Gen8.
Set the BIOS Boot Order
In the MicroServer Gen8 BIOS:
F9 → System Options → Boot Options
The internal USB stick should be placed before the hard drives:
1. USB DriveKey / Internal USB
2. Hard Drive C:
3. Network Boot
The server will then boot GRUB from the USB stick first. GRUB will then start the SSD on the ODD port.
Why Not Boot TrueNAS Directly from a USB Stick?
TrueNAS can technically boot from USB sticks, but it is not recommended for long-term reliability. USB sticks are a common source of boot-pool problems, especially with write activity, updates, and ZFS errors.
A better layout is:
TrueNAS system: SSD
USB stick: only GRUB bootloader
Data: separate ZFS data drives
In this setup, the USB stick has almost no write activity. Even if it fails at some point, it can easily be recreated. The actual TrueNAS installation remains safely on the SSD.
Error Example: GRUB Rescue / normal.mod not found
When an old TrueNAS USB boot stick fails, you may see an error like this:
GRUB loading..
Welcome to GRUB!
error: file 'normal.mod' not found.
grub rescue>
This usually means that GRUB can no longer find its normal module path or that the boot medium is damaged. If the TrueNAS boot pool also shows checksum errors, it is not worth trying to keep using that USB stick in production.
In that case, reinstalling TrueNAS on an SSD and restoring/importing the TrueNAS configuration is the cleaner solution.
Final Result
After successful setup, the boot process looks like this:
MicroServer Gen8 starts
USB-GRUB appears briefly for 3 seconds
GRUB starts hd5
TrueNAS boots from the SSD on the ODD port
Data drives remain untouched in the front bays
This keeps the MicroServer Gen8 fully usable:
4 front bays for data drives
ODD port for the TrueNAS boot SSD
internal USB port only for GRUB
AHCI mode for clean TrueNAS operation
Conclusion
This setup is pragmatic, robust, and much better than running the TrueNAS boot pool from an aging USB flash drive. The small GRUB USB stick only acts as a pointer, while the actual system boots properly from the SSD.



Leave a Reply
Want to join the discussion?Feel free to contribute!