UEFI Installation

Aus wiki.archlinux.de
Version vom 26. Juni 2013, 15:23 Uhr von Greg (Diskussion | Beiträge) (GRUB 2: grub2 gibts nicht mehr.)

Wechseln zu: Navigation, Suche


Diese Anleitung soll die Installation von Arch Linux (64 Bit) mittels USB Stick auf einem PC mit UEFI erklären. Falls es an einigen Stellen zu ungenau ist, kann der Anleitung_für_Einsteiger gefolgt werden und die entsprechenden Wiki-Seiten konsultiert werden. Es geht hier nur darum, die Besonderheiten und Schwierigkeiten im Umgang mit UEFI und GPT zu erläutern.

UEFI bootbaren USB-Stick erstellen

1. Arch Linux Image mounten

mkdir -p /tmp/iso
mount -o loop archlinux-2013.03.03-dual.iso /tmp/iso

2. Die Bezeichnung (Label) des Installationsimages herausfinden

Dazu die Datei /tmp/iso/loader/entries/archiso-x86_64.conf öffnen

nano /tmp/iso/loader/entries/archiso-x86_64.conf

und nach

archisolabel=

suchen.

Beispiel: Falls dort

archisolabel=ARCH_201303

steht, ist das Label

ARCH_201303

3. Eine Partition auf dem USB-Stick erstellen, als FAT 32 formatieren, die Bezeichnung (Label) setzen und nach /tmp/archusb mounten

cfdisk /dev/sdX   # eine bootfähige Partition erstellen. Wie man mit "cfdisk" umgeht wird vorausgesetzt.
mkfs.vfat -F 32 /dev/sdX1 
dosfslabel /dev/sdX1 <archisolabel>   # hier: dosfslabel /dev/sdX ARCH_201303
mkdir -p /tmp/archusb
mount /dev/sdX1 /tmp/archusb

4. Das Installationsimage auf den USB-Stick kopieren

cp -a /tmp/iso/* /tmp/archusb
sync

Hinweis: Punkt 5 ist optional und dient der besseren Übersicht beim Booten! Man kann auch direkt mit Punkt 6 fortfahren.

5. Das UEFI Bootfile erstellen

  • Das Paket refind-efi installieren:
sudo pacman -S refind-efi
  • Die Datei /usr/lib/refind/refind_x64.efi in folgenden Ordner kopieren /tmp/archusb/EFI/boot/ und in bootx64.efi umbenennen. Die vorhandene Datei überschreiben lassen und mit "y" bestätigen.
cp /usr/lib/refind/refind_x64.efi /tmp/archusb/EFI/boot/bootx64.efi 
  • Im selben Verzeichnis eine neue Datei namens refind.conf erstellen
nano /tmp/archusb/EFI/boot/refind.conf

Folgenden Inhalt in die refind.conf schreiben:

refind.conf
timeout 5
textonly

showtools about,reboot,shutdown,exit
# scan_driver_dirs EFI/tools/drivers_x64
scanfor manual,internal,external,optical

scan_delay 1
dont_scan_dirs EFI/boot

max_tags 0
default_selection "Arch Linux Archiso x86_64 UEFI USB"

menuentry "Arch Linux Archiso x86_64 UEFI USB" {
  loader /arch/boot/x86_64/vmlinuz
  initrd /arch/boot/x86_64/archiso.img
  ostype Linux
  graphics off
  options "archisobasedir=arch archisolabel=ARCH_201303 add_efi_memmap"
}

menuentry "UEFI x86_64 Shell v2" {
  loader /EFI/shellx64_v2.efi
  graphics off
}

menuentry "UEFI x86_64 Shell v1" {
  loader /EFI/shellx64_v1.efi
  graphics off
}

Hinweis: Hier ist zu beachten, dass das Label je nach Version des Installationsimages angepasst werden muss!

6. USB-Stick unmounten

umount /tmp/archusb/
sync

Vom USB-Stick booten

Achtung: Secure Boot muss im UEFI deaktiviert sein!

Tastaturlayout auf Deutsch umstellen und wichtige Kernelmodule laden:

loadkeys de
loadkeys de-latin1 # für Umlaute
modprobe efivars   # für grub-efi
modprobe dm-mod    # für lvm

Festplatte partitionieren

Die Festplatte kann den eigenen Wünschen entsprechend partitioniert werden, es muss lediglich das GPT Partitionsschema verwendet werden und es muss eine UEFI System Partition erstellt werden.

Zum Partitionieren startet man gdisk

gdisk /dev/sdX

Der genaue Umgang mit gdisk und GPT kann unter gpt#Partitionieren_mit_gdisk nachgelesen werden.

Achtung: Die Hexcodes der einzelnen Partitionstypen sind zu beachten! Bei der UEFI System Partition lautet der Hexcode EF00. Außerdem sollte die UEFI System Partition mindestens 512 Mb groß sein, da als Dateisystem FAT 32 verwendet wird und die Größe von FAT 32 Partitionen/Laufwerken laut Microsoft mindestens 512 Mb betragen muss.

Dateisysteme anlegen

Es wird davon ausgegangen, dass 3 Partitionen erstellt wurden (Boot, EFI und LVM), auf eine SWAP Partition wurde verzichtet:

1. Boot + EFI

mkfs.ext4 -L boot /dev/sdaX      # boot Partition
mkfs.vfat -F 32 /dev/sdaX         # EFI Partition [ef00]

2. LVM

Erst einmal wird die LVM Partition unterschiedlich (root, home) partitioniert (siehe LVM).

pvcreate /dev/sdaX
vgcreate lvm /dev/sdaX
lvcreate --name root -L10G lvm       # Partition mit 10 GB
lvcreate --name home -l100%FREE lvm  # Pratition mit dem rest der Platte

Hinweis: Mit lvscan oder lvdisplay können die gerade erstellen Partitionen angezeigt werden.

Danach werden die einzelnen Dateisystem der LVM Partitionen angelegt:

mkfs.ext4 -L root /dev/mapper/lvm-root
mkfs.ext4 -L home /dev/lvm/home

Partitionen einhängen

mount /dev/lvm/root /mnt           # root
mkdir /mnt/boot /mnt/home     
mount /dev/lvm/home /mnt/home      # home
mount /dev/sdaX /mnt/boot          # boot
mkdir -p /mnt/boot/efi
mount -t vfat /dev/sdX /mnt/boot/efi   # EFI

Das Betriebssystem einrichten

Dazu kann der "Anleitung für Anfänger" von Punkt 2.8 Das Basissystem installieren an bis einschließlich 2.9.6 Root Password gefolgt werden Anleitung_für_Einsteiger.

Den Bootloader installieren

GRUB

Installation von GRUB für UEFI basierende PCs

sudo pacman -S grub efibootmgr

GRUB-UEFI bootfiles nach /boot/efi/EFI/arch_grub installieren

sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch_grub --recheck --debug

Achtung: Hier bitte aufpassen, ob Fehler gemeldet werden und ob der efibootmgr-Befehl korrekt ausgeführt wurde.

mkdir -p /boot/grub/locale
cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo

Anschließend die GRUB-Konfigurationsdatei erstellen lassen:

sudo grub-mkconfig -o /boot/grub/grub.cfg


Hinweis: Falls grub-install den Bootmenüeintrag nicht erstellen kann und eine Fehlermeldung ausgegeben wurde, folgenden Befehl ausführen um den UEFI-Bootmenüeintrag manuell zu erstellen:

efibootmgr -q -c -d /dev/sdX -p 1 -w -L Arch-Linux -l '\EFI\arch_grub\grubx64.efi'

Gummiboot

Das gummiboot Paket installieren:

pacman -S gummiboot-efi

Danach gummiboot den Rest erledigen lassen:

gummiboot -path /boot/efi install      # hier brauchen man die Pfadangabe -path /boot/efi, da die EFI Partition nicht nach /boot sondern nach /boot/efi gemountet wurde.
gummiboot install                      # der Normalfall, falls die EFI Partition nach /boot gemountet wurde.

Hinweis: Falls die EFI Partition nicht nach /boot gemountet wurde, muss gummiboot --path /boot/efi update nach jedem Paketupdate von gummiboot ausgeführt werden.

Kommt nun eine Fehlermeldung, dass die EFI vars nicht geladen bzw. geöffnet werden können, liegt das daran, dass ein Kernel > 3.8 verwendet wird, oder man nicht im UEFI Modus gebootet hat. Das ist soweit kein Problem, man muss sich einfach noch manuell um einen Eintrag in den NVRAM Variablen der Firmware kümmern und einen Booteintrag erstellen:

efibootmgr -c -d /dev/sda -w -L "Gummiboot" -l '\EFI\gummiboot\gummibootx64.efi'

Als nächstes kommt der Booteintrag, dazu folgende Datei auf die gezeigte Weise ändern:

/boot/loader/loader.conf
default  arch
timeout  2            # kann den Wünschen entsprechend angepasst werden.

Danach erstellen wir noch folgende Datei:

/boot/loader/entries/arch.conf
title          Arch Linux
linux          /vmlinuz-linux
initrd         /initramfs-linux.img
options        root=/dev/lvm/root ro init=/usr/lib/systemd/systemd quiet add_efi_memmap

Falls noch Unklarheiten bestehen, einfach den Gummiboot Artikel im englischen Wiki anschauen: https://wiki.archlinux.org/index.php/Gummiboot

Abschließend

Zum Schluss noch die Partitionen aushängen und das System neu booten

exit   # ausloogen von arch-chroot 
umount /mnt/home /mnt/boot/efi /mnt/boot /mnt
reboot

Nachdem das System erfolgreich gebootet hat, einloggen und die Fstab bearbeiten:

nano /etc/fstab 

Bei dem Eintrag /boot/efi bei <option> den Eintrag

codepage=437 

löschen.