Arch Installation: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(15 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
=Installation=
=Installation=
==Aktuelles Image besorgen==
Das ISO wird monatlich neu gebaut. Immer das aktuelle verwenden:
*https://archlinux.org/download/
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==
*[[Die Installation im Überblick]]


==Booten des Images==
==Booten des Images==
Zeile 5: Zeile 20:
Deutsches Tastaturlayout wählen
Deutsches Tastaturlayout wählen


  loadkeys de
  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==
==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===
===Partitionieren===
*[[gdisk]]
*[[Linux fdisk|fdisk]] oder [[gdisk]]
 
Beispiel-Layout (GPT, UEFI):
 
{| class="wikitable"
! 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===
===Formatieren===


====Rootpartition====
====EFI-Partition====
 
mkfs.ext4 /dev/sda1


Dies legt auf der ersten Partition ein EXT4 Dateisystem an
mkfs.fat -F 32 /dev/sda1


====Swappartition====
====Swappartition====
 
  mkswap -L swap /dev/sda2
  mkswap -L swap /dev/sda2


Dies legt auf der zweiten Partition ein Swap-Dateisystem an.
====Rootpartition====


mkfs.ext4 -L root /dev/sda3


===Partitionen einbinden===
===Partitionen einbinden===
Zeile 31: Zeile 98:
Rootpartition
Rootpartition


  mount /dev/sda1 /mnt
  mount /dev/sda3 /mnt
 
EFI-Partition (nur UEFI)
 
mount --mkdir /dev/sda1 /mnt/boot


Swappartition
Swappartition


  swapon /dev/sda2
  swapon /dev/sda2
Kontrolle
lsblk -f


==Installation des Basissystems==
==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


pacstrap /mnt base base-devel
base-devel (Compiler, make usw.) wird nur gebraucht, wenn man selbst Pakete baut (z.B. aus dem AUR).


==fstab erzeugen==
==fstab erzeugen==


  genfstab -p /mnt > /mnt/etc/fstab
  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
Überprüfen mit
Zeile 49: Zeile 143:
  cat /mnt/etc/fstab
  cat /mnt/etc/fstab


==Installationsmedium verlassen und System starten==
==In das neue System wechseln==
 
arch-chroot /mnt


arch-chroot /mnt/
Ab hier arbeitet man im neu installierten System. Gestartet ist es aber noch nicht.


==Einrichten des Systems==
==Einrichten des Systems==


===Installation von vi/vim/nano===
===Zeitzone===


  pacman -S vim
  ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime
hwclock --systohc


===Hostname===
===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:


  echo $hostname > /etc/hostname
  Generating locales...
  de_DE.UTF-8... done
Generation complete.


===Sprache und Lokalisierung===
Systemsprache festlegen


  echo LANG=de_DE.UTF-8 > /etc/locale.conf
  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
  echo LC_COLLATE=C >> /etc/locale.conf


Zeile 72: Zeile 188:
  echo KEYMAP=de-latin1 > /etc/vconsole.conf
  echo KEYMAP=de-latin1 > /etc/vconsole.conf


===Zeitzone===
===Hostname===


  ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime
  echo arch01 > /etc/hostname


===Konfiguration der Hosts===
===Konfiguration der Hosts===
 
  vi /etc/hosts
  vi /etc/hosts


#<ip-address> <hostname.domain.org> <hostname>
  127.0.0.1   localhost
  127.0.0.1 localhost.localdomain localhost
  ::1         localhost
  ::1 localhost.localdomain localhost
127.0.1.1  arch01.example.lan arch01
   
 
===Nameserver einstellen===
==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/resolv.conf
  vi /etc/systemd/network/20-wired.network


nameserver DNS-Server des Providers
<pre>
[Match]
Name=en*


===locale.gen===
[Network]
DHCP=yes
</pre>


vi /etc/locale.gen
===Variante statische Adresse===


Suchen und das # am anfang folgender Zeilen entfernen:
vi /etc/systemd/network/20-wired.network


#de_DE.UTF-8 UTF-8
<pre>
#de_DE.ISO-8859-1
[Match]
#de_DE@euro ISO-8859-15
Name=ens18
 
[Network]
Address=192.168.0.100/24
Gateway=192.168.0.1
DNS=192.168.0.1
</pre>


Anschließend speichern und die locale generieren
===Dienste aktivieren===


  locale-gen
  systemctl enable systemd-networkd systemd-resolved
Ausgabe:


Generating locales...
Die Verlinkung von /etc/resolv.conf auf systemd-resolved erfolgt nach dem Verlassen des chroot (siehe unten), weil arch-chroot die Datei selbst belegt.
de_DE.UTF-8... done
de_DE.ISO-8859-1... done
de_DE.ISO-8859-15@euro... done
Generation complete.


==Linuxkernel erzeugen==
==Initramfs erzeugen==
Das Initramfs wurde von pacstrap bereits automatisch erzeugt. Nach Änderungen an /etc/mkinitcpio.conf wird es neu gebaut mit


  pacman -S linux
  mkinitcpio -P


mkinitcpio -p linux
-P baut die Images für alle installierten Kernel.


==Rootpasswort vergeben==
==Rootpasswort vergeben==
Zeile 122: Zeile 252:
  passwd
  passwd


  Enter new UNIX password: geheim
  New password: geheim
  Retype new UNIX 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:


==GRUB installieren und einrichten==
%wheel ALL=(ALL:ALL) ALL


  pacman -S grub
==SSH-Server (optional)==
 
  pacman -S openssh
systemctl enable sshd


grub-mkconfig -o /boot/grub/grub.cfg
Hinweis: root darf sich per SSH standardmäßig nicht mit Passwort anmelden. Deshalb einen normalen Benutzer anlegen (siehe oben) oder einen Schlüssel hinterlegen.


grub-install /dev/sda
==Bootloader GRUB installieren und einrichten==


===UEFI===


==System neustarten==
pacman -S grub efibootmgr
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
grub-mkconfig -o /boot/grub/grub.cfg
 
===BIOS===


  exit
  pacman -S grub
grub-install --target=i386-pc /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg


umount /dev/sda1
Achtung: Bei BIOS wird die Platte (/dev/sda) angegeben, nicht die Partition.


reboot
==Alternative: systemd-boot (nur UEFI)==
systemd-boot ist Teil von systemd und braucht kein zusätzliches Paket.


bootctl install


=Netzwerk einrichten mit systemd=
vi /boot/loader/loader.conf


==Tools nachinstallieren==
<pre>
default arch.conf
timeout 3
</pre>


  pacman -S iproute2
  vi /boot/loader/entries/arch.conf


==Schnittstellen ermitteln==
<pre>
title  Arch Linux
linux  /vmlinuz-linux
initrd  /initramfs-linux.img
options root=UUID=HIER-DIE-UUID rw
</pre>


ip link show
Die UUID der Rootpartition direkt anhängen lassen und anschließend in die options-Zeile verschieben:


==Temporäre IP zuteilen==
blkid -s UUID -o value /dev/sda3 >> /boot/loader/entries/arch.conf


ip addr add 192.168.0.100/24 dev eth0
==System neustarten==


Gateway zuweisen
chroot verlassen
ip route add default via 192.168.0.1


==Automatisch beim booten==
exit


Erstellen der Datei /etc/conf.d/network mit folgendem Inhalt:
resolv.conf auf systemd-resolved verlinken


  interface=eth0
  ln -sf ../run/systemd/resolve/stub-resolv.conf /mnt/etc/resolv.conf
address=192.168.0.100
netmask=24
broadcast=192.168.0.255
gateway=192.168.0.1


Erstellen der Datei /etc/systemd/system/network.service mit folgendem Inhalt:
Alles aushängen und neu starten
<pre>
[Unit]
Description=Network startup
Wants=network.target
Before=network.target


[Service]
umount -R /mnt
Type=oneshot
reboot
RemainAfterExit=yes
EnvironmentFile=/etc/conf.d/network
ExecStart=/sbin/ip link set dev ${interface} up
ExecStart=/sbin/ip addr add ${address}/${netmask} broadcast ${broadcast} dev ${interface}
ExecStart=/sbin/ip route add default via ${gateway}
ExecStop=/sbin/ip addr flush dev ${interface}
ExecStop=/sbin/ip link set dev ${interface} down


[Install]
ISO bzw. CD-Laufwerk aus der VM entfernen, damit nicht wieder das Live-System startet.
WantedBy=multi-user.target
</pre>


In der Datei /etc/resolv.conf prüfen ob der richtige Nameserver eingetragen ist und dies gegebenenfalls berichtigen
==Kontrolle nach dem ersten Start==


Jetzt den Service starten mit
networkctl
   
ip -br addr
  systemctl enable network
  resolvectl status
  ping -c 3 archlinux.org


wenn alles richtig ist sollte folgende Ausgabe erscheinen
==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.


  Created symlink from /etc/systemd/system/multi-user.target.wants/network.service to /etc/systemd/system/network.service.
  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=
=Paketverwaltung=
Zeile 206: Zeile 353:
==Pacman==
==Pacman==


Pacman ist der All-in-One Paketmanager von Arch Linux. Mit ihm kann man Pakete suchen, herunterladen, installieren und aktualisieren, überprüfen und entfernen.
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
Die wichtigsten Optionen sind


*-S Paket installieren
*-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
*-R Paket deinstallieren
*-Syu komplettes System aktualisieren
*-Rs Paket samt nicht mehr benötigter Abhängigkeiten deinstallieren
*-Su installierte Pakete aktualisieren
*-Rns wie -Rs, zusätzlich werden gesicherte Konfigurationsdateien (.pacsave) entfernt
*-Ss nach Paketen suchen. Ein Teil des Namens ist ausreichend
*-Qs unter den installierten Paketen suchen
*-Qi Informationen zu installiertem Paket anzeigen
*-Qi Informationen zu einem installierten Paket anzeigen
*-Si Informationen zu nicht instaliertem Paket anzeigen
*-Ql welche Dateien sind im installierten Paket
*-Qo zu welchem Paket gehört eine Datei
*-Qo zu welchem installierten Paket gehört eine Datei
*-Ql welche Dateien sind im Paket
*-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.
 
*https://aur.archlinux.org/


*[https://wiki.archlinux.org/index.php/Pacman_Rosetta Pakethandlingvergleich]
==Links==
*[https://wiki.archlinux.org/title/Installation_guide Installation guide (Arch Wiki)]
*[https://wiki.archlinux.org/title/Pacman/Rosetta Pakethandlingvergleich (Pacman Rosetta)]

Aktuelle Version vom 11. Oktober 2026, 11:47 Uhr

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