Arch Installation

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

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.

Links