Univention Bugzilla – Bug 28672
UEFI für Installer
Last modified: 2014-09-22 11:19:22 CEST
Die (U)EFI-Integration für den Installer bzw. das Zielsystem fehlt noch.
Die amd64-ISOs booten seit ucs_3.1-0-20121107111511-dvd-amd64.iso auch auf EFI-Systemen. Für 32bit-Systeme ist keine EFI-Unterstützung vorhanden.
Auf den UCS-DVD-Images ist ab UCS 3.1 wie bisher mindestens ein Bootimage im El Torito-Format enthalten (es sind mehrere Bootimages möglich). Dieses Bootimage verwendet das BIOS, um regulär zu booten. Das Image ist 1,44 oder 2,88 MB groß und entspricht einer früheren Bootdiskette. Die meisten BIOS-Versionen lesen nur das erste Image der möglichen Images aus. Damit ein EFI-System ebenfalls von diesem ISO-Image booten kann, wird auf dieser ein weiteres (EFI-)Bootimage und ggf. eine GPT sowie eine EFI-System-Partition benötigt. grub-mkrescue erzeugt automatisch ein passendes Boot-ISO für das lokale System. Dafür wird entweder vom Paket grub-pc oder vom Paket grub-efi-amd64 in /usr/lib/grub/ ein Unterverzeichnis mit den benötigten Bootdateien abgelegt. grub-mkrescue prüft die Pfade unterhalb von /usr/lib/grub/ und erstellt dann eine entsprechendes ISO-File. Da die Pakete grub-pc und grub-efi-amd64 im Konflikt zueinander stehen, kann immer nur ein Paket zur Zeit installiert werden. Wird auf einem System mit installiertem grub-pc-Paket auch das Verzeichnis /usr/lib/grub/x86_64-efi aus grub-efi-amd64 abgelegt, erzeugt grub-mkrescue automatisch ein Hybrid-ISO, welches vom BIOS und EFI-System gebootet werden kann. Dabei wird von grub-mkrescue der folgende Befehl aufgerufen: xorriso -report_about HINT -as mkisofs -graft-points \ --modification-date=2012110612560100 \ -b boot/grub/i386-pc/eltorito.img -no-emul-boot -boot-info-table \ --embedded-boot /tmp/grub-mkrescue.kT9Kh8Yrxs --efi-boot efi.img \ --protective-msdos-label -o /grub2.iso -r /tmp/grub-mkrescue.GCQiraQd \ --sort-weight 0 / --sort-weight 1 /boot /iso Das ISO-File kann anschließend mit KVM getestet werden. Das Buildskript wurde entsprechend angepasst, so dass beim amd64-ISO-Build die Datenverzeichnisse für beide Bootvarianten zur Verfügung stehen.
Created attachment 4782 [details] installation-error.png Ich bin mir nicht ganz sicher, ob es zu diesem Bug gehört. Mit der aktuellen DVD bricht der Installer ab, sobald dieser versucht die DVD zu finden. Siehe Screenshot.
(In reply to comment #3) > Ich bin mir nicht ganz sicher, ob es zu diesem Bug gehört. Mit der aktuellen > DVD bricht der Installer ab, sobald dieser versucht die DVD zu finden. Siehe > Screenshot. → Bug 28512
1) UEFI wird von uns aktuell nur mit amd64 unterstützt. 2) Es wurden der Grub-Kernelparameter "use_efi=yes/no" hinzugefügt, über den die automatische Erkennung, ob das System EFI unterstützt, übergangen werden kann. 3) Die automatische Erkennung von EFI verwendet das Kernelmodul "efivars". Darüber konnen Konfigurationseinstellungen aus dem EFI (wie z.B. eingestellte Sprache) ausgelesen werden. Ist EFI vorhanden/aktiviert, existiert das Verzeichnis /sys/firmware/efi/. 4) Bei einer profilbasierte Installation wird je nach erkannter EFI-Unterstützung entweder auf eine BIOS-Boot-Partition oder auf eine EFI-System-Partition getestet. Fehlt die benötigte Partition im System, wechselt die Profilinstallation in den interaktiven Modus. 5) Bei einer profilbasierten Installation kann über die Profiloption "use_efi='yes'" bzw. "use_efi='no'" die automatische EFI-Erkennung übergangen werden. 6) Im Installationsprofil, welches unter /etc/univention/installation_profile abgelegt wird, ist immer die Option "use_efi" angegeben und führt den Wert, der bei der Installation aktiv war. 7) Bei einer Autopartitionierung (interaktiv+profilbasiert) wird automatisch die für den aktuellen EFI-Status benötigten Partitionen angelegt (BIOS-Boot vs EFI-System). 8) Am Ende einer jeden Festplatte werden ca. 128MiB Plattenplatz reserviert, die dem Benutzer nicht als freier Speicherplatz angezeigt werden. 9) Sollte bei einer interaktiven Installation erkannt werden, dass die benötigte BIOS-Boot-/EFI-System-Partition fehlt, wird geprüft, ob in dem regulären freien Speicherplatz genügen Raum ist, um die Partition anzulegen. Für die BIOS-Boot-Partition werden hier fix 8MiB benötigt. Für die EFI-System-Partition wird der größte freie Speicherplatz zwischen 32 und 256 MiB herausgesucht. Sollte der freie Speicherplatz nicht ausreichen, wird auf den reservierten Speicher (128 MiB am Ende jeder Platte) zurückgegriffen. Ist genügend Speicherplatz vorhanden, wird dem Benutzer angezeigt, dass die Partition fehlt und angeboten, die jetzt automatisch zur Partitionierung hinzuzufügen. Der Benutzer kann dies ignorieren. Der Hinweis, dass die Partition fehlt, wird beim Ignorieren nur einmalig angezeigt. Für den Fall, dass ein Benutzer eine vorhandene Partitionierung übernimmt, wodurch die Platte vollständig ausgenutzt wird und kein ausreichender Platz für die Partitionen zur Verfügung steht, wird einmalig ein Hinweis angezeigt. Der Benutzer ist in jedem Fall in der Lage, die gewünschte Partitionierung durchzuführen. 10) Abhängig vom erkannten bzw. manuell gesetztem EFI-Status wird bei der Installation entweder grub-pc oder grub-efi '''GRUB. 11) Das Paket grub-efi und efibootmgr wurden in die Triggerliste aufgenommen, damit sie auf amd64-ISO enthalten sind und installiert werden können. 12) Bei der Installation von univention-grub wird über efibootmgr im postinst ein neuer Booteintrag im EFI erzeugt. Dafür wird zuvor das Kernelmodul efivars geladen. 13) An Bug #22115 wurde der Pfad zur video.lst hartkodiert. Da dies nicht mehr für das grub-efi-amd64-Paket passt, wurde der Patch angepasst. Durch eine neue Version von qemu liess grub2 sich in UCS 3.1-0 nur noch bauen, nachdem einer der Grub-Tests gepatcht wurde. Fürs Testen siehe auch https://hutten.knut.univention.de/mediawiki/index.php/UEFI
14) Der Wert der Profilvariable use_efi wird in der UCR-Variable grub/efi gespeichert. Anhand dessen entscheidet univention-grub, ob die "normale" oder die EFI-Variante von Grub konfiguriert wird. Für später ist dann auch für User/Support/Pakete leichter erkennbar, um was für ein System es sich handelt. 15) Falls use_efi=yes, dann wird von univention-grub "efivars" in der UCR-Variable kernel/modules aufgenommen.
Die Hardware im Schulungsraum unterstützt UEFI (sofern man es aktiviert). Die CD muss für UEFI manuell über F10 ausgewählt werden, da das BIOS zunächst die Legacy-Variante probiert. Der Grub von der DVD zeigt anschließend nur eine rescue shell an.
Created attachment 4801 [details] grub screenshot (In reply to comment #7) > Die Hardware im Schulungsraum unterstützt UEFI (sofern man es aktiviert). > Die CD muss für UEFI manuell über F10 ausgewählt werden, da das BIOS zunächst > die Legacy-Variante probiert. Der Grub von der DVD zeigt anschließend nur eine > rescue shell an. Es ist keine Rescue Shell sondern schon die "normal" shell, aber trotzdem findet grub die DVD nicht, so dass Kernel, Hintergrundbild & Co nicht geladen werden können. In KVM mit EFI-Support (OVMF aus dem EFI Development Kit) bootet das System ohne Probleme.
Vermutlich hat die Schulungshardware noch Bugs in der EFI-Unterstützung. Wir warten mal die neue Hardware ab und testen dann in der QA erneut.
Nochmal reopen...
Grub 1.98: * UCS 3.0 DVD amd64 Legacy-Mode → bootet * UCS 3.0 DVD amd64 UEFI-Mode → UEFI auf DVD nicht vorhanden Grub 1.99: * UCS 3.1 DVD amd64 UEFI-Mode via IMM → bootet * UCS 3.1 DVD amd64 UEFI-Mode via DVD → BOOTET NICHT * UCS 3.1 DVD amd64 Legacy-Mode via DVD → bootet * UCS 3.1 System amd64 UEFI → bootet * UCS 3.1 System amd64 Legacy-Mode → bootet
Es werden jetzt beim amd64-DVD-Build automatisch zwei ISO-Dateien erzeugt: eine reguläres ISO und ein Hybrid-ISO mit EFI-Support - ucs_3.1-0-20121129174400-dvd-amd64.iso - ucs_3.1-0-20121129174400-dvd-amd64-UEFI.iso
Egal ob auf dem Rechner (Schulungsraum) EFI-Boot aktiviert ist oder nichht, der Installer startet nicht. Es gibt (vor dem Start des Kernels?) die Meldung "error: file not found." Beim Start des Kernels gibt es dann einen Traceback (root fs wurde nicht gefunden)
Die Schulungsraum-Hardware ist leider immer noch nicht in der Lage, die DVD korrekt zu booten. > Es gibt (vor dem Start des Kernels?) die Meldung "error: file not found." Grub meldet beim Laden der initrd "Cannot load file". Die Meldung wird ausgegeben, wenn die Anzahl der geladenen Bytes einer Datei nicht mit der vermuteten Anzahl übereinstimmt. Grub versucht trotzdem anschließend den Kernel (mit inkorrekt geladener Initrd) zu starten, was dann mit einem Traceback wg. fehlendem Filesystem in der initrd bzw. fehlender initrd quittiert wird. In der KVM-Umgebung mit UEFI-SDK bootet sowohl die Installations-DVD als auch das installierte System selbst.
Auf einem UCS 3.1 mit KVM und OVMF-X64-r11337-alpha.zip klappt das booten noch nicht.
Unter virtualBox 4.2.4 bootet die DVD auch nicht. Jedoch kann ich dort auch W2012 nicht starten.
Kein Blocker für das Release. Wir haben Erfolgsmeldungen, dass es mit der UEFI DVD auf UEFI DVD funktioniert. Wir haben bisher keine Meldungen, dass es nicht funktioniert. Erneute Prüfung zu UCS 3.1-2
We will not ship a UCS 3.1-2 release; the next UCS release will be UCS 3.2. As such, this bug is moved to the new target milestone.
The graphic modules "efi_gop" and "efi_uga" have been added to the grub.cfg of the installer DVD.
(In reply to Felix Botner from comment #13) > Egal ob auf dem Rechner (Schulungsraum) EFI-Boot aktiviert ist oder nichht, > der Installer startet nicht. > > Es gibt (vor dem Start des Kernels?) die Meldung "error: file not found." > > Beim Start des Kernels gibt es dann einen Traceback (root fs wurde nicht > gefunden) Das war ein Bug in GRUB 2.00. Ein Fix dafür wurde im Rahmen von Bug 28191 aus dem GRUB-git-Repo zurückportiert. Somit liess sich auf der Schulungshardware und auf unserem UEFI-Testsystem eine UEFI-Installation durchführen. Bei beiden Systemen muss die Installations-DVD manuell ausgewählt werden. Die DVD wird i.d.R. 2x angezeigt: einmal als BIOS-Boot und einmal als UEFI-Boot. Hinweis für die QA: Ggf. gibt es ein Problem beim Schreiben der UEFI-Variablen für den Booteintrag zum Booten von der Festplatte. Ist der freie Platz für die UEFI-Variablen auf 50% reduziert, verweigert der Kernel das Schreiben der UEFI-Variablen, um das Mainboard nicht zu "bricken". Erst wenn der UEFI-Garbage-Collector den Speicherbereich aufgeräumt hat, kann der Booteintrag manuell vorgenommen werden. Dafür muss einmal manuell von der DVD gebootet und dann im DVD-GRUB von der Harddisk weitergebootet werden. Anschließend als root ausführen: # efibootmgr -c -l "\\EFI\\BOOT\\grubx64.efi" -L "UCS" Es sollte nicht "Univention" im Label ("UCS") vorkommen, da der GRUB sonst diesen Eintrag beim nächsten "grub-install" automatisch entfernt. Changelogeintrag fehlt noch
Changelogentry has been made.
(In reply to Sönke Schwardt-Krummrich from comment #21) > Changelogentry has been made. Fixed bug reference: r46049 The QA was not successful in all cases. Opened Bug #33397 for it.
UCS 3.2 has been released: http://docs.univention.de/release-notes-3.2-en.html http://docs.univention.de/release-notes-3.2-de.html If this error occurs again, please use "Clone This Bug".