Preseed Installation mit EFI Partition

Du kommst mit der Installation nicht voran oder willst noch was nachfragen? Schau auch in den "Tipps und Tricks"-Bereich.
Antworten
bors
Beiträge: 5
Registriert: 23.08.2016 11:30:42

Preseed Installation mit EFI Partition

Beitrag von bors » 23.08.2016 12:27:17

Hallo Zusammen

Ich bin dabei Debian 8.5.0 (Jessie) automatisch mit einem preseed.cfg zu installieren.
Nun möchte ich eine EFI Partition (ESP) auf /dev/sda automatisch anlegen. Dazu habe ich folgende Zeilen im preseed.cfg eingefügt:

Code: Alles auswählen

d-i partman-auto/disk string /dev/sda

d-i partman-auto/method string regular

d-i partman-basicfilesystems/choose_label string gpt
d-i partman-basicfilesystems/default_label string gpt
d-i partman-partitioning/choose_label string gpt
d-i partman-partitioning/default_label string gpt
d-i partman/choose_label string gpt
d-i partman/default_label string gpt
d-i partman-partitioning/choose_label select gpt

d-i partman-auto/expert_recipe string                         \
      uefi ::                                                 \
              100 100 150 fat16                               \
                      $primary{ }                             \
                      method{ efi }                           \
                      format{ }                               \
              .                                               \
              2000 2000 2000 ext4                             \
                      label{ os }                             \
                      method{ format }                        \
                      format{ }                               \
                      use_filesystem{ }                       \
                      filesystem{ ext4 }                      \
                      options/noatime{ noatime }              \
                      mountpoint{ / }                         \
              .                                               \
              256 256 256 linux-swap                          \
                      method{ swap }                          \
                      format{ }                               \
              .
Nach der Installation bootet das System aber nicht über EFI. Weder der Ordner /sys/firmware/efi existiert, noch zeigt fdisk -l eine EFI System Partition an.
Weiss jemand wie eine EFI Partition in einem partman recipe richtig konfiguriert wird? :? Ich habe schon mehrere Varianten versucht, jedoch immer mit dem selben Ergebnis.

Danke

Benutzeravatar
smutbert
Beiträge: 8350
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Preseed Installation mit EFI Partition

Beitrag von smutbert » 23.08.2016 13:12:51

von dem was du da machst habe ich keine Ahnung (ich installiere lieber mit debootstrap), aber bist du sicher, dass das eigentliche Problem nicht vielleicht darin liegt, dass das Installationsmedium nicht im UEFI-Modus bottet?

Wenn nämlich im legacy/BIOS-Modus gebootet wird, installiert der Installer soweit ich weiß grub-pc nicht grub-efi - ob eine ESP exisitert oder nicht dürfte dabei unerheblich sein. Der legacy/BIOS-Modus funktioiert mit ESP, genauso wie iA der UEFI-Modus auch ohne ESP funktioniert - auf den meisten Systemen braucht man nur ein Dateisystem, das das (U)EFI Lesen kann, das kann FAT sein, aber auf manchen Systemen auch NTFS oder bei Apple HFS(+).

Das bloße Fehlen von /sys/firmware/efi ist afaik kein eindeutiges Merkmal für den legacy/BIOS-Modus. Ein Beispiel wären zB amd64-Systeme mit 64 Bit-Kernel, die über ein 32 Bit UEFI verfügen - ich habe so etwas in Form eines älteren Apple Computers (da sind aber außerdem noch einige andere Dinge anders...) und erhalten keinen Zugriff auf die efi-Variablen.


Wenn du aber ein System installiert und dabei eine ESP angelegt hast, dann solltest du auf den UEFI-Modus wechseln können:
Die ESP mit einem fstab-Eintrag unter /boot/efi mounten, falls nicht schon geschehen und grub-efi-amd64 installieren (oder in Ausnahmefällen eben grub-efi-ia32).
Das einzige was man dann beachten muss, ist dass keine Booteinträge in der Firmware angelegt werden können, weil die efi-Variablen /sys/firmware/efi im BIOS/Legacy-Modus nicht zugänglich sind. Dafür wird man aber gefragt ob der Bootloader auch im "EFI removable media path" installiert werden soll (/boot/efi/efi/boot/bootx64.efi) sagt man hier ja oder kopiert /boot/efi/EFI/debian/grubx64.efi selbst dorthin, dann sollte das System auch ohne einen solchen Booteintrag starten.
Nach dem ersten Start im UEFI-Modus kann man dann das Erstellen des Eintrages mit grub-install oder update-grub nachholen.


Vielleicht genügt es aber auch, wenn du das CSM im BIOS-Setup deaktivierst, damit das Installationsmedium im EFI-Modus startet?

bors
Beiträge: 5
Registriert: 23.08.2016 11:30:42

Re: Preseed Installation mit EFI Partition

Beitrag von bors » 23.08.2016 16:41:44

Hallo smutbert

Danke für deine Antwort.
Das Problem ist wirklich, dass das Erstellen einer EFI Partition nicht möglich ist, wenn das Installationsmedium nicht im UEFI-Modus booted.
Danke für den Tipp.

Ich habe nun eine eigene Debian.iso erstellt welche mit UEFI booted.

Debian.iso entpacken (z.B.: debian-8.5.0-amd64-CD-1.iso)

Code: Alles auswählen

7z x -o/tmp/iso Debian.iso > /dev/null
mypreseed.cfg in die initrd packen:

Code: Alles auswählen

gunzip /tmp/iso/install.amd/initrd.gz
cp ~/mypreseed.cfg /tmp/iso/preseed.cfg
cd /tmp/iso
echo "preseed.cfg" | cpio -o -H newc -A -F install.amd/initrd
rm preseed.cfg
gzip install.amd/initrd
Checksumme erneuern:

Code: Alles auswählen

find -follow -type f -print0 | xargs --null md5sum > md5sum.txt
Und dann wieder eine hybride ISO UEFI erstellen:

Code: Alles auswählen

cd ~

 xorriso -as mkisofs \
   -o output.iso \
   -isohybrid-mbr /usr/lib/syslinux/isohdpfx.bin \
   -c isolinux/boot.cat \
   -b isolinux/isolinux.bin \
      -no-emul-boot -boot-load-size 4 -boot-info-table \
   -eltorito-alt-boot \
   -e boot/grub/efi.img \
      -no-emul-boot \
      -isohybrid-gpt-basdat \
   /tmp/iso
Leider muss im GRUB Menü immer noch zuerst manuell der Menüpunkt "Install" ausgewählt werden.
Ich habe schon probiert den timeout in "isolinux/isolinux.cfg" auf 1 zu setzen. Leider ohne Erfolg.

Antworten