Arch Installation
Installation
Aktuelles Image besorgen
Das ISO wird monatlich neu gebaut. Immer das aktuelle verwenden:
Direkt per wget (Mirror mit Weiterleitung auf das neueste Image):
wget https://geo.mirror.pkgbuild.com/iso/latest/archlinux-x86_64.iso wget https://geo.mirror.pkgbuild.com/iso/latest/sha256sums.txt
Prüfsumme kontrollieren:
sha256sum -c sha256sums.txt --ignore-missing
Hinweis: Seit 2021 gibt es mit archinstall auch einen geführten Installer auf dem ISO. Für den Kurs wird hier die manuelle Installation gezeigt, weil man dabei sieht, was ein Linux-System zum Starten braucht.
Die Installation im Überblick
Booten des Images
Deutsches Tastaturlayout wählen
loadkeys de-latin1
Bootmodus prüfen (UEFI oder BIOS)
cat /sys/firmware/efi/fw_platform_size
- Ausgabe 64 -> UEFI (Normalfall)
- Datei nicht vorhanden -> BIOS/Legacy
Dieser Artikel beschreibt UEFI. Abweichungen für BIOS sind jeweils angegeben.
Hinweis Proxmox: Bei einer VM mit OVMF (UEFI) beim Anlegen der EFI-Disk "Pre-Enroll keys" abwählen, sonst verhindert Secure Boot den Start von GRUB.
Netzwerk und Uhrzeit im Live-System
Kabelgebundenes Netz wird per DHCP automatisch eingerichtet. Testen mit
ip -br addr ping -c 3 archlinux.org
Die Uhrzeit wird automatisch per NTP gestellt. Kontrolle:
timedatectl
Festplatten einrichten
Die Gerätenamen hängen von der Hardware ab:
- /dev/sda - SATA/SCSI (auch Proxmox mit VirtIO SCSI)
- /dev/vda - VirtIO Block
- /dev/nvme0n1 - NVMe (Partitionen heißen dann /dev/nvme0n1p1 usw.)
Anzeigen mit
lsblk
Partitionieren
Beispiel-Layout (GPT, UEFI):
| Partition | Größe | Typ (gdisk) | Verwendung |
|---|---|---|---|
| /dev/sda1 | 1 GiB | ef00 | EFI-Systempartition, wird /boot |
| /dev/sda2 | 4 GiB | 8200 | Swap |
| /dev/sda3 | Rest | 8300 | Root / |
Nicht-interaktiv mit sgdisk:
sgdisk -Z /dev/sda sgdisk -n 1:0:+1G -t 1:ef00 -c 1:EFI /dev/sda sgdisk -n 2:0:+4G -t 2:8200 -c 2:swap /dev/sda sgdisk -n 3:0:0 -t 3:8300 -c 3:root /dev/sda
BIOS mit GPT: statt der EFI-Partition eine BIOS-Boot-Partition anlegen (1 MiB, Typ ef02). Sie wird nicht formatiert und nicht eingehängt. /boot liegt dann einfach auf der Rootpartition.
sgdisk -n 1:0:+1M -t 1:ef02 -c 1:biosboot /dev/sda
Formatieren
EFI-Partition
mkfs.fat -F 32 /dev/sda1
Swappartition
mkswap -L swap /dev/sda2
Rootpartition
mkfs.ext4 -L root /dev/sda3
Partitionen einbinden
Rootpartition
mount /dev/sda3 /mnt
EFI-Partition (nur UEFI)
mount --mkdir /dev/sda1 /mnt/boot
Swappartition
swapon /dev/sda2
Kontrolle
lsblk -f
Installation des Basissystems
Die Spiegelserver werden im Live-System automatisch von reflector sortiert. Bei Bedarf anpassen:
- /etc/pacman.d/mirrorlist
Basissystem, Kernel, Firmware und Editor installieren:
pacstrap -K /mnt base linux linux-firmware vim man-db man-pages
- base - Grundsystem (enthält u.a. systemd, iproute2, pacman)
- linux - Kernel (seit 2019 nicht mehr in base enthalten)
- linux-firmware - Firmware für echte Hardware (in einer VM verzichtbar)
- -K - legt im neuen System einen eigenen, leeren Pacman-Schlüsselbund an
Auf echter Hardware zusätzlich den Microcode installieren:
pacstrap /mnt intel-ucode
oder
pacstrap /mnt amd-ucode
base-devel (Compiler, make usw.) wird nur gebraucht, wenn man selbst Pakete baut (z.B. aus dem AUR).
fstab erzeugen
genfstab -U /mnt >> /mnt/etc/fstab
-U trägt die Dateisysteme über ihre UUID ein. Das ist unabhängig davon, ob die Platte später sda oder vda heißt.
Überprüfen mit
cat /mnt/etc/fstab
In das neue System wechseln
arch-chroot /mnt
Ab hier arbeitet man im neu installierten System. Gestartet ist es aber noch nicht.
Einrichten des Systems
Zeitzone
ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime hwclock --systohc
Sprache und Lokalisierung
In /etc/locale.gen das # vor folgender Zeile entfernen:
#de_DE.UTF-8 UTF-8
Mit vi oder direkt per sed:
sed -i 's/^#de_DE.UTF-8 UTF-8/de_DE.UTF-8 UTF-8/' /etc/locale.gen
Locale erzeugen
locale-gen
Ausgabe:
Generating locales... de_DE.UTF-8... done Generation complete.
Systemsprache festlegen
echo LANG=de_DE.UTF-8 > /etc/locale.conf
Optional: Sortierung nach ASCII statt nach deutscher Sprachregel (z.B. bei ls)
echo LC_COLLATE=C >> /etc/locale.conf
Tastaturbelegung
echo KEYMAP=de-latin1 > /etc/vconsole.conf
Hostname
echo arch01 > /etc/hostname
Konfiguration der Hosts
vi /etc/hosts
127.0.0.1 localhost ::1 localhost 127.0.1.1 arch01.example.lan arch01
Netzwerk einrichten mit systemd-networkd
systemd-networkd und systemd-resolved sind Teil von systemd und damit schon installiert. Die Einrichtung erfolgt noch im chroot, damit das System nach dem ersten Start sofort Netz hat.
Schnittstellen ermitteln
ip link show
Die Schnittstellen heißen nicht mehr eth0, sondern z.B. ens18 (Proxmox), enp0s3 (VirtualBox) oder enp3s0 (echte Hardware). Im chroot sieht man die Namen des Live-Systems. Sie sind im installierten System identisch.
Variante DHCP
vi /etc/systemd/network/20-wired.network
[Match] Name=en* [Network] DHCP=yes
Variante statische Adresse
vi /etc/systemd/network/20-wired.network
[Match] Name=ens18 [Network] Address=192.168.0.100/24 Gateway=192.168.0.1 DNS=192.168.0.1
Dienste aktivieren
systemctl enable systemd-networkd systemd-resolved
Die Verlinkung von /etc/resolv.conf auf systemd-resolved erfolgt nach dem Verlassen des chroot (siehe unten), weil arch-chroot die Datei selbst belegt.
Initramfs erzeugen
Das Initramfs wurde von pacstrap bereits automatisch erzeugt. Nach Änderungen an /etc/mkinitcpio.conf wird es neu gebaut mit
mkinitcpio -P
-P baut die Images für alle installierten Kernel.
Rootpasswort vergeben
passwd
New password: geheim Retype new password: geheim passwd: password updated successfully
Benutzer und sudo (optional)
pacman -S sudo useradd -m -G wheel kurs passwd kurs
Der Gruppe wheel sudo-Rechte geben:
EDITOR=vim visudo
Folgende Zeile auskommentieren:
%wheel ALL=(ALL:ALL) ALL
SSH-Server (optional)
pacman -S openssh systemctl enable sshd
Hinweis: root darf sich per SSH standardmäßig nicht mit Passwort anmelden. Deshalb einen normalen Benutzer anlegen (siehe oben) oder einen Schlüssel hinterlegen.
Bootloader GRUB installieren und einrichten
UEFI
pacman -S grub efibootmgr grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB grub-mkconfig -o /boot/grub/grub.cfg
BIOS
pacman -S grub grub-install --target=i386-pc /dev/sda grub-mkconfig -o /boot/grub/grub.cfg
Achtung: Bei BIOS wird die Platte (/dev/sda) angegeben, nicht die Partition.
Alternative: systemd-boot (nur UEFI)
systemd-boot ist Teil von systemd und braucht kein zusätzliches Paket.
bootctl install
vi /boot/loader/loader.conf
default arch.conf timeout 3
vi /boot/loader/entries/arch.conf
title Arch Linux linux /vmlinuz-linux initrd /initramfs-linux.img options root=UUID=HIER-DIE-UUID rw
Die UUID der Rootpartition direkt anhängen lassen und anschließend in die options-Zeile verschieben:
blkid -s UUID -o value /dev/sda3 >> /boot/loader/entries/arch.conf
System neustarten
chroot verlassen
exit
resolv.conf auf systemd-resolved verlinken
ln -sf ../run/systemd/resolve/stub-resolv.conf /mnt/etc/resolv.conf
Alles aushängen und neu starten
umount -R /mnt reboot
ISO bzw. CD-Laufwerk aus der VM entfernen, damit nicht wieder das Live-System startet.
Kontrolle nach dem ersten Start
networkctl ip -br addr resolvectl status ping -c 3 archlinux.org
Temporäre IP zuteilen (ohne Konfigurationsdatei)
Zum Testen oder zur Fehlersuche kann man die Adresse auch von Hand setzen. Sie ist nach einem Neustart wieder weg.
ip link set dev ens18 up ip addr add 192.168.0.100/24 dev ens18 ip route add default via 192.168.0.1
Paketverwaltung
Pacman
Pacman ist der All-in-One Paketmanager von Arch Linux. Mit ihm kann man Pakete suchen, herunterladen, installieren, aktualisieren, überprüfen und entfernen.
Die wichtigsten Optionen sind
- -S Paket installieren
- -Syu komplettes System aktualisieren (Paketdatenbank holen und alle Pakete aktualisieren)
- -Ss nach Paketen in den Repositories suchen. Ein Teil des Namens ist ausreichend
- -Si Informationen zu einem Paket aus den Repositories anzeigen
- -R Paket deinstallieren
- -Rs Paket samt nicht mehr benötigter Abhängigkeiten deinstallieren
- -Rns wie -Rs, zusätzlich werden gesicherte Konfigurationsdateien (.pacsave) entfernt
- -Qs unter den installierten Paketen suchen
- -Qi Informationen zu einem installierten Paket anzeigen
- -Ql welche Dateien sind im installierten Paket
- -Qo zu welchem installierten Paket gehört eine Datei
- -Qdtq verwaiste Pakete auflisten (als Abhängigkeit installiert, aber nicht mehr benötigt)
- -Fy Dateidatenbank aktualisieren
- -F in welchem (auch nicht installierten) Paket steckt eine Datei, z.B. pacman -F dig
Verwaiste Pakete auf einen Schlag entfernen:
pacman -Rns $(pacman -Qdtq)
Wichtig: keine Teilupdates
Arch unterstützt keine Teilupdates. Deshalb:
- niemals pacman -Sy paket ausführen (neue Datenbank, aber altes System -> Bibliotheken passen nicht mehr zusammen)
- stattdessen immer pacman -Syu paket
- -Su ohne y aktualisiert nur gegen die vorhandene, eventuell veraltete Paketdatenbank
Paketcache aufräumen
Pacman hebt alle heruntergeladenen Pakete in /var/cache/pacman/pkg auf.
pacman -S pacman-contrib paccache -r
Behält die letzten drei Versionen jedes Pakets. Automatisch wöchentlich:
systemctl enable --now paccache.timer
AUR
Das Arch User Repository enthält Bauanleitungen (PKGBUILD) für Software, die nicht in den offiziellen Repositories ist. Gebaut wird mit makepkg, dafür wird base-devel benötigt. AUR-Pakete sind nicht geprüft, das PKGBUILD sollte man vor dem Bauen lesen.