Eine Arbeitsnotiz zur Gentoo Installaion mit Verschlüsselter Root und Swap Partition. Die Arbeit wurde nicht genauer überprüft und ist experimenteller Natur. Es sollte aber das meiste Funktionieren. Unten neben der Verionsnummer befindet sich das Datum der letzten Änderung.
Version: 1.1 23.6.2023, Archtektur: Amd64 ##### # Offene Punkte: # ============== # # Qemu mit Wifi Routing: https://wiki.gentoo.org/wiki/QEMU/Bridge_with_Wifi_Routing # # Infos zur Plattenverschlüsselung von Debian: https://cryptsetup-team.pages.debian.net/cryptsetup/encrypted-boot.html # # Allgemeine Infos wie man ein Linux aufbaut (Deutsch): http://oss.erdfunkstelle.de/lfs-de/6.4/online/index.html ##### ##### # Wichtige Quellen für weitere Möglichkeiten # Ich beschreibe hier nur einen einfachen Weg ein Basissystem ohne Desktop mit Verschlusselung der # Rootpartition und der Swappartition. Mit der Möglickeit das System über das Internet das zum # booten nötige Passwort für die Platten Verschlüsselung zu setzen. Gentoo-Handbuch: https://wiki.gentoo.org/wiki/Handbook:AMD64/Full/Installation/de Beschreibung der Möglichkeiten Laufwerke zu benennen (Label): https://wiki.archlinux.org/index.php/Persistent_block_device_naming https://wiki.ubuntuusers.de/Labels/ # ##### ##### # Parameter die veränderlich sind. Intallations Device: /dev/sdb Stage3 UrL : https://www.gentoo.org/downloads/ Stage3 Filename : stage3-amd64-openrc-<Datum/Version>.tar.xz Stage3 Prüfsumme : stage3-amd64-openrc-<Datum/Version>.tar.xz.DIGESTS Mount Verzeichnis : /mnt Alle Angaben zur Hardware müssen an die eigene Hardware angepasst werden. # ##### ##### # Stage3 und Prüfsumme Download. # # Auf der Gentoo Seite: www.gentoo.org/downloads/ # Architektur: Amd64 suchen und dann die Überschrift: Details (contents, hashes, and signatures) # Hier den Link Stage3 wählen und dann folgenden Dateinamen: stage3-amd64-openrc-<Datum/Version>.tar.xz # Den Link kann man im Browser kopieren und mit wget herunterladen. stage3-amd64-openrc-<Datum/Version>.tar.xz stage3-amd64-openrc-<Datum/Version>.tar.xz.DIGESTS # Die Signatur der Prüfsummendatei *.DIGESTS prüfen. # Hier: https://www.gentoo.org/downloads/signatures/ kann man die Key-Fingerprint finden. # Gentoo Linux Release Engineering (Automated Weekly Release Key) gpg --verify stage3-amd64-openrc-<Datum/Version>.tar.xz.DIGESTS # Stage3 Prüfsumme des Download mit der von Gentoo angegebenen Prüfsumme vergleichen. # In der heruntergeladenen DIGESTS Datei befinden sich mehrere Prüfsummen. Ich kopiere dann immer die Prüfsumme von dem # unteren Kommando in die DIGESTS Datei. Wenn man dann die vi Suchfunktion benutzt mit der Prüfsumme werden die zwei # übereinstimmenden markiert. Nicht elegant aber funktioniert ... :-) sha512sum stage3-amd64-openrc-<Datum/Version>.tar.xz # ##### ##### # Stage3 entpacken # # Wird nicht auf der Zielpaltte entpakt muss man noch die Daten auf die Platte kopieren # (cp -a) tar xpvf stage3-amd64-openrc-<Datum/Version>.tar.xz --xattrs-include='*.*' --numeric-owner -C /mnt # ##### ##### # Waren auf der Platte schon mal Daten gespeichert empfiehlt es sich diese mit Zufälligen Werten zu überschreiben. # Andernfalls ist es möglich das in den Freien Bereichen Daten unverschlüsselt stehen geblieben sind. # Mit cp werden Daten so lange auf die Platte kopiert bis diese voll ist. In diesem Fall wurde eine Meschanische # USB-Platte mit ca. 35 M/s beschrieben. Mit dd werden auch keine besseren Werte erreicht. cp /dev/urandom /dev/sdb # Was muss man bei SSD speziell beachten? # ##### ##### # Mit fdisk Partitionen anlegen # # GPT Partitionentabel anlegen. Die können eigene Label haben. # Mit fdisk kann man das setzen im Experten Modus (x). Dann mit (n) einen Namen vergeben. # z.B <Hostname>Root und <Hostname>Swap # Die Nummer neben der Partition größe ist der Partitiontyp. /dev/sdb1 +5M 4 (BIOS boot) /dev/sdb2 +100M 20 (Linux Filesystem) (Partitionlabel: GentooBoot) /dev/sdb3 +20G 19 (Linux Swap) (Partitionlabel: GentooSwap) /dev/sdb4 +<Rest> 23 (Linux root x86-64) (Partitionlabel: GentooRoot) # ##### ##### # Die Partitionen root und swap verschlüsseln. cryptsetup luksFormat -c aes-xts-plain64 -s 512 -h sha512 -y /dev/sdb3 cryptsetup luksFormat -c aes-xts-plain64 -s 512 -h sha512 -y /dev/sdb4 # Vor dem Formatieren muss die Verschlüsselung für die Partitionen gestartet werden. cryptsetup luksOpen /dev/sdb3 GentooSwap cryptsetup luksOpen /dev/sdb4 GentooRoot # ##### ##### # Filesysteme auf der Platte anlegen mkfs.ext2 -L GentooBoot /dev/sdb2 mkfs.ext4 -L GentooRoot /dev/mapper/GentooRoot # SWAP Verschlüsselung mit einem Keyfile einrichten. mkswap -L GentooSwap /dev/mapper/GentooSwap # Evtl. Label nochmal ändern e2label /dev/sdbx e2label /dev/sdbx # ##### ##### # root Filesystem mounten mount /dev/mapper/GentooRoot /mnt # ##### ##### # Stage3 entpacken # # Wird nicht auf der Zielpaltte entpakt muss man noch die Daten auf die Platte kopieren # (cp -a ) tar xpvf stage3-amd64-openrc-<Datum/Version>.tar.xz --xattrs-include='*.*' --numeric-owner -C /mnt # ##### ##### # boot Filesystem mounten mount /dev/sdb2 /mnt/boot # SWAP evtl. aktivieren swapon /dev/mapper/GentooSwap # ##### ##### # Systemuhr auf die richtige Zeit stellen. # Das ist für Portage wichtig sonst werden evtl. alte Pakete intalliert. ntpdate ptbtime1.ptb.de # ##### ##### # Das neue System in einer chroot Umgebung starten. cd / mount --types proc /proc /mnt/proc mount --rbind /dev /mnt/dev mount --rbind /sys /mnt/sys cp --dereference /etc/resolv.conf /mnt/etc/ chroot /mnt /bin/bash source /etc/profile export PS1="(chroot) $PS1" # ##### ##### # Portage Optionen einstellen. Datei: /etc/portage/make.conf Inhalt: # # Anzahl der Kerne die der Compiler verwendet bei der Erstellung der Gentoo Sourcepakete. # Soll mit dem System wärend der installation von Gentoo Paketen noch gearbeitet werden # oder ist nur wenig Speicher vorhanden hat sich die Anzahl der Kerne/2 bewährt. Bei wenig # Speicher kann es aber auch sein das nur ein Kern geht. # MAKEOPTS="-j2" # # USE-Flag zum anpassen der Installation. # (Je nach eigener Nutzung anpassen.) # USE="-gnome -kde -llvm -clang -rust elogind egl opengl gles2 ipv6" # # nouveau OpenSource Nvidia Treiber. # (Treiber für die eigene Grafikkarte eintragen. Es sind mehrere Möglich.) # VIDEO_CARDS="nouveau" # # Programme mit Deutscher Sprache erstellen. # (Eigene Sprache wählen.) # LINGUAS="de" L10N="de" # ##### ##### # Portage konfigurieren # Portage Paketdaten Download # Das Verzeichnis wird in der /etc/portage/make.conf konfiguriert # Speicherort: /var/db/repos/gentoo # # Gibt es Fehlermeldungen beim Sync prüfen ob Systemdatum aktuell ist und die # Netzwerkverbindung funktioniert. emerge-webrsync emerge --sync # Nutzerprofilliste anzeigen eselect profile list # Nutzerprofil auswählen # Welches Profil muss man je nach gewünschter Verwendung wählen. # Die Nummern ändern sich laufend und muss vorher geprüft werden. # Benutze dieses für ein Basis System ohne Desktop: [16] default/linux/amd64/17.1 (stable) eselect profile set 16 # Wichtig die News lesen (enthalten oft wichtige Infos zu Änderungen) eselect news list eselect news read <News-Nr> # System updaten emerge --ask --verbose --update --deep --newuse @world # ##### ##### # Zeitzone einstellen # Passenden Wert suchen: /usr/share/zoneinfo/ ls /usr/share/zoneinfo/Europe/ # Zeitzone einstellen echo "Europe/Berlin" > /etc/timezone # Zeitzone konfigurieren emerge --config sys-libs/timezone-data # ##### ##### # Sprache/Zeichensatz/Datums-Währungsformat einstellen (Locale) # # Bestimmt auch das Zahlen-/Datumsformat # In der Datei: /etc/locale.gen den Wert: de_DE.UTF-8 UTF-8 eintragen. # (Gültige Werte siehe: /usr/share/i18n/SUPPORTED) # Locale generieren locale-gen # Prüfen welche locale vorhanden sind. locale -a # Systemweite locale einstellen eselect locale list Available targets for the LANG variable: [1] C [2] C.utf8 [3] POSIX [4] de_DE.utf8 [ ] (free form) eselect locale set 4 # Die Systemlocale steht dann in der Datei: /etc/env.d/02locale # Umgebung neu laden damit die neuen Einstellungen aktiv werden. env-update source /etc/profile export PS1="(chroot) ${PS1}" # ##### ##### # Tastatur Layout einstellen # # Datei: /etc/conf.d/keymaps # Mögliche Werte: /usr/share/keymaps/i386/qwertz # Eintragen: keymap="de-latin1" # Neustarten /etc/init.d/keymaps restart # ##### ##### # /etc/fstab anpassen # Sollte folgenden Inhalt haben PARTLABEL=GentooBoot /boot ext2 noauto,noatime 1 2 PARTLABEL=GentooRoot / ext4 noatime 0 1 PARTLABEL=GentooSwap none swap sw 0 0 # ##### ##### # Hostnamen einstellen # # Datei: /etc/conf.d/hostname hostname="hulk" # Datei: /etc/hosts 127.0.0.1 hulk.thewebsideoflife.de hulk # ##### ##### # Netzwerkkonfiguration # # Qemu : Client Netzwerkzugriffe. Zugriffe von Außen werden blockiert. Ping geht nicht wird blockiert. # Hardware: Der Name der Netzwerkschnittstelle "ens3" muss ihrem Rechner angepasst werden. # # Anzeigen der vorhandenen Netzwerkgeräte ip addr # Client Netzwerkzugriff mit DHCP # Ping geht nicht beim starten mit QEMU # Die Datei muss neu angelegt werden. nano /etc/conf.d/net # DHCP-Client installieren # wird der benötigt ??? emerge --ask dhcpcd # Den lokalen Domainnamen einstellen dns_domain_lo="thewebsideoflife.de" # Netzwerkschnittstell DHCP Konfigurieren. config_ens3="dhcp" # Symbolischen Link zum start dieser Netzwerkschnittstelle anlegen ln -s /etc/init.d/net.lo /etc/init.d/net.ens3 # Netzwekverbindung beim booten starten. # Fügt den oben angelegten Link dem Runlevel "defautl" hinzu. rc-update add net.ens3 default # WLAN-Konfiguration emerge --ask wpa_supplicant # ##### ##### # Netzwerkkonfiguration # # Qemu : Server Netzwerkzugriffe. Es sind auch eingehende Verbindungen möglich. # Der Zugriff auf dem Hostsystem wird über tun/tap realisiert. Für eine Verbindung # muss auf dem Hostsystem eine Bridge konfiguriert werden. Hier wird aber nur die # konfiguration für einen Qemu Gastsystem beschrieben. # Hardware: Der Name der Netzwerkschnittstelle "ens3" muss ihrem Rechner angepasst werden. # # Anzeigen der vorhandenen Netzwerkgeräte ip addr # Die Datei muss neu angelegt werden. nano /etc/conf.d/net # ##### ##### # Linux Kernel und das Gentoo Kernel Tool installieren # # Kernel und Firmware Lizenzen akzeptieren. Verzeichnis: mkdir /etc/portage/package.license cd /etc/portage/package.license Datei : kernel Inhalt : # Für kaputte Intel CPUs nötige Microcode Updates. sys-firmware/intel-microcode intel-ucode # Gentoo-Sources verlangt nach Zustimmung zur Lizenz von Linux-Firmware sys-kernel/gentoo-sources linux-firmware sys-kernel/linux-firmware linux-fw-redistributable no-source-code # Kernel und Fimware Paket installieren. emerge --ask sys-kernel/gentoo-sources sys-kernel/genkernel # Alle installierten Kernel anzeigen eselect kernel list # Über die Nummer einen Auswählen # Das legt auch den Symolischen Link "linux" an. eselect kernel set 1 # Wenn vorhanden eine Kernel Konfigurationsdatei kopieren # Diese evtl. auf eine neue Kernel Version updaten. .config make olddefconfig # Kernel und initramfs mit genkernel generieren. # --luks wird benötigt für Verschlüsseltes root und swap Filesystem. # --ssh wird benötigt um remote die Verschlüsselung zu entsperren. # --keymap Deutsche Keymap ins initramfs einbauen. genkernel --no-clean --luks --keymap --microcode --menuconfig all # ... oder so wenn man z.B. auf einem Amd64 ein Intel 32Bit bauen will. genkernel --no-clean --luks --keymap --menuconfig --cross-compile=i686-pc-linux-gnu all # Grub installieren und konfigurieren. # Soll auch ein Windows gebootet werden hilft es das Paket: sys-boot/os-prober zu installieren # War die Installation erfolgreich wird mindestens einmal: Found linux image und Found initrd image # ausgegeben. # Grub installieren emerge --ask sys-boot/grub # Anpassungen in der /etc/default/grub machen GRUB_CMDLINE_LINUX="crypt_root=PARTLABEL=GentooRoot crypt_swap=PARTLABEL=GentooSwap root=/dev/mapper/root" # Bei Fehlermeldungen prüfen ob die boot Partition gemountet ist. # Auch wenn ein neues InitRamFs den gleichen Namen hat muss grub-mmkconfig ausgeführt werden. mount /boot grub-install /dev/sdb grub-mkconfig -o /boot/grub/grub.cfg # ##### ##### # Zum booten nötige Pakete noch installieren emerge --ask cryptsetup # ##### ##### # Root Passwort festlegen passwd # ##### ##### # User anlegen # Die Gruppe wheel wird benötigt wenn man su benutzen will. useradd -m -G wheel -s /bin/bash <UserName> # Passwort für den User festlegen passwd <UserName> # ##### ##### # chroot Umgebung verlassen und Platte unmounten. exit # Anzeigen was noch gemountet ist mount | grep /mnt # Alle gemounteten /mnt unmounten # Es kommt vor das nicht beim ersten mal alle unmounts ausgeführt werden. # Man kann den Befehlsblock dann einfach ein weiteres mal ausführen. Bis # umount /mnt auch ohne Fehler ausgeführt wird. umount /mnt/boot umount /mnt/proc umount --recursiv /mnt/sys umount --recursiv /mnt/dev umount /mnt swapoff /dev/mapper/GentooSwap # Verschlüsselung beenden cryptsetup close GentooRoot cryptsetup close GentooSwap # ##### ################################################################################################################################ # Jetzt kann man das System booten und muss nicht mehr im chroot arbeiten. # # # # Wurde das System auf einen USB-Datenträger oder ein Datei Image installiert # # kann man es auch mit Qemu booten. # # # # Auf einem USB-Datenträger geht das so: # # Qemu: Client Netzwerkzugriffe. Zugriffe von Außen werden blockiert. Ping geht nicht wird blockiert. # # Booten eines Verschlüsselten Systems kann mit einem Gbyte RAM beim Entsperren des Laufwerks fehlschlagen. # # qemu-system-x86_64 -enable-kvm -drive file=/dev/sdb,format=raw -serial stdio -k de -m 2G -cpu host -smp 2 -net nic -net user # # # ################################################################################################################################ ##### # Interesssnte Programme installieren # Es ist möglich das Pakete schon im Stage3 enthalten sind. # Vor dem installieren von Paketen die Sprache einstellen. Beschreibung weiter oben. emerge --ask # Editor app-editors/vim # System app-admin/syslog-ng sys-process/cronie net-misc/ntp usbutils pciutils wpa_supplicant bluez genkernel gentoo-sources (Kernel) grub dhcpcd openntpd (Soll nur die Systemzeit über Netz aktuallisiert werden ist das Paket nicht nötig.) # Gentoo Portage gentoolkit genlop portage-utils # Internet Wählverbindungen oder DSL ohne Router ppp wvdial # ##### ##### # Syslog konfiguration rc-config add syslog-ng default # ##### ##### # Cronie konfigurieren rc-config add cronie default # ##### ##### # NTP konfigurieren rc-config add ntpd default # ##### ################################################################################################################################ # Automatisches entsperren einer mit LUKS Verschlüsselten Platte # # # Gentoo hat bei openrc einen Dienst dafür: /etc/init.d/dmcrypt # # Dafür braucht man eine externes Keyfile # Keyfile erzeugen # Testen ob man nicht das normale Passwort einfach in ein Keyfile schreiben kann? head -c 256 /dev/random > Keyfile # Einem Verschlüsseltem Laufwerk ein Keyfile zuordnen. cryptsetup luksAddKey /dev/sda1 Keyfile # # ################################################################################################################################