Arch Linux auf USB-Stick installieren für Rookies
Einleitung
Diese Anleitung richtet sich an unerfahrene Linux User, die gerne Arch Linux mal über mehrere Tage oder Wochen ausprobieren möchten, ohne an Ihrer eigentlichen Festplattenstruktur etwas ändern zu müssen. Man erhält ein vollwertiges Betriebssystem, das im Anschluss auch gut als Backup und Wartungssystem genutzt werden kann. Diese Prämissen haben auf die Installation durchaus Auswirkungen. Es wird auf einem USB Stick installiert, wodurch spezifische Anforderungen berücksichtigt werden müssen (z.B. beschränke Schreibzyklen). Außerdem wird das Bootmenu sowohl mit UEFI als auch BIOS (Legacy) ausgestattet. Das hat den Vorteil, dass das System in beiden Varianten bootet. Sollte nach dem Ausprobieren der Wunsch bestehen Arch fest als Betriebssystem zu installieren und zu nutzen, kann der eigenen Hardware entsprechend individualisiert werden.
Dann mal los!
Vorbereitung
Als erstes wird natürlich ein USB Stick benötigt. Speicher kostet heute nicht die Welt. Normalerweise sollte für eine Arch Installation mit Desktop und ein paar essentiellen Programmen 8GB ausreichend sein, empfehlen würde ich aber 16GB. Damit ist man auf der sicheren Seite, falls man länger an der Installation festhalten will oder doch das ein oder andere umfangreichere Paket installieren möchte.
Weiter wird eine Arch Umgebung benötigt, aus der man die Installation durchführt. Wenn bereits ein Arch System genutzt wird, kann dieser Schritt natürlich übersprungen werden. Als erstes wird ein aktuelles Image benötigt. Das kann unter folgendem Link heruntergeladen werden
https://www.archlinux.de/download
Wenn man aus einer anderen Linux-Distribution kommt, kann wie folgend beschrieben ganz leicht einen bootfähiger Stick erstellt werden: Konsole öffnen und
lsblk
eingeben. Das sollte bei einer physikalischen Festplatte wie folgt ausschauen:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 238,5G 0 disk ├─sda1 8:1 0 529M 0 part ├─sda2 8:2 0 100M 0 part /boot ├─sda3 8:3 0 16M 0 part ├─sda4 8:4 0 31,6G 0 part ├─sda5 8:5 0 512M 0 part ├─sda6 8:6 0 32G 0 part / ├─sda7 8:7 0 64G 0 part /home ├─sda8 8:8 0 8G 0 part [SWAP] └─sda9 8:9 0 101,8G 0 part /media
sda Bezeichnet die Festplatte, sda1 - sda9 die vorhandenen Partitionen, hier also neun Stück. Nun wird ein USB-Stick eingesteckt, VON dem die Installation ausführen werden soll, also nicht den, AUF den installiert werden soll, und wieder ein
lsblk
Die Ausgabe kann wie folgt ausschauen:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 238,5G 0 disk ├─sda1 8:1 0 529M 0 part ├─sda2 8:2 0 100M 0 part /boot ├─sda3 8:3 0 16M 0 part ├─sda4 8:4 0 31,6G 0 part ├─sda5 8:5 0 512M 0 part ├─sda6 8:6 0 32G 0 part / ├─sda7 8:7 0 64G 0 part /home ├─sda8 8:8 0 8G 0 part [SWAP] └─sda9 8:9 0 101,8G 0 part /media sdb 8:16 1 3,7G 0 disk └─sdb1 8:17 1 3,7G 0 part
Nun weiß man, dass der Stick sdb heißt und eine Partition sdb1 besitzt.
Jetzt kann das Image auf den Stick gespielt werden (ACHTUNG: alle Daten auf dem Stick werden gelöscht!!!):
dd bs=1M if=/Pfad/zur/archlinux.iso of=/dev/sdX status=progress
Konkret hier sähe der Befehl wie folgt aus:
dd bs=1M if=/home/user/Downloads/archlinux-2020.04.01-x86_64.iso of=/dev/sdb status=progress
Wichtig ist hier beim "of" die Festplatte anzugeben, keine Partition, d.h. keine Nummer anfügen!
Unter Windows bitte nach einschlägigen Programmen suchen um einen bootfähigen USB Stick zu erstellen.
Alternativ kann das Image auch auf eine CD gebrannt werden. Das hat allerdings den Nachteil, dass es meistens langsamer läuft.
Für die Installation wird ein funktionierender Internetzugang benötigt. Am einfachsten ist es für die Installation einen kabelgebundenen Zugang zu wählen, da hier alles automatisch funktioniert. Zugang und Ethernetkabel, mehr braucht es hier nicht.
Starten der Live Umgebung
Den vorbereiteten Stick einstecken, Netzwerkkabel einstecken und Rechner starten. Eventuell das Boot-Menu aufrufen und die Live Umgebung auswählen. Nach einigen Sekunden sollte man im Live-System sein!
Als erstes die Tastatur umstellen:
loadkeys de-latin1
Dann die Internetverbindung testen:
ping -c5 archlinux.de
Das sollte folgende Ausgabe erzeugen:
PING archlinux.de(allison.archlinux.de (2a01:4f8:150:7086::2)) 56 data bytes 64 bytes from allison.archlinux.de (2a01:4f8:150:7086::2): icmp_seq=1 ttl=58 time=315 ms 64 bytes from allison.archlinux.de (2a01:4f8:150:7086::2): icmp_seq=2 ttl=58 time=27.0 ms 64 bytes from allison.archlinux.de (2a01:4f8:150:7086::2): icmp_seq=3 ttl=58 time=27.4 ms 64 bytes from allison.archlinux.de (2a01:4f8:150:7086::2): icmp_seq=4 ttl=58 time=28.1 ms 64 bytes from allison.archlinux.de (2a01:4f8:150:7086::2): icmp_seq=5 ttl=58 time=303 ms --- archlinux.de ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4007ms rtt min/avg/max/mdev = 26.986/140.095/315.216/137.980 ms
Wenn die Internetverbindung nicht funktionieren sollte, kann man wie folgt vorgehen. Zuerst den Namen des Netzweradapters bestimmen:
ip link
erzeugt beispielsweise folgende Ausgabe:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eno1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000 link/ether c4:65:16:08:53:87 brd ff:ff:ff:ff:ff:ff altname enp2s0 3: wlo1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000 link/ether 48:5f:99:93:2f:df brd ff:ff:ff:ff:ff:ff altname wlp3s0
In diesem Fall heißt der Netzwerkadapter also eno1. Nun kann mit
ip link set eno1 up
der Adapter aktiviert werden und mit
dhcpcd eno1
eine Netzwerkadresse bezogen werden.
Anschließend die Verbindung nochmal mit
ping -c5 archlinux.de
testen. Falls es immer noch Schwierigkeiten gibt, sei hier auf das Wiki verwiesen:
https://wiki.archlinux.de/title/Kategorie:Netzwerk
Wer doch mit WLAN arbeiten will, kann
wifi-menu
nutzen. Einfach eingeben und den Anweisungen folgen.
Vorbereitung des USB-Sticks
Partitionierung
Auch hier soll zunächst erkannt werden, welchen Namen Installations-Stick (der, AUF den installiert werden soll) hat. Dazu zunächst wieder ein
lsblk
was wie folgt aussehen kann:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 238,5G 0 disk ├─sda1 8:1 0 529M 0 part ├─sda2 8:2 0 100M 0 part /boot ├─sda3 8:3 0 16M 0 part ├─sda4 8:4 0 31,6G 0 part ├─sda5 8:5 0 512M 0 part ├─sda6 8:6 0 32G 0 part / ├─sda7 8:7 0 64G 0 part /home ├─sda8 8:8 0 8G 0 part [SWAP] └─sda9 8:9 0 101,8G 0 part /media sdb 8:16 1 3,7G 0 disk └─sdb1 8:17 1 3,7G 0 part
sda ist die intern verbaute Festplatte, sdb der Stick, mit der Live-Umgebung. Nun wird der Installationsstick eingesteckt und
lsblk
erneut aufgerufen, was bei hier folgende Ausgabe erzeugt:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 238,5G 0 disk ├─sda1 8:1 0 529M 0 part ├─sda2 8:2 0 100M 0 part /boot ├─sda3 8:3 0 16M 0 part ├─sda4 8:4 0 31,6G 0 part ├─sda5 8:5 0 512M 0 part ├─sda6 8:6 0 32G 0 part / ├─sda7 8:7 0 64G 0 part /home ├─sda8 8:8 0 8G 0 part [SWAP] └─sda9 8:9 0 101,8G 0 part /media sdb 8:16 1 3,7G 0 disk └─sdb1 8:17 1 3,7G 0 part sdc 8:32 1 14,6G 0 disk ├─sdc1 8:33 1 10M 0 part ├─sdc2 8:34 1 500M 0 part └─sdc3 8:35 1 14,1G 0 part
Damit ist klar, dass sdc der Installationsstick ist. Im Folgenden ist wieder Vorsicht geboten! Wenn der falsche Speicher ausgewählt wird, sind die Daten darauf verloren!!!
Als nächstes geht es an die Partitionierung. Hier werden drei Partitionen angelegt. Eine kleine für die Bios-Boot-Partition, eine für die UEFI-Boot Partition und eine für das eigentliche System. Eine SWAP Partition, sie dazu:
https://wiki.archlinux.de/title/Swap
wird nicht angelegt. Arbeitsspeicher ist heute nicht mehr rar und diese Anleitung soll eine einfache Implementierung zum Testen erzeugen. Wem das Betriebssystem zusagt, kann im Anschluss ja
https://wiki.archlinux.de/title/Anleitung_f%C3%BCr_Einsteiger
folgend ein System mit SWAP und weiteren Partitionen anlegen. Damit wäre dann auch ein Ruhezustand möglich.
Zurück zur Partitionierung:
gdisk /dev/sdc
sdc ist hier entsprechend der eigenen Situation zu ersetzen!!!
mit
Command (? for help): d
und Enter werden die vorhandenen Partitionen so lange gelöscht, bis keine mehr vorhanden sind:
Command (? for help): d No partitions
Anschließend wird eine neue Partitionstabelle erstellt:
Command (? for help): o This option deletes all partitions and creates a new protective MBR. Proceed? (Y/N): y
Mit
Command (? for help): n Partition number (1-128, default 1): First sector (34-30514142, default = 2048) or {+-}size{KMGTP}: Last sector (2048-30514142, default = 30514142) or {+-}size{KMGTP}: +10MB Current type is 8300 (Linux filesystem) Hex code or GUID (L to show codes, Enter = 8300): EF02 Changed type of partition to 'BIOS boot partition'
wird die BIOS Boot Partition angelegt. Nach dem "n" muss zwei mal mit Enter bestätigt werden, dann "+10MB" eingeben und bestätigen und das Dateisystem mit "EF02" festlegen und bestätigen.
Genauso für die UEFI Partition:
Command (? for help): n Partition number (2-128, default 2): First sector (34-30514142, default = 22528) or {+-}size{KMGTP}: Last sector (22528-30514142, default = 30514142) or {+-}size{KMGTP}: +500MB Current type is 8300 (Linux filesystem) Hex code or GUID (L to show codes, Enter = 8300): EF00 Changed type of partition to 'EFI system partition'
Und zum Schluss die Linux System Partition:
Command (? for help): n Partition number (3-128, default 3): First sector (34-30514142, default = 1046528) or {+-}size{KMGTP}: Last sector (1046528-30514142, default = 30514142) or {+-}size{KMGTP}: Current type is 8300 (Linux filesystem) Hex code or GUID (L to show codes, Enter = 8300): Changed type of partition to 'Linux filesystem'
Damit sind alle Partitionen angelegt und die Tabelle kann überprüft werden:
Command (? for help): p
die strukturell wie folgt ausschauen sollte:
Number Start (sector) End (sector) Size Code Name 1 2048 22527 10.0 MiB EF02 BIOS boot partition 2 22528 1046527 500.0 MiB EF00 EFI system partition 3 1046528 30514142 14.1 GiB 8300 Linux filesystem
An dieser Stelle nochmal sicher gehen, dass der richtige Speicher gewählt wurde, denn mit dem nächsten Befehl wird geschrieben!!
Command (? for help): w
Formatierung
Im nächsten Schritt geht es darum, die neu erstellten Partitionen mit dem richtigen Dateisystem zu formatieren.
Die erste Partition sdc1 benötigt keine explizite Formatierung.
Für die UEFI Boot Partition wird als Dateisystem FAT32 verwendet:
mkfs.fat -F32 /dev/sdc2
Für die eigentliche Systempartition wird das Linuxdateisystem ext4 verwendet:
mkfs.ext4 /dev/sdc3
Installation des Grundsystems
In diesem Abschnitt wird die Installation des Grundsystems beschrieben. Um mit den neu erstellten Partitionen arbeiten zu können, müssen diese zunächst eingebunden werden:
Einbinden der Linux-Partition:
mount /dev/sdc3 /mnt
Erstellung des "Boot-Ordners" für das Einbinden der UEFI-Partiton:
mkdir /mnt/boot
und schließelich Einbinden der UEFI-Partition
mount /dev/sdc2 /mnt/boot
Mit pacstrap werden nun die notwendigen System-Pakete heruntergeladen und installiert:
pacstrap /mnt base base-devel linux linux-firmware nano
Nun folgen noch ein paar Basispakete:
Für die Anzeige auf einem Bildschirm werden Grafiktreiber benötigt. Hier wird davon ausgegangen, dass der USB-Stick an unterschiedlichen Geräten betrieben werden können soll. Das bedeutet, dass eine möglichst breite Auswahl an Hardware unterstützt werden soll und somit alle verfügbaren Treiber installiert werden. Wenn man den Stick nur an einem Rechner nutzen möchte, genügt es hier auch nur den für das eigene System notwendigen Treiber zu installieren (siehe dazu auch https://wiki.archlinux.de/title/Anleitung_f%C3%BCr_Einsteiger#Grafiktreiber_installieren):
pacman --root /mnt -S xf86-video-amdgpu xf86-video-ati xf86-video-intel xf86-video-nouveau xf86-video-vesa
Mit dem nächsten Befehl werden Touchpad-Treiber, Batteriestandsanzeige, grub-Bootloader, sudo und der EFI-Bootmanager installiert:
pacman --root /mnt -S xf86-input-synaptics acpi grub sudo efibootmgr
Um sich mit einem kabelgebundenen Netzwerk später automatisch verbinden und ein WLAN konfigurieren zu können, werden folgende Pakete benötigt:
pacman --root /mnt -S netctl ifplugd iw wpa_supplicant dialog dhcpcd
fstab
Als erstes wird die fstab erzeugt. Sie beschreibt, wie Laufwerke beim Booten in das System eingebunden werden sollen. Laufwerke können mit UUIDs oder Labels bezeichnet werden. Da man sichergehen will, dass die Partitionen des Sticks auf unterschiedlichen Hardwares gleich benannt werden, werden hier die UUIDs verwendet, sie bleiben immer gleich:
genfstab -U /mnt > /etc/fstab
Die erstellte fstab kann mit
cat /mnt/etc/fstab
betrachtet werden und sollte strukturell wie folgt ausschauen:
# /dev/sdc3 UUID=e482684f-a043-4de1-b405-3b79d2ad3c19 / ext4 rw,relatime 0 1 # /dev/sdc2 UUID=46C9-4972 /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 2
Einrichtung des Grundsystems
Damit man das System konfigurieren kann, muss man "irgendwie" Zugriff darauf haben. Arch-Linux bietet mit arch-chroot genau diese Funktionalität. "chroot" leitet sich von "change root" ab, d.h. man "wechselt sozusagen in ein anderes System". Details dazu sind zu finden unter https://wiki.archlinux.org/index.php/Chroot#Using_arch-chroot. Der Wechsel in das zu konfigurierende System erfolgt mit
arch-chroot /mnt
Das "chrooten" sollte man im Hinterkopf behalten. Damit ist es möglich ein beschädigtes System von einem anderen lauffähigen System - wie das, weleches hier entsteht z.B. - zu reparieren.
Die Option relatime in beiden Einträgen sollte in noatime oder lazytime geändert und abgespeichert werden, um unnötige Schreibzugriffe auf das USB Laufwerk zu vermeiden. Für genauere Infos bitte in https://wiki.archlinux.org/index.php/Fstab#atime_options reinlesen.
Sprache; Namen; Zeit
Weiter geht es mit den Spracheinstellungen:
Bevor eine Sprache verwendet werden kann, muss sie zunächst gerneriert werden. Dazu mit
nano /etc/locale.gen
folgende vier Zeilen auskommentieren (das #-Zeichen entfernen) und die Datei speichern:
#de_DE.UTF-8 UTF-8 #de_DE ISO-8859-1 #de_DE@euro ISO-8859-15 #en_US.UTF-8
Anschließend mit
locale-gen
die Sprachen generieren und mit
echo LANG=de_DE.UTF-8 > /etc/locale.conf
Deutsch als Systemsprache festlegen.
Die Sprache der Tastatur wird mit
echo KEYMAP=de-latin1 > /etc/vconsole.conf
festgelegt.
Dann braucht der Rechner noch einen Namen, der mit
echo meinRechner > /etc/hostname
festgelgt werden kann. "meinRechner" ist hier mit den eigenen Vorstellungen des Rechnernamens zu ersetzen.
Die Datei /etc/hosts muss noch mit
nano /etc/hosts
wie folgt editiert werden:
127.0.0.1 localhost ::1 localhost 127.0.1.1 meinRechner.localdomain meinRechner
Um die Zeitzone umzustellen, genügt folgende Eingabe:
ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime
initramfs
Mit dem initramfs wird festgelegt, welche Treiber wann beim Booten geladen werden. Weitere Infos dazu sind zu finden unter https://wiki.archlinux.de/title/Mkinitcpio. Da hier auf ein USB Medium installiert werden soll, sollten die USB Treiber sicher vor dem Dateisystem geladen werden. Dazu mit
nano /etc/mkinitcpio.conf
die mkinitcpio Konfigurationsdatei öffnen und vergewissern, dass der block hook vor dem filesystems hook steht. Wenn das nicht der Fall sein sollte, dann entsprechend ändern und abspeichern. Beispielhaft könnte der Eintrag wie folgt aussehen:
HOOKS=(base udev block filesystems autodetect modconf keyboard fsck)
Jetzt kann das initramfs erzeugt werden mit
mkinitcpio -p linux
Bootloader
Wie in der Einleitung beschrieben soll diese Installation sowohl Bios-Boot als auch UEFI-Boot unterstützen, weswegen beide Boot-Loader benötigt werden. An dieser stelle unbedingt wieder sicher gehen, dass man sich erstens in der "gechrooteten" Umgebung befindet und zweitens die Laufwerkbezeichnungen klar sind! /dev/sdc bezieht sich hier immer noch auf das Beispiel und muss der eigenen Hardware angepasst werden!
Als erstes müssen noch die Pakete für grub installiert werden
pacman -S grub efibootmgr
Mit
grub-install --target=i386-pc /dev/sdc
wird das Booten über Bios konfiguriert und mit
grub-install --target=x86_64-efi --efi-directory /boot --boot-directory /boot --removable
konfiguriert man das Booten über UEFI.
Nun muss noch die grub.cfg Datei erstellt werden mit
grub-mkconfig -o /boot/grub/grub.cfg
Benutzer anlegen
In diesem Abschnitt werden die Benutzer angelegt. Der Admin oder Root User ist immer vorhanden und hat alle Rechte. Er sollte nur bei längeren Wartungs- oder Reparaturarbeiten genutzt werden. Das Passwort für diesen User ist natürlich noch nicht festgelegt. Das erzielt man mit
passwd
Nach zweimaliger Eingabe ist das Passwort gesetzt.
Nun legt man einen User an, mit dem man normalerweise das System nutzt. Das geht mit
useradd -m -g users -s /bin/bash meinUser
wobei der User in diesem Beispiel "meinUser" heißt.
Das Passwort wird auch hier mit passwd gesetzt, allerdings mit der Angabe des User:
passwd meinUser
Damit man nicht für jeden Befehl, der root-Rechte benötigt den Benutzer wechseln muss, statten wir den Standarduser noch mit entsprechenden Rechten aus, dann können Befehle mit
sudo irgendeinBefehl
als root ausgeführt werden.
Mit
nano /etc/sudoers
öffnet man die Datei "sudoers" und sucht nach der Zeile
# %wheel ALL=(ALL) ALL
Hier werden das führende "#" und das Leerzeichen entfernt zu
%wheel ALL=(ALL) ALL
und die Datei mit strg + o gespeichert und mit strg + x geschlossen.
Jetzt noch mit
gpasswd -a meinUser wheel
den User der Gruppe "wheel" zuordnen.
Fast am Ziel! Mit einem
exit
verlässt man die Chroot-Umgebung und mit
umount /dev/sdc2 umount /dev/sdc3
hängt man die verwendeten Partitionen wieder aus. Auch hier wieder vorsicht und die eigenen Bezeichnungen verwenden! Jetzt nur Neustarten und mit dem erstellten User einloggen und Willkommen im neuen System!
Netzwerk
Alle wichtigen Pakete für die Netzwerkkonfiguration sollten bereits vorhanden sein. Wie genau vorallem die WLAN Verbindung aussehen soll ist ersten Geschmackssache und zweitens auch ein wenig vom Dekstop abhängig. Entsprechende Hinweise sind zu finden unter:
https://wiki.archlinux.de/title/Networkmanager
oder
https://wiki.archlinux.de/title/WLAN
Installation eines Desktops
Viele werden bestimmt einen Desktop installieren wollen. Da man nicht immer weiß, auf welchem Rechner der Stick laufen wird und welche Ressourcen dieser Rechner zur Verfügung stellt, wäre hier ein leichtgewichtiger Desktop sinnvoll. In der Anleitung für Einsteiger werden diese aufgeführt.