You can do this live if you are feeling adventurous.
Run lsblk
or fdisk -l
to identify the second drive, probably something like /dev/nvme1n1 based on your df
above. It’s likely part of the RAID array for /boot (/dev/md0) and other partitions.
Confirm it doesn’t already have an EFI partition. If it does, note its identifier (e.g., /dev/nvme1n1p1).
Next up you will need 200MB of space… doesn’t look like an issue.
Next up two options, Backup your partition table or go full send. If you don’t FA how do you FO
sfdisk -d /dev/nvme1n1 > /root/nvme1n1-partition-backup.txt
Partition time…
fdisk /dev/nvme1n1
# Press n to create a new partition.
# Select partition number (e.g., 1 if no EFI partition exists).
# Set size to +200M.
# Change type to EFI System (type t, then select 1 or ef).
# Write changes with w.
# New partition something like /dev/nvme1n1p1, adjust accordingly in commands that follow
Format, mount, sync…
mkfs.vfat -F 32 /dev/nvme1n1p1
mkdir /mnt/second_esp
mount /dev/nvme1n1p1 /mnt/second_esp
rsync -av /boot/efi/ /mnt/second_esp/
Now the opposite of mount…
umount /mnt/second_esp
rmdir /mnt/second_esp
Next step is on you, configure uefi in the bios, Probably a boot menu somewhere. Add a new boot entry pointing to the second drive’s EFI partition (/dev/nvme1n1p1). Specify the bootloader path, typically /EFI/grub/grubx64.efi? (match the structure in /boot/efi).
YOLO time
Reboot and select the second boot entry from the UEFI boot menu to verify it works. If successful, the system should boot normally.
YOLO part 2
Power off unplug a drive… see comment about the scientific method above mentioned with backing up…
Finally…
You will need a script/cron or some other fancyness to keep them in sync like rsync -av --delete /boot/efi/ /mnt/second_esp/
you need to mount etc too…