Arch Linux auf USB-Stick installieren für Rookies

Aus wiki.archlinux.de
Zur Navigation springen Zur Suche springen

Construction.png „Arch Linux auf USB-Stick installieren für Rookies“ wurde von Ardbeg (Diskussion) als in Bearbeitung markiert. Um Bearbeitungskonflikte zu vermeiden, kontaktiere Ardbeg (Diskussion) bitte, bevor du den Artikel bearbeitest.



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 -c1 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 -c1 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 'Linux filesystem'

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

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.


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 > /mnt/usb/etc/fstab

Die erstellte fstab kann mit

nano /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

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!

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.


Netzwerk

Installation eines Desktops

to be continued