# Installationsanleitung ## Festplatte vorbereiten Wir wollen die folgende Aufteilung für unsere Partitionen: | Name | Mountpoint | Größe | Dateisystem | Partitionstyp | |------------------------------|------------|--------|-------------|------------------------------| | UEFI System Partition & boot | /boot | 1 GB | vfat | `0xEF00` (EFI System) | | Swap | swap | 16 GB | swap | `0x8200` (Linux swap) | | Root | / | Rest | ext4 | `0x8300` (Linux filesystem) | ### Partitionerung Man kann /boot und die UEFI System Partition zusammenfassen. Die Partitonierung kann man mit `gdisk` oder `cgdisk` (curses-Frontend für gdisk) machen. `fdisk` sollte natürlich auch funktionieren. ### Dateisysteme `ext4` ist nicht vorgegeben, ich nutze es nur. Kurze Erklärung der benutzten Schalter: * `mkfs.fat` * `-F` - Setzt die `FAT_SIZE` (8, 16 oder 32), also die Größe der "file allocation tables" * `-n` - Setzt den Namen des Dateisystems * `mkswap` bzw. `mkfs.ext4` * `-L` - Setzt das Label (bzw. den Namen) des Dateisystems ``` mkfs.fat -F 32 -n EFIBOOT /dev/ mkswap -L swap /dev/ mkfs.ext4 -L root /dev/ ``` ### Partitionen einhängen Wir mounten die root-Partition nach `/mnt`. Dann erstellen wir das `/boot`-Verzeichnis und mounten EFIBOOT dorthin. Als letztes aktivieren wir die Swappartition. ``` mount -L root /mnt mkdir -p /mnt/boot mount -L EFIBOOT /mnt/boot swapon -L swap ``` ## Installation und Konfiguration des Basissystems ### Die Grundpakete Auswahl des Mirrors in `/etc/pacman.d/mirrorlist` (Noch im Kontext des USB-Sticks) `pacstrap` bootstrapt das Basissystem nach `/mnt`. Es installiert die angegebenen Pakete bzw. Paketgruppen. * base bzw. base-devel - Eine Gruppe von Basispaketen * linux bzw. linux-firmware - Der Kernel und die Firmware * vim - Ein Editor * efibootmgr - "Editor" für die EFI-Systemvariablen * dosfstools - Tools, um mit Fat-Dateisystemen umzugehen * gptfdisk - `gdisk` bzw. `cgdisk` - Partionierungstools, die mit GPT umgehen können * bash-completion - Autovervollständigung für die Bash * intel-ucode - CPU-spezifischer Microcode * netctl - Ein einfacher Netzwerkmanager ``` pacstrap /mnt base base-devel linux linux-firmware vim efibootmgr dosfstools gptfdisk bash-completion intel-ucode netctl man-db man-pages ``` ### Die Dateisystemtabelle anlegen Oder auch `fstab`, auch hier wieder mit UUIDs (`-U`) ``` genfstab -Up /mnt > /mnt/etc/fstab ``` ### Konfiguration Wechsel ins chroot ``` arch-chroot /mnt/ ``` Do config yadda yadda ### Konfiguration von systemd-bootctl (Gummiboot) Wir wollen **systemd-bootctl** benutzen. Das verkürzt die Bootzeit, da direkt über UEFI gebootet wird. Installiert haben wir den Bootloader schon im `pacstrap`-Befehl (s.o.). Zuerst müssen wir den Bootloader vorbereiten: ``` bootctl install ``` Dieser Befehl legt alle nötigen Verzeichnisse an und kopiert die benötigten Dateien an den richtigen Ort. Nun legen wir die Bootloadereinträge an. Dazu müssen wir die Partitionen benennen. Um die Verwechslungsgefahr der Partitionen zu verringern, benutzen wir die UUIDs der Partitionen. Herausfinden kann man die UUIDs mit dem Befehl `blkid`. Wir erstellen die Datei `/boot/loader/entries/arch-uefi.conf` und fügen folgendes ein: ``` title Arch Linux linux /vmlinuz-linux initrd /initramfs-linux.img options root=UUID= rw resume=UUID= ``` Um den Fallback verwenden zu können, legen wir die Datei `/boot/loader/entries/arch-uefi-fallback.conf`an: ``` title Arch Linux Fallback linux /vmlinuz-linux initrd /initramfs-linux-fallback.img options root=UUID= rw resume=UUID= ``` In der Datei `/boot/loader/loader.conf` können wir die generelle Konfiguration des Bootloaders bearbeiten. Der `default`-Eintrag gibt an, welcher Eintrag des Bootloaders als Standard gestartet werden soll. Er bezieht sich auf die Dateinamen der Einträge im `entries` Verzeichnis. Wir wählen `arch-uefi`. Außerdem kann man den `timeout` angeben, also die Zeit, bis der Standardeintrag automatisch gestartet wird. ``` default arch-uefi timeout 1 ``` ### Netctl Anlegen von Config: `/etc/netctl/` ``` netctl enable netctl start ```