Neue Antwort schreiben 
 
Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Laptop-HDD verschlüsseln, wie machen?
thosch97 Offline
All things have a right to grow

Beiträge: 9.843
Registriert seit: Feb 2010
Beitrag #11
RE: Laptop-HDD verschlüsseln, wie machen?
(26.01.2014 21:03)Alpha schrieb:  
(26.01.2014 21:01)thosch97 schrieb:  
(26.01.2014 20:38)Alpha schrieb:  Ich habe auf meinem X200t Gentoo mit Luks und LVM am Start. Trim habe ich in meiner eigenen Initrd aktiviert.

Wie machst du das? Partition mit LUKS verschlüsseln, da dann LVM, und dann…? Einfach swap und eine ext4-Partition?

sda1 = /boot
sda2 = LUKS

sda2_luks = LVM
vg_root = /
vg_home = /home
vg_swap = swap

Initrd (selbst gebaut, ich nutze kein Dracut! Kannst aber gern meine haben) startet, fragt nach einem Passwort und mountet dann die LUKS Partition. (cryptsetup hat ja eine TRIM Option..) Im nächsten Schritt sucht dann LVM die Rootpartition und mountet diese. Dann erfolgt ein switch_root und das eigentliche Gentoo bootet. /home und SWAP wird von Gentoo gemountet.

Sind die „LVM-Partitionen“ ext4?
Ich hab zwar mit Dracut kein Problem (genkernel sieht aber doch ziemlich umständlich aus, drum nutz ich das nicht), aber interessieren würde mich deine initrd schon.

PGP-Key E384 009D 3B54 DCD3 21BF 9532 95EE 94A4 3258 3DB1 | S/MIME-Key 0x1A33706DAD44DA
G d-@ s+:- a--- C+++ UB+L++ P--- L++@ E-@>++ W+ N o? K? w>++ !O !M !V PS+++ PE-- Y+>++ PGP++>+++ !t 5? X? !R tv b+++>++++ DI !D G>+ e>+++ h !r>++ !z
„Die Aachener gelten als Erfinder des 4. Hauptsatzes der Thermodynamik: ‚Thermo schreibt man zweimal.“‘
“Saying that Java is good because it works on all platforms is like saying oral sex is good because it works on all sexes.”
„Es gibt 10 Sorten von Leuten: Die einen verstehen das Binärsystem, die anderen nicht.“
„Manche Männer lieben Männer, Manche Frauen eben Frauen; Da gibt's nix zu bedauern und nichts zu staunen; Das ist genau so normal wie Kaugummi kauen; Doch die meisten werden sich das niemals trauen“
26.01.2014 21:10
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Alpha Offline
Oskar

Beiträge: 16.344
Registriert seit: Jan 2009
Beitrag #12
RE: Laptop-HDD verschlüsseln, wie machen?
Die LVM-Partition sind wie eine echte Partition. Du kannst diese mit jedem FS formatieren. Bei mir ist es EXT4.

Mark IV Style Motherfucker!
26.01.2014 21:17
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Alpha Offline
Oskar

Beiträge: 16.344
Registriert seit: Jan 2009
Beitrag #13
RE: Laptop-HDD verschlüsseln, wie machen?
(26.01.2014 21:10)thosch97 schrieb:  aber interessieren würde mich deine initrd schon.

create_initramfs.sh
Code:
#!/bin/bash

# BusyBox definieren
export BUSYBOX="busybox"

# Installationsverzeichnis definieren
export BOOT="/boot"
export ROOT="`pwd`/initramfs"
export ROOT_MICROCODE="`pwd`/initramfs-microcode"
export TEMP="/tmp"

# Bestehendes Installationsverzeichnis entfernen, falls existent
if [ -d $ROOT ]; then
  rm -fR $ROOT
fi

if [ -d $ROOT_MICROCODE ]; then
  rm -fR $ROOT_MICROCODE
fi

# Splash definieren
export SPLASH="battlestar-galactica"

# Installationsverzeichnis erstellen
mkdir $ROOT
cd $ROOT

# Verzeichnisstruktur erstellen
mkdir -m 755 bin
mkdir -m 755 dev dev/fb dev/misc dev/vc
mkdir -m 755 etc etc/lvm etc/splash etc/splash/$SPLASH etc/splash/$SPLASH/images
mkdir -m 755 lib64 lib64/splash lib64/splash/proc lib64/splash/sys
mkdir -m 755 mnt mnt/root
mkdir -m 755 proc
mkdir -m 755 sbin
mkdir -m 755 usr usr/bin usr/lib usr/lib/suspend usr/share usr/share/consolefonts usr/share/keymaps usr/share/keymaps/i386 usr/share/keymaps/i386/qwertz usr/share/splashutils
mkdir -m 755 sys

# Devicenodes erstellen
mknod $ROOT/dev/console c 5 1
mknod $ROOT/dev/null c 1 3
mknod $ROOT/dev/tty0 c 4 0
mknod $ROOT/dev/tty1 c 4 1
mknod $ROOT/dev/zero c 1 5

# BusyBox kopieren
cp /bin/busybox $ROOT/bin/busybox

# Cryptsetup kopieren
cp /sbin/cryptsetup $ROOT/sbin/cryptsetup

# FBSplash inkl. Theme kopieren
cp /etc/splash/luxisri.ttf $ROOT/etc/splash/luxisri.ttf
cp /etc/splash/$SPLASH/*.cfg $ROOT/etc/splash/$SPLASH/
cp /etc/splash/$SPLASH/images/*.jpg $ROOT/etc/splash/$SPLASH/images/
cp /sbin/fbcondecor_helper $ROOT/sbin/fbcondecor_helper
cp /usr/share/splashutils/initrd.splash $ROOT/usr/share/splashutils/initrd.splash

# LVM kopieren
cp /sbin/lvm $ROOT/sbin/lvm
cp /etc/lvm/lvm.conf $ROOT/etc/lvm/lvm.conf

# Terminus-Font kopieren
cp /usr/share/consolefonts/ter-v16b.psf.gz $ROOT/usr/share/consolefonts/ter-v16b.psf.gz

# USWSUSP kopieren
cp /etc/suspend.conf $ROOT/etc/suspend.conf
cp /usr/lib/suspend/resume $ROOT/usr/lib/suspend/resume

# Keymap erstellen
busybox dumpkmap > $ROOT/usr/share/keymaps/i386/qwertz/de-latin1-nodeadkeys.map.bin

# Startscript kopieren
cd $ROOT/..
cp init.sh $ROOT/init

# Symlinks unterhalb / erstellen
cd $ROOT
ln -s lib64 lib

# Symlinks unterhalb /bin erstellen
cd $ROOT/bin
chroot $ROOT $BUSYBOX ln -s /bin/busybox /bin/ash
chroot $ROOT $BUSYBOX ln -s /bin/busybox /bin/cat
chroot $ROOT $BUSYBOX ln -s /bin/busybox /bin/cut
chroot $ROOT $BUSYBOX ln -s /bin/busybox /bin/echo
chroot $ROOT $BUSYBOX ln -s /bin/busybox /bin/kbd_mode
chroot $ROOT $BUSYBOX ln -s /bin/busybox /bin/loadkmap
chroot $ROOT $BUSYBOX ln -s /bin/busybox /bin/mdev
chroot $ROOT $BUSYBOX ln -s /bin/busybox /bin/mount
chroot $ROOT $BUSYBOX ln -s /bin/busybox /bin/printf
chroot $ROOT $BUSYBOX ln -s /bin/busybox /bin/setfont
chroot $ROOT $BUSYBOX ln -s /bin/busybox /bin/sleep
chroot $ROOT $BUSYBOX ln -s /bin/busybox /bin/umount

# Symlinks unterhalb /usr/bin erstellen
cd $ROOT/usr/bin
chroot $ROOT $BUSYBOX ln -s /bin/busybox /usr/bin/kbd_mode
chroot $ROOT $BUSYBOX ln -s /bin/busybox /usr/bin/printf
chroot $ROOT $BUSYBOX ln -s /bin/busybox /usr/bin/setfont

# Symlinks unterhalb /sbin erstellen
cd $ROOT/sbin
chroot $ROOT $BUSYBOX ln -s /bin/busybox /sbin/loadkmap
chroot $ROOT $BUSYBOX ln -s /bin/busybox /sbin/mdev
chroot $ROOT $BUSYBOX ln -s /bin/busybox /sbin/switch_root
chroot $ROOT $BUSYBOX ln -s /sbin/fbcondecor_helper /sbin/splash_helper

# Installationsverzeichnis erstellen
mkdir $ROOT_MICROCODE
cd $ROOT_MICROCODE

# Verzeichnisstruktur erstellen
mkdir -m 755 kernel kernel/x86 kernel/x86/microcode

# Microcode kopieren
cp /lib/firmware/microcode.dat $ROOT_MICROCODE/kernel/x86/microcode/GenuineIntel.bin

# Initramfs-Image erstellen
cd $ROOT/
find . | /bin/cpio --quiet -o -H newc | /usr/bin/lzma -9 > $TEMP/initramfs-`uname -r`.img

# Initramfs-Microcode-Image erstellen
cd $ROOT_MICROCODE/
find . | /bin/cpio --quiet -o -H newc > $TEMP/initramfs-microcode-`uname -r`.img

# Initramfs-Image zusammenbauen
rm -rf $BOOT/initramfs-*
cat $TEMP/initramfs-microcode-`uname -r`.img $TEMP/initramfs-`uname -r`.img > $BOOT/initramfs-`uname -r`.img

init.sh
Code:
#!/bin/busybox ash

# PATH setzen
export PATH="/bin:/sbin:/usr/bin:/usr/lib/suspend"

# Systemverzeichnisse einbinden
mount -t devtmpfs dev /dev
mount -t proc proc /proc
mount -t sysfs sys /sys

# MDEV aktivieren
echo "/sbin/mdev" > /proc/sys/kernel/hotplug
mdev -s

# Kurze Pause (Damit die restlichen Meldungen noch angezeigt werden!)
sleep "5"

# Kernelmeldungen unterdruecken
echo "0" > /proc/sys/kernel/printk

# Benoetigte Kernelparameter einlesen
export CMDLINE=`/bin/cat /proc/cmdline`

# Benoetigte Kernelparameter auswerten
for PARAMETER in $CMDLINE; do
  case "$PARAMETER" in
    lvm=*)
      export LVM=`echo "$PARAMETER" | cut -d "=" -f 2`
      ;;
    rescue)
      export RESCUE=`echo "$PARAMETER" | cut -d "=" -f 2`
      ;;
    root=*)
      export ROOT=`echo "$PARAMETER" | cut -d "=" -f 2`
      ;;
    swap=*)
      export SWAP=`echo "$PARAMETER" | cut -d "=" -f 2`
      ;;
  esac
done

# UTF-8 auf der Konsole aktivieren
kbd_mode -u -C /dev/tty1
printf "\033%%G" >> /dev/console

# Konsolenschriftart laden
setfont "/usr/share/consolefonts/ter-v16b.psf.gz" -C /dev/tty1
printf "\033(K" >> /dev/console

# Tastaturlayout laden
loadkmap < "/usr/share/keymaps/i386/qwertz/de-latin1-nodeadkeys.map.bin"

# Notfall Shell
if [ ! -z "$RESCUE" ]; then
  echo
  echo '+-------------- # NOTFALL SHELL # --------------+'
  echo '| Warnung: Der Parameter "rescue" ist gesetzt.. |'
  echo '| --------------------------------------------- |'
  echo '| Der Bootvorgang wird daher abgebrochen und    |'
  echo '| eine minimale BusyBox ash-Shell aktiviert..   |'
  echo '+-------------- # NOTFALL SHELL # --------------+'
  echo
  exec /bin/ash
fi

# Kernelparameterueberpruefung fuer LVM
if [ -z "$LVM" ]; then
  echo
  echo '+---------- # KERNELPARAMETER FEHLT # -----------+'
  echo '| Fehler: Der Kernelparameter "lvm" fehlt!       |'
  echo '| Damit der Bootvorgang fortgesetzt werden kann, |'
  echo '| muss dieser Kernelparameter gesetzt sein..     |'
  echo '| +--------------------------------------------+ |'
  echo '| | z.B. lvm=/dev/sda2                         | |'
  echo '| +--------------------------------------------+ |'
  echo '| Der Bootvorgang wird daher abgebrochen und     |'
  echo '| eine minimale BusyBox ash-Shell aktiviert..    |'
  echo '+---------- # KERNELPARAMETER FEHLT # -----------+'
  echo
  exec /bin/ash
fi

# Kernelparameterueberpruefung fuer ROOT
if [ -z "$ROOT" ]; then
  echo
  echo '+---------- # KERNELPARAMETER FEHLT # -----------+'
  echo '| Fehler: Der Kernelparameter "root" fehlt!      |'
  echo '| Damit der Bootvorgang fortgesetzt werden kann, |'
  echo '| muss dieser Kernelparameter gesetzt sein..     |'
  echo '| +--------------------------------------------+ |'
  echo '| | z.B. root=/dev/mapper/root                 | |'
  echo '| +--------------------------------------------+ |'
  echo '| Der Bootvorgang wird daher abgebrochen und     |'
  echo '| eine minimale BusyBox ash-Shell aktiviert..    |'
  echo '+---------- # KERNELPARAMETER FEHLT # -----------+'
  echo
  exec /bin/ash
fi

# Banner ausgeben
echo
echo '/--------+----------------------------------------+-------\'
echo '|        | Lenovo Thinkpad X200 Tablet (7450-EQG) |       |'
echo '|        +----------------------------------------+       |'
echo '|   _________                           .__  __           |'
echo '|  /   _____/ ___________   ____   ____ |__|/  |_ ___.__. |'
echo '|  \_____  \_/ __ \_  __ \_/ __ \ /    \|  \   __<   |  | |'
echo '|  /        \  ___/|  | \/\  ___/|   |  \  ||  |  \___  | |'
echo '| /_______  /\___  >__|    \___  >___|  /__||__|  / ____| |'
echo '|         \/     \/            \/     \/          \/      |'
echo '\-----------+-----------------------------------+---------/'
echo '            |                                   |          '
echo '          _/       How Are You Gentlemen?        \_        '
echo '           \  All Your Base Are Belong To Us...  /         '
echo '            |                                   |          '
echo '/-----------+-----------------------------------+---------\'
echo '|   THIS IS A PRIVATE SYSTEM FOR AUTHORIZED USERS ONLY!   |'
echo '|            UNAUTHORIZED ACCESS PROHIBITED..             |'
echo '\---------------------------------------------------------/'
echo

# Passwort fuer die LUKS-Verschluesselung abfragen und speichern
read -p "ACCESS DENIED! ENTER PASSWORD FOR AUTHENTICATION: " -s PASSWORD

# LUKS-Partition mit gespeichertem LUKS-Passwort entschluesseln
while ! echo "$PASSWORD" | cryptsetup --allow-discards luksOpen "$LVM" root > /dev/null 2>1; do
  echo "...FAILED!"
  read -p "ACCESS DENIED! ENTER PASSWORD FOR AUTHENTICATION: " -s PASSWORD
done

# Erfolgsmeldung ausgeben
echo "...SUCCESS!"
echo
echo "ACCESS GRANTED! WELCOME BACK, COMMANDER!"
echo

# LVM2-Volumes suchen und einbinden
/sbin/lvm vgscan --ignorelockingfailure --mknodes > /dev/null 2>1
/sbin/lvm vgchange -a y --sysinit > /dev/null 2>1

# Falls S4 (Suspend-to-Disk) aktiv ist, die Sitzung wiederherstellen
if [ ! -z "$SWAP" ]; then
  resume -r $SWAP > /dev/null 2>1
fi

# Die entschluesselte ROOT-Partition einbinden
if ! /bin/mount -o ro $ROOT /mnt/root; then
  echo
  echo '+-------------- # NOTFALL SHELL # --------------+'
  echo '| Fehler: Die entschluesselte ROOT-Partition    |'
  echo '| konnte nicht eingebunden werden!              |'
  echo '| --------------------------------------------- |'
  echo '| Der Bootvorgang wird daher abgebrochen und    |'
  echo '| eine minimale BusyBox ash-Shell aktiviert..   |'
  echo '+-------------- # NOTFALL SHELL # --------------+'
  echo
  exec /bin/ash
fi

# LUKS-Passwort loeschen
unset "$PASSWORD"

# MDEV deaktivieren
/bin/echo > /proc/sys/kernel/hotplug

# Systemverzeichnisse auswerfen
/bin/umount /dev
/bin/umount /proc
/bin/umount /sys

# Wechsel zur entschluesselten ROOT-Partition durchfuehren
exec switch_root /mnt/root /sbin/init

Beide Dateien in einen Ordner und die create_initramfs.sh erzeugen. Rest läuft automatisch. Denk dran, dass alle Abhängigkeiten STATISCH kompiliert sein müssen!

Mark IV Style Motherfucker!
26.01.2014 21:34
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
thosch97 Offline
All things have a right to grow

Beiträge: 9.843
Registriert seit: Feb 2010
Beitrag #14
RE: Laptop-HDD verschlüsseln, wie machen?
Wie schau das dann mit Suspend-to-RAM und der Sicherheit aus?

PGP-Key E384 009D 3B54 DCD3 21BF 9532 95EE 94A4 3258 3DB1 | S/MIME-Key 0x1A33706DAD44DA
G d-@ s+:- a--- C+++ UB+L++ P--- L++@ E-@>++ W+ N o? K? w>++ !O !M !V PS+++ PE-- Y+>++ PGP++>+++ !t 5? X? !R tv b+++>++++ DI !D G>+ e>+++ h !r>++ !z
„Die Aachener gelten als Erfinder des 4. Hauptsatzes der Thermodynamik: ‚Thermo schreibt man zweimal.“‘
“Saying that Java is good because it works on all platforms is like saying oral sex is good because it works on all sexes.”
„Es gibt 10 Sorten von Leuten: Die einen verstehen das Binärsystem, die anderen nicht.“
„Manche Männer lieben Männer, Manche Frauen eben Frauen; Da gibt's nix zu bedauern und nichts zu staunen; Das ist genau so normal wie Kaugummi kauen; Doch die meisten werden sich das niemals trauen“
26.01.2014 21:44
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Neue Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste