Inhaltsverzeichnis
ArchLinux - Minimal Server Installation - UEFI-Boot, Grub2, LVM, Btrfs mit snapper und xfs
Mein besonderer Dank gilt hier an dieser Stelle Nicolai Mladenoff (unicks.eu), welcher mich durch seine Videos auf seinem Youtube™-Kanal bzw. heute Odysee™-Kanal unicks.eu erst auf die Idee gebracht hat, unter ArchLinux das Dateisystem Btrfs einzusetzen und mir auch wertvolle Verbesserungen zu meinen bisherigen DokuWiki-Einträgen gegeben hat. Vielen Dank noch mal an dieser Stelle! |
Die hier verwendete Installationsmethode ist eine Installation von einem ISO-Image/USB-Stick.
Beschreibung | Externer Link |
---|---|
Homepage | https://www.archlinux.de/ |
Herunterladen | https://www.archlinux.de/download |
Dokumentation | https://wiki.archlinux.de/title/Hauptseite |
Installation | https://wiki.archlinux.de/title/Anleitung_für_Einsteiger |
- LVM | https://wiki.archlinux.de/title/LVM https://tldp.org/HOWTO/LVM-HOWTO/ |
- Btrfs | https://wiki.archlinux.org/index.php/btrfs https://btrfs.wiki.kernel.org |
snapper ist ein Werkzeug zur Verwaltung von Linux-Dateisystem-Snapshots. Abgesehen von der offensichtlichen Erstellung und Löschung von Snapshots, kann snapper Snapshots vergleichen und Unterschiede zwischen Snapshots rückgängig machen. Vereinfacht ausgedrückt ermöglicht dies Root- und Nicht-Root-Benutzern, ältere Versionen von Dateien anzuzeigen und Änderungen rückgängig zu machen.
* Quelle: YouTube - Channel: unicks.eu - Total Arch Linux | 3.4 Snapper auf die leichte Art!
Ab hier werden root
-Rechte zur Ausführung der nachfolgenden Befehle benötigt. Um der Benutzer root
zu werden, geben Sie bitte nachfolgenden Befehl ein:
$ su - Password:
Herunterladen
Die Installationsquellen mittels ISO-Datei und der dazugehörige checksum
-Datei, kann unter nachfolgend aufgelisteten Links heruntergeladen werden:
Zum Herunterladen der ISO-Datei und der dazugehörige checksum
-Datei in das Zielverzeichnis /tmp
, können nachfolgende Befehle genutzt werden:
ISO-Datei:
# wget -P /tmp https://mirror.cmt.de/archlinux/iso/latest/archlinux-x86_64.iso --2022-11-06 05:22:36-- https://mirror.cmt.de/archlinux/iso/latest/archlinux-x86_64.iso Loaded CA certificate '/etc/ssl/certs/ca-certificates.crt' Resolving mirror.cmt.de (mirror.cmt.de)... 88.99.141.36 Connecting to mirror.cmt.de (mirror.cmt.de)|88.99.141.36|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 820326400 (782M) [application/octet-stream] Saving to: ‘/tmp/archlinux-x86_64.iso’ archlinux-x86_64.is 100%[===================>] 782.32M 13.3MB/s in 59s 2022-11-06 05:23:36 (13.2 MB/s) - ‘/tmp/archlinux-x86_64.iso’ saved [820326400/820326400]
checksum
-Datei:
# wget -P /tmp https://mirror.cmt.de/archlinux/iso/latest/sha256sums.txt --2022-11-06 05:37:32-- https://mirror.cmt.de/archlinux/iso/latest/sha256sums.txt Loaded CA certificate '/etc/ssl/certs/ca-certificates.crt' Resolving mirror.cmt.de (mirror.cmt.de)... 88.99.141.36 Connecting to mirror.cmt.de (mirror.cmt.de)|88.99.141.36|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 396 [text/plain] Saving to: ‘/tmp/sha256sums.txt’ sha256sums.txt 100%[===================>] 396 --.-KB/s in 0s 2022-11-06 05:37:32 (9.38 MB/s) - ‘/tmp/sha256sums.txt’ saved [396/396]
Herunterladen: Überprüfung
Zur Überprüfung, ob die heruntergeladene ISO-Datei mit den Inhalt, sprich der Check-Summe, der ebenfalls heruntergeladenen checksum
-Datei übereinstimmt, können nachfolgende Befehle verwendet werden:
Wechsel in das Verzeichnis /tmp
, mit nachfolgendem Befehl:
# cd /tmp
Überprüfung mit dem Programm sha256sum
, ob die Check-Summe übereinstimmt:
# sha256sum --check /tmp/sha256sums.txt sha256sum: archlinux-2022.11.01-x86_64.iso: No such file or directory archlinux-2022.11.01-x86_64.iso: FAILED open or read
archlinux-x86_64.iso: OK
sha256sum: archlinux-bootstrap-2022.11.01-x86_64.tar.gz: No such file or directory archlinux-bootstrap-2022.11.01-x86_64.tar.gz: FAILED open or read sha256sum: archlinux-bootstrap-x86_64.tar.gz: No such file or directory archlinux-bootstrap-x86_64.tar.gz: FAILED open or read sha256sum: WARNING: 3 listed files could not be read
WICHTIG - In der Zeile mit der Datei archlinux-x86_64.iso
muss ein OK
am Ende stehen!
USB-Stick erstellen
Bevor die ISO-Datei auf einen USB-Stick kopiert wird, sollte verlässlich ermittelt werden, ob der USB-Stick auch gemountet werden konnte und unter welchem Device der USB-Stick gemountet wurde, was mit nachfolgendem Befehl erfolgen kann:
# ls -lgo --time-style=+ /dev/disk/by-id/usb* lrwxrwxrwx 1 9 /dev/disk/by-id/usb-Generic_STORAGE_DEVICE_000000000547-0:0 -> ../../sdc lrwxrwxrwx 1 9 /dev/disk/by-id/usb-Generic_STORAGE_DEVICE_000000000547-0:1 -> ../../sdd lrwxrwxrwx 1 9 /dev/disk/by-id/usb-Generic_STORAGE_DEVICE_000000000547-0:2 -> ../../sde lrwxrwxrwx 1 9 /dev/disk/by-id/usb-Generic_STORAGE_DEVICE_000000000547-0:3 -> ../../sdf lrwxrwxrwx 1 9 /dev/disk/by-id/usb-Generic_STORAGE_DEVICE_000000000547-0:4 -> ../../sdg lrwxrwxrwx 1 9 /dev/disk/by-id/usb-Verbatim_STORE_N_GO_0700078505A004C1-0:0 -> ../../sdh lrwxrwxrwx 1 10 /dev/disk/by-id/usb-Verbatim_STORE_N_GO_0700078505A004C1-0:0-part1 -> ../../sdh1
Die ISO-Datei kann mit nachfolgendem Befehl auf einen USB-Stick - hier /dev/sdh
als startbereite Abbilddatei (bootable image) erstellt werden:
# dd bs=4M if=/tmp/archlinux-x86_64.iso of=/dev/sdh && sync
HINWEIS - Dies ist nur erforderlich, falls auf physischer Hardware mittels USB-Stick installiert werden soll!
KVM
Nachfolgende soll unter Verwendung von KVM (Kernel-based Virtual Machine) einer vollständigen Virtualisierungslösung für Linux welche auf x86-Hardware mit Virtualisierungserweiterungen (Intel VT oder AMD-V) basiert, eine virtuelle Maschine erstellt werden, um die Installation und Konfiguration exemplarisch und beispielhaft durchzuführen.
KVM: ISO-Datei kopieren
Dazu soll im ersten Schritt der die zuvor heruntergeladene ISO-Datei - archlinux-x86_64.iso
auf dem KVM-Wirt-System vom Verzeichnis /tmp
nach /var/lib/libvirt/boot
mit nachfolgendem Befehl verschoben werden:
# mv /tmp/archlinux-x86_64.iso /var/lib/libvirt/boot
Anschliessend sollen die Besitzrechte wie folgt auf den Benutzer und die Gruppe - libvirt-qemu
gesetzt werden, was mit nachfolgendem Befehl durchgeführt werden kann:
# chown libvirt-qemu:libvirt-qemu /var/lib/libvirt/boot/archlinux-x86_64.iso
Eine abschliessende Überprüfung der vorhergehenden Schritte, kann mit nachfolgendem Befehl durchgeführt werden und sollte eine Ausgabe in etwa wie nachfolgende anzeigen:
# ls -l /var/lib/libvirt/boot/ total 1606296 -rw-r--r-- 1 libvirt-qemu libvirt-qemu 820326400 Nov 1 14:56 archlinux-x86_64.iso
KVM: QCow2-Datei erstellen
Mit nachfolgendem Befehl, soll eine KVM - QCow2-Datei erstellt werden, welche die „Festplatte“ der im nächsten Schritt zu erstellenden virtuellen Maschine darstellt:
# qemu-img create -f qcow2 -o compat=1.1 /var/lib/libvirt/images/vmtest.qcow2 40G Formatting '/var/lib/libvirt/images/vmtest.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=42949672960 compat=1.1 lazy_refcounts=off refcount_bits=16
Nachfolgende Befehle überprüfen, ob die „Festplatte“ wie gewünscht erstellt wurde:
Auflisten der KVM - QCow2-Datei im Dateisystem:
# ls -l /var/lib/libvirt/images/vmtest.qcow2 -rw-r--r-- 1 root root 197248 Nov 6 06:47 /var/lib/libvirt/images/vmtest.qcow2
Auflisten der KVM - QCow2-Datei Spezifikationen:
# qemu-img info /var/lib/libvirt/images/vmtest.qcow2 image: /var/lib/libvirt/images/vmtest.qcow2 file format: qcow2 virtual size: 40 GiB (42949672960 bytes) disk size: 196 KiB cluster_size: 65536 Format specific information: compat: 1.1 compression type: zlib lazy refcounts: false refcount bits: 16 corrupt: false extended l2: false
KVM: Virtuelle Maschine erstellen
Nachfolgender Befehl erstellt eine virtuelle Maschine auf dem KVM-Wirt-System, welche als
- Installations-Medium die ISO-Datei
/var/lib/libvirt/boot/archlinux-x86_64.iso
und als - „Festplatte“ die zuvor erstellte KVM - QCow2-Datei
/var/lib/libvirt/images/vmtest.qcow2
verwendet.
Nachfolgend der Befehl zum erstellen der virtuellen Maschine:
virt-install \ --boot=uefi \ --name vmtest \ --memory 2048 \ --cdrom /var/lib/libvirt/boot/archlinux-x86_64.iso \ --os-variant archlinux \ --vcpu 2 \ --sound none \ --video virtio \ --console pty,target.type=virtio \ --serial pty \ --controller scsi,model=virtio-scsi \ --noautoconsole \ --disk /var/lib/libvirt/images/vmtest.qcow2,cache=none \ --network network=default,model.type=virtio,mac.address=52:54:12:34:56:78
# virt-install --boot=uefi --name vmtest --memory 2048 --cdrom /var/lib/libvirt/boot/archlinux-x86_64.iso --os-variant archlinux --vcpu 2 --sound none --video virtio --console pty,target.type=virtio --serial pty --controller scsi,model=virtio-scsi --noautoconsole --disk /var/lib/libvirt/images/vmtest.qcow2,cache=none --network network=default,model.type=virtio,mac.address=52:54:12:34:56:78 Starting install... Creating domain... | 0 B 00:00 Domain is still running. Installation may be in progress. You can reconnect to the console to complete the installation process.
Nachfolgender Befehl überprüft den Status der virtuellen Maschine auf dem KVM-Wirt-System:
# virsh list --all Id Name State ------------------------- 1 vmtest running
KVM: Virtuelle Maschine starten (UEFI-Boot)
Nach der erfolgreichen Erstellung der virtuellen Maschine auf dem KVM-Wirt-System, sollte ein Start der virtuellen Maschine - vmtest
wie folgt aussehen:
HINWEIS - Der erste Eintrag, welcher vorausgewählt ist, soll verwendet werden!
Anschliessend sollte nach erfolgreichem Start (UEFI-Boot) eine Anzeige wie nachfolgend dargestellt erscheinen:
Live-System
Nachfolgende Schritte sollen zur Vereinfachung der späteren Installationsschritte durchgeführt werden.
Tastaturlayout: deutsch
ACHTUNG - Nach dem starten des ISO-Images wird ein US/Englisches-Tastaturlayout verwendet!
Damit alle nachfolgenden Eingabe unter Verwendung eines deutschen Tastaturlayouts durchgeführt werden können, ist nachfolgender Befehl auszuführen:
root@archiso ~ # loadkeys de-latin1-nodeadkeys
*¹ Der Buchstabe [y]
befindet sich auf der englischen Tastatur auf der Taste [z]
.
*² Das Zeichen [-]
befindet sich auf der englischen Tastatur auf der Taste [ß]
.
HINWEIS - Anschließend sollte ein deutsches Tastaturlayout geladen sein!
Passwort: root
Damit später nachfolgende Konfigurationen mittels Remote-Login per ssh
durchgeführt werden können, soll eine Verbindung via SSH hergestellt werden.
Dazu ist es erforderlich, das für der Benutzer root
im „Live“-System ein Passwort gesetzt ist, was mit nachfolgendem Befehl erreicht werden kann:
root@archiso ~ # passwd New password Retype new password: passwd: password updated successfully
Das Passwort ist in der shell
hinter New password:
einzugeben und mit der [Return/Enter]-Taste zu bestätigen. Anschließend ist in der shell
hinter Retype new password:
das gleiche Passwort erneut einzugeben und ebenfalls mit der [Return/Enter]-Taste zu bestätigen.
Netzwerkkarte
Nachfolgende Befehle sollen eine Verbindung mit einem bestehenden Netzwerk mit Internet-Zugang herstellen.
Zuerst sollte die Bezeichnung der Netzwerkkarte mit nachfolgendem Befehl ermittelt werden:
root@archiso ~ # ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 52:54:12:34:56:78 brd ff:ff:ff:ff:ff:ff inet 192.168.122.22/24 metric 100 brd 192.168.122.255 scope global dynamic enp1s0 valid_lft 2179sec preferred_lft 2179sec inet6 fe80::5054:12ff:fe34:5678/64 scope link valid_lft forever preferred_lft forever
Die Bezeichnung der Netzwerkkarte in oben gezeigtem Beispiel lautet aktuell: enp1s0. In der gleichen Zeile ist auch zu sehen, dass die Karte bereits den Status UP
hat, also aktiv und nutzbar ist.
HINWEIS - Falls die Netzwerkkarte nicht UP
und damit aktiv und nutzbar sein sollte, kann mit nachfolgendem Befehl, die Karte mit der Bezeichnung enp1s0
aktiviert, sprich in den Status UP
versetzt werden:
root@archiso ~ # ip link set up dev enp1s0
HINWEIS - Falls die Netzwerkkarte keine - IPv4-Netzwerkadresse erhalten haben sollte, kann mit nachfolgendem Befehl zumindest eine IPv4-Adresse gesetzte werden:
root@archiso ~ # ip addr add 192.168.122.22/24 dev enp1s0
Ein Überprüfung, ob die IPv4-Netzwerkadresse für die Netzwerkkarte mit der Bezeichnung enp1s0
gesetzt wurde, kann mit nachfolgendem Befehl erfolgen:
root@archiso ~ # ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 52:54:12:34:56:78 brd ff:ff:ff:ff:ff:ff inet 192.168.122.22/24 metric 100 brd 192.168.122.255 scope global dynamic enp1s0 valid_lft 2179sec preferred_lft 2179sec inet6 fe80::5054:12ff:fe34:5678/64 scope link valid_lft forever preferred_lft forever
Damit nun eine Verbindung in Richtung Internet möglich ist, muss eine Standardroute - default
-Route den Weg in Richtung Internet konfiguriert sein, was mit nachfolgendem Befehl überprüft werden kann:
# root@archiso ~ # ip ro default via 192.168.122.1 dev enp1s0 proto dhcp src 192.168.122.22 metric 100 192.168.122.22/24 dev enp1s0 proto kernel scope link src 192.168.122.22 metric 100 192.168.122.1 dev enp1s0 proto kernel scope link src 192.168.122.22 metric 100
HINWEIS - Falls die Netzwerkkarte keine - IPv4-default
-Route erhalten haben sollte, kann mit nachfolgendem Befehl zumindest eine IPv4-default
-Route gesetzte werden:
root@archiso ~ # ip route add default via 192.168.122.1
Eine Überprüfung mit nachfolgendem Befehl zeigt nun die aktuellen Routen, inklusive der default
-Route an, welche auch in das Internet führen sollte:
root@archiso ~ # ip ro default via 192.168.122.22 dev enp1s0 192.168.122.0/24 dev enp1s0 proto kernel scope link src 192.168.122.1
Ob die Verbindung zum Internet hergestellt wurde, kann mit nachfolgendem Test durch den nachfolgenden Befehl durchgeführt werden. Drei ping
in Richtung eines Namensservers (DNS) von Google mit der IP-Adresse: 8.8.8.8
, sollten nun möglich sein und eine Rückmeldung wie nachfolgende zurück liefern:
root@archiso ~ # ping -c3 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8 icmp_seq=1 ttl=57 time=15.3 ms 64 bytes from 8.8.8.8 icmp_seq=2 ttl=57 time=14.3 ms 64 bytes from 8.8.8.8 icmp_seq=3 ttl=57 time=14.6 ms --- 8.8.8.8 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2003ms rtt min/avg/max/mdev = 14.263/14.710/15.289/0.429 ms
Namensauflösung: /etc/resolv.conf
Mit nachfolgendem Befehl kann überprüft werden, ob die Konfigurationsdatei /etc/resolv.conf
bereits richtig konfiguriert ist:
root@archiso ~ # cat /etc/resolv.conf # This is /run/systemd/resolve/stub-resolv.conf managed by man:systemd-resolved(8). # Do not edit. # # This file might be symlinked as /etc/resolv.conf. If you're looking at # /etc/resolv.conf and seeing this text, you have followed the symlink. # # This is a dynamic resolv.conf file for connecting local clients to the # internal DNS stub resolver of systemd-resolved. This file lists all # configured search domains. # # Run "resolvectl status" to see details about the uplink DNS servers # currently in use. # # Third party programs should typically not access this file directly, but only # through the symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a # different way, replace this symlink by a static file or a different symlink. # # See man:systemd-resolved.service(8) for details about the supported modes of # operation for /etc/resolv.conf. nameserver 127.0.0.53 options edns0 trust-ad search .
HINWEIS - Falls das nicht so sein sollte und damit nicht nur der netzwerktechnische Zugriff auf das Internet möglich ist, sondern auch eine Namensauflösung wie z.B. Google zu einer IP-Adresse möglich ist, ist es erforderlich, dass ein Namensserver konfiguriert wird, welche im Netzwerk oder aus dem Netzwerk erreichbar ist. Dies kann durch Ausführen des nachfolgenden Befehls durchgeführt werden:
root@archiso ~ # echo 'nameserver 192.168.122.1' >> /etc/resolv.conf
HINWEIS - Falls kein eigener Namensserver zur Verfügung stehen sollte, wäre auch extern erreichbare Nameserverer, wie die von Google eine ggf. kurzfristige Option, was durch Ausführung von nachfolgenden Befehlen ermöglicht werden könnte:
root@archiso ~ # echo 'nameserver 8.8.8.8' >> /etc/resolv.conf root@archiso ~ # echo 'nameserver 8.8.4.4' >> /etc/resolv.conf
Mit nachfolgendem Befehl könne dann überprüft werden, ob die Ergänzung der Konfigurationsdatei /etc/resolv.conf
erfolgreich waren:
root@archiso ~ # cat /etc/resolv.conf # Resolver configuration file. # See resolv.conf(5) for details. nameserver 192.168.122.1
Ob die Namensauflösung Richtung Internet hergestellt wurde, kann mit nachfolgendem Test durch den nachfolgenden Befehl durchgeführt werden. Drei ping
in Richtung von Google, sollten nun möglich sein und eine Rückmeldung wie nachfolgende zurück liefern:
root@archiso ~ # ping -c3 google.de PING google.de (142.251.36.195) 56(84) bytes of data. 64 bytes from muc12s12-in-f3.1e100.net (142.251.36.195): icmp_seq=1 ttl=115 time=15.5 ms 64 bytes from muc12s12-in-f3.1e100.net (142.251.36.195): icmp_seq=2 ttl=115 time=14.6 ms 64 bytes from muc12s12-in-f3.1e100.net (142.251.36.195): icmp_seq=3 ttl=115 time=14.4 ms --- google.de ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 14.420/14.823/15.463/0.457 ms
SSH-Dienst
Eine Überprüfung ob der SSH-Dienst/Daemon bereits ordnungsgemäß gestartet wurde, kann durch ausführen des nachfolgenden Befehls durchgeführt werden und sollte eine Ausgabe in etwa wie nachfolgende zur Folge haben:
root@archiso ~ # systemctl status sshd.service ● sshd.service - OpenSSH Daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; preset: disabled) Active: active (running) since Sun 2022-11-06 06:23:39 UTC; 50min ago Main PID: 424 (sshd) Tasks: 1 (limit: 2256) Memory: 12.0M CPU: 164ms CGroup: /system.slice/sshd.service └─424 "sshd: /usr/bin/sshd -D [listener] 0 of 10-100 startups" Nov 06 06:23:39 archiso systemd[1]: Started OpenSSH Daemon. Nov 06 06:23:39 archiso sshd[424]: Server listening on 0.0.0.0 port 22. Nov 06 06:23:39 archiso sshd[424]: Server listening on :: port 22. Nov 06 07:06:26 archiso sshd[511]: Postponed keyboard-interactive for root from 192.168.122.1 port 52000 ssh2 [preauth] Nov 06 07:06:29 archiso sshd[511]: Postponed keyboard-interactive/pam for root from 192.168.122.1 port 52000 ssh2 [preauth] Nov 06 07:06:29 archiso sshd[511]: Accepted keyboard-interactive/pam for root from 192.168.122.1 port 52000 ssh2 Nov 06 07:06:29 archiso sshd[511]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)
HINWEIS - Falls der SSH-Dienst/Daemon nicht gestartet sein sollte und eine Verbindung zum Server, welcher via „Live“-ISO-Image gestartet wurde, hergestellt werden kann, muss der bereits entsprechend vorkonfigurierte SSH-Dienst/Daemon mit nachfolgendem Befehl gestartet werden:
root@archiso ~ # systemctl start sshd.service
Eine Überprüfung ob der SSH-Dienst/Daemon auch ordnungsgemäß gestartet wurde, kann durch ausführen des nachfolgenden Befehls durchgeführt werden und sollte eine Ausgabe in etwa wie nachfolgende zur Folge haben:
root@archiso ~ # systemctl status sshd.service ● sshd.service - OpenSSH Daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; preset: disabled) Active: active (running) since Sun 2022-11-06 06:23:39 UTC; 50min ago Main PID: 424 (sshd) Tasks: 1 (limit: 2256) Memory: 12.0M CPU: 164ms CGroup: /system.slice/sshd.service └─424 "sshd: /usr/bin/sshd -D [listener] 0 of 10-100 startups" Nov 06 06:23:39 archiso systemd[1]: Started OpenSSH Daemon. Nov 06 06:23:39 archiso sshd[424]: Server listening on 0.0.0.0 port 22. Nov 06 06:23:39 archiso sshd[424]: Server listening on :: port 22. Nov 06 07:06:26 archiso sshd[511]: Postponed keyboard-interactive for root from 192.168.122.1 port 52000 ssh2 [preauth] Nov 06 07:06:29 archiso sshd[511]: Postponed keyboard-interactive/pam for root from 192.168.122.1 port 52000 ssh2 [preauth] Nov 06 07:06:29 archiso sshd[511]: Accepted keyboard-interactive/pam for root from 192.168.122.1 port 52000 ssh2 Nov 06 07:06:29 archiso sshd[511]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)
SSH-Dienst: SSH-Login (root)
Jetzt kann eine erste Verbindung als Benutzer root
via SSH-Login auf dem Server, welcher via „Live“-ISO-Image gestartet wurde, hergestellt werden. Nachfolgender Befehl soll dazu auf dem KVM-Wirt-System, oder bei physischer Hardware, auf einer lokalen Workstation, nicht auf der virtuellen Maschine vmtest
, sondern auf dem Server verwendet werden:
$ ssh -t -2 -p 22 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@192.168.122.22 Warning: Permanently added '192.168.122.22' (ED25519) to the list of known hosts. (root@192.168.122.22) Password: To install Arch Linux follow the installation guide: https://wiki.archlinux.org/title/Installation_guide For Wi-Fi, authenticate to the wireless network using the iwctl utility. For mobile broadband (WWAN) modems, connect with the mmcli utility. Ethernet, WLAN and WWAN interfaces using DHCP should work automatically. After connecting to the internet, the installation guide can be accessed via the convenience script Installation_guide. Last login: Sun Nov 6 07:06:29 2022 from 192.168.122.1 root@archiso ~ #
Partitionierung: gdisk
Nachfolgend soll eine Partitionierung der „Festplatte“ eingerichtet werden. Die Partitionierung soll hier beispielhaft mit nachfolgender Festplattenaufteilung durchgeführt werden
Phyische Festplatte/LVM | Größe | Mount-Point | Dateisystem |
---|---|---|---|
/dev/vda |
|||
/dev/vda1 |
|||
/dev/vda1 | 1 GB | /boot | vfat |
/dev/vda2 |
|||
/dev/mapper/archlinux-swap | 1 GB | [SWAP] | swap |
/dev/mapper/archlinux-tmp | 1 GB | /tmp | xfs |
/dev/mapper/archlinux-var_cache | 12 GB | /var/cache | xfs |
/dev/mapper/archlinux-var_log | 4 GB | /var/log | xfs |
/dev/mapper/archlinux-var_spool | 1 GB | /var/spool | xfs |
/dev/mapper/archlinux-root | 16 GB | / | btrfs |
- subvolume - @home | /home | btrfs | |
- subvolume - @opt | /opt | btrfs | |
- subvolume - @srv | /srv | btrfs | |
- subvolume - @usr_local | /usr/local | btrfs | |
- subvolume - @btrfs | /btrfs | btrfs | |
- subvolume - @snapshots | /.snapshots | btrfs | |
SUMME | 36 GB |
Damit die noch unformatiert Festplatte partitioniert werden kann, soll dies mit Unterstützung des Befehl gdisk
durchgeführt werden.
Nachfolgender Befehl listet die aktuelle, noch leere Festplattenkapazitäten auf:
root@archiso ~ # gdisk -l /dev/vda GPT fdisk (gdisk) version 1.0.9 Partition table scan: MBR: not present BSD: not present APM: not present GPT: not present Creating new GPT entries in memory. Disk /dev/vda: 83886080 sectors, 40.0 GiB Sector size (logical/physical): 512/512 bytes Disk identifier (GUID): 29767D3D-A5E1-4CCF-AAFE-6FE6A779FCD9 Partition table holds up to 128 entries Main partition table begins at sector 2 and ends at sector 33 First usable sector is 34, last usable sector is 83886046 Partitions will be aligned on 2048-sector boundaries Total free space is 83886013 sectors (40.0 GiB) Number Start (sector) End (sector) Size Code Name
Schritt 1: gdisk Interaktiver-Modus
ACHTUNG - Die Befehle bitte mit grosser Sorgfalt ausführen, da sonst Beschädigungen am Dateisystem entstehen !!!
ACHTUNG - Bitte darauf achten, nicht versehentlich eine andere Festplatte zu formatieren !!!
ACHTUNG - Hier ist dies /dev/vda
, bitte ggf. an die eigene Umgebung und eigenen Bedürfnisse anpassen !!!
Mit nachfolgenden Befehlen, wird die Festplatte /dev/vda
in Bearbeitung genommen, um diese dann zu partitionieren:
root@archiso ~ # gdisk /dev/vda GPT fdisk (gdisk) version 1.0.9 Partition table scan: MBR: not present BSD: not present APM: not present GPT: not present Creating new GPT entries in memory. Command (? for help):
Schritt 2: Erste Partition anlegen
Durch nachfolgende Befehle wird eine
- neue „primäre“ Partition
- mit der Nummer 1
- und einer Grösse von 1 GB angelegt:
Nachfolgende Tasten sind wie folgt zu drücken:
n
1
[Enter/Return]-Taste = Bestätigung für „First sector (34-41943006, default = 2048)“
- die Eingabe der Größe, durch
+1024M
- und Eingabe des Dateisystem-Codes:
ef00
Command (? for help): n Partition number (1-128, default 1): 1 First sector (34-83886046, default = 2048) or {+-}size{KMGTP}: Last sector (2048-83886046, default = 83884031) or {+-}size{KMGTP}: +1024M 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' Command (? for help):
Anschliessend kann durch drücken der [p
]-Taste die neue Partitionierung aufgelistet werden, was eine Ausgabe wie nachfolgende zur Anzeige bringen sollte:
Command (? for help): p Disk /dev/vda: 83886080 sectors, 40.0 GiB Sector size (logical/physical): 512/512 bytes Disk identifier (GUID): 5F6F2336-A1E9-48C2-8C5D-247B0DBE5F28 Partition table holds up to 128 entries Main partition table begins at sector 2 and ends at sector 33 First usable sector is 34, last usable sector is 83886046 Partitions will be aligned on 2048-sector boundaries Total free space is 81788861 sectors (39.0 GiB) Number Start (sector) End (sector) Size Code Name 1 2048 2099199 1024.0 MiB EF00 EFI system partition Command (? for help):
Schritt 3: Zweite Partition anlegen
Durch nachfolgende Befehle wird eine
- neue „primäre“ Partition
- mit der Nummer 2
- in der Größe der restlichen Festplatte angelegt:
Nachfolgende Tasten sind wie folgt zu drücken:
n
2
[Enter/Return]-Taste = Bestätigung für „First sector (34-83886046, default = 2099200)“
[Enter/Return]-Taste = Bestätigung für „Last sector …“
- und Eingabe des Dateisystem-Codes:
8e00
Command (? for help): n Partition number (2-128, default 2): 2 First sector (34-83886046, default = 2099200) or {+-}size{KMGTP}: Last sector (2099200-83886046, default = 83884031) or {+-}size{KMGTP}: Current type is 8300 (Linux filesystem) Hex code or GUID (L to show codes, Enter = 8300): 8e00 Changed type of partition to 'Linux LVM'
Abschliessend kann durch drücken der [p
]-Taste die neue Partitionierung aufgelistet werden, was eine Ausgabe wie nachfolgende zur Anzeige bringen sollte:
Command (? for help): p Disk /dev/vda: 83886080 sectors, 40.0 GiB Sector size (logical/physical): 512/512 bytes Disk identifier (GUID): 5F6F2336-A1E9-48C2-8C5D-247B0DBE5F28 Partition table holds up to 128 entries Main partition table begins at sector 2 and ends at sector 33 First usable sector is 34, last usable sector is 83886046 Partitions will be aligned on 2048-sector boundaries Total free space is 4029 sectors (2.0 MiB) Number Start (sector) End (sector) Size Code Name 1 2048 2099199 1024.0 MiB EF00 EFI system partition 2 2099200 83884031 39.0 GiB 8E00 Linux LVM
Schritt 4: Partitionstabelle schreiben
Abschliessend sind nun die Tasten
w
- und zur Bestätigung
Y
zu drücken, um die Änderung auch tatsächlich in die Partitionstabelle der Festplatte zu schreiben:
Command (? for help): w Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!! Do you want to proceed? (Y/N): Y OK; writing new GUID partition table (GPT) to /dev/vda. The operation has completed successfully.
LVM
Nachfolgend sollen nur die Bestandteile des Logical VoluMe
- Physisches Volume
- Volume Gruppe
- Logische Volumes
angelegt werden.
Schritt 1: Physische Volume anlegen
Anlegen eines physischen Volume zur Nutzung durch ein LVM mit nachfolgendem Befehl:
root@archiso ~ # pvcreate /dev/vda2 Physical volume "/dev/vda2" successfully created.
ACHTUNG - Bitte hier die zweite Partition verwenden, da die erste Partition für die UEFI-Boot Dateien reserviert ist!
Schritt 2: Volume Gruppe anlegen
Anlegen einer Volume Gruppe mit dem Namen archlinux
zur Nutzung durch ein LVM mit nachfolgendem Befehl:
root@archiso ~ # vgcreate archlinux /dev/vda2 Volume group "archlinux" successfully created
ACHTUNG - Bitte hier die zweite Partition verwenden, da die erste Partition für die UEFI-Boot Dateien reserviert ist!
Schritt 3: Logische Volumes anlegen
Nachfolgende Befehle legen die logischen Volumes
/dev/mapper/archlinux-swap
/dev/mapper/archlinux-tmp
/dev/mapper/archlinux-var_log
/dev/mapper/archlinux-var_cache
/dev/mapper/archlinux-var_spool
/dev/mapper/archlinux-root
zur Nutzung durch ein LVM an:
/dev/mapper/archlinux-swap
root@archiso ~ # lvcreate --name swap -L1024M archlinux Logical volume "swap" created.
/dev/mapper/archlinux-tmp
root@archiso ~ # lvcreate --name tmp -L1024M archlinux Logical volume "tmp" created.
/dev/mapper/archlinux-var_log
root@archiso ~ # lvcreate --name var_log -L4096M archlinux Logical volume "var_log" created.
/dev/mapper/archlinux-var_cache
root@archiso ~ # lvcreate --name var_cache -L12288M archlinux Logical volume "var_cache" created.
/dev/mapper/archlinux-var_spool
root@archiso ~ # lvcreate --name var_spool -L1024M archlinux Logical volume "var_spool" created.
/dev/mapper/archlinux-root
root@archiso ~ # lvcreate --name root -L16384M archlinux Logical volume "root" created.
Mit nachfolgendem Befehl kann überprüft werden, ob die Neuanlagen erfolgreich durchführt wurden:
root@archiso ~ # lsblk /dev/vda NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS vda 254:0 0 40G 0 disk ├─vda1 254:1 0 1G 0 part └─vda2 254:2 0 39G 0 part ├─archlinux-swap 252:0 0 1G 0 lvm ├─archlinux-tmp 252:1 0 1G 0 lvm ├─archlinux-var_log 252:2 0 4G 0 lvm ├─archlinux-var_cache 252:3 0 12G 0 lvm ├─archlinux-var_spool 252:4 0 1G 0 lvm └─archlinux-root 252:5 0 16G 0 lvm
Dateisysteme: formatieren
Nachfolgende Befehle formatieren die zuvor erstellen Partitionen
/dev/vda1
/dev/mapper/archlinux-swap
/dev/mapper/archlinux-tmp
/dev/mapper/archlinux-var_log
/dev/mapper/archlinux-var_cache
/dev/mapper/archlinux-var_spool
/dev/mapper/archlinux-root
mit einem Dateisystem, je nach Partitionstyp:
/dev/vda1
Nachfolgende Befehle formatieren die zuvor erstellen Partition: /dev/vda1
mit dem vfat
-Dateisystem
root@archiso ~ # mkfs.vfat /dev/vda1 mkfs.fat 4.2 (2021-01-31)
/dev/mapper/archlinux-swap
Nachfolgende Befehle formatieren die zuvor erstellen Partition: /dev/mapper/archlinux-swap
mit dem swap
-Dateisystem und einem „Label“: SWAP
root@archiso ~ # mkswap -L SWAP /dev/mapper/archlinux-swap Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes) LABEL=SWAP, UUID=4c6fea8a-a64d-414e-af9d-78381beabbda
/dev/mapper/archlinux-tmp
Nachfolgende Befehle formatieren die zuvor erstellen Partition: /dev/mapper/archlinux-tmp
mit dem xfs
-Dateisystem und einem „Label“: TMP
root@archiso ~ # mkfs.xfs -L TMP /dev/mapper/archlinux-tmp meta-data=/dev/mapper/archlinux-tmp isize=512 agcount=4, agsize=65536 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 bigtime=1 inobtcount=1 nrext64=0 data = bsize=4096 blocks=262144, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=16384, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 Discarding blocks...Done.
/dev/mapper/archlinux-var_log
Nachfolgende Befehle formatieren die zuvor erstellen Partition: /dev/mapper/archlinux-var_log
mit dem xfs
-Dateisystem und einem „Label“: VAR_LOG
root@archiso ~ # mkfs.xfs -L VAR_LOG /dev/mapper/archlinux-var_log meta-data=/dev/mapper/archlinux-var_log isize=512 agcount=4, agsize=262144 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 bigtime=1 inobtcount=1 nrext64=0 data = bsize=4096 blocks=1048576, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=16384, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 Discarding blocks...Done.
/dev/mapper/archlinux-var_cache
Nachfolgende Befehle formatieren die zuvor erstellen Partition: /dev/mapper/archlinux-var_cache
mit dem xfs
-Dateisystem und einem „Label“: VAR_CACHE
root@archiso ~ # mkfs.xfs -L VAR_CACHE /dev/mapper/archlinux-var_cache meta-data=/dev/mapper/archlinux-var_cache isize=512 agcount=4, agsize=786432 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 bigtime=1 inobtcount=1 nrext64=0 data = bsize=4096 blocks=3145728, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=16384, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 Discarding blocks...Done.
/dev/mapper/archlinux-var_spool
Nachfolgende Befehle formatieren die zuvor erstellen Partition: /dev/mapper/archlinux-var_spool
mit dem xfs
-Dateisystem und einem „Label“: VAR_SPOOL
root@archiso ~ # mkfs.xfs -L VAR_SPOOL /dev/mapper/archlinux-var_spool meta-data=/dev/mapper/archlinux-var_spool isize=512 agcount=4, agsize=65536 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 bigtime=1 inobtcount=1 nrext64=0 data = bsize=4096 blocks=262144, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=16384, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 Discarding blocks...Done.
/dev/mapper/archlinux-root
Nachfolgende Befehle formatieren die zuvor erstellen Partition: /dev/mapper/archlinux-root
mit dem btrfs
-Dateisystem und einem „Label“: ROOT
root@archiso ~ # mkfs.btrfs -L ROOT /dev/mapper/archlinux-root btrfs-progs v6.0 See http://btrfs.wiki.kernel.org for more information. Performing full device TRIM /dev/mapper/archlinux-root (16.00GiB) ... NOTE: several default settings have changed in version 5.15, please make sure this does not affect your deployments: - DUP for metadata (-m dup) - enabled no-holes (-O no-holes) - enabled free-space-tree (-R free-space-tree) Label: ROOT UUID: f6727a9b-22fc-4011-9f25-4fea20e7acc7 Node size: 16384 Sector size: 4096 Filesystem size: 16.00GiB Block group profiles: Data: single 8.00MiB Metadata: DUP 256.00MiB System: DUP 8.00MiB SSD detected: no Zoned device: no Incompat features: extref, skinny-metadata, no-holes Runtime features: free-space-tree Checksum: crc32c Number of devices: 1 Devices: ID SIZE PATH 1 16.00GiB /dev/mapper/archlinux-root
Dateisysteme: mounten
Nachfolgende Befehle mounted (einhängen) die zuvor erstellen Partitionen
/dev/vda1
-/mnt/boot
/dev/mapper/archlinux-swap
-/mnt/swap
/dev/mapper/archlinux-tmp
-/mnt/tmp
/dev/mapper/archlinux-var_log
-/mnt/var/log
/dev/mapper/archlinux-var_cache
-/mnt/var/cache
/dev/mapper/archlinux-var_spool
-/mnt/var/spool
/dev/mapper/archlinux-root
-/mnt
/dev/mapper/archlinux-root
- subvolume -/mnt/@home
/dev/mapper/archlinux-root
- subvolume -/mnt/@opt
/dev/mapper/archlinux-root
- subvolume -/mnt/@srv
/dev/mapper/archlinux-root
- subvolume -/mnt/@usr_local
/dev/mapper/archlinux-root
- subvolume -/mnt/@btrfs
/dev/mapper/archlinux-root
- subvolume -/.@snapshots
mit einem Dateisystem, je nach Partitionstyp:
mount: /dev/mapper/archlinux-root
Bevor nun die einzelnen vfat: Partition und Mount-Point, xfs: Partitionen und Mount-Points und btrfs: Partitionen, Subvolumes und Mount-Points erzeugt bzw. gemounted (eingehängt) werden können, muss die Partition: /dev/mapper/archlinux-root
zuerst auf z.B.
/mnt
gemountet werden:
root@archiso ~ # mount /dev/mapper/archlinux-root /mnt
btrfs: Subvolume erstellen
Um die btrfs: Partitionen, Subvolumes und Mount-Points mounten zu können, ist es erforderlich das entsprechende Subvolume und den Mount-Point im Dateisystem unter /mnt
zu erstellen, und anschliessend zu mounten, was mit den drei nachfolgenden Befehlen durchgeführt werden kann:
Subvolume erstellen:
root@archiso ~ # btrfs subvolume create /mnt/@root Create subvolume '/mnt/@root'
root@archiso ~ # btrfs subvolume create /mnt/@home Create subvolume '/mnt/@home'
root@archiso ~ # btrfs subvolume create /mnt/@opt Create subvolume '/mnt/@opt'
root@archiso ~ # btrfs subvolume create /mnt/@srv Create subvolume '/mnt/@srv'
root@archiso ~ # btrfs subvolume create /mnt/@usr_local Create subvolume '/mnt/@usr_local'
root@archiso ~ # btrfs subvolume create /mnt/@btrfs Create subvolume '/mnt/@btrfs'
root@archiso ~ # btrfs subvolume create /mnt/@snapshots Create subvolume '/mnt/@snapshots'
umount: /mnt
Anschliessend ist der Mount-Point - /mnt
wieder zu umounten, damit dieser im nachfolgenden Schritt mit den entsprechenden Btrfs-Optionen auf den neu erstellten Mount-Point gemountet werden kann:
# umount /mnt
btrfs: /dev/mapper/archlinux-root
Jetzt kann der Mount-Point mit den Btrfs-Optionen mit nachfolgendem Befehl gemountet werden:
Mount-Point einhängen:
# mount -o rw,relatime,compress=zstd:3,space_cache=v2,subvol=/@root /dev/mapper/archlinux-root /mnt
vfat: /dev/vda1
Um die vfat: Partition mounten zu können, ist es erforderlich den entsprechenden Mount-Point im Dateisystem unter /mnt
zu erstellen und anschliessend zu mounten, was mit den beiden nachfolgenden Befehlen durchgeführt werden kann:
Mount-Point erstellen:
# mkdir /mnt/boot
Mount-Point einhängen:
# mount /dev/vda1 /mnt/boot
swap: /dev/mapper/archlinux-swap
Um die swap: Partition mounten zu können, ist es nur erforderlich diese zu aktivieren, da hier kein entsprechenden Mount-Point erforderlich ist:
Mount-Point aktivieren:
# swapon /dev/mapper/archlinux-swap
xfs: /dev/mapper/archlinux-tmp
Um die xfs: Partition mounten zu können, ist es erforderlich den entsprechenden Mount-Point im Dateisystem unter /mnt
zu erstellen und anschliessend zu mounten, was mit den beiden nachfolgenden Befehlen durchgeführt werden kann:
Mount-Point erstellen:
# mkdir /mnt/tmp
Mount-Point einhängen:
# mount /dev/mapper/archlinux-tmp /mnt/tmp
xfs: /dev/mapper/archlinux-var_log
Um die xfs: Partition mounten zu können, ist es erforderlich den entsprechenden Mount-Point im Dateisystem unter /mnt
zu erstellen und anschließend zu mounten, was mit den beiden nachfolgenden Befehlen durchgeführt werden kann:
Mount-Point erstellen:
# mkdir -p /mnt/var/log
Mount-Point einhängen:
# mount /dev/mapper/archlinux-var_log /mnt/var/log
xfs: /dev/mapper/archlinux-var_cache
Um die xfs: Partition mounten zu können, ist es erforderlich den entsprechenden Mount-Point im Dateisystem unter /mnt
zu erstellen und anschliessend zu mounten, was mit den beiden nachfolgenden Befehlen durchgeführt werden kann:
Mount-Point erstellen:
# mkdir -p /mnt/var/cache
Mount-Point einhängen:
# mount /dev/mapper/archlinux-var_cache /mnt/var/cache
xfs: /dev/mapper/archlinux-var_spool
Um die xfs: Partition mounten zu können, ist es erforderlich den entsprechenden Mount-Point im Dateisystem unter /mnt
zu erstellen und anschliessend zu mounten, was mit den beiden nachfolgenden Befehlen durchgeführt werden kann:
Mount-Point erstellen:
# mkdir -p /mnt/var/spool
Mount-Point einhängen:
# mount /dev/mapper/archlinux-var_spool /mnt/var/spool
btrfs: /mnt/@home
Um die btrfs: Partitionen, Subvolumes und Mount-Points mounten zu können, ist es erforderlich das entsprechende Subvolume und den Mount-Point im Dateisystem unter /mnt
zu erstellen, und anschliessend zu mounten, was mit den drei nachfolgenden Befehlen durchgeführt werden kann:
Mount-Point erstellen:
# mkdir -p /mnt/home
Mount-Point einhängen:
# mount -o rw,relatime,compress=zstd:3,space_cache=v2,subvol=/@home /dev/mapper/archlinux-root /mnt/home
btrfs: /mnt/@opt
Um die btrfs: Partitionen, Subvolumes und Mount-Points mounten zu können, ist es erforderlich das entsprechende Subvolume und den Mount-Point im Dateisystem unter /mnt
zu erstellen, und anschliessend zu mounten, was mit den drei nachfolgenden Befehlen durchgeführt werden kann:
Mount-Point erstellen:
# mkdir -p /mnt/opt
Mount-Point einhängen:
# mount -o rw,relatime,compress=zstd:3,space_cache=v2,subvol=/@opt /dev/mapper/archlinux-root /mnt/opt
btrfs: /mnt/@srv
Um die btrfs: Partitionen, Subvolumes und Mount-Points mounten zu können, ist es erforderlich das entsprechende Subvolume und den Mount-Point im Dateisystem unter /mnt
zu erstellen, und anschliessend zu mounten, was mit den drei nachfolgenden Befehlen durchgeführt werden kann:
Mount-Point erstellen:
# mkdir -p /mnt/srv
Mount-Point einhängen:
# mount -o rw,relatime,compress=zstd:3,space_cache=v2,subvol=/@srv /dev/mapper/archlinux-root /mnt/srv
btrfs: /mnt/@usr_local
Um die btrfs: Partitionen, Subvolumes und Mount-Points mounten zu können, ist es erforderlich das entsprechende Subvolume und den Mount-Point im Dateisystem unter /mnt
zu erstellen, und anschliessend zu mounten, was mit den drei nachfolgenden Befehlen durchgeführt werden kann:
Mount-Point erstellen:
# mkdir -p /mnt/usr/local
Mount-Point einhängen:
# mount -o rw,relatime,compress=zstd:3,space_cache=v2,subvol=/@usr_local /dev/mapper/archlinux-root /mnt/usr/local
btrfs: /mnt/@btrfs
Um die btrfs: Partitionen, Subvolumes und Mount-Points mounten zu können, ist es erforderlich das entsprechende Subvolume und den Mount-Point im Dateisystem unter /mnt
zu erstellen, und anschliessend zu mounten, was mit den drei nachfolgenden Befehlen durchgeführt werden kann:
Mount-Point erstellen:
# mkdir -p /mnt/btrfs
Mount-Point einhängen:
# mount -o rw,relatime,compress=zstd:3,space_cache=v2,subvolid=5 /dev/mapper/archlinux-root /mnt/btrfs
ACHTUNG - Bitte die abweichenden Mount-Point Optionen beachten!
btrfs: /mnt/@snapshots
Um die btrfs: Partitionen, Subvolumes und Mount-Points mounten zu können, ist es erforderlich das entsprechende Subvolume zu erstellen, das mounten wird zu einem späteren Zeitpunkt erfolgen, siehe auch den nachfolgenden internen Link:
ACHTUNG - Es wird kein Mount-Point erstellt und es erfolgt auch kein mount (einhängen) !
Mit nachfolgendem Befehlen kann erneut überprüft werden, ob die Konfigurationen erfolgreich durchführt wurden:
root@archiso ~ # lsblk /dev/vda NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS vda 254:0 0 40G 0 disk ├─vda1 254:1 0 1G 0 part /mnt/boot └─vda2 254:2 0 39G 0 part ├─archlinux-swap 252:0 0 1G 0 lvm [SWAP] ├─archlinux-tmp 252:1 0 1G 0 lvm /mnt/tmp ├─archlinux-var_log 252:2 0 4G 0 lvm /mnt/var/log ├─archlinux-var_cache 252:3 0 12G 0 lvm /mnt/var/cache ├─archlinux-var_spool 252:4 0 1G 0 lvm /mnt/var/spool └─archlinux-root 252:5 0 16G 0 lvm /mnt/btrfs /mnt/usr/local /mnt/srv /mnt/opt /mnt/home /mnt
root@archiso ~ # ls -l /mnt total 20 drwxr-xr-x 2 root root 4096 Jan 1 1970 boot drwxr-xr-x 1 root root 88 Nov 6 14:39 btrfs drwxr-xr-x 1 root root 0 Nov 6 14:38 home drwxr-xr-x 1 root root 0 Nov 6 14:38 opt drwxr-xr-x 1 root root 0 Nov 6 14:38 srv drwxr-xr-x 2 root root 6 Nov 6 14:38 tmp drwxr-xr-x 1 root root 10 Nov 6 14:41 usr drwxr-xr-x 1 root root 26 Nov 6 14:40 var
Installation: Basissystem
/etc/pacman.d/mirrorlist
Bevor die eigentliche Installation des Basissystems erfolgen kann, soll noch eine länderspezifische Auswahl der Installationsquellen getroffen werden, damit die Installation über das Internet möglichst von regionalen Servern, hier aus Deutschland, erfolgen kann. Die Ermittlung der Server soll hier nach deren Erreichbarkeit, sprich der Geschwindigkeit sortiert werden = ––sort rate
, es wäre jedoch auch die Sortierung nach Aktualität = ––sort age
eine weitere Möglichkeit.
Dazu ist die Optimierung der Konfigurationsdatei
/etc/pacman.d/mirrorlist
erforderlich.
Um nur die regionalen Server, hier nur aus Deutschland, in der Konfigurationsdatei /etc/pacman.d/mirrorlist
vorzufinden, kann nachfolgender Befehl verwendet werden:
reflector \ --verbose \ --country Germany \ -l 200 \ -p https \ --sort rate \ --save /etc/pacman.d/mirrorlist
root@archiso ~ # reflector --verbose --country Germany -l 200 -p https --sort rate --save /etc/pacman.d/mirrorlist [2022-11-06 11:59:36] INFO: rating 42 mirror(s) by download speed [2022-11-06 11:59:36] INFO: Server Rate Time [2022-11-06 11:59:37] INFO: https://phinau.de/arch/ 10873.41 KiB/s 0.68 s [2022-11-06 11:59:39] INFO: https://archlinux.thaller.ws/ 4933.86 KiB/s 1.49 s [2022-11-06 11:59:39] INFO: https://mirror.f4st.host/archlinux/ 12172.11 KiB/s 0.61 s [2022-11-06 11:59:40] INFO: https://mirror.chaoticum.net/arch/ 12312.18 KiB/s 0.60 s [2022-11-06 11:59:46] WARNING: failed to rate http(s) download (https://ftp.halifax.rwth-aachen.de/archlinux/community/os/x86_64/community.db): Download timed out after 5 second(s). [2022-11-06 11:59:46] INFO: https://ftp.halifax.rwth-aachen.de/archlinux/ 0.00 KiB/s 0.00 s [2022-11-06 11:59:46] INFO: https://mirrors.niyawe.de/archlinux/ 12016.27 KiB/s 0.61 s [2022-11-06 11:59:47] INFO: https://mirror.pseudoform.org/ 11966.13 KiB/s 0.62 s [2022-11-06 11:59:48] INFO: https://pkg.fef.moe/archlinux/ 12109.15 KiB/s 0.61 s [2022-11-06 11:59:53] INFO: https://de.arch.mirror.kescher.at/ 1752.78 KiB/s 4.20 s [2022-11-06 11:59:53] INFO: https://mirror.metalgamer.eu/archlinux/ 12506.60 KiB/s 0.59 s [2022-11-06 11:59:55] INFO: https://mirror.moson.org/arch/ 12466.59 KiB/s 0.59 s [2022-11-06 11:59:56] INFO: https://mirror.ubrco.de/archlinux/ 12540.85 KiB/s 0.59 s [2022-11-06 11:59:57] INFO: https://packages.oth-regensburg.de/archlinux/ 11349.69 KiB/s 0.65 s [2022-11-06 11:59:58] INFO: https://arch.unixpeople.org/ 12124.03 KiB/s 0.61 s [2022-11-06 11:59:58] INFO: https://mirrors.xtom.de/archlinux/ 11989.98 KiB/s 0.61 s [2022-11-06 11:59:59] INFO: https://mirror.cmt.de/archlinux/ 12329.82 KiB/s 0.60 s [2022-11-06 12:00:00] INFO: https://mirrors.n-ix.net/archlinux/ 12731.23 KiB/s 0.58 s [2022-11-06 12:00:01] INFO: https://dist-mirror.fem.tu-ilmenau.de/archlinux/ 11384.48 KiB/s 0.65 s [2022-11-06 12:00:02] INFO: https://os.codefionn.eu/archlinux/ 12317.71 KiB/s 0.60 s [2022-11-06 12:00:02] INFO: https://mirror.fra10.de.leaseweb.net/archlinux/ 12345.65 KiB/s 0.60 s [2022-11-06 12:00:03] INFO: https://arch.mirror.zachlge.org/ 8252.54 KiB/s 0.89 s [2022-11-06 12:00:04] INFO: https://mirror.iusearchbtw.nl/ 11922.45 KiB/s 0.62 s [2022-11-06 12:00:05] INFO: https://mirror.selfnet.de/archlinux/ 12269.73 KiB/s 0.60 s [2022-11-06 12:00:06] INFO: https://mirror.kumi.systems/archlinux/ 9649.21 KiB/s 0.76 s [2022-11-06 12:00:07] INFO: https://mirror.jaime.sh/archlinux/ 10049.69 KiB/s 0.73 s [2022-11-06 12:00:08] INFO: https://archlinux.homeinfo.de/ 11985.47 KiB/s 0.61 s [2022-11-06 12:00:09] INFO: https://mirror.23m.com/archlinux/ 11861.88 KiB/s 0.62 s [2022-11-06 12:00:10] INFO: https://mirror.pagenotfound.de/archlinux/ 11994.04 KiB/s 0.61 s [2022-11-06 12:00:11] INFO: https://mirror.dogado.de/archlinux/ 10849.85 KiB/s 0.68 s [2022-11-06 12:00:12] INFO: https://ftp.fau.de/archlinux/ 11921.72 KiB/s 0.62 s [2022-11-06 12:00:13] INFO: https://mirror.mikrogravitation.org/archlinux/ 11732.22 KiB/s 0.63 s [2022-11-06 12:00:14] INFO: https://mirror.gnomus.de/ 11928.04 KiB/s 0.62 s [2022-11-06 12:00:14] INFO: https://mirror.informatik.tu-freiberg.de/arch/ 10673.78 KiB/s 0.69 s [2022-11-06 12:00:15] INFO: https://mirror.clientvps.com/archlinux/ 11838.74 KiB/s 0.62 s [2022-11-06 12:00:16] INFO: https://mirrors.janbruckner.de/archlinux/ 10055.84 KiB/s 0.73 s [2022-11-06 12:00:17] INFO: https://mirror.netcologne.de/archlinux/ 12055.75 KiB/s 0.61 s [2022-11-06 12:00:18] INFO: https://ftp.spline.inf.fu-berlin.de/mirrors/archlinux/ 9374.31 KiB/s 0.79 s [2022-11-06 12:00:19] INFO: https://mirror.bethselamin.de/ 12501.79 KiB/s 0.59 s [2022-11-06 12:00:19] WARNING: failed to rate http(s) download (https://mirror.checkdomain.de/archlinux/community/os/x86_64/community.db): HTTP Error 403: Forbidden [2022-11-06 12:00:19] INFO: https://mirror.checkdomain.de/archlinux/ 0.00 KiB/s 0.00 s [2022-11-06 12:00:20] INFO: https://ftp.wrz.de/pub/archlinux/ 12018.29 KiB/s 0.61 s [2022-11-06 12:00:21] INFO: https://ftp.agdsn.de/pub/mirrors/archlinux/ 11138.41 KiB/s 0.66 s [2022-11-06 12:00:22] INFO: https://appuals.com/archlinux/ 13028.31 KiB/s 0.57 s
Der so generierte Inhalt der Konfigurationsdatei /etc/pacman.d/mirrorlist
kann zur Kontrolle mit nachfolgendem Befehl ausgegeben werden:
root@archiso ~ # cat /etc/pacman.d/mirrorlist ################################################################################ ################# Arch Linux mirrorlist generated by Reflector ################# ################################################################################ # With: reflector --verbose --country Germany -l 200 -p https --sort rate --save /etc/pacman.d/mirrorlist # When: 2022-11-06 12:00:22 UTC # From: https://archlinux.org/mirrors/status/json/ # Retrieved: 2022-11-06 11:59:36 UTC # Last Check: 2022-11-06 11:34:37 UTC Server = https://appuals.com/archlinux/$repo/os/$arch Server = https://mirrors.n-ix.net/archlinux/$repo/os/$arch Server = https://mirror.ubrco.de/archlinux/$repo/os/$arch Server = https://mirror.metalgamer.eu/archlinux/$repo/os/$arch Server = https://mirror.bethselamin.de/$repo/os/$arch Server = https://mirror.moson.org/arch/$repo/os/$arch Server = https://mirror.fra10.de.leaseweb.net/archlinux/$repo/os/$arch Server = https://mirror.cmt.de/archlinux/$repo/os/$arch Server = https://os.codefionn.eu/archlinux/$repo/os/$arch Server = https://mirror.chaoticum.net/arch/$repo/os/$arch Server = https://mirror.selfnet.de/archlinux/$repo/os/$arch Server = https://mirror.f4st.host/archlinux/$repo/os/$arch Server = https://arch.unixpeople.org/$repo/os/$arch Server = https://pkg.fef.moe/archlinux/$repo/os/$arch Server = https://mirror.netcologne.de/archlinux/$repo/os/$arch Server = https://ftp.wrz.de/pub/archlinux/$repo/os/$arch Server = https://mirrors.niyawe.de/archlinux/$repo/os/$arch Server = https://mirror.pagenotfound.de/archlinux/$repo/os/$arch Server = https://mirrors.xtom.de/archlinux/$repo/os/$arch Server = https://archlinux.homeinfo.de/$repo/os/$arch Server = https://mirror.pseudoform.org/$repo/os/$arch Server = https://mirror.gnomus.de/$repo/os/$arch Server = https://mirror.iusearchbtw.nl/$repo/os/$arch Server = https://ftp.fau.de/archlinux/$repo/os/$arch Server = https://mirror.23m.com/archlinux/$repo/os/$arch Server = https://mirror.clientvps.com/archlinux/$repo/os/$arch Server = https://mirror.mikrogravitation.org/archlinux/$repo/os/$arch Server = https://dist-mirror.fem.tu-ilmenau.de/archlinux/$repo/os/$arch Server = https://packages.oth-regensburg.de/archlinux/$repo/os/$arch Server = https://ftp.agdsn.de/pub/mirrors/archlinux/$repo/os/$arch Server = https://phinau.de/arch/$repo/os/$arch Server = https://mirror.dogado.de/archlinux/$repo/os/$arch Server = https://mirror.informatik.tu-freiberg.de/arch/$repo/os/$arch Server = https://mirrors.janbruckner.de/archlinux/$repo/os/$arch Server = https://mirror.jaime.sh/archlinux/$repo/os/$arch Server = https://mirror.kumi.systems/archlinux/$repo/os/$arch Server = https://ftp.spline.inf.fu-berlin.de/mirrors/archlinux/$repo/os/$arch Server = https://arch.mirror.zachlge.org/$repo/os/$arch Server = https://archlinux.thaller.ws/$repo/os/$arch Server = https://de.arch.mirror.kescher.at/$repo/os/$arch Server = https://ftp.halifax.rwth-aachen.de/archlinux/$repo/os/$arch Server = https://mirror.checkdomain.de/archlinux/$repo/os/$arch
/etc/pacman.d/gnupg
Um aktuelles Schlüsselmaterial zu erhalten, mit dem die Pakete unter Archlinux signiert sind, sind nachfolgende Befehle erforderlich:
Schlüsselbund initialisieren:
root@archiso ~ # pacman-key --init gpg: /etc/pacman.d/gnupg/trustdb.gpg: trustdb created gpg: no ultimately trusted keys found gpg: starting migration from earlier GnuPG versions gpg: porting secret keys from '/etc/pacman.d/gnupg/secring.gpg' to gpg-agent gpg: migration succeeded ==> Generating pacman master key. This may take some time. gpg: Generating pacman keyring master key... gpg: directory '/etc/pacman.d/gnupg/openpgp-revocs.d' created gpg: revocation certificate stored as '/etc/pacman.d/gnupg/openpgp-revocs.d/5A14E456526255A41AA3D96A9537A3AFB2E0380B.rev' gpg: Done ==> Updating trust database... gpg: marginals needed: 3 completes needed: 1 trust model: pgp gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
Schlüsselmaterial bekanntgeben:
root@archiso ~ # pacman-key --populate archlinux ==> Appending keys from archlinux.gpg... ==> Locally signing trusted keys in keyring... -> Locally signed 6 keys. ==> Importing owner trust values... gpg: setting ownertrust to 4 gpg: setting ownertrust to 4 gpg: setting ownertrust to 4 gpg: setting ownertrust to 4 gpg: inserting ownertrust of 4 gpg: setting ownertrust to 4 ==> Disabling revoked keys in keyring... -> Disabled 52 keys. ==> Updating trust database... gpg: marginals needed: 3 completes needed: 1 trust model: pgp gpg: depth: 0 valid: 1 signed: 6 trust: 0-, 0q, 0n, 0m, 0f, 1u gpg: depth: 1 valid: 6 signed: 94 trust: 0-, 0q, 0n, 6m, 0f, 0u gpg: depth: 2 valid: 74 signed: 28 trust: 74-, 0q, 0n, 0m, 0f, 0u gpg: next trustdb check due at 2022-11-16 pacman-key --populate archlinux 4.94s user 0.63s system 97% cpu 5.712 total
Basissystem: /mnt
Der folgende Befehl führt nun die Installation von ArchLinux auf der zuvor eingerichteten Festplatte bzw. den Partitionen aus:
pacstrap /mnt \ base \ base-devel \ linux-lts \ linux-firmware \ lvm2 \ dosfstools \ xfsprogs \ btrfs-progs \ openssh \ sshpass \ vi \ vim \ python \ python-netaddr
WICHTIG - Die Pakete lvm2
, dosfstools
, xfsprogs
und btrfs-progs
sind hier wichtig!
root@archiso ~ # pacstrap /mnt base base-devel linux-lts linux-firmware lvm2 dosfstools xfsprogs btrfs-progs vi vim openssh sshpass python python-netaddr
In den Mount-Point
/mnt
und alle darunterliegenden,
werden nachfolgende Paketgruppen bzw. Pakete
base
- Metapaket für ein minimales System.base-devel
- Gruppe für Pakete zum Paketbau (empfohlen).linux-lts
- Der Arch Linux (Long Time Support)-Kernel. (Alternativen: linux, linux-hardened)linux-firmware
- Firmware für verschiedene Hardware.lvm2
- Einbindung von LVM Volumesdosfstools
- Verwaltungsprogramme unter anderem für das Dateisystem: vfatxfsprogs
- Verwaltungsprogramme für das Dateisystem: xfsbtrfs-progs
- Verwaltungsprogramme für das Dateisystem: Btrfsvi
- Texteditor für dieshell
vim
- Texteditor für dieshell
mit Text-Highlighting
installiert.
Optional, aber dringend empfohlen, sind nachfolgende Pakete:
openssh
- SSH-Server und SSH-Werkzeuge, da sonst kein SSH-Login auf den Server möglich ist.sshpass
- SSH-Client ermöglichen, ein Passwort interaktiv abzufragen.python
- Programmierumgebungpython
python-netaddr
- Erweiterung der Programmierumgebungpython
um Netzwerkfähigkeiten
Systemkonfiguration: /mnt
/etc/fstab erstellen
Nachfolgender Befehl erzeugt die Konfigurationsdatei /etc/fstab
:
root@archiso ~ # genfstab -Up /mnt > /mnt/etc/fstab
WICHTIG - Nachfolgende Änderungen sind durchzuführen, da sonst NICHT von einem „Snapshot“ gestartet werden kann !!!
Änderungen
- Entfernen der
subvolid
beim Eintrag für das/
(root)-Verzeichnis und bei allen Einträgen, welche nicht -subvolid=5
haben - wie z.B. -subvolid=2..
, da sonst generell nicht von einem „Snapshot“ gestartet werden kann !!!.
Die Änderungen können durch Aufruf von nachfolgendem Befehl durchgeführt werden:
root@archiso ~ # sed -i 's/subvolid=2..,//g' /mnt/etc/fstab
Der so erzeugte Inhalt, kann mit nachfolgendem Befehl überprüft werden und sollte eine Ausgabe wie die nachfolgende zum Vorschein bringen:
root@archiso ~ # cat /mnt/etc/fstab # /dev/mapper/archlinux-root LABEL=ROOT UUID=a7685380-734d-4cd1-b81a-f849011250d9 / btrfs rw,relatime,compress=zstd:3,space_cache=v2,subvol=/@root 0 1 # /dev/vda1 UUID=6D00-20D3 /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 2 # /dev/mapper/archlinux-tmp LABEL=TMP UUID=db66e348-0be6-439c-8301-3a13e6554ffd /tmp xfs rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota 0 2 # /dev/mapper/archlinux-var_log LABEL=VAR_LOG UUID=bc2b1278-2b8f-427c-8c0d-30483824b56d /var/log xfs rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota 0 2 # /dev/mapper/archlinux-var_cache LABEL=VAR_CACHE UUID=b9d00851-f31e-4c47-924b-2c0bada3b416 /var/cache xfs rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota 0 2 # /dev/mapper/archlinux-var_spool LABEL=VAR_SPOOL UUID=96fbee50-398f-4f03-ae8a-e07205bdb850 /var/spool xfs rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota 0 2 # /dev/mapper/archlinux-root LABEL=ROOT UUID=a7685380-734d-4cd1-b81a-f849011250d9 /home btrfs rw,relatime,compress=zstd:3,space_cache=v2,subvol=/@home 0 2 # /dev/mapper/archlinux-root LABEL=ROOT UUID=a7685380-734d-4cd1-b81a-f849011250d9 /opt btrfs rw,relatime,compress=zstd:3,space_cache=v2,subvol=/@opt 0 2 # /dev/mapper/archlinux-root LABEL=ROOT UUID=a7685380-734d-4cd1-b81a-f849011250d9 /srv btrfs rw,relatime,compress=zstd:3,space_cache=v2,subvol=/@srv 0 2 # /dev/mapper/archlinux-root LABEL=ROOT UUID=a7685380-734d-4cd1-b81a-f849011250d9 /usr/local btrfs rw,relatime,compress=zstd:3,space_cache=v2,subvol=/@usr_local 0 2 # /dev/mapper/archlinux-root LABEL=ROOT UUID=a7685380-734d-4cd1-b81a-f849011250d9 /btrfs btrfs rw,relatime,compress=zstd:3,space_cache=v2,subvolid=5,subvol=/ 0 2 # /dev/mapper/archlinux-swap LABEL=SWAP UUID=b9f0f99f-e67d-483c-935c-3bcadc0532ad none swap defaults 0 0
Archlinux: Chroot-Konfiguration
arch-chroot /mnt
Jetzt ist es an der Zeit, in das installierte System zu wechseln und weitere Konfigurationen vorzunehmen, was mit nachfolgendem Befehl durchgeführt werden kann:
root@archiso ~ # arch-chroot /mnt/ [root@archiso /]#
WICHTIG - Der Prompt
sollte sich nun auf [root@archiso /]#
geändert haben!
/etc/hostname
Nachfolgender Befehl setzt den Hostnamen für den Server:
# echo vmtest > /etc/hostname
/etc/locale.conf
Nachfolgender Befehl setzt die Systemsprache auf English-US Ausprägung UTF-8
(Für Deutsch-DE Ausprägung UTF-8, wäre de_DE.UTF-8
zu setzen!)
# echo LANG=en_US.UTF-8 > /etc/locale.conf
/etc/locale.gen
Nachfolgende Veränderungen der Konfigurationsdatei /etc/locale.gen
de_DE.UTF-8 UTF-8
de_DE ISO-8859-1
de_DE@euro ISO-8859-15
en_US.UTF-8 UTF-8
en_US ISO-8859-1
setzen die erweiterten Systemsprachenspezifikation auf
- Deutsch-DE Ausprägung UTF-8 und
- English-US Ausprägung UTF-8
durch ein kommentieren der entsprechenden Systemsprache.
Nachfolgend soll die Konfigurationsdatei mit dem Text-Editor vim
entsprechend abgeändert werden:
[root@archiso /]# vim /etc/locale.gen
Nachfolgender Befehl gibt zur Kontrolle, nur die ein kommentieren Zeilen der Konfigurationsdatei /etc/locale.gen
aus:
[root@archiso /]# grep -E -v '(^#|^$)' /etc/locale.gen de_DE.UTF-8 UTF-8 de_DE ISO-8859-1 de_DE@euro ISO-8859-15 en_US.UTF-8 UTF-8 en_US ISO-8859-1
Der abschliessende Befehl setzt die Konfiguration dann im System um:
[root@archiso /]# locale-gen Generating locales... de_DE.UTF-8... done de_DE.ISO-8859-1... done de_DE.ISO-8859-15@euro... done en_US.UTF-8... done en_US.ISO-8859-1... done Generation complete.
/etc/vconsole.conf
Nachfolgende Befehle legen das Tastaturlayout:
[root@archiso /]# echo KEYMAP=de-latin1-nodeadkeys > /etc/vconsole.conf
und die Schriftart der shell
/ console
fest:
[root@archiso /]# echo FONT=lat9w-16 >> /etc/vconsole.conf
/etc/localtime
Nachfolgender Befehl legt einen Verweis (Link) auf die zu verwendende Zeitzone, hier Europe/Berlin fest:
[root@archiso /]# ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime
/etc/hosts
Nachfolgende Befehle erstellen die Konfigurationsdatei /etc/hosts
und füllen diese mit den Standardeinträgen für localhost
aus:
[root@archiso /]# echo -e '#<ip-address> <hostname.domain.org> <hostname>' >> /etc/hosts [root@archiso /]# echo -e '127.0.0.1 localhost.localdomain localhost' >> /etc/hosts [root@archiso /]# echo -e '::1 localhost.localdomain localhost' >> /etc/hosts
HINWEIS - Eine Ausrichtung der einzelnen Zeilen muss ebenfalls durch Verwendung des Texteditors vim
durchgeführt werden.
Nachfolgend soll die Konfigurationsdatei mit dem Text-Editor vim
entsprechend abgeändert werden:
[root@archiso /]# vim /etc/hosts
Der Inhalt der Konfigurationsdatei /etc/hosts
sollte dann wie folgt aussehen:
[root@archiso /]# cat /etc/hosts # Static table lookup for hostnames. # See hosts(5) for details. #<ip-address> <hostname.domain.org> <hostname> 127.0.0.1 localhost.localdomain localhost ::1 localhost.localdomain localhost
/etc/resolv.conf
HINWEIS - Der Namensserver aus dem LIVE-System sollte bereits vorhanden sein!
Zuerst sollte die Konfigurationsdatei /etc/resolv.conf
durch nachfolgenden Befehl überprüft werden, ob diese nicht bereits ausreichend konfiguriert ist:
[root@archiso /]# cat /etc/resolv.conf # This is /run/systemd/resolve/stub-resolv.conf managed by man:systemd-resolved(8). # Do not edit. # # This file might be symlinked as /etc/resolv.conf. If you're looking at # /etc/resolv.conf and seeing this text, you have followed the symlink. # # This is a dynamic resolv.conf file for connecting local clients to the # internal DNS stub resolver of systemd-resolved. This file lists all # configured search domains. # # Run "resolvectl status" to see details about the uplink DNS servers # currently in use. # # Third party programs should typically not access this file directly, but only # through the symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a # different way, replace this symlink by a static file or a different symlink. # # See man:systemd-resolved.service(8) for details about the supported modes of # operation for /etc/resolv.conf. nameserver 127.0.0.53 options edns0 trust-ad search .
In der Konfigurationsdatei /etc/resolv.conf
können nun weiter sich im Netzwerk verfügbaren Namensserver (mindestens ein Namensserver), oder zusätzliche Namensserver aus dem Internet gesetzt werden, was mit nachfolgenden Befehl durchgeführt werden kann.
[root@archiso /]# echo 'nameserver 192.168.122.1' > /etc/resolv.conf
HINWEIS - Die Wiederholung des nachfolgenden Befehls mit weiteren Namensservern erweitert die Datei entsprechend!
[root@archiso /]# echo 'nameserver 8.8.8.8' >> /etc/resolv.conf [root@archiso /]# echo 'nameserver 8.8.4.4' >> /etc/resolv.conf
/etc/mkinitcpio.conf
Nachfolgende Ergänzung in der Konfigurationsdatei
/etc/mkinitcpio.conf
muss zwingend durchgeführt werden.
Zuerst soll aber eine Sicherungskopie der Konfigurationsdatei /etc/mkinitcpio.conf
erstellt werden, was mit nachfolgendem Befehl durchgeführt werden kann:
[root@archiso /]# cp -a /etc/mkinitcpio.conf /etc/mkinitcpio.conf.orig
Anschließend muss das Laden des systembedingten, sogenannten HOOKS wie folgtergänzt werden, was mit nachfolgenden vier Befehlen durchgeführt werden kann:
[root@archiso /]# sed -i 's/MODULES=()/MODULES=(vfat xfs btrfs)/g' /etc/mkinitcpio.conf [root@archiso /]# sed -i 's/BINARIES=()/BINARIES=(\/usr\/bin\/fsck \/usr\/bin\/fsck\.vfat \/usr\/bin\/fsck\.xfs \/usr\/bin\/fsck\.btrfs \/usr\/bin\/dosfsck \/usr\/bin\/xfs_repair \/usr\/bin\/btrfsck \/usr\/bin\/btrfs)/g' /etc/mkinitcpio.conf [root@archiso /]# sed -i 's/block\ filesystem/block\ lvm2\ btrfs\ filesystem/g' /etc/mkinitcpio.conf [root@archiso /]# sed -i 's/keyboard/keymap\ keyboard/g' /etc/mkinitcpio.conf
(Nur relevanter Ausschnitt)
VORHER:
[root@archiso /]# grep -E -v '(^#|^$)' /etc/mkinitcpio.conf MODULES=() BINARIES=() FILES=() HOOKS=(base udev autodetect microcode modconf kms keyboard keymap consolefont block filesystems fsck)
NACHHER:
[root@archiso /]# grep -E -v '(^#|^$)' /etc/mkinitcpio.conf MODULES=(vfat xfs btrfs) BINARIES=(/usr/bin/fsck /usr/bin/fsck.vfat /usr/bin/fsck.xfs /usr/bin/fsck.btrfs /usr/bin/dosfsck /usr/bin/xfs_repair /usr/bin/btrfsck /usr/bin/btrfs) FILES=() HOOKS=(base udev autodetect microcode modconf kms keyboard keymap consolefont lvm2 btrfs block filesystems fsck)
Erklärungen
MODULES(vfat xfs btrfs)
Wenn es nach einem Neustart Probleme beim Neustart geben sollte, würden damit die KERNEL MODULE für die entsprechenden DATEISYSTEME
zur Verfügung stehen.
BINARIES=(/usr/bin/fsck /usr/bin/fsck.vfat /usr/bin/fsck.xfs /usr/bin/fsck.btrfs /usr/bin/dosfsck /usr/bin/xfs_repair /usr/bin/btrfsck /usr/bin/btrfs)
Wenn es nach einem Neustart Probleme beim Neustart geben sollte, würden damit die TOOLS zur Verwaltung der DATEISYSTEME
zur Verfügung stehen.
HOOKS=(base udev autodetect microcode modconf kms keyboard keymap consolefont block lvm2 btrfs filesystems fsck)
Nachfolgend wurde die HOOKs
lvm2
- (vorfilesystem
)btrfs
- (vorfilesystem
)keymap
- (vorkeyboard
)
hinzugefügt und dafür am Ende der Zeile der HOOK:
fsck
entfernt.
WICHTIG - Das hinzufügen des HOOKs lvm2
ist sehr wichtig, da sonst das LVM nicht genutzt werden kann und der Start von der Festplatte von ArchLinux fehl schlägt!
WICHTIG - Das hinzufügen des HOOKs btrfs
ist sehr wichtig, da sonst das Btrfs z.B. mit einer RAID-Konfiguration nicht genutzt werden kann und der Start von der Festplatte von ArchLinux fehl schlägt!
HINWEIS - Das hinzufügen des HOOKs keymap
ist kann hilfreich sein, da bei Problemen beim Neustart von ArchLinux weitere Tastaturlayouts zur Verfügung stehen und nicht nur das Tastaturlayout „US-English“.
HINWEIS - Bei den verwendeten Dateisystemen, swap
und btrfs
gibt es keinen file system check (fsck)
, deswegen kann hier auf fsck
verzichtet werden!
initramfs: mkinitcpio
Durch den nachfolgenden Befehl wird die initramfs-Erstellung durchgeführt:
[root@archiso /]# mkinitcpio -p linux-lts ==> Building image from preset: /etc/mkinitcpio.d/linux-lts.preset: 'default' -> -k /boot/vmlinuz-linux-lts -c /etc/mkinitcpio.conf -g /boot/initramfs-linux-lts.img ==> Starting build: 5.15.77-1-lts -> Running build hook: [base] -> Running build hook: [udev] -> Running build hook: [autodetect] -> Running build hook: [modconf] -> Running build hook: [block] ==> WARNING: Possibly missing firmware for module: xhci_pci -> Running build hook: [lvm2] -> Running build hook: [btrfs] -> Running build hook: [filesystems] -> Running build hook: [keymap] -> Running build hook: [keyboard] -> Running build hook: [fsck] ==> Generating module dependencies ==> Creating zstd-compressed initcpio image: /boot/initramfs-linux-lts.img ==> Image generation successful ==> Building image from preset: /etc/mkinitcpio.d/linux-lts.preset: 'fallback' -> -k /boot/vmlinuz-linux-lts -c /etc/mkinitcpio.conf -g /boot/initramfs-linux-lts-fallback.img -S autodetect ==> Starting build: 5.15.77-1-lts -> Running build hook: [base] -> Running build hook: [udev] -> Running build hook: [modconf] -> Running build hook: [block] ==> WARNING: Possibly missing firmware for module: aic94xx ==> WARNING: Possibly missing firmware for module: bfa ==> WARNING: Possibly missing firmware for module: qed ==> WARNING: Possibly missing firmware for module: qla1280 ==> WARNING: Possibly missing firmware for module: qla2xxx ==> WARNING: Possibly missing firmware for module: wd719x ==> WARNING: Possibly missing firmware for module: xhci_pci -> Running build hook: [lvm2] -> Running build hook: [btrfs] -> Running build hook: [filesystems] -> Running build hook: [keymap] -> Running build hook: [keyboard] -> Running build hook: [fsck] ==> Generating module dependencies ==> Creating zstd-compressed initcpio image: /boot/initramfs-linux-lts-fallback.img ==> Image generation successful
Bootloader: GRUB
Zum Start des Servers ist ein sogenannter „Bootloader“ erforderlich. Hier soll der „Bootloader“
- GRUB
installiert werden, was mit nachfolgendem Befehl durchgeführt werden soll:
[root@archiso /]# pacman -S grub efibootmgr --noconfirm
Anschliessend ist es erforderlich ein Verzeichnis für die UEFI-Boot Dateien mit nachfolgendem Befehl zu erstellen:
[root@archiso /]# mkdir /boot/EFI
Anschliessend ist die Konfiguration von GRUB für das Starten von der ersten Partition einzurichten, was mit nachfolgendem Befehl durchgeführt werden kann:
[root@archiso /]# grub-install --target=x86_64-efi --efi-directory=boot --bootloader-id=GRUB Installing for x86_64-efi platform. Installation finished. No error reported.
Mit nachfolgenden Befehlen kann überprüft werden, ob die Installation von GRUB als Boot-Loader erfolgreich war und ein entsprechendes Verzeichnis und eine entsprechende EFI-Boot Datei angelegt wurde:
[root@archiso /]# [root@archiso /]# ls -la /boot/EFI/ total 12 drwxr-xr-x 3 root root 4096 Nov 6 18:25 . drwxr-xr-x 4 root root 4096 Jan 1 1970 .. drwxr-xr-x 2 root root 4096 Nov 6 18:25 GRUB
[root@archiso /]# ls -la /boot/EFI/* total 156 drwxr-xr-x 2 root root 4096 Nov 6 18:25 . drwxr-xr-x 3 root root 4096 Nov 6 18:25 .. -rwxr-xr-x 1 root root 151552 Nov 6 18:25 grubx64.efi
Jetzt können nachfolgende Anpassungen an der Konfigurationsdatei von GRUB - /etc/default/grub
mit nachfolgenden Befehlen durchgeführt werden:
[root@archiso /]# sed -i 's/quiet/net\.ifnames=0/g' /etc/default/grub [root@archiso /]# sed -i 's/part_msdos/part_msdos\ lvm/g' /etc/default/grub [root@archiso /]# sed -i 's/GRUB_GFXMODE=auto/# Tachtler\n# default: GRUB_GFXMODE=auto\nGRUB_GFXMODE=1024x768/g' /etc/default/grub
Vorher:
[root@archiso /]# grep -E -v '(^#|^$)' /etc/default/grub GRUB_DEFAULT=0 GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="Arch" GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet" GRUB_CMDLINE_LINUX="" GRUB_PRELOAD_MODULES="part_gpt part_msdos" GRUB_TIMEOUT_STYLE=menu GRUB_TERMINAL_INPUT=console GRUB_GFXMODE=auto GRUB_GFXPAYLOAD_LINUX=keep GRUB_DISABLE_RECOVERY=true
Nachher
[root@archiso /]# grep -E -v '(^#|^$)' /etc/default/grub GRUB_DEFAULT=0 GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="Arch" GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 net.ifnames=0" GRUB_CMDLINE_LINUX="" GRUB_PRELOAD_MODULES="part_gpt part_msdos lvm" GRUB_TIMEOUT_STYLE=menu GRUB_TERMINAL_INPUT=console GRUB_GFXMODE=1024x768 GRUB_GFXPAYLOAD_LINUX=keep GRUB_DISABLE_RECOVERY=true
Erklärung:
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 net.ifnames=0"
Damit Meldungen des systemd
-Dienstes/Daemon zu sehen sind, muss der Parameter quit
entfernt werden und der Parameter net.ifnames=0
hinzugefügt werden. Der Paramater net.ifnames=0
sorgt dafür, das als Bezeichner bei Netzwerkkarten wieder die Notation ethX
(Das X
steht für eine Zahl) verwendet wird!
GRUB_PRELOAD_MODULES="part_gpt part_msdos lvm"
Zusätzliches laden des Moduls lvm
, damit bei einem Problem beim Starten auch bei den Partitionen mit LVM eine Fehlersuche durchgeführt werden kann.
GRUB_GFXMODE=1024x768
Bildschirmauflösung des GRUB Startbildschirms festlegen.
Abschliessend muss noch die GRUB-Konfiguration generiert werden, was mit nachfolgendem Befehl durchgeführt werden kann:
[root@archiso /]# grub-mkconfig -o /boot/grub/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-linux-lts Found initrd image: /boot/initramfs-linux-lts.img Found fallback initrd image(s) in /boot: initramfs-linux-lts-fallback.img Warning: os-prober will not be executed to detect other bootable partitions. Systems on them will not be added to the GRUB boot configuration. Check GRUB_DISABLE_OS_PROBER documentation entry. Adding boot menu entry for UEFI Firmware Settings ... done
Passwort: root
Es ist sinnvoll, dass der Benutzer root
im „permanenten“-System ein Passwort besitzt, was mit nachfolgendem Befehl gesetzt werden kann:
[root@archiso /]# passwd New password: Retype new password: passwd: password updated successfully
Das Passwort ist in der shell
hinter New password:
einzugeben und mit der [Return/Enter]-Taste zu bestätigen. Anschließend ist in der shell
hinter Retype new password:
das gleiche Passwort erneut einzugeben und ebenfalls mit der [Return/Enter]-Taste zu bestätigen.
Neustart
Wenn alle Konfigurationen durchgeführt sind, kann nun das installierte ArchLinux mit nachfolgendem Befehl verlassen werden:
# exit exit arch-chroot /mnt/ 12.59s user 2.20s system 0% cpu 1:40:38.73 total
WICHTIG - Der Prompt
sollte sich nun wieder auf root@archiso ~ #
geändert haben!
Der eigentliche Neustart wird dann mit nachfolgendem Befehl durchgeführt:
root@archiso ~ # systemctl reboot
Hinweise
Nach dem erfolgreichen ersten Start des Servers sind die folgenden Gegebenheiten zu beachten:
- Es gibt KEINE Benutzer die sich anmelden können, ausser der Benutzer
root
! - Es steht KEINE Netzwerkanbindung zur Verfügung!
- Es stehen KEINE Dienste/Daemons (bis auf den
getty@.service
) zur Verfügung, auch der SSH-Dienst/Daemon nicht!
Basiskonfiguration
Um ArchLinux nach der Installation wie oben bzw. unter nachfolgenden internen Link:
beschrieben, grundsätzlich in Betrieb nehmen zu können, soll exemplarisch nachfolgende Basiskonfiguration mindestens durchgeführt werden:
- Konfiguration des Netzwerks unter Verwendung und Start durch z.B. des
systemd
-Dienstes/Daemons. - Konfiguration und Start des SSH-Dienstes/Daemons mit einer Basiskonfiguration
- Zugriff vorübergehend durch den Benutzer
root
mit Password-Authentifikation
- Komfortkonfiguration für den Benutzer
root
für die Verwendung dershell
.bash_profile
.bashrc
.vimrc
Netzwerk: systemd
Damit beim Start oder Neustart des Servers gleich eine Netzwerkverbindung mit gestartet wird, soll das sich bereits auf dem Server befindliche systemd
-Startsystem genutzt werden.
Dazu ist es erfordelrich, das für die jeweilige Netzwerkkarte unter Einbeziehung der Bezeichnung der Netzwerkkarte jeweils eine entsprechende Konfigurationsdatei angelegt wird.
Dazu soll zuerst mit nachfolgendem Befehl ermittelt werden, welche Netwzerkkarten auf dem Server vorhanden sind und welche Bezeichnung diese haben:
[root@vmtest ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 52:54:12:34:56:78 brd ff:ff:ff:ff:ff:ff altname enp1s0
* Hier ist nur eine Netzwerkkarte mit der Bezeichnung eth0
vorhanden, welche nicht aktiv ist.
Zur Konfiguration der Netzwerkkarte mit der Bezeichnung eth0
, muss eine neue Konfigurationsdatei in nachfolgendem Verzeichnis und mit nachfolgendem Namen angelegt werden:
/etc/systemd/network/eth0.network
[root@vmtest ~]# vim /etc/systemd/network/eth0.network
Der Inhalt der Konfigurationsdatei könnte dann wie folgt aussehen:
[Match] Name=eth0 [Network] Address=192.168.122.22/24 Gateway=192.168.122.1 DNS=192.168.122.1 Address=fd00::22/64 Gateway=fd00::1 DNS=fd00::1 Address=fe80::22/64 LinkLocalAddressing=no
HINWEIS - In der ipv6-Konfiguration wurde das automatische beziehen einer ipv6-Adresse für die LinkLocal-Adresse deaktiviert, um eine eigene LinkLocal-Adresse setzen zu können!
Anschliessend sollte noch mit nachfolgendem Befehl überprüft werden, ob eine anderer Dienst/Daemon sich für den Start der Netzwerkkarte zuständig fühlt:
[root@vmtest ~]# systemctl list-unit-files | grep netctl
und
[root@vmtest ~]# systemctl list-unit-files | grep dhcpcd
HINWEIS - Falls hier ein Treffer erzielt wird, sollte der Dienst/Daemon
- gestoppt und
- deaktiviert
werden, was mit nachfolgenden Befehlen erfolgen könnte:
[root@vmtest ~]# systemctl stop netctl@eth0.service
und
[root@vmtest ~]# systemctl disable netctl@eth0.service
bzw.
[root@vmtest ~]# systemctl stop dhcpcd.service
und
[root@vmtest ~]# systemctl disable dhcpcd.service
Damit nun der systemd
-Dienst/Daemon das Starten der Netzwerkkarte und dessen Konfiguration übernimmt, ist es erforderlich dass der systemd-networkd
-Dienst/Dameon
- aktiviert und
- gestartet
wird, was mit nachfolgenden Befehlen durchgeführt werden kann:
[root@vmtest ~]# systemctl enable systemd-networkd.service Created symlink /etc/systemd/system/dbus-org-freedesktop.network1.service → /usr/lib/systemd/system/systemd-networkd.service. Created symlink /etc/systemd/system/multi-user.target.wants/systemd-networkd.socket → /usr/lib/systemd/system/systemd-networkd.service. Created symlink /etc/systemd/system/sockets.target.wants/systemd-networkd.socket → /usr/lib/systemd/system/systemd-networkd.socket. Created symlink /etc/systemd/system/sysinit.target.wants/systemd-network-generator.service → /usr/lib/systemd/system/systemd-network-generator.service Created symlink /etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service → /usr/lib/systemd/system/systemd-network-wait-online.service.
und
[root@vmtest ~]# systemctl start systemd-networkd.service
Nachfolgender Befehl überprüft nun, ob der Start des systemd-networkd
-Dienst/Dameon erfolgreich durchgeführt werden konnte, was eine Ausgabe in etwa wie nachfolgende zur Anzeige bringen sollte:
[root@vmtest ~]# systemctl status systemd-networkd.service ? systemd-networkd.service - Network Configuration Loaded: loaded (/usr/lib/systemd/system/systemd-networkd.service: enabled: preset enabled) Active: active (running) since Fri 2022-11-11 19:16:37 CET; 2s ago TriggeredBy: ? systemd-networkd.socket Docs: man:systemd-networkd.service(8) Main PID: 500 (systemd-network) Status: "Processing requests..." Tasks: 1 (limnit: 2315) Memory: 1.5M CPU: 36ms CGroup: /system.slice/systemd-networkd.service └─500 /usr/lib/systemd/systemd-networkd Nov 11 19:16:36 vmtest systemd[1]: Starting Network Configuration... Nov 11 19:16:37 vmtest systemd-networkd[500]: eth0: Link Up Nov 11 19:16:37 vmtest systemd-networkd[500]: eth0: Gained carrier Nov 11 19:16:37 vmtest systemd-networkd[500]: lo: Link Up Nov 11 19:16:37 vmtest systemd-networkd[500]: lo: Gained carrier Nov 11 19:16:37 vmtest systemd-networkd[500]: eth0: Gained IPv6LL Nov 11 19:16:37 vmtest systemd-networkd[500]: Enummeration completed Nov 11 19:16:37 vmtest systemd-networkd[500]: eth0: Configuring with /etc/systemd/network/eth0.network Nov 11 19:16:37 vmtest systemd[1} Started Network configuration Nov 11 19:16:38 vmtest systemd-networkd[500]: eth0: Gained IPv6LL
Ein Überprüfung, ob die IPv4-Netzwerkadresse für die Netzwerkkarte mit der Bezeichnung eth0
gesetzt wurde, kann mit nachfolgendem Befehl erfolgen:
[root@vmtest ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 52:54:12:34:56:78 brd ff:ff:ff:ff:ff:ff altname enp1s0 inet 192.168.122.22/24 brd 192.168.122.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fd00::22/64 scope link valid_lft forever preferred_lft forever inet6 fe80::22/64 scope link valid_lft forever preferred_lft forever
Eine Überprüfung mit nachfolgendem Befehl zeigt die aktuellen Routen, inklusive der default
-Routen an:
root@vmtest ~ # ip ro default via 192.168.122.1 dev eth0 proto static 192.168.122.0/24 dev eth0 proto kernel scope link src 192.168.122.22
Abschliessend sollte die Konfigurationsdatei /etc/resolv.conf
durch nachfolgenden Befehl überprüft werden:
[root@vmtest /]# cat /etc/resolv.conf # Resolver configuration file. # See resolv.conf(5) for details.
In der Konfigurationsdatei /etc/resolv.conf
müssen nun die sich im Netzwerk verfügbaren Namensserver (mindestens ein Namensserver), oder zusätzliche Namensserver aus dem Internet gesetzt werden, was z.B. mit nachfolgenden Befehl durchgeführt werden kann.
HINWEIS - Die Wiederholung des Befehls mit weiteren Namensservern erweitert die Datei entsprechend!
[root@vmtest /]# echo 'nameserver 192.168.122.1' >> /etc/resolv.conf
Die Konfigurationsdatei /etc/resolv.conf
sollte dann einen Inhalt wie folgt aufweisen:
[root@vmtest /]# cat /etc/resolv.conf # Resolver configuration file. # See resolv.conf(5) for details. nameserver 192.168.122.1
Eine Überprüfung, ob die Netzwerkverbindung und auch die DNS-Namensauflösung funktionsfähig ist, kann mit nachfolgenden Befehlen überprüft werden:
IPv4:
[root@vmtest /]# ping -4c3 google.de PING google.de (142.250.186.163) 56(84) bytes of data. 64 bytes from fra24s08-in-f3.1e100.net (142.250.186.163): icmp_seq=1 ttl=117 time=12.1 ms 64 bytes from fra24s08-in-f3.1e100.net (142.250.186.163): icmp_seq=2 ttl=117 time=19.9 ms 64 bytes from fra24s08-in-f3.1e100.net (142.250.186.163): icmp_seq=3 ttl=117 time=40.6 ms --- google.de ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2003ms rtt min/avg/max/mdev = 12.050/24.196/40.635/12.057 ms
IPv6(Nur ping auf das eigene Interface):
HINWEIS - Beim Befehl ping
für die LinkLocal-Adresse muss ein Network-Device (Netzwerkkarte) mit angegeben werden, wie nachfolgendes Beispiel zeigt:
[root@vmtest ~]# ping -c 3 fe80::22%eth0 PING fe80::250%eth0(fe80::250%eth0) 56 data bytes 64 bytes from fe80::22%eth0: icmp_seq=1 ttl=64 time=0.061 ms 64 bytes from fe80::22%eth0: icmp_seq=2 ttl=64 time=0.021 ms 64 bytes from fe80::22%eth0: icmp_seq=3 ttl=64 time=0.022 ms --- fe80::22%eth0 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2026ms rtt min/avg/max/mdev = 0.021/0.034/0.061/0.018 ms
SSH-Dienst/Deamon einrichten
Um den SSH-Dienst/Deamon als Hintergrundprozesse auch nach einem Neustart des Servers zur Verfügung zu haben, soll der Dienste/Daemons mit dem Server mit gestartet werden, was mit nachfolgenden Befehlen realisiert werden kann:
[root@vmtest ~]# systemctl enable sshd.service Created symlink /etc/systemd/system/multi-user.target.wants/sshd.service → /usr/lib/systemd/system/sshd.service.
Eine Überprüfung, ob beim Neustart des Server der sshd
-Dienst/Deamon wirklich mit gestartet wird, kann mit nachfolgendem Befehl erfolgen und sollte eine Anzeige, wie ebenfalls nachfolgend dargestellt ausgeben:
[root@vmtest ~]# systemctl list-unit-files --type=service | grep -E ^sshd sshd.service enabled disabled
bzw.
[root@vmtest ~]# systemctl is-enabled sshd.service enabled
Abschliessend soll noch die Anmeldung via Passwort - vorübergehend während der Konfigurationsphase für den Benutzer root
aktiviert werden.
Dazu soll mit nachfolgendem Befehl eine Sicherungskopie der originalen Konfigurationsdatei
/etc/ssh/sshd_config
mit dem Namen
/etc/ssh/sshd_config.orig
ersteltl werden:
[root@vmtest ~]# cp -a /etc/ssh/sshd_config /etc/ssh/sshd_config.orig
Anschliessend soll nachfolgende Konfiguration in der Konfigurationsdatei /etc/ssh/sshd_config
ein kommentiert bzw. ein kommentiert und angepasst werden:
[root@vmtest ~]# vim /etc/ssh/sshd_config
(Nur relevanter Ausschnitt:)
PasswordAuthentication yes
(Nur relevanter Ausschnitt:)
PermitRootLogin yes
Abschließend kann der SSH-Dienst/Daemon - sshd.service
mit nachfolgendem Befehl gestartet werden:
[root@vmtest ~]# systemctl start sshd.service
Eine Überprüfung ob der SSH-Dienst/Daemon auch ordnungsgemäss gestartet wurde, kann durch ausführen des nachfolgenden Befehls durchgeführt werden und sollte eine Ausgabe in etwa wie nachfolgende zur Folge haben:
[root@vmtest ~]# systemctl status sshd.service ● sshd.service - OpenSSH Daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; preset: disabled) Active: active (running) since Fri 2022-11-11 09:57:06 CET; 3min 31s ago Main PID: 541 (sshd) Tasks: 1 (limit: 2315) Memory: 3.5M CPU: 70ms CGroup: /system.slice/sshd.service └─541 "sshd: /usr/bin/sshd -D [listener] 0 of 10-100 startups" Nov 11 19:57:06 vmtest systemd[1]: Started OpenSSH Daemon. Nov 11 19:57:06 vmtest sshd[541]: Server listening on 0.0.0.0 port 22. Nov 11 19:57:06 vmtest sshd[541]: Server listening on :: port 22.
Anschliessend kann noch einmal die IP-Adresse des Servers in Erfahrung gebracht werden, damit eine Verbindung zum Server hergestellt werden kann. Dies kann durch Ausführung des nachfolgenden Befehls erfolgen:
[root@vmtest ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 52:54:12:34:56:78 brd ff:ff:ff:ff:ff:ff altname enp1s0 inet 192.168.122.22/24 brd 192.168.122.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fd00::22/64 scope global valid_lft forever preferred_lft forever inet6 fe80::22/64 scope link valid_lft forever preferred_lft forever
BEISPIEL - Die IP-Adresse des Servers aus oben genanntem Beispiel wäre hier: 192.168.122.22
.
Jetzt kann eine erste Verbindung als Benutzer root
via SSH-Login auf den Server hergestellt werden. Nachfolgender Befehl soll dazu auf einer lokalen Workstation, nicht auf dem Server verwendet werden:
[klaus@workstation ~]$ ssh -t -2 -p 22 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@192.168.122.22 Warning: Permanently added '192.168.122.22' (ED25519) to the list of known hosts. root@192.168.122.22's password: Last login: Sat Nov 12 07:17:49 2022
~/.bash_logout
Damit die Konfigurationsdatei ~/.bash_logout
auch angezogen wird, ist nachfolgende Konfigurationsdatei
~/.bash_logout
falls nicht schon vorhanden, wie folgt aus einem „Skeleton“ zu kopieren:
[root@vmtest ~]# cp -a /etc/skel/.bash_logout ~/.bash_logout
Der Inhalt der Konfigurationsdatei sollte in etwa wie folgt aussehen und kann mit nachfolgendem Befehl zur Anzeige gebracht werden:
[root@vmtest ~]# cat ~/.bash_logout
#
# ~/.bash_logout
#
~/.bash_profile
Damit die Konfigurationsdatei ~/.bashrc
auch angezogen wird, ist nachfolgende Konfigurationsdatei
~/.bash_profile
falls nicht schon vorhanden, wie folgt aus einem „Skeleton“ zu kopieren:
[root@vmtest ~]# cp -a /etc/skel/.bash_profile ~/.bash_profile
Der Inhalt der Konfigurationsdatei sollte in etwa wie folgt aussehen und kann mit nachfolgendem Befehl zur Anzeige gebracht werden:
[root@vmtest ~]# cat ~/.bash_profile # # ~/.bash_profile # [[ -f ~/.bashrc ]] && . ~/.bashrc
~/.bashrc
Wer z.B. Nutzer von CentOS ist, hat evtl. den Befehl ll
lieb gewonnen, welcher eigentlich nur ein Alias für den Befehl
ls -l –color=auto
ist.
Um sicher zu stellen, dass die Konfigurationsdatei
~/.bashrc
auch vorhanden ist, ist diese, falls nicht schon vorhanden, wie folgt aus einem „Skeleton“ zu kopieren:
[root@vmtest ~]# cp -a /etc/skel/.bashrc ~/.bashrc
Der Inhalt der Konfigurationsdatei sollte in etwa wie folgt aussehen und kann mit nachfolgendem Befehl zur Anzeige gebracht werden:
[root@vmtest ~]# cat ~/.bashrc # # ~/.bashrc # # If not running interactively, don't do anything [[ $- != *i* ]] && return alias ls='ls --color=auto' PS1='[\u@\h \W]\$ '
Um auf dieser „Annehmlichkeit“ auch unter ArchLinux nicht verzichten zu müssen, kann in nachfolgendem Verzeichnis die vorhandene Konfigurationsdatei mit nachfolgendem Namen ergänzt werden:
~/.bashrc
Der Inhalt, könnte dann wie folgt aussehen:
[root@vmtest ~]# vim ~/.bashrc # # ~/.bashrc # # If not running interactively, don't do anything [[ $- != *i* ]] && return # Tachtler # default: alias ls='ls --color=auto' # alias ls='ls --color=auto' PS1='[\u@\h \W]\$ ' # Tachtler - NEW - alias ll='ls -l --color=auto' 2>/dev/null alias l.='ls -d .* --color=auto' 2>/dev/null alias ls='ls --color=auto' 2>/dev/null alias diff='diff --color=auto' 2>/dev/null alias grep='grep --color=auto' 2>/dev/null alias fgrep='fgrep --color=auto' 2>/dev/null alias egrep='egrep --color=auto' 2>/dev/null alias ip='ip -color=auto' 2>/dev/null alias tree='tree -Ca' 2>/dev/null alias mv='mv -i' 2>/dev/null alias cp='cp -i' 2>/dev/null alias ln='ln -i' 2>/dev/null alias chown='chown --preserve-root' 2>/dev/null alias chmod='chmod --preserve-root' 2>/dev/null alias chgrp='chgrp --preserve-root' 2>/dev/null alias mount='mount |column -t' 2>/dev/null
HINWEIS - Nach der Beendigung z.B. eines shell
-Fensters und dem Neustart von einem shell
-Fenster, stehen die neue Funktionalitäten zur Verfügung!
~/.vimrc
Wer z.B. Nutzer von CentOS ist, hat evtl. die Möglichkeit mit der Computer-Mouse/Maus Texte markieren zu können, ohne in den –VISIBLE– Modus zu wechseln
und ein paar andere Einstellungen lieb gewonnen.
Um auf diese und weitere „Annehmlichkeit“ auch unter ArchLinux nicht verzichten zu müssen, kann in nachfolgendem Verzeichnis die vorhandene Konfigurationsdatei mit nachfolgendem Namen neu angelegt oder ergänzt werden:
~/.vimrc
Der Inhalt, welcher hier an z.B. CentOS angelehnt ist, könnte dann wie folgt aussehen:
[root@vmtest ~]# vim ~/.vimrc
[root@vmtest ~]# vim ~/.vimrc " ############################################################################## " Einrueckungs-Optionen " ############################################################################## " Neue Zeilen übernehmen die Einrueckung der vorherigen Zeilen. set autoindent " Tabulatoren in Leerzeichen umwandeln. set expandtab " Beim Verschieben von Zeilen wird die Einrueckung auf das naechste Vielfache " von shiftwidth gerundet. set shiftround " Beim Verschieben wird mit Leerzeichen eingerueckt. set shiftwidth=8 " Beim Druecken der Tabulatortaste die Anzahl der Leerzeichen tabstop einfuegen. set smarttab " Einruecken mit Leerzeichen. set tabstop=8 " ############################################################################## " Such-Optionen " ############################################################################## " Suchhervorhebung einschalten. set hlsearch " Gross- und Kleinschreibung bei der Suche ignorieren. set ignorecase " Inkrementelle Suche, die Teiltreffer anzeigt. set incsearch " Automatische Umstellung der Suche auf Gross- und Kleinschreibung, wenn die " Suchanfrage einen Großbuchstaben enthaelt. set smartcase " ############################################################################## " Leistungs-Optionen " ############################################################################## " Begrenzt die Dateien, die nach automatischen Vervollstaendigungen durchsucht " werden. set complete-=i " Den Bildschirm waehrend der Ausführung von Makros und Skripten nicht " aktualisieren. set lazyredraw " ############################################################################## " Optionen für die Textanzeige " ############################################################################## " Es wird immer versucht, die letzte Zeile eines Absatzes anzuzeigen. set display+=lastline " Verwendet eine Kodierung, die Unicode unterstuetzt. set encoding=utf-8 " Vermeidet einen Zeilenumbruch in der Mitte eines Wortes. set linebreak " Die Anzahl der Bildschirmzeilen, die ueber/unter dem Cursor bleiben sollen. set scrolloff=1 " Die Anzahl der Bildschirmspalten, die links/rechts vom Cursor beibehalten " werden sollen. set sidescrolloff=5 " Aktiviert die Syntaxhervorhebung. syntax enable " Zeilenumbruch einschalten. set wrap " ############################################################################## " Optionen der Benutzeroberfläche " ############################################################################## " Zeigt immer die Statusleiste an. set laststatus=2 " Zeigt immer die Cursorposition an. set ruler " Zeigt die Optionen der Befehlszeile für die Registerkarten als Menue an. set wildmenu " Maximale Anzahl von Registerkarten, die über die Kommandozeile geoeffnet " werden koennen. set tabpagemax=50 " Markiert die Zeile, die sich gerade unter dem Cursor befindet. set cursorline " Markiert die Spalte, die sich gerade unter dem Cursor befindet. "set cursorcolumn " Zeigt Zeilennummern in der Seitenleiste an. set number " Zeigt die Zeilennummer in der aktuellen Zeile und die relativen Nummern in " allen anderen Zeilen an. "set relativenumber " Signalton bei Fehlern abschalten. set noerrorbells " Blinken des Bildschirms anstelle des Signaltons bei Fehlern. " set visualbell " Aktiviere die Maus zum Scrollen und Aendern der Groeße. set mouse-=a " Legt den Titel des Fensters fest, der die aktuell bearbeitete Datei " widerspiegelt. set title " Verwenden Sie Farben, die zu einem hellen Hintergrund passen. set background=light " ############################################################################## " Optionen zur Code-Formatierung " ############################################################################## " Formatieren auf der Grundlage von Einrueckungsebenen. set foldmethod=indent " Nur bis zu drei verschachtelte Ebenen Formatieren. set foldnestmax=3 " Deaktiviert die Formatierung standardmaeßig. set nofoldenable " ############################################################################## " Sonstige Optionen " ############################################################################## " Liest Dateien automatisch neu ein, wenn sie in Vim nicht veraendert wurden. set autoread " Erlaubt Rueckschritt über Einrueckung, Zeilenumbruch und Einfuegebeginn. set backspace=indent,eol,start " Verzeichnis zum Speichern von Sicherungsdateien. set backupdir=~/.cache/vim " Zeigt einen Bestaetigungsdialog an, wenn eine ungesicherte Datei geschlossen " wird. set confirm " Verzeichnis zum Speichern von Auslagerungsdateien. set dir=~/.cache/vim " Erhoeht das Undo-Limit. set history=1000
HINWEIS - Die einzelnen Erklärungen sind jeweils bei den Änderungen in der Konfigurationstatei beschrieben.
Problembehandlung
IPv6 DAD - tentative
Falls nach Inbetriebnahme von IPv6-Adressen, diese nach einem Neustart z.B. nicht an den SSH-Daemon/Dienst gebunden werden können, kann dies an der DAD (Duplicate Address Detection) liegen.
Bei aktivieren von IPv6-Adressen wird überprüft, ob diese Adressen bereits im Netzwerk gefunden werden können und somit nicht eindeutig sind, was dann eine Deaktivierung zur folge hätte. Solange diese Prüfung nicht abgeschlossen ist, befinden sich die ipv6-Adressen in einem Zustand der als „tentative“ (vorläufig, provisorisch) ist.
Solange die IPv6 Adressen sich im Zustand „tentative“ (vorläufig, provisorisch) befinden, kann sich kein Dienst an diese ipv6 Adressen binden.
ACHTUNG - Die Lösung des Problems kann darin liegen, die Prüfung DAD (Duplicate Address Detection) zu deaktivieren.
Dazu soll nachfolgende Konfigurationsdatei in nachfolgendem Verzeichnis mit nachfolgendem Namen neu erstellt werden:
/etc/sysctl.d/40-ipv6dad.conf
Der Inhalt dieser Datei kann wie folgt aussehen und deaktiviert für jedes Netzwerk-Interface die DAD (Duplicate Address Detection):
[root@vmtest ~]# vim /etc/sysctl.d/40-ipv6dad.conf
[root@vmtest ~]# vim /etc/sysctl.d/40-ipv6dad.conf net.ipv6.conf.eth0.accept_dad = 0
Weiterführende Links
snapper
Nachfolgender interner Link führt zur Installation und Konfiguration von snapper