die EFI-Partition muss gar nicht gemountet werden und bei mir wird sie das auch nicht, weshalb man nicht mittels mount nachsehen kann, von welcher Platte denn gebootet wurde.
Muss man das wissen?
Es gibt in diesem Fall offenbar nur eine EFI auf einer Platte. Die kann man ja ziemlich leicht heraus finden. Alle EFIs, die ich bisher kenne, sind in einem FAT formatiert, alle FATs lassen sich über msdosfs in FreeBSD mounten. Longnames wurden afaik erst mit FAT32 (vfat) eingeführt, werden aber innerhalb der EFI nicht verwendet (habe noch keine gesehen und glaube, dass Kompatibilität dagegen spricht).
Ich erinnere nun nicht das Script von
@Kamikaze so im Detail, but afair, füllt das Script nur eine vorhandene Partition, legt aber keine neu an und formatiert auch nicht. Wenn so, dann muss also in jedem Fall erst mal Handarbeit her.
Ich selbst lege seit einiger Zeit EFI-Partitionen nur noch in FAT32 an und lasse sie etwa 500M groß werden. Das ist unsinnige Platzverschwendung. FAT32 braucht aber mehr Platz, als etwa FAT16 oder noch ältere FATs, die ich ebenfalls schon für EFI-Partitionen gesehen habe.
Also, was ich mache ist etwa:
Code:
newfs_msdos -F 32 -L EFISYS -c 1 -m 0xf8 /dev/adaxp1
, um die EFI zu formatieren.
An deiner Stelle würde ich aber eine weitere EFI gemäß der ersten einrichten und also erst mal sehen, wie die genau formatiert ist. Meine zeigt:
Code:
file -s /dev/nvd0p1
/dev/nvd0p1: DOS/MBR boot sector, code offset 0x58+2, OEM-ID "BSD4.4 ", Media descriptor 0xf8, sectors/track 63, heads 255, sectors 1024000 (volumes > 32 MB), FAT (32 bit), sectors/FAT 7877, serial number 0x79c15f3, label: "EFISYS "
Was natürlich nur dann geht, wenn der entsprechende Platz vor dem ZFS auf deiner Zweiten Platte bereits vorhanden ist UND als Partition angelegt wurde. Ich habe das nie gemacht, eine Partition nachträglich anzulegen, aber, wenn der Platz dazu vorhanden ist, sollte es einfach und Störungsfrei wie üblich, mit gpart gelingen. Wenn der Platz nicht vorhanden ist... fange ich am liebsten wieder neu an...
In deinem Fall müsstest du womöglich die zweite Platte aus dem Pool detachen, neu partitionieren, formatieren, ZFS anlegen, dem Pool wieder zufügen und resilvern und so weiter.
Reden wir lieber noch über den Inhalt der EFI.
Ich habe meine mal nach EFI gemountet:
Code:
pit@Mifcom /home/pit:-# tree EFI
EFI
├── efi
│ └── boot
│ └── BOOTx64.efi
Die entscheidende Datei ist hier natürlich die BOOTx64.efi, die aber genau an dem Platz stehen muss. In deinem Fall hast du eine frische, passende und funktionierende EFI auf der ersten Platte. Du kannst die Dateien also einfach von einem FAT zum anderen kopieren, also von Platte 0 nach x.
Dieses Datei steht zu deinem System passend in /boot und heißt dort loader.efi. Also, wenn du nun die Partition angelegt und in FAT formatiert hast und dann auch noch gemountet, dann legst du einfach die Verzeichnis-Struktur an und kopierst das loader.efi nach der EFI. also so in etwa:
Code:
mkdir -p mountpoint/efi/boot
cp /boot/loader.efi mountpoint/efi/boot/BOOTx64.efi
. Das ist wohl auch, was das Script von
@Kamikaze neben einigen anderen Dingen macht.
Die Auswahl der Bootplatte erfolgt aus dem BIOS.
Entweder durch vergebene Reihenfolge (ist die erste Platte nicht da, wird die zweite genommen) oder durch Auswahl des Mediums im Bootmenü. Einen weiteren Eintrag via efibootmgr brauchte es bei mir noch nicht, alles geht automagisch.
Nunja, das macht man nun einfach mit allen Platten, von denen aus man booten möchte.
Will man secure-boot, ist das sicher kreuzweise komplizierter, vor Allem, wenn mal die Datei durch Update erneuert wird und das womöglich nur auf einer Platte passiert ist.