- Details
- Geschrieben von Thomas Kuschel
Linux Arch für eine VM oder native Installation via USB-Stick
Grundvoraussetzung zur Installation ist ein ISO-File der aktuellen Version von Arch Linux (archlinux.org/download).
Virtualbox - Einstellungen:
Hauptspeicherr: 1024 MB, 2 Prozessoren (reicht auch einer), Grafikspeicher: 25 MB, Festplattengröße 20 GB;
Das ISO wird als optisches Laufwerk (Controller IDE) eingebunden, z.B. archlinux-2023.11.01-x86_64.iso; anschließend wird diese Maschine gestartet.
Zum Einschalten der deutschsprachigen Tastatur (vorerst ist das y auf der Tastatur das z, und auch der Bindestrich - ist beim scharfen ß (scharfes s) zu finden, auch die Umlauttasten sind anders belegt.
root@archiso ~ # loadkeys de-latin1
Um auch die sogenannten toten Tasten loszuwerden hängt man stattdessen ein nodeadkeys an, in unserem Fall, wenn man das System nur als Server und zum Programmieren braucht ist das vorteilhafter:
root@archiso ~ # loadkeys de-latin1-nodeadkeys
Testen der Netzwerkverbindung
Mit dem Kommando
root@archiso ~ # ip link
kann überprüft werden, ob das Netzwerkinterface funktioniert.
Partitionierung der Festplatte
root@archiso ~ # fdisk -l
Bei einer VM (VirtualBox) ist das Laufwerk meist als /dev/sda konfiguriert. Im Weiterem verwenden wir dies als Laufwerksgerät bei den folgenden Befehlen (entsprechend umtauschen wenn z.B. ein /dev/nvme0n1 für eine SSD erscheint).
root@archiso ~ # fdisk /dev/sda
Jetzt kann dieses Laufwerk partitioniert werden. Wir verwenden ein einfaches Schema, ohne viel Aufwand:
BIOS mit MBR
Einhängepunkt | Partition | Typ der Partition | Vorgeschlagene Größe |
[SWAP] | /dev/swap_partition | Linux swap | 1024 MiB |
/mnt | /dev/root_partition | Linux | alles übrige der 20 GiB-Platte |
Innerhalb des Programms fdisk: eine MBR(DOS) Partitionstabelle erstellt und eine neue Partition erstellt:
- o … create a new empty MBR(DOS) partition table,
- n … add a new partition (Neue primäre Partition mit der Nummer 1 und ab dem 2048. Sektor mit 1024MiB Größe)
- p … primary
- 1 … partition number
- 2048 … first sector
- +1024M … size 1024MiB
- n … add a new partition (Neue primäre Partition mit der Nummer 2 und dem Rest), einfach durchklicken.
Die beiden erstellen Partitionen sind typischerweise jetzt Linux Partitionen. Die erste müssen wir noch in eine "Linux swap"-Partition ändern mit:
- t … change the partition type
- 1
- 82
Bootflag setzen für Partition Nr. 2:
- a … toggle a bootable flagm
- 2
Mit dem Kommando p können wir uns die Partitionstabelle vor dem eigentlichen Erstellen ansehen. Es sollte z.B. so aussehen:
Disk /dev/sda: 20.41 GiB, 21913501696 bytes, 42799808 sectors
Disk model: VBOX HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x535e442d
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 2099199 2097152 1G 82 Linux swap / Solaris
/dev/sda2 * 2099200 42799807 40700608 19.4G 83 Linux
Mit dem Kommando w kann das Programm die Tabelle speichern und gleichzeitig beendet werden.
Nun müssen diese beiden Partitionen formatiert werden, Ext4-Dateisystem auf der Root-Partition mit:
root@archiso ~ # mkfs.ext4 /dev/sda2
Die SWAP-Partition sollte mit dem Kommando mkswap erzeugt werden:
root@archiso ~ # mkswap /dev/sda1
Mount des Dateisystems
Nun kann das Dateisystem in das vorhandene Verzeichnis /mnt gemountet werden (mount)
root@archiso ~ # mount /dev/sda2 /mnt
Auch die SWAP-Partition (auf /dev/sda1) wird hiermit erstellt:
root@archiso ~ # swapon /dev/sda1
Das Mounten und auch die Erstellung der SWAP-Partition ist wichtig, damit später mit dem Befehl genfstab die fstab-Datei richtig erzeugt wird.
Installation
Spiegelserverauswahl
Installation von wichtigen Paketen
Mit dem pacstrap script werden Basispakete, der Linux-Kernel und Firmware für die Hardware installiert.
root@archiso ~ # pacstrap -K /mnt base linux linux-firmware grub mc nano sudo terminus-font
Dabei ist base das Basissystem, linux und linux-firmware der Kernel und zugehörige Firmware, grub ist ein Bootloader, mc ein Filemanager (emuliert den Norton Commander), nano ist ein Editor und mit sudo kann ein Systemadministrator die Befugnis delegieren, bestimmten Benutzern - oder Benutzergruppen - die Möglichkeit zu geben, Befehle als Root oder als ein anderer Benutzer auszuführen, wobei ein Prüfprotokoll der Befehle und ihrer Argumente erstellt wird. Der terminus-font ist ein Schriftbild für etwas größere und klarere Schriftarten für die Konsole (z.B. ter-d28b für hochauflösende BIldschirme).
Konfiguration des Systems
Fstab
Erzeugen der Datei fstab (mit -U oder -L kann entweder die Datei mit UUID oder entsprechend mit Labeln erstellt werden).
root@archiso ~ # genfstab -U /mnt >> /mnt/etc/fstab
Überprüfe die Datei /mnt/etc/fstab, und bei etwaigen Fehler editiere diese.
Chroot
Wechsle mit dem chroot -- change root -- in das neue System:
root@archiso ~ # arch-chroot /mnt
Ergebnis, der Prompt wechselt zu
[root@archiso /]#
Time (Zeitzone)
Stelle die richtige Zeitzone ein:
[root@archiso /]# ln -sf /usr/share/zoneinfo/Europe/Vienna /etc/localtime
und führe hwclock(8) aus, um die Datei /etc/adjtime zu erzeugen:
[root@archiso /]# hwclock --systohc
Dieser Befehl nimmt an, dass die Hardware-Uhr in UTC läuft. Um sicherzustellen, dass die Uhrzeit genau läuft wird üblicherweise das Zeitprotokoll NTP (Network Time Protocol) mit dem client systemd-timesyncd verwendet. Bei einer virtuellen Umgebung brauchen wir uns über die Zeitsynchronisierung keine Sorgen machen.
Lokalisierung (localization)
Die Datei /etc/locale.gen wird mit nano zum Editieren geöffnet und genau die Zeile mit en_DK.UTF-8 UTF-8 auskommentiert. Danach werden die "Locales" erzeugt:
[root@archiso /]# nano /etc/locale.gen
Ausschnitt:
…
#en_CA.UFT-8 UTF-8
#en_CA ISO-8859-1
en_DK.UTF-8 UTF-8
#en_DK ISO-8859-1
…
Ausführen des Lokalisierungsscripts:
[root@archiso /]# locale-gen
Nun wird die Datei locale.conf(5) erzeugt und der Wert LANG entsprechend eingetragen:
[root@archiso /]# nano /etc/locale.conf
Datei-Inhalt:
LANG=en_DK.UTF-8
Um auch die Tastaturbelegung und zusätzlich die Terminal-Schrifart dauerhaft festzulegen, muss die Datei vconsole.conf erzeugt und unser Layout eingetragen werden (für :
[root@archiso /]# nano /etc/vconsole.conf
Datei-Inhalt:
KEYMAP=de-latin1-nodeadkeys
FONT=ter-d18b
Netzwerk-Einstellungen
Erzeugung der hostname-Datei mit:
[root@archiso /]# nano /etc/hostname
Datei-Inhalt (z.B.):
archlinux
Ethernet-Netzwerk
Das Ethernet-Netzwerk kann mit systemd recht komfortabel eingerichtet werden, dazu muss beispielsweise eine Datei 20-ethernet.network für den Ethernet-Adapter im Verzeichnis /etc/systemd/network angelegt werden:
[root@archiso /]# nano /etc/systemd/network/20-ethernet.network
Datei-Inhalt:
[Match]
Name=en*
Name=eth*
[Network]
DHCP=yes
MulticastDNS=yes
[DHCPv4]
RouteMetric=100
[IPv6AcceptRA]
RouteMetric=100
Aktivieren des Systemd-Netzwerks, das nach Systemstart gestartet wird:
[root@archiso /]# systemctl enable systemd-networkd.service
Netzwerk-Namensauflösung aktivieren mit:
[root@archiso /]# systemctl enable systemd-resolved
Initramfs
Die Erzeungung eines neuen initramfs ist für gewöhnlich nicht notwendig, da mkinitcpio bereits bei der Installation des Kernel-Pakets mit pcstrap gelaufen ist.
Root Passwort
Das Passwort für den Benutzer root wird gesetzt (selbstverständlich sollte das ein gutes Passwort sein):
[root@archiso /]# passwd
Sudo für die Gruppe wheel aktivieren
Damit Benutzer, die der Gruppe wheel zugehören, Befehle von root oder anderen Benutzern mit dem eigenen Passwort ausführen dürfen, wird in der Datei /etc/sudoers die folgende Zeile auskommentiert:
[root@archiso /]# nano /etc/sudoers
Datei-Inhalt (Auszug):
…
## Uncomment to allow members of group wheel to execute any command
%wheel ALL=(ALL:ALL) ALL
…
Boot loader
Wir wählen den Bootloader grub (grub2) aus, dieser wird wie folgt (für die Festplatte /dev/sda) installiert:
[root@archiso /]# grub-install --target=i386-pc /dev/sda
Der Bootloader grub wird hierbei in den MBR der Festplatte /dev/sda geschrieben (erste Sektoren der Platte).
Falls das System mit zwei Grafikkarten hantieren muss (DELL XPS 15 Notebook):
Editieren der Zeile mit GRUB_CMDLINE_LINUX_DEFAULT: Es wird nouveau auf die Blacklist damit gebracht (Videocontroller bei DELL XPS 15 9570, NVIDIA GP107M [GeForce GTX 1050 Mobile]), einfügen von nouveau.modeset=0 in die Datei:
[root@archiso /]# nano /etc/default/grub
Datei-Inhalt (Auszug):
GRUB_CMD_LINE_LINUX_DEFAULT="loglevel=3 nouveau.modeset=0 quiet"
Die Konfiguration des Bootloaders grub wird erstellt mit:
root@archiso ~ # grub-mkconfig -o /boot/grub/grub.cfg
Reboot
Die chroot-Umgebung sollte jetzt verlassen werden mit:
[root@archiso /]# exit
Jetzt kann mit dem Befehl reboot der Rechner neu gestartet werden. (Auf Wunsch kann man die gemounteten Verzeichnisse mit umount -R /mnt aushängen, damit man mögliche Fehler, "busy" Partitionen und deren Ursache mit fuser finden kann).
root@archiso ~ # reboot
Zsh shell einrichten
Um die gleiche Umgebung wie bei der monatlich erscheinenden ISO-Release von Arch Linux zu erhalten, kann die Zsh eingerichtet werden. Zusätzlich braucht Zsh auch eine Konfiguration, die über das Paket grml-zsh-config mitgeliefert wird.
Installation mit:
[root@archiso ~]# pacman -S zsh grml-zsh-config
Weitere Informationen über Zsh sind auf https://wiki.archlinux.org/title/zsh zu finden.
Ändern der Shell (hin zu Zsh) für den Root-Benutzer:
[root@archiso ~]# usermod -s /usr/bin/zsh root
Benutzer einrichten
Um einen neuen Benutzer einzurichten, z.B. mit dem Usernamen tom, Gruppenzugehörigkeiten von users, wheel, http und der Shell-Umgebung von /usr/bin/zsh kann man den folgenden Befehl eingeben:
[root@archiso ~]# useradd -m -G users,wheel,http -s /usr/bin/zsh tom
Passwort vergeben:
[root@archiso ~]# passwd tom
Umask, die Benutzer/User-Maske
Diese Modusmaske enthält die Berechtigungsbits, die für eine neu erstellte Datei nicht gesetzt werden sollen, sie ist also das logische Komplement der für eine neu erstellte Datei gesetzten Berechtigungsbits. Wenn ein Bit in der Maske auf 1 gesetzt wird, dann ist die entsprechende Berechtigung für die neu erstellte Datei deaktiviert. Da wir unseren Benutzer auch gleichzeitig Zugriff auf die http-Verzeichnisse für den Webserver geben wollen, stellen wir diese auf die Maske umask 002.
In Arch Linux wird diese Maske im File /etc/login.defs verwaltet, deshalb findet sich der Eintrag umask mit 022 und soll auf 002 geändert werden:
[root@archiso ~]# nano /etc/login.defs
Datei-Inhalt (Auszug):
…
# Default initial "umask" value used by login(1) on non-PAM enabled systems.
# Default "umask" value for pam_umask(8) on PAM enabled systems.
# UMASK is also used by useradd(8) and newusers(8) to set the mode for new
# home directories if HOME_MODE is not set.
# 022 is the default value, but 027, or even 077, could be considered
# for increased privacy. There is no One True Answer here: each sysadmin
# must make up their mind.
UMASK 002
…
Log-out, ausloggen des Root-Benutzers
[root@archiso ~]# exit
Log-in als dieser neue Benutzer (tom)
Um zu überprüfen, ob alle Einstellungen für den Benutzer funktionieren, Log-in mit Passwort:
Arch Linux 6.5.9-arch2-1 (tty1)
archlinux login: tom
Password: ****
Der neue Prompt sollte so aussehen:
tom@archlinux ~ %
Einige Tests, ob bisher alles funktioniert:
tom@archlinux ~ % umask
002
tom@archlinux ~ % sudo file /etc/sudoers
/etc/sudoers: ASCII text
tom@archlinux ~ % id
uid=1000(tom) gid=1000(tom) groups=1000(tom),33(http),984(users),998(wheel)
Installation eines erweiterten Paket-Managers yay
Damit Wartungsarbeiten, Updates und Softwareänderungen auch für das Arch Linux AUR-System leicht fällt, wird yay (yet another yogurt) installiert. Vorbereitung von essentiellen Programmen:
tom@archlinux ~ % sudo pacman -S --needed base-devel git
Nun wird yay aus dem AUR-Repository in unser Userverzeichnis geklont
tom@archlinux ~ % git clone https://aur.archlinux.org/yay.git
Wir wechseln in dieses Verzeichnis und starten den Compiliervorgang:
tom@archlinux ~ % cd yay
tom@archlinux ~ % ~/yay (git)-[master] % makepkg -si
Probleme bei der Installation / Troubleshooting
Key - Keyring bei der Ausführung von pacman
Sollte ein keyring fehlen bzw. auch bei einer Installation einer Komponente nicht richtig nachgeladen werden, dann gibt es eine Möglichkeit dies zu reparieren:
root@archiso ~ # rm -rf /etc/pacman.d/gnupg/*
root@archiso ~ # pacman-key --init
root@archiso ~ # pacman-key --populate archlinux
Das hat mir schon einmal gute Dienste erwiesen.
Yay bricht mit Fehler in der Kommunikation ab
Woran das genau liegt ist mir noch nicht klar, vermutlich auch wegen der Virtualisierung. Das Programm makepkg bricht während des build-Vorgangs von go mit der Verbindung ab ("dial tcp: lookup proxy.golang.org on ... read: connection refused").
Folgenderweise konnte ich das yay trotzdem unter einer chroot-Umgebung zum Kompilieren bringen:
tom@archlinux ~ % ~ % sudo pacman -S devtools
tom@archlinux ~ % ~ % mkdir chroot
tom@archlinux ~ % ~ % CHROOT=$HOME/chroot
tom@archlinux ~ % ~ % cd yay
tom@archlinux ~ % ~/yay (git)-[master] % mkarchroot $CHROOT/root base-devel
tom@archlinux ~ % ~/yay (git)-[master] % makechrootpkg -c -r $CHROOT
tom@archlinux ~ % ~/yay (git)-[master] % makepkg -i
- Details
- Geschrieben von Thomas Kuschel
Mariadb (MySql-Server) Datenbankinstallation
Installieren der Datenbank mit:
tom@archlinux ~ % yay -S mariadb
Dann muss noch der folgende Befehl ausgeführt werden:
tom@archlinux ~ % sudo mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
Das Service wird gestartet und aktiviert mit:
tom@archlinux ~ % sudo systemctl start mariadb.service
tom@archlinux ~ % sudo systemctl enable mariadb.service
Configuration der MariaDB
Wenn die Datenbank läuft und der root-Benutzer wie oben eingerichtet wurde, kann man die Standardeinstellungen wie folgt ändern:
tom@archlinux ~ % sudo mariadb
Eine neue Datenbank joomla_db anlegen:
MariaDB [(none)]> CREATE DATABASE joomla_db;
Benutzer anlegen für CMS Joomla! und ein Passwort vergeben (PASSWORT mit einem guten Passwort austauschen!):
MariaDB [(none)]> CREATE USER 'juser'@'localhost' IDENTIFIED BY 'ahs2ffWa!z6G';
Dem Benutzer Rechte geben, um auf diese (nur diese) Datenbank zugreifen zu dürfen:
MariaDB [(none)]> GRANT ALL ON joomla_db.* TO 'juser'@'localhost';
Test der Rechte
tom@archlinux ~ % mariadb -ujuser -p
Nach der Passworteingabe wie oben angegeben (ahs2ffWa!z6G) sollte man den Prompt bekommen:
MariaDB [(none)]>
MariaDB [(none)]> SHOW GRANTS;
- Details
- Geschrieben von Thomas Kuschel
Installation des Nginx-Servers
tom@archlinux ~ % yay -S nginx
Starten und aktivieren des Services
tom@archlinux ~ % sudo systemctl start nginx
tom@archlinux ~ % sudo systemctl enable nginx
Eine nginx-Testseite ist jetzt aufrufbar:
tom@archlinux ~ % curl localhost
Liefert den HTML-Code der Website.
Ändern der Konfigurationsdatei
Zuerst speichern wir die alte Konfigurationsdatei ab:
tom@archlinux ~ % cd /etc/nginx
tom@archlinux /etc/nginx % sudo cp nginx.conf nginx.conf.`date +%Y%m%d`
tom@archlinux /etc/nginx % sudo nano nginx.conf
Datei-Inhalt:
# nginx configuration file
user http;
pid /run/nginx.pid;
worker_processes auto;
worker_rlimit_nofile 65535;
# Load modules
include /etc/nginx/modules-enabled/*.conf;
events {
multi_accept on;
worker_connections 65535;
}
http {
charset utf-8;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
server_tokens off;
log_not_found off;
types_hash_max_size 2048;
types_hash_bucket_size 64;
client_max_body_size 16M;
# MIME
include mime.types;
default_type application/octet-stream;
# Logging
access_log off;
error_log /dev/null;
#SSL
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
# Diffie-Hellman parameter for DHE ciphersuites
ssl_dhparam /etc/nginx/dhparam.pem;
# Mozilla Intermediate configuration
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
#OCSP Stapling
ssl_stapling on;
ssl_spapling_verity on;
resolver 1.1.1.1 1.0.0.1 8.8.8.8 8.8.4.4 208.67.222.222 208.67.220.220 valid=60s;
resolver_timeout 2s;
# Load configs
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
Installation von PHP
yay -S php