
# Assumptions
This tutorial assumes that you have a:
- HP DL380 Gen7 server in working condition
- bootable USB stick with Proxmox VE 8.3 installer (future versions may also work) flashed to it
If you want to be booting via ZFS:
- HBA for your boot disks (passing single drives via raid0 on your raid card is not recommended)
- another USB stick - or an SD card - of at least 8GB, that you will then leave in the server for boot (from now on called "GRUB USB")
# Booting into the installer
After booting to the PVE install media (by pressing F11 furing boot to temporarly override boot media and booting to USB) select the "Terminal UI" option (do not confirm it yet)
Press the E
key to edit the boot kernel parameters and add nomodeset
at the end of the line that starts with "linux" as shown in the following screenshot
When done press F10
to boot into the selected and edited installer
Now that you have your installer booted and rendered on the screen you can install proxmox on your machine, reboot and you're off to the races!
# ZFS installation
If you decided to use ZFS for your base install you will have to plug in the internal USB port (well... you can plug it into any USB port, but the internal one is convenient for more permanent installations, which this hopefully is).
# Sidenote: SD card
You can also use an SD card instead of the USB drive. Make sure it's a quality SD card, nothng too extreme - this will only be read on server boot and written on this first setup and on every kernel and GRUB upgrade.
The SD card slot is located inside the server, on the motherboard, marked with the number 13 on the following picture.
# Sidenote: SD card AND USB drive
If you don't have easy access to your server you can use both internal USB and internal SD card slots for boot so in case one of them dies you still have a backup boot device. In this case you have to (in the following steps) format and init both devices, not just one.
# Setting up bootable media
Following the tutorial on this reddit thread we will make the USB bootable via GRUB (because HP servers only started supporting UEFI boot with gen 9 (except for DL580 gen8)).
# Getting into the command line
Now that you have installed PVE on your disks with ZFS, kept the installation media (proxmox installer USB) plugged in and added another USB (so called GRUB usb) (or SD card, or both) you can boot back into the PVE installer, edit the Terminal UI entry by adding "nomodeset" like before and booting into it (see step Booting into the installer).
When the installer start up press ALT + F3
and you should see a terminal instead of the installer window.
# Formatting boot media
When in command line run lsblk
to list all "block devices" (storage devices, CDs, USBs, disks, NVME drives, SD cards, ...) and find your GRUB usb and remember the device name.
In the following example the USB is /dev/sdq
(we see it has ~32GB) and the drives with the ZFS pool for proxmox install are /dev/sdj
and /dev/sdk
(we see they have three partitions).
sda 8:0 0 931.5G 0 disk
sdb 8:16 0 558.8G 0 disk
sdc 8:32 0 558.9G 0 disk
sdd 8:48 0 558.9G 0 disk
sde 8:64 0 223.6G 0 disk
sdf 8:80 0 558.8G 0 disk
sdg 8:96 0 558.8G 0 disk
sdh 8:112 0 558.8G 0 disk
sdi 8:128 0 558.8G 0 disk
sdj 8:144 0 279.4G 0 disk
├─sdj1 8:145 0 1007K 0 part
├─sdj2 8:146 0 1G 0 part
└─sdj3 8:147 0 99G 0 part
sdk 8:160 0 279.4G 0 disk
├─sdk1 8:161 0 1007K 0 part
├─sdk2 8:162 0 1G 0 part
└─sdk3 8:163 0 99G 0 part
sdl 8:176 0 558.8G 0 disk
sdm 8:192 0 223.6G 0 disk
sdn 8:208 0 558.8G 0 disk
sdo 8:224 0 558.8G 0 disk
sdp 8:240 0 558.9G 0 disk
sdq 65:0 1 28.9G 0 disk
nvme0n1 259:0 0 1.8T 0 disk
From now on when reffering to "GRUB usb" I am talking about the /dev/sdq
device. Your device name will most likely differ.
# Making sure - no - double sure ...
Now that you identified your "GRUB usb" make sure - no double sure - that this is the correct device. If you are not 105% sure about it, unplug the "Grub usb" disk and try to list the disk again by running lsblk /dev/sdq
(change the device path to your disk, sdq
is just in my case) and if this is the correct device, you should get lsblk: /dev/sdq: not a block device
(because you just unplugged it). Do not forget to plug the "GRUB usb" back into the server.
# Formatting boot media - for real this time
Now that you know what the boot drive is, format it by running fdisk /dev/sdq
(change the name if needed) and when the fdisk CLI utility loads (should be almost instant), label the disk with GPT and create two new partitions, first one 32M BIOS boot and second one 512M normal Linux partition.
If you are unsure how to do this blindly type in the following:
g
- this will make the disk GPT-labelledn
enter
new partition,enter
confirm first partition,enter
confirm start at 2048th sector,+32M
enter
make it 32M larget
enter
change partiton type,0x04
enter
make it type of BIOS boot (ref: web.archive.org/web/superuser.com)n
enter
new partition,enter
confirm second partition,enter
confirm start at 67584th sector,+512M
enter
make it 512M largew
to write changes to disk
Now run fdisk -l /dev/sdq
(change device name) and verify the partitions were created correctly. It should look like this
Device Start End Sectors Size Type
/dev/sdq1 2048 67583 65536 32M BIOS boot
/dev/sdq2 67584 1116159 1048576 512M EFI System
# Mounting the root partition
We now need to mount the root partition of our proxmox install, so proxmox-boot-tool
will update grub configuration files, so next time your upgrade grub it will know to also update the grub boot configs on the "GRUB usb".
First import rpool - this is the name that Proxmox will use for the root ZFS pool,
then mount other runtime folders into the /mnt
folder
and at the end, if all went well, chroot into /mnt
.
zpool import -f -R /mnt rpool
mount -t proc /proc/ /mnt/proc
mount --rbind /dev/ /mnt/dev
mount --rbind /sys/ /mnt/sys
mount –-rbind /run/ /mnt/run
chroot /mnt bash
# Setting up boot media
First format the second partition on the GRUB USB - do not forget to change the device name - and if this succeeds, initialize the device which will copy over the GRUB bootloader onto the "GRUB usb" - it may take a bit longer if your device is slow (in which case, use another one because this one will most likely die when you least expect it)
proxmox-boot-tool format /dev/sdq2
proxmox-boot-tool init /dev/sdq2
Make sure these two command succeeded. There must be no errors printed out - if there are make sure you followed all the steps correctly. A mistake I made a few times is forgetting to label the "GRUB usb" as GPT.
# Have you decided to use both - USB and SD card?
If not, ignore this part and skip to Finishing up and rebooting
If yes - great! Now repeat all you did from Formatting boot media up until now for the other device.
If you followed the steps and formatted the USB, now do the same for the SD card (and vice-versa).
# Finishing up and rebooting
Now you can exit
from the chroot environment and then run shutdown -f
in order to shut the server down.
When the server shuts down you can remove the Proxmox VE installation media and start the server back up.
# Ensuring correct boot order
When the server is starting up enter BIOS (by pressing F9
during startup, when it says so on the screen) and make sure that USB (and SD card if you dedicded to use it) are the first (two) options in the boot order.
# Booting up for the first time
First time you boot, it may happen that the rpool
ZFS pool will not get automatically imported.
If that happens, and you land in "initramfs" shell, run the following command zpool import -f rpool
and reboot -f
.
You should not be in your Proxmox install on a Gen7 HP server.
# Finally
Questions, uncertainties or corrections
Ask me on Mastodon; @aljaxus@toot.tux.si
Sources
- HP ProLiant DL380 G7 Server User Guide (copy)
- Proxmox install on non-bootable disks (HP DL 380p G8 with P420i switched to HBA mode) and bootable SD-Card (web.archive.org)
- grub2-install: "this GPT partition label contains no BIOS Boot Partition" (web.archive.org)
- unsplash.com/@gabor_koszegi for splash image
