Systemverschlüsselung mit dm-crypt: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
Keine Bearbeitungszusammenfassung
(vorläufig kein Löschen bitte)
 
(33 dazwischenliegende Versionen von 16 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
== Zusammenfassung ==
{{veraltet}}
 
Dieser Artikel behandelt die Installation eines ArchLinux-Grundsystems mit verschlüsseltem [[LVM]] und der kompletten Integration von [[systemd]]. Die Anleitung wurde unter Verwendung der Installations-Medien 2015.07.01 (archlinux-2015.07.01-dual.iso) erstellt. Die Installation sollte aber auch mit zukünftigen Medien (zumindest vorerst) nicht großartig anders verlaufen.
Dieser Artikel behandelt die Installation eines ArchLinux-Grundsystems mit verschlüsseltem LVM und der kompletten Integration von Systemd. Die Anleitung wurde unter Verwendung der Installations-Medien 2012.08.04 erstellt. Die Installation sollte aber auch mit zuküftigen Medien (zumindest vorerst) nicht großartig anders verlaufen.
 


== Installationsmedium vorbereiten ==
== Installationsmedium vorbereiten ==
* Das Installations-Image von http://www.archlinux.org/download/ herunterladen.
* Das Installations-Image von http://www.archlinux.org/download/ herunterladen.
* Das Image auf CD brennen oder unter einem funktionierendem Linux-System (z. B. Live-CD) auf einen USB-Stick kopieren. Dies funktioniert wie folgt:


 
dd if=archlinux.iso of=/dev/sdx
* Das Image auf CD brennen oder unter einem funktionierendem Linux-System (z.B. Live-CD) auf einen USB-Stick kopieren. Dies funktioniert wie folgt:
    # dd if=archlinux.iso of=/dev/sdx




== Installation starten ==
== Installation starten ==
* Nun wird vom vorbereiteten Installations-Medium gebootet.
* Auf der Konsole angekommen, wird zuerst einmal das deutsche Tastatur-Layout geladen.


* Nun wird vom vorbereiteten Installations-Medium gebootet und das Setup für die entsprechende Systemarchitektur (i686 oder x86_64) gestartet.
root@archiso ~ # loadkeys de-latin1
 
 
* Auf der Konsole angekommen, wird zuerst einmal das deutsche Tastatur-Layout geladen.
    root@archiso ~ # loadkeys de-latin1


Da das Layout derzeit noch auf Englisch eingestellt ist, muss '''z''' anstatt '''y''' und '''ß''' anstatt '''-''' eingegeben werden.
Da das Layout derzeit noch auf Englisch eingestellt ist, muss '''z''' anstatt '''y''' und '''ß''' anstatt '''-''' eingegeben werden.


== Festplatte vorbereiten ==
== Festplatte vorbereiten ==
* Jetzt wird es Zeit, die Festplatten zu partitionieren. Dies kann bei Bios-Boot Systemen und Festplatten bis 2TB mit [[fdisk]], ansonsten immer mit [[gdisk]] durchgeführt werden. Für das System mit LVM werden zwei Partitionen erstellt:
'''sda1''' mit einer Größe von 100 MB und boot-Flag (dies wird später die Boot-Partition)


* Jetzt wird es Zeit, die Festplatten zu partitionieren. Dies kann z.B. mit '''cfdisk''' durchgeführt werden. Für unseren Zweck erstellen wir zwei Partitionen:
'''sda2''', welche den Rest der Festplatte einnimmt (hier wird das verschlüsselte LVM abgelegt)
'''sda1''' mit einer Größe von 100MB und boot-Flag (dies wird später unsere Boot-Partition)
 
'''sda2''', welche den Rest der Festplatte spendiert bekommt (hier wird unser verschlüsseltes LVM seinen Platz drauf finden)




* Zur Sicherheit wird die Festplatte jetzt überschrieben:
* Zur Sicherheit wird die Festplatte jetzt überschrieben:
    root@archiso ~ # shred -v /dev/sda2


Standardmäßig wird dieser Vorgang drei Mal durchgeführt, wobei ein Durchgang bei einer ca. 2TB großen Festplatte schon mal 5 bis 6 Stunden in Anspruch nehmen kann.
root@archiso ~ # shred -v /dev/sda2


Standardmäßig wird dieser Vorgang drei Mal durchgeführt, wobei ein Durchgang bei einer ca. 2 TB großen Festplatte schon mal fünf bis sechs Stunden in Anspruch nehmen kann.


* Wer deswegen den Vorgang nur einmal durchführen möchte, kann stattdessen folgenden Befehl ausführen:
* Wer deswegen den Vorgang nur einmal durchführen möchte, kann stattdessen folgenden Befehl ausführen:
    # shred -v -n 1 /dev/sda2


shred -v -n 1 /dev/sda2


== Verschlüsseltes LVM einrichten ==
== Verschlüsseltes LVM einrichten ==


* Jetzt werden die benötigte Kernel-Modul für die Verschlüsselung geladen:
* Jetzt werden die benötigte Kernel-Modul für die Verschlüsselung geladen:
    root@archiso ~ # modprobe dm-crypt


root@archiso ~ # modprobe dm-crypt


* Anschließend wird sda2 verschlüsselt:
* Anschließend wird sda2 verschlüsselt:
    root@archiso ~ # cryptsetup -c aes-xts-plain -y -s 512 luksFormat /dev/sda2


'''Hinweis:''' Für Volumes größer als 2TiB sollte aes-xts-plain64 verwendet werden. Kernelunterstützung hierfür gibt es seit Kernel 2.6.33.
root@archiso ~ # cryptsetup -c aes-xts-plain -y -s 512 luksFormat /dev/sda2


Für Volumes größer als 2 TiB sollte aes-xts-plain64 verwendet werden. Kernelunterstützung hierfür gibt es seit Kernel 2.6.33. Die Option aes-xts-plain64 kann auch für Volumes kleiner 2 TiB verwendet werden.


* Die Eingabeaufforderung mit YES bestätigen und anschließ ein sicheres Passwort vergeben. Hierbei sollten schon 20 Zeichen inkl. Sonderzeichen und Zahlen verwendet werden.
* Die Eingabeaufforderung mit YES bestätigen und anschließend ein sicheres Passwort vergeben. Hierbei sollten schon 20 Zeichen inkl. Sonderzeichen und Zahlen verwendet werden.
* Jetzt wird die verschlüsselte Partition geöffnet und das LVM eingerichtet:


cryptsetup luksOpen /dev/sda2 lvm
pvcreate /dev/mapper/lvm
vgcreate main /dev/mapper/lvm
lvcreate -L 200GB -n root main
lvcreate -L 8GB -n swap main
lvcreate -l 100%FREE -n home main


* Jetzt wird die verschlüsselte Partiton geöffnet und das LVM eingerichtet:
Je nach Festplattengröße und/oder zukünftiger Erweiterung des Grundsystems kann auch eine geringere Größe für das root-Volume (-n root) festgelegt werden. Wenn das home-Volume (-n home) nicht den verbleibenden Platz komplett ausfüllt, können später LVM-Snapshots erstellt werden. Dazu kann - wie bei den anderen lvcreate-Befehlen - eine geringere Größe angegeben werden, zum Beispiel -L 50GB.
    root@archiso ~ # cryptsetup luksOpen /dev/sda2 lvm
    root@archiso ~ # pvcreate /dev/mapper/lvm
    root@archiso ~ # vgcreate main /dev/mapper/lvm
    root@archiso ~ # lvcreate -L 200GB -n root main
    root@archiso ~ # lvcreate -L 8GB -n swap main
    root@archiso ~ # lvcreate -l 100%FREE -n home main


* Mit mkfs wird nun das Dateisystem auf die Partitionen geschrieben. Bei boot muss mit -O die 64-Bit-Fähigkeit deaktiviert werden, weil syslinux nur von einem 32-Bit-Dateisystem booten kann.


* Mit mkfs wird nun das Dateisystem auf die Partitionen geschrieben.
mkfs.ext4 -L root /dev/mapper/main-root
    root@archiso ~ # mkfs.ext4 /dev/mapper/main-root -L root
mkfs.ext4 -L home /dev/mapper/main-home
    root@archiso ~ # mkfs.ext4 /dev/mapper/main-home -L home
mkfs.ext4 -L boot -O '^64bit' /dev/sda1
    root@archiso ~ # mkfs.ext4 /dev/sda1 -L boot
mkswap -L swap /dev/mapper/main-swap
    root@archiso ~ # mkswap /dev/mapper/main-swap -L swap


* Dann werden die Partitionen gemountet:


* Dann werden die Partitionen gemounted:
mount /dev/mapper/main-root /mnt
    root@archiso ~ # mount /dev/mapper/main-root /mnt
mkdir /mnt/home
    root@archiso ~ # mkdir /mnt/home
mount /dev/mapper/main-home /mnt/home
    root@archiso ~ # mount /dev/mapper/main-home /mnt/home
mkdir /mnt/boot
    root@archiso ~ # mkdir /mnt/boot
mount /dev/sda1 /mnt/boot
    root@archiso ~ # mount /dev/sda1 /mnt/boot
 


== Basissystem und Bootloader installieren ==
== Basissystem und Bootloader installieren ==
* Vor der Installation des Basissystems sollte zunächst die Internetverbindung getestet werden:


* Bevor es jetzt los geht und wir das Basissystem installieren, testen wir erstmal die Internetverbindung:
root@archiso ~ # ping -c 3 www.google.com
    root@archiso ~ # ping -c 3 www.google.com


* Besteht keine Verbindung, sollte folgender Befehl Abhilfe schaffen:


* Besteht keine Verbindung, sollte folgender Befehl Abhilfe schaffen:
root@archiso ~ # dhcpcd
    root@archiso ~ # dhcpcd


* In der Mirrorliste sollten alle weit entfernten Server jetzt mit '''#''' auskommentiert werden.


* Wir bearbeiten nun zuerst unsere Mirrorliste, und kommentieren alle weit entfernten Server mit '''#''' aus.
nano /etc/pacman.d/mirrorlist
    root@archiso ~ # nano /etc/pacman.d/mirrorlist


Dies kann bei der Installation Geschwindigkeitsvorteile von ca. 30 Minuten bringen.
Dies kann bei der Installation Geschwindigkeitsvorteile von ca. 30 Minuten bringen.


* Dann wird das Basissystem inkl. Bootloader (in diesem Fall [[Syslinux]]) installiert.


* Dann wird das Basissystem inkl. Bootloader (ich habe mich für syslinux entschieden) installiert.
root@archiso ~ # pacstrap /mnt base base-devel syslinux nano linux linux-firmware mkinitcpio lvm2 dhcpcd
    root@archiso ~ # pacstrap /mnt base base-devel syslinux
 


* Nach der Basis-Installation wird syslinux in den MBR von sda geschrieben:
* Nach der Basis-Installation wird syslinux in den MBR von sda geschrieben:
    root@archiso ~ # syslinux-install_update -i -a -m -c /mnt


root@archiso ~ # syslinux-install_update -i -a -m -c /mnt


* Dann wird syslinux konfiguriert:
* Dann wird syslinux konfiguriert:
    root@archiso ~ # nano /mnt/boot/syslinux/syslinux.cfg


root@archiso ~ # nano /mnt/boot/syslinux/syslinux.cfg


* Die APPEND-Zeile muss bei beiden Einträgen (arch und archfallback angepasst werden:
* Die APPEND-Zeile muss bei beiden Einträgen (arch und archfallback) angepasst werden:
    APPEND cryptdevice=/dev/sda2:main root=/dev/mapper/main-root ro lang=de locale=de_DE.UTF-8


APPEND cryptdevice=/dev/sda2:main root=/dev/mapper/main-root rw lang=de locale=de_DE.UTF-8


== System konfigurieren ==
== System konfigurieren ==
* Nun wird die Swap-Partition aktiviert:


* Nun ermitteln wir zuerst die UUID der Swap-Partition:
swapon -L swap
    root@archiso ~ # blkid | grep swap
 


* Dann wird die fstab generiert und anschließend angepasst:
* Dann wird die [[fstab]] generiert und im Editor kontrolliert:
    root@archiso ~ # genfstab -p /mnt >> /mnt/etc/fstab
    root@archiso ~ # nano /mnt/etc/fstab


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


* Am Ende der Datei folgendes anfügen:
* Jetzt wird in die chroot-Umgebung gewechselt:
    # UUID=die_eben_ausgelesene_UUID LABEL=swap
    /dev/mapper/main-swap none swap defaults 0 1


arch-chroot /mnt


* Jetzt wechseln wir in die chroot-Umgebung:
* Spracheinstellungen werden in /etc/locale.conf festgelegt:
    root@archiso ~ # arch-chroot /mnt
{{hc|1=/etc/locale.conf|2=<nowiki>LANG="de_DE.UTF-8"


# Keep the default sort order (e.g. files starting with a '.'
# should appear at the start of a directory listing.)
LC_COLLATE="C"


* Spracheinstellungen in /etc/locale.conf festlegen:
LC_TIME="de_DE.UTF-8"</nowiki>}}
    LANG="de_DE.UTF-8"
   
    # Keep the default sort order (e.g. files starting with a '.'
    # should appear at the start of a directory listing.)
    LC_COLLATE="C"
   
    LC_TIME="de_DE.UTF-8"


* /etc/locale.gen editieren und locales generieren:
* /etc/locale.gen wird editiert und die locales generiert:
    sh-4.2# nano /etc/locale.gen


nano /etc/locale.gen


* '''#''' vor folgenden locales entfernen:
* '''#''' vor folgenden locales entfernen:
    de_DE.UTF-8 UTF-8
    de_DE ISO-8859-1
    de_DE@euro ISO-8859-15
* locales generieren:
    sh-4.2# locale-gen


de_DE.UTF-8 UTF-8
de_DE ISO-8859-1
de_DE@euro ISO-8859-15


* Config-Dateien für systemd anpassen:
* locales wird generiert:
    sh-4.2# echo myhostname >> /etc/hostname
    sh-4.2# echo KEYMAP=de-latin1 >> /etc/vconsole.conf
    sh-4.2# echo FONT=lat9w-16 >> /etc/vconsole.conf
    sh-4.2# echo FONT_MAP=8859-1_to_uni >> /etc/vconsole.conf
    sh-4.2# echo Europe/Berlin >> /etc/timezone
    sh-4.2# nano /etc/hosts


locale-gen


* Nun den Hostnamen hinzufügen:
* Config-Dateien für systemd werden angepasst:
    #<ip-address> <hostname.domain.org> <hostname>
    127.0.0.1 localhost.localdomain localhost myhostname
    ::1 localhost.localdomain localhost myhostname


echo myhostname >> /etc/hostname
echo KEYMAP=de-latin1 >> /etc/vconsole.conf
echo FONT=lat9w-16 >> /etc/vconsole.conf
echo FONT_MAP=8859-1_to_uni >> /etc/vconsole.conf


* Symlink für die Zeitzone erstellen:
* Symlink für die Zeitzone wird erstellt:
    sh-4.2# ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime


ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime


* /etc/rc.conf bearbeiten:
* /etc/mkinitcpio.conf wird angepasst:
    USELVM="yes".


nano /etc/mkinitcpio.conf


* HOOKS in /etc/mkinitcpio.conf bearbeiten:
* Die MODULES- und HOOKS-Werte werden entsprechend angepasst:
    HOOKS="base udev autodetect sata usbinput keymap encrypt lvm2 filesystems fsck shutdown"


Die hier vorgegebenen Hooks sind für das Booten von einer S-ATA-Festplatte mit einer USB-Tastatur gedacht und müssen daher evtl. angepasst werden. Alle verfügbaren Hooks sind unteter https://wiki.archlinux.org/index.php/Mkinitcpio#HOOKS zu finden.
MODULES=(ext4)
HOOKS=(base udev autodetect modconf block keyboard keymap encrypt lvm2 filesystems fsck shutdown)


Die hier vorgegebenen Hooks sind für das Booten von einer S-ATA-Festplatte mit einer USB-Tastatur gedacht und müssen daher evtl. angepasst werden. Alle verfügbaren Hooks sind unter https://wiki.archlinux.org/index.php/Mkinitcpio#HOOKS zu finden.


== Kernel-Image erstellen und der erste Neustart ==
== Kernel-Image erstellen und der erste Neustart ==
* Das Kernel-Image wird erstellt mittels:


* Damit es bei der Erstellung des Kernel-Images nicht zu dem Fehler bsdcpio: Failed to set default locale kommt, führen wir folgendes aus:
mkinitcpio -p linux
    sh-4.2# export LANG=de_DE.UTF-8
 
 
* Dann erstellen wir das Kernel-Image:
    sh-4.2# mkinitcpio -p linux
 
 
* Jetzt legen wir das Passwort für root an:
    sh-4.2# passwd


* Für root wird ein Passwort angelegt:


* Anschließend verlassen wir die chroot-Umgebung und hängen die Partitionen aus:
passwd
    sh-4.2# exit
    root@archiso ~ # umount /mnt/{boot,home,}
    root@archiso ~ # reboot


* Damit per DHCP automatisch eine IP-Adresse beim Bootvorgang bezogen wird, muss jetzt der entsprechende systemd-Dienst aktiviert werden:


* Der PC startet nun neu und wir werden – sofern bisher alles gut gegangen ist – von unserem Bootloader gefolgt von der Eingabeaufforderung zur Entschlüsselung des cryptdevice begrüßt. Gebt das Passwort ein und meldet euch, nachdem der Bootvorgang abgeschlossen ist, als root an.
systemctl enable dhcpcd.service


* Anschließend werden die chroot-Umgebung verlassen und die Partitionen ausgehängt:


== Systemd einrichten und SysVInit deinstallieren ==
exit
umount /mnt/{boot,home,}
reboot


* Als erstes bringen wir nun pacman auf den neusten Stand:
* Der PC startet nun neu und man wird – sofern bisher alles gut gegangen ist – vom Bootloader gefolgt von der Eingabeaufforderung zur Entschlüsselung des cryptdevice begrüßt. Nun ist das Passwort einzugeben. Nachdem der Bootvorgang abgeschlossen ist, muss man sich als root anmelden.
    [root@myhostname ~] pacman -Syy




== systemd einrichten ==
* Sollte das Netzwerk nicht gestartet sein, folgenden Befehl ausführen:
* Sollte das Netzwerk nicht gestartet sein, folgenden Befehl ausführen:
    [root@myhostname ~] dhcpcd


dhcpcd


* Dann wird systemd installiert. Außerdem installieren wir noch die Arch Units für systemd
* Welche IP-Adresse vergeben wurde, kann mittels ip-Programm festgestellt werden:
    [root@myhostname ~] pacman -S systemd systemd-arch-units
 
 
* In /boot/syslinux/syslinux.cfg fügen wir den APPEND-Zeile vom LABEL arch folgenden Eintrag am Ende hinzu:
    init=/bin/systemd
 
 
* Dann starten wir das System neu und wählen im Bootmenü den Eintrag Arch Linux aus:
    [root@myhostname ~] reboot
 
* In /boot/syslinux/syslinux.cfg entfernen wir nun wieder den zuvor gesetzten Eintrag init=/bin/systemd.
 
 
* Um systemd komplett zu integrieren, werden nun folgende Befehle ausgeführt:
    [root@myhostname ~] pacman -R initscripts sysvinit
    [root@myhostname ~] pacman -S systemd-sysvcompat


ip addr


* Services für systemd einrichten:
* Services für systemd einrichten:
    [root@myhostname ~] systemctl enable dhcpcd@.service
    [root@myhostname ~] systemctl enable cronie.service
    [root@myhostname ~] systemctl enable lvm.service


systemctl enable cronie.service


* Im Falle, dass ein x86_64 System installiert wurde, kann in der /etc/pacman.conf noch das multilib-repo aktiviert werden. Anschließend müssen pacman’s Paketlisten wieder auf den neusten Stand gebracht werden:
* Im Falle, dass ein x86_64 System installiert wurde, kann in der /etc/pacman.conf noch das multilib-repo aktiviert werden. Anschließend müssen pacman’s Paketlisten wieder auf den neusten Stand gebracht werden:
    [root@myhostname ~] pacman -Syy


* Ein letzer Reboot und wir können damit anfangen, unser frisch installiertes Arch an unsere Bedürfnisse anzupassen.
pacman -Syy
    [root@myhostname ~] reboot


* Ein letzter Reboot und man kann damit anfangen, das frisch installierte Arch an die eigenen Bedürfnisse anzupassen.


reboot


Erstellt von [[Benutzer:Durag|Durag]] am 20. August 2012
[[Kategorie:Installation]]
[[Kategorie:Installation]]
[[en:dm-crypt/Encrypting an entire system]]

Aktuelle Version vom 24. März 2021, 12:32 Uhr

Dieser Artikel wurde als veraltet markiert, und sollte kontrolliert, und gegebenfalls korrigiert bzw. aktualisiert werden.


Dieser Artikel behandelt die Installation eines ArchLinux-Grundsystems mit verschlüsseltem LVM und der kompletten Integration von systemd. Die Anleitung wurde unter Verwendung der Installations-Medien 2015.07.01 (archlinux-2015.07.01-dual.iso) erstellt. Die Installation sollte aber auch mit zukünftigen Medien (zumindest vorerst) nicht großartig anders verlaufen.

Installationsmedium vorbereiten

  • Das Installations-Image von http://www.archlinux.org/download/ herunterladen.
  • Das Image auf CD brennen oder unter einem funktionierendem Linux-System (z. B. Live-CD) auf einen USB-Stick kopieren. Dies funktioniert wie folgt:
dd if=archlinux.iso of=/dev/sdx


Installation starten

  • Nun wird vom vorbereiteten Installations-Medium gebootet.
  • Auf der Konsole angekommen, wird zuerst einmal das deutsche Tastatur-Layout geladen.
root@archiso ~ # loadkeys de-latin1

Da das Layout derzeit noch auf Englisch eingestellt ist, muss z anstatt y und ß anstatt - eingegeben werden.

Festplatte vorbereiten

  • Jetzt wird es Zeit, die Festplatten zu partitionieren. Dies kann bei Bios-Boot Systemen und Festplatten bis 2TB mit fdisk, ansonsten immer mit gdisk durchgeführt werden. Für das System mit LVM werden zwei Partitionen erstellt:

sda1 mit einer Größe von 100 MB und boot-Flag (dies wird später die Boot-Partition)

sda2, welche den Rest der Festplatte einnimmt (hier wird das verschlüsselte LVM abgelegt)


  • Zur Sicherheit wird die Festplatte jetzt überschrieben:
root@archiso ~ # shred -v /dev/sda2

Standardmäßig wird dieser Vorgang drei Mal durchgeführt, wobei ein Durchgang bei einer ca. 2 TB großen Festplatte schon mal fünf bis sechs Stunden in Anspruch nehmen kann.

  • Wer deswegen den Vorgang nur einmal durchführen möchte, kann stattdessen folgenden Befehl ausführen:
shred -v -n 1 /dev/sda2

Verschlüsseltes LVM einrichten

  • Jetzt werden die benötigte Kernel-Modul für die Verschlüsselung geladen:
root@archiso ~ # modprobe dm-crypt
  • Anschließend wird sda2 verschlüsselt:
root@archiso ~ # cryptsetup -c aes-xts-plain -y -s 512 luksFormat /dev/sda2

Für Volumes größer als 2 TiB sollte aes-xts-plain64 verwendet werden. Kernelunterstützung hierfür gibt es seit Kernel 2.6.33. Die Option aes-xts-plain64 kann auch für Volumes kleiner 2 TiB verwendet werden.

  • Die Eingabeaufforderung mit YES bestätigen und anschließend ein sicheres Passwort vergeben. Hierbei sollten schon 20 Zeichen inkl. Sonderzeichen und Zahlen verwendet werden.
  • Jetzt wird die verschlüsselte Partition geöffnet und das LVM eingerichtet:
cryptsetup luksOpen /dev/sda2 lvm
pvcreate /dev/mapper/lvm
vgcreate main /dev/mapper/lvm
lvcreate -L 200GB -n root main
lvcreate -L 8GB -n swap main
lvcreate -l 100%FREE -n home main

Je nach Festplattengröße und/oder zukünftiger Erweiterung des Grundsystems kann auch eine geringere Größe für das root-Volume (-n root) festgelegt werden. Wenn das home-Volume (-n home) nicht den verbleibenden Platz komplett ausfüllt, können später LVM-Snapshots erstellt werden. Dazu kann - wie bei den anderen lvcreate-Befehlen - eine geringere Größe angegeben werden, zum Beispiel -L 50GB.

  • Mit mkfs wird nun das Dateisystem auf die Partitionen geschrieben. Bei boot muss mit -O die 64-Bit-Fähigkeit deaktiviert werden, weil syslinux nur von einem 32-Bit-Dateisystem booten kann.
mkfs.ext4 -L root /dev/mapper/main-root
mkfs.ext4 -L home /dev/mapper/main-home
mkfs.ext4 -L boot -O '^64bit' /dev/sda1
mkswap -L swap /dev/mapper/main-swap
  • Dann werden die Partitionen gemountet:
mount /dev/mapper/main-root /mnt
mkdir /mnt/home
mount /dev/mapper/main-home /mnt/home
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot

Basissystem und Bootloader installieren

  • Vor der Installation des Basissystems sollte zunächst die Internetverbindung getestet werden:
root@archiso ~ # ping -c 3 www.google.com
  • Besteht keine Verbindung, sollte folgender Befehl Abhilfe schaffen:
root@archiso ~ # dhcpcd
  • In der Mirrorliste sollten alle weit entfernten Server jetzt mit # auskommentiert werden.
nano /etc/pacman.d/mirrorlist

Dies kann bei der Installation Geschwindigkeitsvorteile von ca. 30 Minuten bringen.

  • Dann wird das Basissystem inkl. Bootloader (in diesem Fall Syslinux) installiert.
root@archiso ~ # pacstrap /mnt base base-devel syslinux nano linux linux-firmware mkinitcpio lvm2 dhcpcd
  • Nach der Basis-Installation wird syslinux in den MBR von sda geschrieben:
root@archiso ~ # syslinux-install_update -i -a -m -c /mnt
  • Dann wird syslinux konfiguriert:
root@archiso ~ # nano /mnt/boot/syslinux/syslinux.cfg
  • Die APPEND-Zeile muss bei beiden Einträgen (arch und archfallback) angepasst werden:
APPEND cryptdevice=/dev/sda2:main root=/dev/mapper/main-root rw lang=de locale=de_DE.UTF-8

System konfigurieren

  • Nun wird die Swap-Partition aktiviert:
swapon -L swap
  • Dann wird die fstab generiert und im Editor kontrolliert:
genfstab -U -p /mnt >> /mnt/etc/fstab
nano /mnt/etc/fstab
  • Jetzt wird in die chroot-Umgebung gewechselt:
arch-chroot /mnt
  • Spracheinstellungen werden in /etc/locale.conf festgelegt:
/etc/locale.conf
LANG="de_DE.UTF-8"

# Keep the default sort order (e.g. files starting with a '.'
# should appear at the start of a directory listing.)
LC_COLLATE="C"

LC_TIME="de_DE.UTF-8"
  • /etc/locale.gen wird editiert und die locales generiert:
nano /etc/locale.gen
  • # vor folgenden locales entfernen:
de_DE.UTF-8 UTF-8
de_DE ISO-8859-1
de_DE@euro ISO-8859-15
  • locales wird generiert:
locale-gen
  • Config-Dateien für systemd werden angepasst:
echo myhostname >> /etc/hostname
echo KEYMAP=de-latin1 >> /etc/vconsole.conf
echo FONT=lat9w-16 >> /etc/vconsole.conf
echo FONT_MAP=8859-1_to_uni >> /etc/vconsole.conf
  • Symlink für die Zeitzone wird erstellt:
ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime
  • /etc/mkinitcpio.conf wird angepasst:
nano /etc/mkinitcpio.conf
  • Die MODULES- und HOOKS-Werte werden entsprechend angepasst:
MODULES=(ext4)
HOOKS=(base udev autodetect modconf block keyboard keymap encrypt lvm2 filesystems fsck shutdown)

Die hier vorgegebenen Hooks sind für das Booten von einer S-ATA-Festplatte mit einer USB-Tastatur gedacht und müssen daher evtl. angepasst werden. Alle verfügbaren Hooks sind unter https://wiki.archlinux.org/index.php/Mkinitcpio#HOOKS zu finden.

Kernel-Image erstellen und der erste Neustart

  • Das Kernel-Image wird erstellt mittels:
mkinitcpio -p linux
  • Für root wird ein Passwort angelegt:
passwd
  • Damit per DHCP automatisch eine IP-Adresse beim Bootvorgang bezogen wird, muss jetzt der entsprechende systemd-Dienst aktiviert werden:
systemctl enable dhcpcd.service
  • Anschließend werden die chroot-Umgebung verlassen und die Partitionen ausgehängt:
exit
umount /mnt/{boot,home,}
reboot
  • Der PC startet nun neu und man wird – sofern bisher alles gut gegangen ist – vom Bootloader gefolgt von der Eingabeaufforderung zur Entschlüsselung des cryptdevice begrüßt. Nun ist das Passwort einzugeben. Nachdem der Bootvorgang abgeschlossen ist, muss man sich als root anmelden.


systemd einrichten

  • Sollte das Netzwerk nicht gestartet sein, folgenden Befehl ausführen:
dhcpcd
  • Welche IP-Adresse vergeben wurde, kann mittels ip-Programm festgestellt werden:
ip addr
  • Services für systemd einrichten:
systemctl enable cronie.service
  • Im Falle, dass ein x86_64 System installiert wurde, kann in der /etc/pacman.conf noch das multilib-repo aktiviert werden. Anschließend müssen pacman’s Paketlisten wieder auf den neusten Stand gebracht werden:
pacman -Syy
  • Ein letzter Reboot und man kann damit anfangen, das frisch installierte Arch an die eigenen Bedürfnisse anzupassen.
reboot