Gentoo Linux mit Festplattenverschlüsselung
Installation eines Grundsystems mit Festplattenverschlüsselung
tar xjpfv stage3-amd64-20090326.tar.bz2 tar xvjf /mnt/gentoo/portage-latest.tar.bz2 -C /mnt/gentoo/usr
Wechsel in das System mit chroot:
mount -t proc none /mnt/gentoo/proc mount -o bind /dev /mnt/gentoo/dev mirrorselect -i -o >> /mnt/gentoo/etc/make.conf cp /etc/resolv.conf /mnt/gentoo/etc
Wählen Sie mit mirrorselect einen Mirror in Ihrer Nähe. wenn Sie einen Proxy haben, müssen Sie vorher eingeben: export http_proxy=http://<ip-adresse>:<port>. Wenn Sie WLAN nutzen wollen, bitte im Abschnitt WLAN weiter hinten nachschauen.
chroot /mnt/gentoo env-update source /etc/profile ping www.gentoo.org
Sollte der Ping nicht erfogreich sein, können Sie mit der Installation nicht fortfahren!
emerge-websync
Dies kann eine Weile dauern, hier werden aktuelle Dateien heruntergeladen.
Nun kann man make.conf anpassen: nano -w /etc/make.conf. Die Gentoo-Seite erklärt das ausführlich. Ein Beispiel:
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=nocona -O2 -pipe"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j 3"
INPUT_DEVICES="keyboard mouse evdev"
USE="apci sse sse2 -ipv6 -gnome -kde -qt3 -qt4 gtk java X dbus hal \
startup-notification xscreenserver"
LINGUAS="de en"
In den MAKEOPTS kann man mit der Option -j die Compilierung beschleunigen, indem man dahinter die Anzahl der CPU-Kerne plus 1 angibt.
Einstellungen für das System vornehmen
cp /usr/share/zoneinfo/Europe/Berlin /etc/localtime
Editieren von /etc/locale.gen: Die Zeile »deDE@euro ISO8859-15« sollte aktiviert werden.
nano -w /etc/locale.gen locale-gen
In /etc/conf.d/keymap setzen wir KEYMAP auf »de«. In /etc/env.d/02locale ändern wir zwei Zeilen:
LANG="de_DE" LC_COLLATE="C"
In /etc/conf.d/clock setzen wir
CLOCK="local"
Außerdem setzen wir Datum und Uhzeit, falls notwendig. Das Format ist MMTTHHMMJJJJ. Für den 02.04.2009 12:13:00 schreiben wir also:
date 040212132009
Wir machen weiter mit dem Installieren eines Editors, hier vim:
env-update source /etc/profile emerge vim
Mit diesem Kommando hält man das System auf einem aktuellen Stand:
emerge-websync emerge --update --deep world
Wir richten gcc ein:
gcc-config x86_64-pc-linux-gnu-4.3.2
Nun legen wir den Rechnernamen fest. Dazu editieren wir /etc/conf.d/hostname und tragen z.B. HOSTNAME="gentoo" ein. In /etc/hosts ändern wir die Localhost-Zeile:
127.0.0.1 localhost gentoo
Kernel laden und kopilieren
emerge gentoo-sources cd /usr/src/linux make menuconfig
Im Menü machen wir folgende Einstellungen:
File systems ---> <M> Second extended fs support <*> Ext3 support Device Drivers ---> Block devices ---> <*> Loopback device support <*> Cryptoloop Support (16384) Default RAM disk size (kbytes) [*] Initial RAM disk (initrd) support Multi-device support (RAID and LVM) ---> <*> Device mapper support <*> Crypt target support Cryptographic options ---> <*> SHA256 digest algorithm <*> SHA512 <*> AES cipher algorithms <*> blowfish <*> lrw
Wichtig ist, die Treiber für den Massenspeicher und dessen Controller nicht zu vergessen, der fest eingebunden werden muss.
make && make modules_install cp arch/x86_64/boot/bzImage /boot/kernel-2.6.27-gentoo-r8
Die Kernel Version kann sich ändern, ebenso wie die Release-Version (z.B. R10). Die Version steht in der Dateu Makefile.
Bootloader installieren
Ohne einen Bootloader kann das Betriebssystem nicht starten.
emerge grub
Anpassen der Datei /boot/grub/grub.conf:
default 0 splashimage=(hd0,0)/boot/grub/splash.xpm.gz root (hd0,0) kernel /boot/kernel-2.6.27-gentoo-r8 root=/dev/mapper/rootfs initrd /boot/initramfs-2.6.27-gentoo-r8
Noch eine Vorbereitung, dann können wir grub installieren:
grep -v rootfs /proc/mounts > /etc/mtab grub-install /dev/sda
In /etc/fstab wird festgelegt, welche Dateisysteme an welche Mountpoints gemountet werden.
/dev/sda1 /boot ext3 noatime 1 2 /dev/mapper/rootfs / ext3 noatime 1 2 /dev/mapper/swapfs none swap sw 0 0 /dev/cdrom /mnt/cdrom auto noauto,ro 0 0 shm /dev/shm tmpfs nodev,nosuid,noexec 0 0
Initramfs erzeugen
Die Initial RAM-Disk ist notwendig, um die verschlüsselte Root-Partition zu entschlüsseln und dann von der Festplatte zu booten.
emerge gpm rc-update add gpm default emerge -uav udev env-update source /etc/profile USE="static" emerge cryptsetup USE="static" emerge -av busybox
Wer seine Schlüsseldatei in einem Bild verstecken bzw. mit einem verschlüsselten USB-Stick arbeiten will, führt noch folgendes aus:
USE=static emerge bzip2 USE=static emerge coreutils
Diese Programme müssen statisch compiliert sein, da sie sonst nicht in der initramfs-Umgebung funktionieren. Daher das USE=static.
mkdir /root/initramfs
cd /root/initramfs
mkdir {bin,dev,mnt,new-root,proc,sys,sbin}
mknod --mode=0660 dev/null c 1 3
mknod --mode=0600 dev/console c 5 1
cp /bin/busybox.static bin/busybox
cp /sbin/cryptsetup bin
cp /usr/bin/bzip2recover bin # Wenn man die Schlüsseldatei verstecken will
cp /bin/sort bin/sort2
cd bin
ln -s busybox sh
ln -s busybox mount
Init-Script anlegen
Das Skript wird in der Datei init gespeichert.
Ohne Schlüsseldatei
#!/bin/sh export PATH=/bin umask 0077 mount -t proc proc /proc mount -t sysfs sysfs /sys mount -t tmpfs tmpfs /dev busybox --install -s echo /bin/mdev > /proc/sys/kernel/hotplug mdev -s sleep 2 while [ ! -e /dev/sdb1 ] ; do cd /dev /bin/busybox mknod sdb1 b 8 17 chmod 666 sdb1 done while ! mount -n -o ro /dev/sdb1 /mnt ; do sleep 2 done # tty fix rm /dev/tty ln -s /dev/console /dev/tty while [ ! -e /dev/mapper/rootfs ] ; do sleep 2 while [ ! -e /mnt/image88.jpg ] ; do echo Keyfile not found! done cryptsetup -c aes-lrw-benbi:sha512 luksOpen /dev/sda5 rootfs -d /mnt/image88.jpg done mount /dev/mapper/rootfs /new-root cryptsetup -c blowfish -h sha256 -d /dev/urandom create swapfs /dev/sda2 mkswap /dev/mapper/swapfs echo > /proc/sys/kernel/hotplug umount -l /mnt /proc /sys /dev exec switch_root /new-root /sbin/init

