355 lines
No EOL
7.2 KiB
Text
355 lines
No EOL
7.2 KiB
Text
====== Arch Linux ======
|
|
|
|
Der Guide ist sowohl für Server als auch für Desktop geeignet.
|
|
|
|
Es umfasst:
|
|
|
|
**Server & Desktop**
|
|
|
|
* UEFI
|
|
* systemd-boot
|
|
* LVM on LUKS
|
|
* NetworkManager
|
|
* zram
|
|
* doas
|
|
* nftables
|
|
|
|
**Desktop**
|
|
|
|
* Xorg
|
|
* KDE / Plasma
|
|
* SDDM
|
|
|
|
===== ISO herunterladen =====
|
|
|
|
[[https://www.archlinux.org/download/]]
|
|
|
|
===== Erste Schritte =====
|
|
|
|
Wenn du eine deutsche Tastatur verwendest:
|
|
|
|
<code>
|
|
ls /usr/share/kbd/keymaps/**/*.map.gz
|
|
loadkeys de
|
|
</code>
|
|
|
|
Prüfe, ob das System unter UEFI läuft::
|
|
|
|
<code>
|
|
ls /sys/firmware/efi/efivars
|
|
</code>
|
|
|
|
Bei Bedarf mit WLAN verbinden
|
|
|
|
<code>
|
|
iwctl
|
|
device list
|
|
station DEVICE_NAME scan
|
|
station DEVICE_NAME get-networks
|
|
station DEVICE_NAME connect SSID
|
|
</code>
|
|
|
|
NTP aktivieren und Zeitzone einstellen
|
|
|
|
<code>
|
|
timedatectl set-ntp true
|
|
timedatectl set-timezone Europe/Berlin
|
|
</code>
|
|
|
|
Verbindung testen
|
|
|
|
<code>
|
|
ping techsaviours.org -c 1
|
|
</code>
|
|
|
|
===== Festplatte/n formatieren und Partitionen erstellen =====
|
|
|
|
Formatiere deine Festplatte/n und erstelle eine GPT-Tabelle.
|
|
|
|
<code>
|
|
cfdisk /dev/sd*
|
|
</code>
|
|
|
|
Typische Partitionen sehen wie folgt aus:
|
|
^ Partitionen ^ Speicher | Art |
|
|
| /dev/sda1 (boot) | 512M | EFI System |
|
|
| /dev/sda2 (root) | xG | Linux Filesystem (ext4,...) |
|
|
| /dev/sdb1 (home) (optional) | xG | Linux Filesystem (ext4,...) |
|
|
|
|
<alert type="info" icon="fa fa-info-circle">Optional kann die Home-Partition - ''/dev/sdb1'' - verwendet werden, wenn du eine andere Festplatte verwenden möchtest.</alert>
|
|
|
|
===== LVM on LUKS =====
|
|
|
|
==== Erstelle LUKS ====
|
|
|
|
**root**
|
|
<code>
|
|
cryptsetup luksFormat --type luks2 --cipher aes-xts-plain64 --key-size 512 /dev/sda2
|
|
cryptsetup open /dev/sda2 root
|
|
</code>
|
|
|
|
**home**
|
|
(Optional) Zweite Festplatte (/dev/sdb1)
|
|
|
|
<code>
|
|
cryptsetup luksFormat --type luks2 --cipher aes-xts-plain64 --key-size 512 /dev/sdb1
|
|
cryptsetup open /dev/sdb1 home
|
|
</code>
|
|
|
|
==== Erstelle LVM ====
|
|
|
|
=== Vorbereitung der Physical Volumes, Volume Groups und Logical Volumes ===
|
|
|
|
**root**
|
|
<code>
|
|
pvcreate /dev/mapper/root
|
|
vgcreate vg0 /dev/mapper/root
|
|
lvcreate -l 100%FREE vg0 -n root
|
|
</code>
|
|
|
|
**home** (optional)
|
|
|
|
<code>
|
|
pvcreate /dev/mapper/home
|
|
vgcreate vg1 /dev/mapper/home
|
|
lvcreate -l 100%FREE vg1 -n home
|
|
</code>
|
|
|
|
=== Dateisysteme formatieren und mounten ===
|
|
|
|
**root**
|
|
<code>
|
|
mkfs.ext4 /dev/vg0/root
|
|
mount /dev/vg0/root /mnt
|
|
</code>
|
|
|
|
**boot**
|
|
<code>
|
|
mkfs.fat -F32 /dev/sda1
|
|
mkdir /mnt/boot
|
|
mount /dev/sda1 /mnt/boot
|
|
</code>
|
|
|
|
**home** (optional)
|
|
|
|
<code>
|
|
mkfs.ext4 /dev/vg1/home
|
|
mkdir /mnt/home
|
|
mount /dev/vg1/home /mnt/home
|
|
</code>
|
|
|
|
===== Installiere die Basispakete =====
|
|
|
|
<code>
|
|
pacstrap /mnt base base-devel linux-hardened linux-hardened-docs linux-hardened-headers linux-firmware nano networkmanager lvm2 opendoas openssh iptables-nft
|
|
</code>
|
|
|
|
===== Konfigurierung des Systems =====
|
|
|
|
<code>
|
|
genfstab -U /mnt > /mnt/etc/fstab
|
|
arch-chroot /mnt
|
|
</code>
|
|
|
|
==== Timezone ====
|
|
|
|
<code>
|
|
ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime
|
|
hwclock --systohc
|
|
</code>
|
|
|
|
Unkommentiere deinen Standort. Zum Beispiel: //de_DE.UTF-8 UTF-8//
|
|
|
|
<code>
|
|
nano /etc/locale.gen
|
|
</code>
|
|
|
|
<code>
|
|
echo "LANG=de_DE.UTF-8
|
|
LC_ADDRESS=de_DE.UTF-8
|
|
LC_IDENTIFICATION=de_DE.UTF-8
|
|
LC_MEASUREMENT=de_DE.UTF-8
|
|
LC_MONETARY=de_DE.UTF-8
|
|
LC_NAME=de_DE.UTF-8
|
|
LC_NUMERIC=de_DE.UTF-8
|
|
LC_PAPER=de_DE.UTF-8
|
|
LC_TELEPHONE=de_DE.UTF-8
|
|
LC_TIME=de_DE.UTF-8
|
|
LC_ALL=de_DE.UTF-8" >> /etc/locale.conf
|
|
</code>
|
|
|
|
<code>
|
|
locale-gen
|
|
</code>
|
|
|
|
==== Tastaturlayout ====
|
|
|
|
<code>
|
|
ls /usr/share/kbd/keymaps/**/*.map.gz
|
|
nano /etc/vconsole.conf
|
|
</code>
|
|
<code>
|
|
KEYMAP=YOUR_KEYBOARD
|
|
</code>
|
|
|
|
==== Hostname ====
|
|
|
|
<code>
|
|
echo "arch" > /etc/hostname
|
|
</code>
|
|
|
|
|
|
==== Host-Datei ====
|
|
|
|
<code>
|
|
echo "127.0.0.1 localhost
|
|
::1 localhost
|
|
127.0.1.1 arch.localdomain arch" >> /etc/hosts
|
|
</code>
|
|
|
|
==== root passwort ====
|
|
<code>
|
|
passwd
|
|
</code>
|
|
|
|
==== Eine initiale Ramdisk erstellen ====
|
|
|
|
<code>
|
|
nano /etc/mkinitcpio.conf
|
|
</code>
|
|
|
|
<code>
|
|
HOOKS=(base udev autodetect keyboard keymap modconf block encrypt lvm2 filesystems fsck)
|
|
</code>
|
|
|
|
<code>
|
|
mkinitcpio -P
|
|
</code>
|
|
|
|
==== Bootloader ====
|
|
|
|
<code>
|
|
bootctl install
|
|
</code>
|
|
|
|
<code>
|
|
echo "title Arch Linux
|
|
linux /vmlinuz-linux-hardened
|
|
initrd /initramfs-linux-hardened.img
|
|
options cryptdevice=UUID=$(blkid -s UUID -o value /dev/sda2):root root=/dev/vg0/root rw" >> /boot/loader/entries/arch.conf
|
|
</code>
|
|
|
|
<code>
|
|
echo "title Arch Linux (fallback initramfs)
|
|
linux /vmlinuz-linux-hardened
|
|
initrd /initramfs-linux-hardened-fallback.img
|
|
options cryptdevice=UUID=$(blkid -s UUID -o value /dev/sda2)=root root=/dev/vg0/root rw" >> /boot/loader/entries/arch-fallback.conf
|
|
</code>
|
|
|
|
==== Microcode ====
|
|
|
|
Abhängig von deiner CPU - __//AMD//__ oder __//Intel//__ - wähle einer der folgenden Befehle aus:
|
|
|
|
<code>
|
|
pacman -S intel-ucode
|
|
</code>
|
|
<code>
|
|
pacman -S amd-ucode
|
|
</code>
|
|
|
|
und füge ''initrd /**intel**-ucode.img'' oder ''initrd /**amd**-ucode.img'' über ''initrd /initramfs-linux-hardened.img'', ''initrd /initramfs-linux-hardened-**fallback**.img'' in ''/boot/loader/entries/arch.conf'' und ''/boot/loader/entries/arch-**fallback**.conf'' hinzu.
|
|
|
|
==== doas ====
|
|
|
|
Erlaubt Mitgliedern der Gruppe ''wheel'', Befehle auszuführen:
|
|
|
|
<code>
|
|
echo "permit persist :wheel" >> /etc/doas.conf
|
|
chown -c root:root /etc/doas.conf
|
|
chmod -c 0400 /etc/doas.conf
|
|
</code>
|
|
|
|
<alert type="danger" icon="fa fa-warning">Das ''persist''-Feature ist standardmäßig deaktiviert [....] Dieses Feature ist neu und potentiell gefährlich, im Original-Doas wird eine Kernel-API zum Setzen und Löschen von Timeouts verwendet. Diese API ist openbsd-spezifisch und es gibt keine ähnliche API auf anderen Betriebssystemen.
|
|
</alert>
|
|
|
|
=== Sudo Benutzer? ===
|
|
|
|
<code>
|
|
pacman -Rsn opendoas
|
|
pacman -S sudo
|
|
</code>
|
|
|
|
oder
|
|
<code>
|
|
echo "alias sudo='doas'
|
|
alias sudoedit='doas rnano'" >> ~/.bashrc
|
|
</code>
|
|
|
|
==== Benutzer hinzufügen ====
|
|
|
|
Ändere ''USER'' mit deinen Namen.
|
|
|
|
<code>
|
|
useradd -m -G wheel -s /bin/bash USER
|
|
passwd USER
|
|
</code>
|
|
|
|
==== zram ====
|
|
|
|
|
|
=== Module ===
|
|
|
|
<code>
|
|
echo "zram" >> /etc/modules-load.d/zram.conf
|
|
</code>
|
|
|
|
=== Modprobe ===
|
|
|
|
<code>
|
|
echo "options zram num_devices=1" >> /etc/modprobe.d/zram.conf
|
|
</code>
|
|
|
|
=== Udev ===
|
|
|
|
<code>
|
|
echo 'KERNEL=="zram0", ATTR{disksize}="4GB" RUN="/usr/bin/mkswap /dev/zram0", TAG+="systemd"' >> /etc/udev/rules.d/99-zram.rules
|
|
</code>
|
|
|
|
=== Fstab ===
|
|
|
|
<code>
|
|
echo "# swap
|
|
/dev/zram0 none swap defaults 0 0
|
|
" >> /etc/fstab
|
|
</code>
|
|
|
|
==== Services aktivieren ====
|
|
|
|
<code>
|
|
systemctl enable --now NetworkManager.service
|
|
systemctl enable --now sshd.service
|
|
</code>
|
|
|
|
==== (Optional) Schlüssel für die Home-Partition hinzufügen ====
|
|
|
|
Wenn du dich entschieden hast, eine zusätzliche Partition oder ein zusätzliches Laufwerk zu verwenden, kannst du auch einen Schlüssel verwenden, anstatt die Passphrase immer wieder einzugeben. Auf diese Weise muss nur noch für root die Passphrase eingeben.
|
|
|
|
<code>
|
|
mkdir /etc/luks-keys/
|
|
dd bs=512 count=4 if=/dev/urandom of=/etc/luks-keys/home.bin
|
|
chmod -cR 0400 /etc/luks-keys/
|
|
cryptsetup luksAddKey /dev/sdb1 /etc/luks-keys/home.bin
|
|
echo "home /dev/sdb1 /etc/luks-keys/home.bin" >> /etc/crypttab
|
|
</code>
|
|
|
|
==== Reboot ====
|
|
|
|
<code>
|
|
exit
|
|
</code>
|
|
<code>
|
|
umount -R /mnt
|
|
reboot
|
|
</code>
|
|
|
|
<alert type="info">Herzlichen Glückwunsch 🍻 Der Serverteil ist erledigt! Fahre mit [[de:desktop:environments:kde|KDE]] fort, wenn du eine Desktop-Umgebung installieren möchtest.</alert> |