Arch Installation: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(21 dazwischenliegende Versionen von 5 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
  mkfs.fat -F 32 /dev/sda1


Dies legt auf der ersten Partition ein EXT4 Dateisystem an
====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


  pacstrap /mnt base base-devel
*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==
==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===
 
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


pacman -S vim
Locale erzeugen


===Hostname===
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/systemd/network/20-wired.network


vi /etc/resolv.conf
<pre>
[Match]
Name=en*


nameserver DNS-Server des Providers
[Network]
DHCP=yes
</pre>


===locale.gen===
===Variante statische Adresse===


  vi /etc/locale.gen
  vi /etc/systemd/network/20-wired.network


Suchen und das # am anfang folgender Zeilen entfernen:
<pre>
[Match]
Name=ens18


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


Anschließend speichern und die locale generieren
systemctl enable systemd-networkd systemd-resolved


locale-gen
Die Verlinkung von /etc/resolv.conf auf systemd-resolved erfolgt nach dem Verlassen des chroot (siehe unten), weil arch-chroot die Datei selbst belegt.
Ausgabe:


Generating locales...
==Initramfs erzeugen==
de_DE.UTF-8... done
Das Initramfs wurde von pacstrap bereits automatisch erzeugt. Nach Änderungen an /etc/mkinitcpio.conf wird es neu gebaut mit
de_DE.ISO-8859-1... done
de_DE.ISO-8859-15@euro... done
Generation complete.
==Linuxkernel erzeugen==


  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:
 
%wheel ALL=(ALL:ALL) ALL


==GRUB installieren und einrichten==
==SSH-Server (optional)==


  pacman -S grub
  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
  grub-mkconfig -o /boot/grub/grub.cfg


grub-install /dev/sda
===BIOS===


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


==System neustarten==
Achtung: Bei BIOS wird die Platte (/dev/sda) angegeben, nicht die Partition.


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


  umount /dev/sda1
  bootctl install


  reboot
  vi /boot/loader/loader.conf


<pre>
default arch.conf
timeout 3
</pre>


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


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


pacman -S iproute2
Die UUID der Rootpartition direkt anhängen lassen und anschließend in die options-Zeile verschieben:


==Schnittstellen ermitteln==
blkid -s UUID -o value /dev/sda3 >> /boot/loader/entries/arch.conf


ip link show
==System neustarten==


==Temporäre IP zuteilen==
chroot verlassen


  ip addr add 192.168.0.100/24 dev eth0
  exit


Gateway zuweisen
resolv.conf auf systemd-resolved verlinken
ip route add default via 192.168.0.1


==Automatisch beim booten==
ln -sf ../run/systemd/resolve/stub-resolv.conf /mnt/etc/resolv.conf


Erstellen der Datei /etc/conf.d/network mit folgendem Inhalt:
Alles aushängen und neu starten


  interface=eth0
  umount -R /mnt
  address=192.168.0.100
  reboot
netmask=24
broadcast=192.168.0.255
gateway=192.168.0.1
 
Erstellen der Datei /etc/systemd/system/network.service mit folgendem Inhalt:
<pre>
[Unit]
Description=Network startup
Wants=network.target
Before=network.target


[Service]
ISO bzw. CD-Laufwerk aus der VM entfernen, damit nicht wieder das Live-System startet.
Type=oneshot
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]
==Kontrolle nach dem ersten Start==
WantedBy=multi-user.target
</pre>


In der Datei /etc/resolv.conf prüfen ob der richtige Nameserver eingetragen ist und dies gegebenenfalls berichtigen
networkctl
ip -br addr
resolvectl status
ping -c 3 archlinux.org


Jetzt den Service starten mit
==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.
systemctl enable network


  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 204: 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 Aketen 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 Datei zu welchem Packet gehört eine Datei
*-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.
 
*https://aur.archlinux.org/
 
==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