Move proxmox boot files to USB

sebi2ga121

New Member
Apr 26, 2025
3
0
1
Hello everyone, I am trying to install proxmox on an HP DL380p gen8 server with more or less success. I managed to find out that it is necessary to switch the raid card (p420i) to HBA mode and I found that because of this I have to create an external drive from which proxmox will boot. The problem I have is that I can't do this USB, even if I follow the different descriptions, it doesn't work. (https://www.reddit.com/r/Proxmox/comments/ph1q5h/proxmox_install_on_nonbootable_disks_hp_dl_380p/)
The USB on which I currently want to put the boot files is called the sdd drive (I am attaching a picture). I tried to create the partitions with gdisk, but if I made them efi or gpt or maybe mbr, the proxmox boot tool did not see them. So, if I may ask, could someone write a foolproof description of how to make such a USB?
 

Attachments

  • c3ca4018-c1ef-44b8-bbed-001f4858aec6.jpg
    c3ca4018-c1ef-44b8-bbed-001f4858aec6.jpg
    144.9 KB · Views: 6
Hi!

maybe?
Code:
$> proxmox-boot-tool format /dev/sdd

The "proxmox-boot-tool" for EFI system.

You want EFI or EFI+SecureBoot or Legacy?

Legacy will work on Gen8, it is simple:

Code:
$> parted -s mklabel msdos /dev/sdd
$> parted -s mkpart primary 0% 100% /dev/sdd
$> mkfs.ext4 /dev/sdd1 -L pve_bootfs -E lazy_itable_init=0,lazy_journal_init=0

$> mount -t ext4 /dev/sdd1 /boot
$> grub-install /dev/sdd
$> update-grub



If you on the running system it will work, if you in a "LiveCD/Installer" system the GRUB menu ( kernel, root-disk ) will be not generated to the "menu.lst" file, to fix that you need "chroot" in LiveCD/Installer system:
The steps in a nutshell:
Code:
(LiveCD/Installer)
$> mkdir -p /media/disk1
$> mkdir -p /media/disk2

$> mount -t /ext4 /dev/sdd1 /media/disk1
$> mount -t /ext4 /dev/sdaX /media/disk2            ## PVE_root disk partition ##
$> mount --bind /media/disk1 /media/disk2/boot

$> mount -t proc /proc /media/disk2/proc
$> mount -t sysfs /sys /media/disk2/sys
$> mount --bind /dev /media/disk2/dev
$> mount --bind /dev/pts /media/disk2/dev/pts
$> mount --bind /run /media/disk2/run

((LiveCD/Installer - chroot)
$> chroot /media/disk2 /bin/bash
$> grub-install /dev/sdd
$> update-grub
$> sync
$> exit
 
Last edited:
and I found that because of this I have to create an external drive from which proxmox will boot.

Why?

PVE can boot from a disk and use the very same for vm data.

Go the HBA road. Install straight forward with ZFS. At the end all disks are bootable and the only ZFS pool (called "rpool") will allow to create virtual disks - automatically during the creation of a VM.

(( Yes, it is still recommended to separate OS from data. But in my Homelab I use Mini-PCs with only a limited number of connectors for disks. "All-in-one" is the only chance for me. It is absolutely fine! ))
 
@UdoB most likely the bootloader can't find the kernel / initrd if it is stored on a disk connected to a hp smartarray card, does not matter if it is in raid or hba mode

there are similar threads on the forum with different workarounds like booting from usb / sdcard / or using an sata ssd connected to the internal sata port for boot
 
most likely the bootloader can't find the kernel
Oh!

I've never encountered such a scenario, but yes, that would be a showstopper.
 
Legacy will work on Gen8, it is simple:

$> parted -s mklabel msdos /dev/sdd $> parted -s mkpart primary 0% 100% /dev/sdd $> mkfs.ext4 /dev/sdd1 -L pve_bootfs -E lazy_itable_init=0,lazy_journal_init=0 $> mount -t ext4 /dev/sdd1 /boot $> grub-install /dev/sdd $> update-grub
only legacy works on the gen8 server, I followed these commands (in proxmox installer debug console) and rebooted the server, but the grub controller came up. Should I have done something else besides the commands or what should I enter in grub?
 

Attachments

  • 92504627-1563-4126-aae7-9d19dc8770e9.jpg
    92504627-1563-4126-aae7-9d19dc8770e9.jpg
    108 KB · Views: 4
only legacy works on the gen8 server, I followed these commands (in proxmox installer debug console) and rebooted the server, but the grub controller came up. Should I have done something else besides the commands or what should I enter in grub?

You need to generate the "/boot/grub/grub.cfg" file for the boot.
This is done by the "update-grub" command in a running system:

So you need to boot into the system the run "update-grub" command, before check all the disks are properly mounted ( /boot ).

How to boot from grub console:
Code:
https://www.linuxfoundation.org/blog/blog/classic-sysadmin-how-to-rescue-a-non-booting-grub-2-on-linux

Code:
Example:
grub> set root=(hd0,1)
grub> linux /boot/vmlinuz-3.13.0-29-generic root=/dev/sda1
grub> initrd /boot/initrd.img-3.13.0-29-generic
grub> boot
 
Last edited: