wie sehe ich, ob FreeBSD im UEFI Modus läuft?

pit234a

Well-Known Member
Ich habe nur zwei Möglichkeiten, EFI-Boot zu testen. Einmal ein Mac-Book-Air und dann einen PC, dessen BIOS mir verschlossen ist, der aber automatisch umschaltet und bei Bedarf Legacy bootet.

Nun habe ich mit Linux schon häufiger mit (U)EFI gearbeitet und kenne diese Methoden
https://unix.stackexchange.com/questions/148356/how-to-know-if-im-booting-using-uefi
mit denen ich gut sehen kann, ob ich im EFI-Modus gestartet habe.
Bei FreeBSD sehe ich nichts, bzw sieht es eher so aus, als sei ich nicht im EFI-Modus, weil
Code:
pit@test:~ % efivar -lp
efivar: Error listing names: No such file or directory

pit@test:~ % dmesg | grep -i efi
VT(efifb): resolution 640x480

pit@test:~ % ls /sys/
ls: /sys/: No such file or directory
pit@test:~ % file -s /sys
/sys: broken symbolic link to usr/src/sys
Dies gilt allerdings auch bei einem Boot mit dem MacBook und das kann ja nur im EFI-Modus laufen.

Die Efi-Partition ist natürlich vorhanden, es sollte im Efi-Modus laufen (klar, wenn es auf dem Mac geht), aber, kann ich das sehen? Irgendwie abfragen?
 
Also, die Aussagen in dem StackExchange-Beitrag beziehen sich nur aus Linux und funktionieren so unter FreeBSD nicht. Außerdem muss man wissen, dass in FreeBSD 11.x der UEFI-Support noch relativ rudimentär ist, es wird sich mit 12.0 drastisch verbessern. Ein sehr deutliches Indiz, dass man per UEFI gebootet hat ist der "efifb" Konsolentreiber. Der steht in der dmesg fast ganz am Anfang:

Code:
VT(efifb): resolution 800x600
 
Also ich erkenne es daran, das (U)EFI nicht im VGA Modus startet, sondern beim Booten deutlich mehr Zeichen in einer Zeile angezeigt werden, die auch etwas kontrastreicher sind.
 
Also ich erkenne es daran, das (U)EFI nicht im VGA Modus startet
Das geht auch so schon seit der Einführung von vt(4), hat also nicht unmittelbar etwas mit UEFI zu tun.
Es ist eben so, dass vt automatisch als Systemkonsole aktiviert wird, wenn das System über UEFI hochgefahren wird. Im BIOS-Fall wird standardmäßig die alte sc(4) genutzt, die kann in der Tat nur VGA-Auflösung.

Rob
 
Für efivar(8) musst du vorher das efirt Kernelmodul laden.
Das ist ja neckisch.
Und wenn ich das Modul lade und dann nur mal einen efivar -l probiere, dann stürzt das System sofort ab. Total aus.
Aber das ist nun nicht wichtig, ich wollte nur sicher sein, ob ich meinem Wunsch-PC auch im EFI-Modus gebootet habe, bevor ich da in falscher Annahme etwas falsch mache oder sehe.
 
Das ist ja neckisch.
Und wenn ich das Modul lade und dann nur mal einen efivar -l probiere, dann stürzt das System sofort ab. Total aus.
Aber das ist nun nicht wichtig, ich wollte nur sicher sein, ob ich meinem Wunsch-PC auch im EFI-Modus gebootet habe, bevor ich da in falscher Annahme etwas falsch mache oder sehe.
Normal ist das auf jeden Fall nicht :)

Die Boot-Methode ist auch abrufbar mit
Code:
sysctl machdep.bootmethod
 
Die Boot-Methode ist auch abrufbar mit
Code:
sysctl machdep.bootmethod
Und das funktioniert sogar. :D Wieder was gelernt.

Aber mal im ernst, wenn ich FreeBSD von einer CD als Installationsmedium starte, dann sehe ich doch, welcher Loader genommen wird. Das wird doch angezeigt. Ich habe das Glück, das ich ein DUAL BIOS auf dem Motherboard Gigabyte Z97P-D3 habe, so daß ich wählen kann zwischen dem Legacy BIOS und dem (U)EFI BIOS. Und wenn ich eine CD oder DVD einlege und boote, kann ich auf Wunsch selbst bestimmen, welcher Modus bevorzugt werden soll. Ist kein (U)EFI Bootloader vorhanden, wird natürlich automatisch im Legacy Mode gestartet.
 
Code:
pit@test:~ % sysctl machdep.bootmethod
machdep.bootmethod: UEFI
Ja, super deutlich.

wenn ich FreeBSD von einer CD als Installationsmedium starte, dann sehe ich doch, welcher Loader genommen wird.
Ich starte es nicht von einer CD/DVD, sondern ich spiele damit auf einem USB-Stick herum. Bisher habe ich FreeBSD noch nie auf UEFI gestartet oder installiert, deshalb wollte ich damit mal anfangen. Ich sehe nicht beim Booten, welcher Loader genommen wird. Das geht mir zu schnell, um da etwas erkennen zu können.
Das Mac-Book ist ein sicherer Garant dafür, dass im EFI Modus gestartet wurde, es hat aber kein LAN und ich will nicht extra WLAN auf diesen Stick einrichten. Somit kann ich das System auf dem Mac-Book nicht über ssh erreichen und bedienen.
Bei meinem zweiten Laptop geht das aber, der hat LAN. Nur gehört mir der nicht und das BIOS ist Passwort-geschützt. Ich komme da nicht ran, ich kann die Boot-Methode nicht umstellen. Er schaltet von selbst zwischen BIOS und UEFI um und bevor ich da irgendwas weiter mache, wollte ich natürlich erst eine Methode kennen lernen, wie ich sicher bestimmen kann, wie der überhaupt gebootet hat.
Denn der gleiche Stick geht (mit einem anderen Laptop gezeigt) auch im BIOS-Modus:
Code:
pit@test:~ % sysctl machdep.bootmethod
machdep.bootmethod: BIOS
Das ist schon ganz schön schlau gemacht und genau ein Grund, weshalb ich damit mal ein wenig spielen möchte.
 
Zurück
Oben