Was soll ich tun, bevor ich Windows 7 und Debian auf EFI doppelt boote?

10

Ich bin im Begriff, ein Asus-Motherboard mit EFI-Firmware zu kaufen, und wollte mich auf die Installation von Windows und Debian vorbereiten, sobald die Hardware eintrifft. Ich hatte gehofft, dass jemand, der diesen Weg gegangen ist, mir 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?

Mr. Shickadance
quelle

Antworten:

8

BEARBEITEN: Als ich diese Antwort schrieb, wurden nur sehr wenige Distributionen mit einem EFI_STUB-konfigurierten Kernel ausgeliefert, sodass eine benutzerdefinierte erstellt werden musste. Heutzutage liefern die meisten Distributionen einen entsprechend konfigurierten Kernel und ein benutzerdefinierter Build ist nicht mehr erforderlich. In diesem Fall sind die Abschnitte "Partitionen einrichten" und "Einrichten" interessant. "Anforderungen" und "Kompilieren des Kernels" können übersprungen werden.

Ich weiß nicht, wie Windows mit UEFI umgeht, aber von der Debian-Seite ist es ziemlich einfach.

Richten Sie Ihre Partitionen ein

Verwenden Sie das GPT-Partitionsschema, nicht MBR.

Zum Booten von einer GPT-Partition mit UEFI ist eine dedizierte Boot-Partition erforderlich , die als EFI SYSTEM PARTITION (ESP) bezeichnet wird. Es ist nicht obligatorisch, aber der kompatibelste Weg ist die Verwendung einer FAT32-Partition. Eine Größe von 200 MiB sollte in den meisten Fällen in Ordnung sein.

Um die Partition als ESP zu registrieren, muss sie mit dem bootFlag gekennzeichnet werden. Im Gegensatz zu MBR-Schemata wird das Startflag nur zur Angabe des ESP verwendet, nicht der Partitionen, von denen aus gestartet werden kann.

UEFI verwendet eine Verzeichnisstruktur \EFI\<vendor>\<application>.efizum Speichern von UEFI-Anwendungen. Ein Verzeichnis-Trennzeichen wird auch unter Linux durch einen Backslash gekennzeichnet . könnte ein Verteilungsname sein, der tatsächliche Wert ist für die UEFI nicht relevant.

Anwendungen können Systemdienstprogramme wie Speicherprüfer oder eine UEFI-Shell sein. Es kann sich auch um einen Betriebssystemlader oder das Betriebssystem selbst handeln. Diese Anwendungen müssen im UEFI registriert sein, damit sie beim Booten gestartet werden können.

Bedarf

Die Linux-Kernel-Version> = 3.3 kann direkt vom UEFI geladen werden. Der Kernel kann als eigener Loader fungieren. Dies nennt man 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 befindet sich derzeit noch nicht in Debian Stable. Sie können entweder Ihren eigenen Kernel backen oder den aus dem Versuchsbaum 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 kurze Anweisungen dazu. Wenn Sie auf Probleme stoßen, stehen zahlreiche Informationen zum Kompilieren eines Kernels zur Verfügung.

Quelle ermitteln

git clone git: //git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git

Schauen Sie sich eine bestimmte Version an

Git Checkout v3.6

Kernel konfigurieren

make menuconfig

Nehmen Sie die erforderlichen Einstellungen auf Ihrem System vor oder lassen Sie es unverändert, wenn Sie nichts anpassen müssen. Dadurch wird die Kernelkonfiguration in die Datei geschrieben .config.

Stellen Sie sicher, dass die Einstellungen aus dem vorherigen Absatz festgelegt sind. Es ist auch sinnvoll auszuwählen CONFIG_INPUT_EVBUG=n. Andernfalls werden Ihre Protokolle mit GiB Junk gefüllt.

Kernel erstellen

INSTALL_MOD_STRIP = 1 make-kpkg --uc --us binärer Bogen

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

Initramfs erstellen

mkinitramfs -o /boot/initrd.img-3.6.0-amd64 3.6.0

3.6.0 ist die Kernelversion. Standardmäßig wird der laufende Kernel verwendet, 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 er zusammen mit den initramfs auf das ESP kopiert werden. Vorausgesetzt, das ESP ist bei montiert/boot/efi

/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, efimuss die Erweiterung zum Kernel hinzugefügt werden.

Jetzt kann der Kernel im UEFI registriert werden. Wir benutzen das Tool efibootmgrdafür.

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 \
    --erstellen \
    --gpt \
    --disk / dev / sda \
    - Teil 4 \
    --label "Debian Linux Kernel 3.6.0" \
    --loader "\\ EFI \\ debian \\ vmlinuz-3.6.0" \
    --write-Signatur \
    --append-binary-args -

Das Argument von --diskist das Gerät, auf dem sich der Kernel befindet, nicht das ESP. --partist die Partitionsnummer, in der sich der Kernel befindet. --labelist der Eintrag im UEFI-Startmenü.

Um eine Liste der verfügbaren Einträge anzuzeigen, starten Sie einfach efibootmgrohne Argumente. Syntax zum Löschen eines bestimmten Eintrags

efibootmgr -b Eintrag (hex) -B

beispielsweise:

efibootmgr -b 001a -B

Diese Anweisungen behandeln nicht den Fall eines Kernel-Updates. Der Kernel und initramfs werden nicht automatisch in das ESP kopiert. Dies kann mithilfe eines kurzen Skripts erfolgen, das den Kernel und initramfs auf das ESP kopiert und ausführt efibootmgr. Dieses Skript kann eingefügt werden /etc/kernel/postinst.d, um automatisch gestartet zu 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.

Marco
quelle
2

Stellen Sie sicher, dass UEFI Linux nicht von Ihrem Computer aus sperrt. Im BIOS gibt es wahrscheinlich eine entsprechende Einstellung. Überprüfen und überprüfen Sie sicher. Ich würde diesen Punkt mit dem Handbuch und mit dem Hersteller überprüfen, wenn Sie müssen.

Es gab einige ausführliche Diskussionen darüber; ZDNet hatte mehrere Artikel. Hier ist ein Artikel vom 21. September 2011 und einer vom 23. September .

Zweitens möchten Sie basierend auf historischen Daten möglicherweise zuerst Windows installieren. Traditionell geht Windows nur davon aus, dass es das einzige Betriebssystem auf dem Computer ist. Daher werden alle mit Linux zusammenhängenden Startdaten gelöscht. Dies kann für UEFI anders sein, ich weiß es nicht.

Mei
quelle
2

Sie müssen Windows und Linux unter UEFI nicht unbedingt doppelt booten. Befolgen Sie die Anleitung , um Ihr UEFI ohne Datenverlust in MBR-BIOS zu konvertieren.

Dieser Leitfaden wurde von mir erstellt. Außerdem wird der verwiesene Blog niemals entfernt. Obwohl ich es 10 Mal ohne Datenverlust verwendet habe, würde ich Ihnen empfehlen, Ihre Daten zu sichern, bevor Sie mein Verfahren anwenden.

Nehal J Wani
quelle
2

Ich kann die UEFI-Artikelserie von Rod Smith nur empfehlen . Insbesondere erwähnt er, dass "hybrider" GPT-MBR aufgrund von Desynchronisationsgefahren ein "gefährlicher Hack" ist.

Michael Shigorin
quelle