Systemverschlüsselung mit dm-crypt: Unterschied zwischen den Versionen
SiD (Diskussion | Beiträge) K →Systemd einrichten und SysVInit deinstallieren: systems-arch-units exitiert nicht mehr |
KKeine Bearbeitungszusammenfassung |
||
Zeile 255: | Zeile 255: | ||
Erstellt von [[Benutzer:Durag|Durag]] am 20. August 2012 | Erstellt von [[Benutzer:Durag|Durag]] am 20. August 2012 | ||
[[Kategorie:Installation]] | [[Kategorie:Installation]] | ||
[[en:dm-crypt with LUKS]] |
Version vom 5. November 2012, 13:00 Uhr
Zusammenfassung
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
- 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 und das Setup für die entsprechende Systemarchitektur (i686 oder x86_64) gestartet.
- 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 z.B. mit cfdisk durchgeführt werden. Für unseren Zweck erstellen wir zwei Partitionen:
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:
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.
- 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
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.
- Die Eingabeaufforderung mit YES bestätigen und anschließ ein sicheres Passwort vergeben. Hierbei sollten schon 20 Zeichen inkl. Sonderzeichen und Zahlen verwendet werden.
- Jetzt wird die verschlüsselte Partiton geöffnet und das LVM eingerichtet:
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.
root@archiso ~ # mkfs.ext4 /dev/mapper/main-root -L root root@archiso ~ # mkfs.ext4 /dev/mapper/main-home -L home root@archiso ~ # mkfs.ext4 /dev/sda1 -L boot root@archiso ~ # mkswap /dev/mapper/main-swap -L swap
- Dann werden die Partitionen gemounted:
root@archiso ~ # mount /dev/mapper/main-root /mnt root@archiso ~ # mkdir /mnt/home root@archiso ~ # mount /dev/mapper/main-home /mnt/home root@archiso ~ # mkdir /mnt/boot root@archiso ~ # mount /dev/sda1 /mnt/boot
Basissystem und Bootloader installieren
- Bevor es jetzt los geht und wir das Basissystem installieren, testen wir erstmal die Internetverbindung:
root@archiso ~ # ping -c 3 www.google.com
- Besteht keine Verbindung, sollte folgender Befehl Abhilfe schaffen:
root@archiso ~ # dhcpcd
- Wir bearbeiten nun zuerst unsere Mirrorliste, und kommentieren alle weit entfernten Server mit # aus.
root@archiso ~ # nano /etc/pacman.d/mirrorlist
Dies kann bei der Installation Geschwindigkeitsvorteile von ca. 30 Minuten bringen.
- Dann wird das Basissystem inkl. Bootloader (ich habe mich für syslinux entschieden) installiert.
root@archiso ~ # pacstrap /mnt base base-devel syslinux
- 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 ro lang=de locale=de_DE.UTF-8
System konfigurieren
- Nun ermitteln wir zuerst die UUID der Swap-Partition:
root@archiso ~ # blkid | grep swap
- Dann wird die fstab generiert und anschließend angepasst:
root@archiso ~ # genfstab -p /mnt >> /mnt/etc/fstab root@archiso ~ # nano /mnt/etc/fstab
- Am Ende der Datei folgendes anfügen:
# UUID=die_eben_ausgelesene_UUID LABEL=swap /dev/mapper/main-swap none swap defaults 0 1
- Jetzt wechseln wir in die chroot-Umgebung:
root@archiso ~ # arch-chroot /mnt
- Spracheinstellungen in /etc/locale.conf festlegen:
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:
sh-4.2# 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 generieren:
sh-4.2# locale-gen
- Config-Dateien für systemd anpassen:
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
- Nun den Hostnamen hinzufügen:
#<ip-address> <hostname.domain.org> <hostname> 127.0.0.1 localhost.localdomain localhost myhostname ::1 localhost.localdomain localhost myhostname
- Symlink für die Zeitzone erstellen:
sh-4.2# ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime
- /etc/rc.conf bearbeiten:
USELVM="yes".
- HOOKS in /etc/mkinitcpio.conf bearbeiten:
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.
Kernel-Image erstellen und der erste Neustart
- Damit es bei der Erstellung des Kernel-Images nicht zu dem Fehler bsdcpio: Failed to set default locale kommt, führen wir folgendes aus:
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
- Anschließend verlassen wir die chroot-Umgebung und hängen die Partitionen aus:
sh-4.2# exit root@archiso ~ # umount /mnt/{boot,home,} root@archiso ~ # reboot
- 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.
Systemd einrichten und SysVInit deinstallieren
- Als erstes bringen wir nun pacman auf den neusten Stand:
[root@myhostname ~] pacman -Syy
- Sollte das Netzwerk nicht gestartet sein, folgenden Befehl ausführen:
[root@myhostname ~] dhcpcd
- Dann wird systemd installiert.
[root@myhostname ~] pacman -S systemd
- 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
- Services für systemd einrichten:
[root@myhostname ~] systemctl enable dhcpcd@.service [root@myhostname ~] systemctl enable cronie.service [root@myhostname ~] systemctl enable lvm.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:
[root@myhostname ~] pacman -Syy
- Ein letzer Reboot und wir können damit anfangen, unser frisch installiertes Arch an unsere Bedürfnisse anzupassen.
[root@myhostname ~] reboot
Erstellt von Durag am 20. August 2012