Bug 28672 - UEFI für Installer
UEFI für Installer
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: UCS Installer
UCS 3.0
Other Linux
: P5 normal (vote)
: UCS 3.2
Assigned To: Sönke Schwardt-Krummrich
Stefan Gohmann
: interim-3
Depends on:
Blocks: 33397 35974
  Show dependency treegraph
 
Reported: 2012-09-28 15:35 CEST by Sönke Schwardt-Krummrich
Modified: 2014-09-22 11:19 CEST (History)
1 user (show)

See Also:
What kind of report is it?: ---
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Ticket number:
Bug group (optional):
Max CVSS v3 score:


Attachments
installation-error.png (15.06 KB, image/png)
2012-11-12 06:57 CET, Stefan Gohmann
Details
grub screenshot (146.16 KB, image/jpeg)
2012-11-19 10:58 CET, Sönke Schwardt-Krummrich
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Sönke Schwardt-Krummrich univentionstaff 2012-09-28 15:35:34 CEST
Die (U)EFI-Integration für den Installer bzw. das Zielsystem fehlt noch.
Comment 1 Sönke Schwardt-Krummrich univentionstaff 2012-11-07 12:15:07 CET
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.
Comment 2 Sönke Schwardt-Krummrich univentionstaff 2012-11-08 12:04:51 CET
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.
Comment 3 Stefan Gohmann univentionstaff 2012-11-12 06:57:03 CET
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.
Comment 4 Sönke Schwardt-Krummrich univentionstaff 2012-11-12 09:47:16 CET
(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
Comment 5 Sönke Schwardt-Krummrich univentionstaff 2012-11-12 23:56:07 CET
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
Comment 6 Sönke Schwardt-Krummrich univentionstaff 2012-11-13 15:42:45 CET
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.
Comment 7 Sönke Schwardt-Krummrich univentionstaff 2012-11-16 11:22:05 CET
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.
Comment 8 Sönke Schwardt-Krummrich univentionstaff 2012-11-19 10:58:45 CET
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.
Comment 9 Sönke Schwardt-Krummrich univentionstaff 2012-11-26 18:09:02 CET
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.
Comment 10 Sönke Schwardt-Krummrich univentionstaff 2012-11-28 17:22:40 CET
Nochmal reopen...
Comment 11 Sönke Schwardt-Krummrich univentionstaff 2012-11-29 15:20:40 CET
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
Comment 12 Sönke Schwardt-Krummrich univentionstaff 2012-11-29 18:04:13 CET
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
Comment 13 Felix Botner univentionstaff 2012-12-03 10:47:37 CET
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)
Comment 14 Sönke Schwardt-Krummrich univentionstaff 2012-12-04 14:07:32 CET
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.
Comment 15 Felix Botner univentionstaff 2012-12-06 10:12:51 CET
Auf einem UCS 3.1 mit KVM und OVMF-X64-r11337-alpha.zip klappt das booten noch nicht.
Comment 16 Felix Botner univentionstaff 2012-12-06 11:17:27 CET
Unter virtualBox 4.2.4 bootet die DVD auch nicht. Jedoch kann ich dort auch W2012 nicht starten.
Comment 17 Stefan Gohmann univentionstaff 2013-03-14 07:11:40 CET
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
Comment 18 Moritz Muehlenhoff univentionstaff 2013-05-31 10:45:31 CEST
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.
Comment 19 Sönke Schwardt-Krummrich univentionstaff 2013-10-21 18:07:48 CEST
The graphic modules "efi_gop" and "efi_uga" have been added to the grub.cfg of the installer DVD.
Comment 20 Sönke Schwardt-Krummrich univentionstaff 2013-11-10 20:50:36 CET
(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
Comment 21 Sönke Schwardt-Krummrich univentionstaff 2013-11-11 16:17:51 CET
Changelogentry has been made.
Comment 22 Stefan Gohmann univentionstaff 2013-11-14 22:46:44 CET
(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.
Comment 23 Stefan Gohmann univentionstaff 2013-11-19 06:41:55 CET
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".