[SOLVED] Move boot partition ZFS USB

Update
I got this working. I re-installed to 2 x drives connected to the onboard controller and re-did the procedure to create the bootable USB drive. I then detached the drives and the system had an entry for proxmox in the boot menu this time. I reattached the original drives and had to do a zpool import rpool. Just to be sure I went over the usb creation again just to be sure its UUID got added to /etc/kernel/proxmox-boot-uuids

Maybe not the prettiest solution but I up and running and survived an initial upgrade.

Hope this helps someone else
 
Hi all,
I'm in a similar position. I installed pve onto 2 x SSDs on and add-in PCIe SATA adapter. The installer see the drives and installs in ZFS RAID 1 but my system is unable to boot from the PCI card.

I'm trying to boot from a usb stick as in the procedure above but the system just boots into what looks like a black grub splash screen that says, "Reboot into Firmware Inerface" and reboots in 10s

I'm unable to boot the system using Rescue mode. I get:

Code:
error: nosuch device: rpool
ERROR: unable to find boot disk automatically

If I then try to create a bootable USB I boot in debug mode until the installer runs to disk selection at which point I Alt+Ctr+ F3 and drop to a terminal

I'm able to partition my USB drive correctly, mount rpool and:
mount -t proc proc /mnt/proc
mount -t sysfs sys /mnt/sys
mount -o bind /dev /mnt/dev
mount -o bind /run /mnt/run
chroot /mnt
works fine.

proxmox-boot-tool format /dev/sdX2 --force works fine but proxmox-boot-tool init /dev/sdd2 finishes with output:

Code:
Failed to create EFI Boot variable entry: No such file or directory

Can anyone help please? I'm a bit stuck what to try next.

Many thanks

NTB
You need to mount efivars:
Code:
mount —bind /sys/firmware/efi/efivars /rpool/ROOT/pve-1/sys/firmware/efi/efivars
 
You need to mount efivars:
Code:
mount —bind /sys/firmware/efi/efivars /rpool/ROOT/pve-1/sys/firmware/efi/efivars

You right. Im giving correct syntax,

from outside the chroot (on the host system):
Code:
mount -t efivarfs efivarfs /mnt/sys/firmware/efi/efivars

Also Im confirm that whole procedure working.
 
Last edited:
Update
I got this working. I re-installed to 2 x drives connected to the onboard controller and re-did the procedure to create the bootable USB drive. I then detached the drives and the system had an entry for proxmox in the boot menu this time. I reattached the original drives and had to do a zpool import rpool. Just to be sure I went over the usb creation again just to be sure its UUID got added to /etc/kernel/proxmox-boot-uuids

Maybe not the prettiest solution but I up and running and survived an initial upgrade.

Hope this helps someone else
Hey I am exactly where you were at the time of this posting. I get the same error message. Unfortunately I couldnt follow your explanation about detatching the drives, do you mind explaining it in more detail? - thank you!
 
For anyone wanting to replicate this is the process:
(Assuming an unbootable proxmox 8 install due to raid card & proxmox 8 live iso)
  • Delete all existing partitions on your usb or any other device that can boot and is unaffected by raid card. (at least 1 GB space, depending on number of kernels installed)
  • To replicate the setup above and have the first sector start at 34, start with gdisk /dev/sdX, press "x" for expert mode, "l" for alignment and set it to 1, press "m" to return back to normal mode
  • "n" to create new partition with number 1 (sdX1), first sector: 34, last sector: 2047, Hex: EF02
  • "n" to create new partition with number 2 (sdX2), first sector: 2048, last sector: 1050623, Hex: EF00 (might want to increase last sector number if planning on having more kernels)
  • "w" to write changes and exit
  • Now mount rpool to /mnt with zpool import rpool -R /mnt
  • And mount /proc /sys /dev /run with:
Bash:
mount -t proc proc /mnt/proc
mount -t sysfs sys /mnt/sys
mount -o bind /dev /mnt/dev
mount -o bind /run /mnt/run
  • chroot /mnt
  • proxmox-boot-tool format /dev/sdX2 --force and proxmox-boot-tool init /dev/sdX2
  • Now check if the UUID of /dev/sdX2 from blkid /dev/sdX2 is inside /etc/kernel/proxmox-boot-uuids, if not try to run proxmox-boot-tool refresh
  • To unmount the system folders we need to run umount for each /mnt/proc /mnt/sys /mnt/dev /mnt/run
  • zpool export rpool, try -f to force the export
  • Important is to export the zfs pool, because proxmox doesn't boot with force flag on pool import during boot
That helped a lot, thank you for sharing!
 
  • Like
Reactions: whytf