Zotac ZBOX PI225 pico Offline Computer für GnuPG und SSL (2)

Arch Linux Basissystem mit UEFI, LUKS und GRUB Installation

Vorbereitung

uSD-Karte einlegen und Boot-USB-Stick anstecken, booten.

Beim Boot ist die US-Tastaturbelegung aktiv:  ‘y ‘ durch ‘z’ und ‘-‘ durch ‘ß’ ersetzen

Shell
loadkeys de-latin1-nodeadkeys
_________________________________
loadkezs deßlatin1ßnodeadkezs

Netzwerkverbindung herstellen und testen:

Shell
dhcpcd

Festplatte mit Zufallszahlen überschreiben

Platten und Plattennummerierung prüfen:

Shell
lsblk

interne eMMC überschreiben:

Shell
dd status=progress if=/dev/urandom of=/dev/mmcblk1

GPT eMMC (mmcblk1) partitionieren

Folgende Partitionierung wird angestrebt:


LVM:
PV – Physical Volume
VG – Volume Group
LV – Logical Volume

Achtung

In der unten stehenden Installation wird KEIN “/home” Verzeichnis angelegt, sondern nur “/”

Partition
Größe
Device
Erläuterung
/boot 512MB mmcblk1p1 512MB ist die Mindestgröße, bedingt durch das FAT Dateisystem
/ komplette eMMC mmcblk1p2 Es wird weder “SWAP” noch z.B. “/home” als Partition angelegt, da LVM benutzt wird
eMMC mmcblk1 partitionieren
Shell
lsblk

Verifizieren, ob die eMMC als “mmcblk1” eingebunden ist, dann mit “gdisk” partitionieren:

Shell
gdisk /dev/mmcblk1
o               # neue leere GPT Partitionstabelle erstellen
n               # neue Partition erstellen
ENTER           # Partionsnummer 1 bestätigen
ENTER           # ersten Sektor bestätigen
+512M           # 512 MB große Partition anlegen
ef00            # Hexcode für EFI Boot
n               # neue Partition erstellen
ENTER           # Partitionsnummer 2 bestätigen
ENTER           # ersten Folgesektor bestätigen
ENTER           # letzten Sektor bestätigen
8e00            # Hexcode für Linux LVM
p               # Partitionierung prüfen
w               # Partitionierung schreiben
y               # bestätigen
Ergebnis prüfen:
Shell
lsblk

mmcblk1p1 – Boot Partition formatieren

Shell
mkfs.fat -F 32 -n EFI /dev/mmcblk1p1

mmcblk1p2 – LUKS einrichten

cryptsetup Performance testen:

Shell
cryptsetup benchmark

Verschlüsselung

Shell
modprobe dm-crypt
cryptsetup -c aes-xts-plain64 -y -s 512 luksFormat /dev/mmcblk1p2

Passwortvergabe

Hier wird jetzt ein komplexes Passwort /eine Passphrase notwendig, dann weiter mit:

Shell
cryptsetup luksOpen /dev/mmcblk1p2 lvm

LVM – Volume und Groups erstellen

Achtung: den Unterschied zwischen "-L" und "-l" beachten:
Shell
pvcreate /dev/mapper/lvm
vgcreate main /dev/mapper/lvm
lvcreate -L 24GB -n root main
lvcreate -l 100%FREE -n swap main

Regeln für die Größe der SWAP-Partition:

  • kleiner Arbeitsspeicher bis 4 GB: Doppelter Arbeitsspeicher
  • mittlerer Arbeitsspeicher bis 16 GB: 5-10% größer als der Arbeitsspeicher
  • großer Arbeitsspeicher ab 16 GB : 5-10% größer als der Arbeitsspeicher oder keine SWAP_Partition
    ( je größer der Arbeitsspeicher, desto weniger wird eine SWAP Partition benötigt)

LVM setup prüfen:

Shell
pvs
vgs
lvs

Dateisysteme erstellen und mounten

Shell … root
mkfs.ext4 -L root /dev/mapper/main-root
mount /dev/mapper/main-root /mnt
Shell … swap
mkswap -L swap /dev/mapper/main-swap
swapon /dev/mapper/main-swap
Shell … boot
mkdir -p /mnt/boot
mount -L EFI /mnt/boot
lsblk

Basisystem

LAN Internetzugang einrichten

LAN / Ethernet Schnittstelle ermitteln:

Shell
ip link

interne IP Adresse bestimmen:

Shell
ifconfig
ping -c 3 www.archlinux.de
# nur notwendig wenn keine IP bezogen wurde:
dhcpcd

alternativ oder zusätzlich: WLAN einrichten:

Shell
ip link
wifi-menu
ping -c 3 www.archlinux.de
# nur notwendig wenn keine IP bezogen wurde:
dhcpcd

Mirrorliste bearbeiten

Shell
cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
grep -E -A 1 ".*Germany.*$" /etc/pacman.d/mirrorlist.bak | sed '/--/d' > /etc/pacman.d/mirrorlist
nano /etc/pacman.d/mirrorlist
------------------------------------------ alternativ "Reflector" benutzen -------------- :
pacman -Syy
pacman -S reflector
reflector -c "Germany" -f 12 -l 10 -n 12 --save /etc/pacman.d/mirrorlist
REFLECTOR
-c “Land” in Anführungszeichen
-f die schnellsten x Server
-l nur die x zuletzt synchronisierten Server
-n maximal x Server ausgeben
–save sichere in nachfolgende Datei

Aus der Mirrorliste alle weit entfernten Server jetzt mit # auskommentieren

Basissystem installieren

Achtung “pacstrap” funktioniert nur, wenn vorab der Webfilter der Firewall deaktiviert wurde ! Nach erfolgreichem “pacstrap” Webfilter wieder aktivieren !

Shell
pacstrap /mnt base base-devel linux linux-firmware nano

fstab

shell
genfstab -U -p /mnt >> /mnt/etc/fstab
nano /mnt/etc/fstab

fstab editieren und anpassen, da System auf einer emmc instaliert wird:

/mnt/etc/fstab
LABEL=p_arch    /       ext4    rw,defaults,noatime,discard 0   1
LABEL=p_swap    none    swap    defaults,noatime,discard    0   0

CHROOT vom Installationsmedium in das System

shell
arch-chroot /mnt

Systemkonfiguration

/etc/hostname
Shell
echo netzlos > /etc/hostname

böse Gemüter dürfen hier auch “nutzlos” als Hostnamen vergeben

/etc/locale.conf
Shell
echo LANG=de_DE.UTF-8 > /etc/locale.conf
/etc/locale.gen
Shell
nano /etc/locale.gen

Suchen und das # am Anfang folgender Zeilen entfernen:

/mnt/etc/locale.gen
de_DE.UTF-8 UTF-8
de_DE ISO-8859-1
de_DE@euro ISO-8859-15
en_US.UTF-8

Hinweis: Suchen im Editor nano: Strg+W SUCHBEGRIFF↵ Enter Weitersuchen mit gleichem Suchbegriff erneut: Alt+W oder F16

Shell
locale-gen
/etc/vconsole.conf
Shell
echo KEYMAP=de-latin1 > /etc/vconsole.conf
echo FONT=lat9w-16 >> /etc/vconsole.conf
/etc/localtime

Die Zeitzone durch einen symbolischen Link festlegen:

Shell
ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime
/etc/hosts
Shell
cat /etc/hosts
#         
127.0.0.1       localhost.localdomain   localhost
::1             localhost.localdomain   localhost

 Kernel-Image erzeugen

Shell
nano /etc/mkinitcpio.conf

Die Zeile “HOOKS” wie folgt korrigieren:

/etc/mkinitcpio.conf
HOOKS=(base udev autodetect modconf block keyboard keymap encrypt lvm2 filesystems fsck shutdown)
# Der "HOOKS" EIntrag ist wichtig für den Bootloader, der erst später installiert wird
# Reihenfolge wichtig: "keyboard" vor "encrypt" und "encrypt" vor "lvm2"

Kernel-Image erstellen:

Das Paket “lvm2” muss nachinstalliert werden, sonst scheitert das Generieren der “Hooks” und die Kernelerstellung

Shell
pacman -S lvm2
mkinitcpio -p linux

Root-Passwort vergeben

Shell
passwd

Bootloader installieren

Shell
bootctl install
Shell
# funktioniert nicht : ## blkid | grep mmcblk1p2 | cut -f2 -d\" > /boot/loader/entries/arch.conf ## stattdessen: #
blkid > /boot/loader/entries/arch.conf

mit – alle Zeilen ohne die UUID von mmcblk1p2 löschen
weiter alles außer die UUID löschen

Shell
nano /boot/loader/entries/arch.conf

Datei wie folgt modifizieren:

/boot/loader/entries/arch.conf
title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options cryptdevice=UUID=:lvm root=/dev/mapper/main-root rw lang=de init=/usr/lib/systemd/systemd locale=de_DE.UTF-8
Shell
cp /boot/loader/entries/arch.conf /boot/loader/entries/arch-fallback.conf
nano /boot/loader/entries/arch-fallback.conf
/boot/loader/entries/arch.conf
title Arch Linux Fallback
linux /vmlinuz-linux
initrd /initramfs-linux-fallback.img
options cryptdevice=UUID=:lvm root=/dev/mapper/main-root rw
Shell
nano /boot/loader/loader.conf
/boot/loader/loader.conf
timeout 2
default arch

zusätzliche wichtige Programme installieren

Shell
pacman -S dhcpcd

Installations-System verlassen und reboot

Shell
exit   # auslogen von arch-chroot
umount -R /mnt
reboot