Installing Proxmox on a HP DL380 gen7 background

Installing Proxmox on a HP DL380 gen7

# Assumptions

This tutorial assumes that you have a:

If you want to be booting via ZFS:

# 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)

Proxmox installation media main screen

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

editing of kernel boot parameters for the intaller

When done press F10 to boot into the selected and edited installer

booted installer with the elements actually rendering on screen

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).

USB drive used for grub boot installation plugged into the internal USB port in the DL380 gen7 server

# 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.

Dl380g7 motherboard schema

# 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.

Switched session to third TTY

# 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:

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