Ich stehe kurz vor dem Kauf eines Asus-Motherboards mit EFI-Firmware und wollte mich auf die Installation von Windows und Debian vorbereiten, sobald die Hardware eintrifft. Ich hatte gehofft, dass mir jemand, der diesen Weg gegangen ist, ein paar Hinweise geben könnte.
Welche Vorbereitungen sollte ich treffen, bevor ich versuche, Windows 7 und Debian auf einem neuen UEFI-basierten System zu installieren?
Akzeptierte Antwort:
BEARBEITEN: Als ich diese Antwort schrieb, wurden nur sehr wenige Distributionen mit einem EFI_STUB-konfigurierten Kernel ausgeliefert, sodass man einen benutzerdefinierten erstellen musste. Heutzutage liefern die meisten Distributionen einen passend konfigurierten Kernel aus und ein Custom Build ist nicht mehr erforderlich. In diesem Fall die Abschnitte „Richten Sie Ihre Partitionen ein“ und „Einrichten“ sind die interessanten, „Requirements“ und „Compiling the kernel“ können übersprungen werden.
Ich weiß nicht, wie Windows mit UEFI umgeht, aber von Debian-Seite ist es ziemlich
unkompliziert.
Richten Sie Ihre Partitionen ein
Verwenden Sie das GPT-Partitionsschema, nicht MBR.
Um von einer GPT-Partition mit UEFI zu booten, ist eine dedizierte Bootpartition erforderlich,
die als EFI SYSTEM PARTITION bezeichnet wird (ESP). Es ist nicht obligatorisch, aber der kompatibelste Weg ist die Verwendung einer FAT32-Partition. Eine Größe von 200 MiB sollte
für die meisten Fälle ausreichen.
Um die Partition als ESP zu registrieren, muss sie mit dem boot
gekennzeichnet werden Flag.
Im Gegensatz zu MBR-Schemata wird das Boot-Flag nur verwendet, um den ESP anzuzeigen,
nicht die Partitionen, von denen gebootet werden kann.
UEFI verwendet eine Verzeichnisstruktur EFI<vendor><application>.efi
um
UEFI-Anwendungen zu speichern. Ein Verzeichnistrennzeichen wird durch einen Backslash gekennzeichnet , sogar unter
Linux. könnte ein Verteilungsname sein, der tatsächliche Wert ist
für das UEFI nicht relevant.
Anwendungen können Systemdienstprogramme wie Speicherprüfprogramme oder eine UEFI-Shell sein. Es kann
auch ein OS-Loader oder das Betriebssystem selbst sein. Diese Anwendungen
müssen im UEFI registriert werden, damit sie beim Booten gestartet werden können.
Anforderungen
Die Linux-Kernel-Version>=3.3 kann direkt vom UEFI geladen werden. Der Kernel kann als sein eigener Lader fungieren. Dies nennt sich EFISTUB . Die folgenden Kernelkonfigurationen werden benötigt.
CONFIG_EFI=y CONFIG_EFI_PARTITION=y CONFIG_EFI_STUB=y CONFIG_RELOCATABLE=y CONFIG_FB_EFI=y CONFIG_FRAMEBUFFER_CONSOLE=y CONFIG_EFI_VARS=m
Ein Kernel mit dieser Konfiguration ist derzeit noch nicht in Debian Stable. Sie können entweder
Ihren eigenen Kernel backen oder den aus dem experimentellen Baum verwenden, in diesem Fall können Sie den nächsten Absatz überspringen.
Kernel kompilieren
(wahrscheinlich nicht mehr nötig, siehe Bearbeiten)
Wenn Sie sich entscheiden, den Kernel zu kompilieren, finden Sie hier eine kurze Anleitung, wie das geht. Wenn Sie auf Probleme stoßen, finden Sie zahlreiche Informationen zum Kompilieren eines Kernels.
Quelle abrufen
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
Prüfen Sie eine bestimmte Version
git checkout v3.6
Kernel konfigurieren
make menuconfig
Nehmen Sie die erforderlichen Einstellungen auf Ihrem System vor oder lassen Sie es so,
wenn Sie nichts anpassen müssen. Dadurch wird die Kernel
-Konfiguration in die Datei .config
geschrieben .
Stellen Sie sicher, dass die Einstellungen aus dem vorherigen Absatz eingestellt sind. Es ist auch
sinnvoll, CONFIG_INPUT_EVBUG=n
auszuwählen . Andernfalls werden Ihre Protokolle
mit GiB an Müll gefüllt.
Baukern
INSTALL_MOD_STRIP=1 make-kpkg --uc --us binary-arch
Die Pakete werden im übergeordneten Verzeichnis erstellt.
Kernel installieren
dpkg -i linux-image-3.5.0_Custom.deb linux-headers-3.5.0_Custom.deb
Building initramfs
mkinitramfs -o /boot/initrd.img-3.6.0-amd64 3.6.0
3.6.0 ist die Kernel-Version. Es verwendet standardmäßig den laufenden Kernel,
was keine gute Wahl ist, da Sie immer noch den alten
Kernel ausführen.
Dinge einrichten
Um den Linux-Kernel booten zu können, muss dieser zusammen
mit dem initramfs auf den ESP kopiert werden. Vorausgesetzt, das ESP ist unter /boot/efi
gemountet
/boot/efi/EFI/debian/vmlinuz-3.6.0.efi /boot/efi/EFI/debian/initrd.img-3.6.0
HINWEIS: Um die Kompatibilität mit den meisten Systemen zu gewährleisten, ist die Erweiterung efi
muss
zum Kernel hinzugefügt werden.
Nun kann der Kernel im UEFI registriert werden. Wir verwenden das Tool efibootmgr
für
das.
echo "root=UUID=3a4287b6-b3a7-4721-da38-acc38a928278 ro rootfstype=ext4 add_efi_memmap initrd=\EFI\debian\initrd.img-3.6.0" | iconv -f ascii -t ucs2 | efibootmgr --create --gpt --disk /dev/sda --part 4 --label "Debian Linux kernel 3.6.0" --loader "\EFI\debian\vmlinuz-3.6.0" --write-signature --append-binary-args -
Das Argument von --disk
ist das Gerät, auf dem sich der Kernel befindet, nicht der ESP. --part
ist die Partitionsnummer, in der sich der Kernel befindet. --label
ist der
Eintrag im UEFI-Startmenü.
Um eine Liste der verfügbaren Einträge anzuzeigen, starten Sie einfach efibootmgr
ohne
Argumente. Syntax zum Löschen eines bestimmten Eintrags
efibootmgr -b entry (hex) -B
zum Beispiel:
efibootmgr -b 001a -B
Diese Anweisungen behandeln nicht den Fall eines Kernel-Updates. Der Kernel und initramfs werden nicht automatisch auf den ESP kopiert. Dies kann mit einem kurzen Skript erfolgen, das den Kernel und initramfs auf den ESP kopiert und efibootmgr
ausführt . Dieses Skript kann in /etc/kernel/postinst.d
platziert werden automatisch gestartet werden, nachdem der Kernel aktualisiert wurde.
Hinweis: Ein Bootmanager wie GRUB wird nicht benötigt, UEFI selbst fungiert als Bootmanager.
Das ist alles, was Sie von der Linux-Seite brauchen, ich weiß nicht, was es braucht, um
Windows hinzuzufügen.