hikaru hat geschrieben: 22.03.2018 23:22:04
rEFInd-Stick dran und versucht in's EFI zu kommen, um Secure Boot einzuschalten. Das klappte nicht.
Also rEFInd-Stick und Endless-HDD angestöpselt und ich komme in's UEFI. Dann habe ich Secureboot aktiviert und ohne Eingriff in den Bootprozess mit rEFInd-Stick aber ohne Endless-HDD gebootet und es kam der Debian-Grub hoch, nicht der von Acer und auch nicht rEFInd.
Hmm ... dann scheint "dein" Refind Secure Boot tauglich zu sein. Ich weiß nicht, wie es mit dem von Debian steht, aber eventuell kann man sich mit dem eine "nur Debian"-Lösung basteln.
hikaru hat geschrieben: 22.03.2018 23:22:04
Langsam habe ich das Gefühl, dass die Secure-Boot-Option im UEFI zwar irgendwas hin- und herschaltet, das teilweise das Verhalten beim Boot beeinflusst, dass aber Secure Boot an sich nicht für den Unterschied verantwortlich ist.
Ich habe eher den Eindruck, dass Secure Boot nach dem Ausschalten nicht wirklich komplett ausgeschaltet ist. Er scheint weiterhin nach einem (signierten?) Secure-Boot-Bootloader zu suchen (ohne den geht F2 nicht). Es fragt sich weiterhin, ob das ein bestimmter im UEFI hinterlegter Bootloader ist, oder ob er sich selbstständig "irgendeinen" auf der Platte sucht.
Nach deinem folgenden Kommentar fragt sich aber auch, ob man das so sicher sagen kann, ohne jeweils einen Kaltstart ausgeführt zu haben. Eigentlich müsste man sämtliche Experimente mit einem "Power-Off" dazwischen wiederholen.
Bei Desktop-UEFIs beobachte ich übrigens oft folgendes Verhalten: Bei manchen (nicht allen) Änderungen am UEFI wird mir erst eine Liste aller von mir getätigten Änderungen angezeigt, dann führt das Gerät einen Reboot durch, und an der Stelle, an der der Bootloader gestartet werden sollte, folgt ein weiterer Reboot, der dann "normal" verläuft. Das sieht für mich so aus, als ob bei Änderungen am UEFI ein neuer Boot-Eintrag mit "Änderungsaufträgen" und einem "Reboot" am Ende erzeugt wird. Ich schließe daraus, dass Änderungen im UEFI eine sehr komplizierte Sache sind.
hikaru hat geschrieben: 22.03.2018 23:22:04
Soweit ich das beurteilen kann, kommt diese Grub-Shell immer dann hoch, wenn sonst nichts zum Booten gefunden wird.
Und ja, ich glaube die ist wirklich von Acer.
Das ist aus zwei Gründen interessant:
1) Warum ist der da? Wofür mag der gut sein? Kann man den selber irgendwie nutzen? (Nein, ich habe keine Antworten)
2) Wie war das noch mit der GPL? Müsste Acer dann nicht den Quellcode dazu anbieten?
hikaru hat geschrieben: 22.03.2018 23:22:04
NAB hat geschrieben: 22.03.2018 18:48:42
Ist dein grubx64.efi identisch zu deinem BOOT/BOOTX64.EFI?
Ja. Die Dateigrößen stimmen überein. Ich habe einmal sogar die Datei zwischen BOOT/ und debian/ hin- und herkopiert.
NAB hat geschrieben: 22.03.2018 18:48:42
Hängt grub-install auch mit "--no-nvram"?
Nein. Aber das ändert auch nichts am Bootverhalten.
Das meinte ich nicht.
Das ist aus zwei Gründen interessant:
1) Grub schreibt bei der Installation vor dem Aufhängen einen kompletten Bootloader, hängt sich also erst danach auf (du erinnerst dich, damit fing der Thread an). Das "danach" hat dann höchstwahrscheinlich mit dem Schreiben ins NVRAM zu tun.
2) Das Blacklisten der efivar-Module nach smutberts Anleitung führt entweder nicht zum gewünschten Ergebnis oder wurde von dir falsch durchgeführt oder "grub-install" lädt diese Module dann trotzdem "hintenrum".
Nebenbei fällt mir gerade noch ein, dass du auf Seite 1 von Kernel-Panics berichtet hast. Wenn man die (ohne "--no-nvram") reproduzieren kann, reicht's vielleicht für einen qualifizierten Kernel Bug.
hikaru hat geschrieben: 22.03.2018 23:22:04
Interessanterweise wird seit dem eben durchgeführten Secure-Boot-Experiment der Ubuntu-Stick nicht mehr als Bootoption erkannt, selbst wenn ich Secure Boot wieder ausschalte.
Huch? Es wird wirklich immer kurioser. Eventuell hilft ein Power-Off dagegen?
Ob der Ubuntu-Stick sich selbst beschädigt hat, kannst du mangels weiterer UEFI-Maschine nicht testen, oder? Aber einen Blick auf die Efi-Partition und den removable media path müsstest du werfen können. Findest du dort die gleich erwähnte PARTUUID?
hikaru hat geschrieben: 22.03.2018 23:22:04
Ich habe zuerst das gesamte EFI/endless-Verzeichnis auf die Debian-SSD kopiert und dann versucht ohne Endless-HDD zu booten. Dabei kam nach dem Acer-Logo ein schwarzer Bildschirm (Acer-Grub?) auf dem ständig und ohne Ende diese Zeile fast unleserlich flackerte:
Code: Alles auswählen
error: no such device: 4f68-bce3-e8cd-4db1-96e7fbcaf984b709
Das sieht aus wie eine UUID. Diese passt aber zu keiner Partition und zu keinem Dateisystem auf der Endless-HDD oder auf der Debian-SSD.*
*) Edit: Diese Kennung nennt sich im UEFI-Kontext wohl "Protokoll":
https://jbeekman.nl/blog/2015/03/revers ... -firmware/
Uff ... ich weiß jetzt wesentlich mehr über EFI Binaries als ich jemals wissen wollte. Aber ich denke, du bist auf dem Holzweg. Stimmt, EFI nutzt UUIDs als Funktionsreferenz. Aber auch in gewöhnlicher Weise um Partitionen zu identifizieren. Die Meldung oben sieht mir viel zu sehr nach einem gewöhnlichen Grub-Fehler aus, der seine Partition nicht finden kann.
Auf einem funktionierenden UEFI wirst du feststellen, dass die UUIDs in den Booteinträgen von "efibootmgr -v" identisch sind zu den PARTUUIDs, die blkid anzeigt. Die PARTUUIDs stehen in der GPT, sind also von der Partitionstabelle abhängig und nicht vom Dateisystem.
Ich bin mir ziemlich sicher, dass Grub hier eine PARTUUID sucht. Die PARTUUID lässt sich ändern:
https://bbs.archlinux.org/viewtopic.php?id=215541
man könnte ihm also geben, wonach er sucht. Interessanter wäre aber mMn, wo diese "4f68-bce3-e8cd-4db1-96e7fbcaf984b709" steht. Hardcodiert im Acer-Grub? Versteckt und änderbar im NVRAM? Oder in einem der Bootloader von Endless oder Debian (woher auch immer). Du könntest auf der Platte und im Acer-BIOS-Update danach suchen.
hikaru hat geschrieben: 22.03.2018 23:22:04
Dann habe ich Endless von der HDD gebootet und auf der Debian-SSD das EFI/endless/bootx64.efi gegen EFI/debian/bootx64.efi ersetzt. Damit klappt sowohl der Debian-Boot als auch der UEFI-Zugriff beim Booten.
Als nächstes habe ich aus dem endless-Verzeichnis alle Dateien außer bootx64.efi gelöscht. Damit konnte ich booten, aber nicht in's UEFI.
Dann habe ich shim.efi wiederhergestellt und es ging wieder Beides. Die gleiche Konstellation in BOOT/ oder debian/ statt endless/ führte zwar zu funktionierendem UEFI, aber es war kein Booten mehr möglich.
Aktuell habe ich nur
EFI/endless/grubx64.efi (von Debian) und
EFI/endless/shim.efi (von Endless), kein BOOT/ oder debian/ und alles funktioniert soweit.
Hmm .. so als grobe Hypothese: Entweder
1) sucht das UEFI trotz ausgeschaltetem Secure Boot einen signierten Bootloader (smutberts Theorie), findet den unter /endless/shim.efi (sonst geht F2 nicht) und /endless/shim.efi will dann einen hardcodierten Pfad laden *a).
oder
2) der Pfad /endless/shim.efi ist irgendwo gespeichert (wo?!?) (meine Theorie), wird geladen wenn er gefunden wird und /endless/shim.efi will dann wieder einen hardcodierten Pfad laden *a).
*a) Welchen hardcodierten Pfad? Aus der Beschreibung von Shim (siehe unten) ergeben sich zwei Möglichkeiten.
a1) Shim sucht in <aktuelles Verzeichnis>/grubx64.efi (oder sucht generell eine Datei grubx64.efi in der Efi Partition, das halte ich für unwahrscheinlich).
a2) Acer benutzt einen manipulierten Shim, der nach /endless/grubx64.efi sucht.
Soweit ich das Chaos hier überblicke: wenn man shim.efi und Debians grubx64.efi in ein anderes Verzeichnis packt, dann funktioniert es nicht. Das schließt eine Kombination von 1) und a1) eigentlich aus. Den Rest kann man herausbekommen.
hikaru hat geschrieben: 22.03.2018 23:22:04
Gibt es sowas wie einen Decompiler für *.efi-Dateien um mal zu schauen, was in dem shim.efi drin steht?
Die Frage ist, wie lange sowas dauert und was es bringt. Reverse Engineering ist ziemlich aufwändig, wie dein Artikel eindrucksvoll zeigt. Wenn du erst nach Buster fertig bist, kannst du genau so gut auch den bis dahin hoffentlich funktionierenden Secure Boot Support von Buster nutzen.
Der Punkt an Shim ist, dass es von Microsoft signiert und somit binär unveränderbar ist, und das meineswissens seit 2012:
http://www.codon.org.uk/~mjg59/shim-signed/
Das Readme führt dich hierhin:
https://mjg59.dreamwidth.org/20303.html
wenn man das wörtlich nimmt, dann
muss Shim in /EFI/BOOT liegen ... das scheint zumindest hier nicht so ganz zu stimmen - zumindest nicht für den Fall "Secure Boot ausgeschaltet".
Du könntest dir erst mal irgendein anderes shim.efi besorgen und das mit deinem von Endless OS vergleichen. Wenn beide binär identisch sind, dann hat Acer hier zumindest nichts eigenes gebacken und du kannst den öffentlichen Quellcode von Shim sichten.
Und wenn es ein unmanipulierter Shim ist, dann müsste meiner Meinung nach Folgendes klappen:
shim.efi -> /EFI/BOOT/bootx64.efi
(den removable media path bootet dein UEFI ja anscheinend brav)
/debian/grubx64.efi -> /EFI/BOOT/grubx64.efi
Falls das klappt, hätten wir EFI/endless/shim.efi durch den anscheinend priorisierten removable media path umgangen, aber immer noch nicht geklärt, warum das UEFI den Pfad EFI/endless/shim.efi so gerne mag.
Falls es sich um einen manipulierten Shim handelt, würde ich erst mal bei Endless OS gucken, ob der von denen stammt (ich weiß über Endless OS so gut wie nichts). Die dürften den Quellcode vorrätig halten. Sonst wären wir wieder bei der Frage mit der GPL ...
"shim" gibt es übrigens auch als Debian Paket. Ich hab nur keine Ahnung, in welchem Zustand es sich befindet und wie man es konfiguriert. Aber nach meinem Verständnis kann sich da seit 2012 eigentlich nichts geändert haben und zu konfigurieren dürfte es da auch nichts geben.
Never change a broken system. It could be worse afterwards.
"No computer system can be absolutely secure." Intel Document Number: 336983-001