Truecrypt43

Aus Fedorawiki.de

Wechseln zu: Navigation, Suche


Neu.png Dieser Artikel wurde neu erstellt und bedarf evtl. noch einer Korrekturlesung. Danach kann diese Box entfernt werden.
Dieser Artikel ist Teil der HOWTO Sammlung

Analog der Wikiseite über die Installation von Truecrypt 4.2a beschreibt diese Seite die Installation von Truecrypt 4.3a.


Inhaltsverzeichnis

Vorbereitungen

Folgende Pakete müssen installiert sein, damit die Installation von Truecrypt gelingt. Falls einzelne fehlen, können sie am einfachsten mit yum, yumex oder pirut nachinstalliert werden.

  • kernel-devel (in der richtigen Architektur)
  • rpm-build
  • redhat-rpm-config
  • gcc
  • yum-utils (zum Herunterladen der Kernel-Sourcen)

Zuerst muss sichergestellt werden, dass das Paket kernel-devel in der zur Kernel passenden Version vorliegt.

[root]# yum install kernel-devel

Anzeigen der Kernel-Version von kernel-devel

rpm -q kernel-devel

Anzeigen der Version des installierten Kernels

uname -rm

Dabei sollten die unteren beiden Befehle die gleiche Kernel-Version zeigen. Desweiteren müssen die Kernel-Source heruntergeladen und anschliessend installiert werden. Damit das entsprechende Source-Paket (.src.rpm) heruntergeladen werden kann, wird yum-utils benötigt:

[root]# yum install yum-utils

Anschliessend mittels yumdownloader die Kernel-Source herunterladen

[root]# yumdownloader --source kernel --enablerepo fedora-source --enablerepo updates-source

Achtung: Dieser Befehl muss eventuell bei Fedora 7 Installation in nachfolgender Art eingegeben werden:

[root]# yumdownloader --enablerepo fedora-source
[root]# yumdownloader --enablerepo updates-source
[root]# yumdownloader --source kernel

und zuletzt installieren.

[root]# rpm -ivh kernel-$(uname -r).src.rpm

sollten hier Fehlermeldung betreffend fehlenden oder nicht erstellbaren Verzeichnissen unterhalb /usr/src/ auftreten, dann diese einfach manuell erstellen (mkdir -p ...)

Aus den soeben heruntergeladenen und installierten Kernel-Sourcen wird die Datei dm.h (Treiber für DeviceManagement) benötigt. Dazu entpacken wir als nächstes die Kernel-Sourcen:

[root]# cd /usr/src/redhat/SPECS

Nun werden die Sourcen entpackt.

[root]# rpmbuild -bp --target $(uname -m) kernel-2.6.spec

und kopieren anschliessend die Datei {Dateiname|dm.h}}in unser kernel-devel-Verzeichnis.

[root]# cp /usr/src/redhat/BUILD/kernel-2.6.XX/linux-2.6.XX.[arch]/drivers/md/dm.h /usr/src/kernels/$(uname -r)-$(uname -m)/drivers/md/


<b>Anmerkung</b> <b>Anmerkung:</b> Hier ist die Beschreibung für die Kompilierung des Truecrypt-Moduls in der gleichen Architektur wie der Kernel, z.B. i686 Kernel (Kontrolle durch 'uname -m') und anschliessender Kompilierung des Moduls für i686. Es kann jedoch vorkommen, dass auf einer i686 Hardware ('arch') mit i686 Kernel ('uname -m') das Truecrypt-Kernelmodul trotzdem auf i586 Architektur kompiliert werden muss. In diesem Fall beim entpacken der Kernel-Sourcen '--target i586' verwenden und kernel-devel für i586 installieren (vorher i686 deinstallieren, anschliessend 'yum install kernel-devel.i586'). Und natürlich unterscheiden sich dadurch einige Pfadnamen (i586 anstelle von i686).


Truecrypt kompilieren

Nun von der Website von Truecrypt die Sourcen herunterladen und entpacken. Im Unterschied zur Version 4.2a ist KEIN Patch mehr notwendig. Da jedoch weiterhin ein Kernel-Modul verwendet wird, muss dieses Modul nach jedem Kernel-Update erneut erstellt werden.

http://www.truecrypt.org/downloads.php

Entpacken des tarballs

tar -xzf truecrypt-4.3a-source-code.tar.gz -C /tmp

Wechseln des Verzeichnis.

cd /tmp/truecrypt*/Linux

Nun den Build-Prozess starten.

[root]# ./build.sh

Hier werden nochmals sämtlichen benötigten Tools überprüft. Erscheint die Fehlermeldung

Error: Kernel source code is incomplete - /usr/src/kernels/..../dm.h not found.

bedeutet dies, dass von den Kernel-Source die Datei nicht (oder nicht an die richtige Stelle) kopiert wurde.

Sofern alles geklappt hat, wurde Truecrypt kompiliert und das Kernel-Modul erstellt.

Building kernel module... Done.
Building truecrypt... Done.


Änderungen ab Kernel-2.6.23

Ab der Kernelversion 2.6.23 wird der folgende Patch benötigt, da sich die Parameteranzahl in kmem_cache_create geändert hat.

--- truecrypt-4.3a-source-code/Linux/Kernel/Dm-target.c.orig	2007-10-23 12:52:44.000000000 +0200
+++ truecrypt-4.3a-source-code/Linux/Kernel/Dm-target.c	2007-10-23 12:52:57.000000000 +0200
@@ -656,7 +656,7 @@
		goto err;
	}

-	bio_ctx_cache = kmem_cache_create ("truecrypt-bioctx", sizeof (struct bio_ctx), 0, 0, NULL, NULL);
+	bio_ctx_cache = kmem_cache_create ("truecrypt-bioctx", sizeof (struct bio_ctx), 0, 0, NULL);
	if (!bio_ctx_cache)
	{
		error ("kmem_cache_create failed");

Patch herunterladen

wget http://www.linux-dev.org/wp-content/uploads/2007/12/truecrypt_43a_linux_2623dm_target.diff

Verzeichnis wechsel

cd ./truecrypt-4.3a/Linux/Kernel/

Patchen

patch -p0 < truecrypt_43a_linux_2623dm_target.diff


Truecrypt Kernel-Modul testen

Als nächsten Schritt sollte das Kernel-Modul überprüft werden (VOR der Installation von Truecrypt). Denn sofern sich das Modul nicht fehlerfrei laden lässt, wird Truecrypt nicht korrekt funktionieren.

Wechseln vom Verzeichnis /tmp/truecrypt/Linux

in das Verzeichnis

[root]# cd Kernel

Installieren des Modules

[root]# insmod truecrypt.ko

Kontrolle des Ladevorganges.

[root]# lsmod

Hier sollte nun das Truecrypt Modul ausgewiesen werden und korrekt geladen werden können.

Treten Probleme auf (eventuell erwähnte Meldung mit unterschiedlichen Architekturen) kann mit

[root]# modprobe truecrypt.ko

Informationen über das eben erstellte Modul angezeigt werden. Sofern jedoch alles geklappt hat, kann letztlich Truecrypt installiert werden.


Achtung: Bei meiner Fedora 7-Installation mussten die Befehle so lauten:

[root]# cd Kernel
[root]# /sbin/insmod truecrypt.ko
[root]# /sbin/lsmod
[root]# /sbin/modprobe truecrypt.ko


Truecrypt installieren

Im selben Verzeichnis wo auch kompiliert wurde, das Script ./install.sh ausführen:

[root]# ./install.sh

Achtung: Auf meiner Fedora 7 Installation musste ich die install.sh umschreiben. Um genau zu sein überall /sbin/ vor die Befehle schreiben oder man benutzt "su -", dann gehört das Verzeichnis /sbin schon zur Pfadvariable dazu. Statt an diversen Stellen /sbin einzufügen, können auch die Pfade angepasst werden.

if ! /sbin/modprobe -V >&- 2>&- || ! /sbin/ rmmod -V >&- 2>&-

/sbin/lsmod | grep -q ^dm_mod
[ $? -ne 0 ] && /sbin/modprobe dm-mod >&- 2>&- && sleep 1

if ! /sbin/dmsetup targets >&-

if ! which /sbin/losetup >/dev/null

/sbin/rmmod truecrypt >&- 2>&-
if grep -q "^truecrypt " /proc/modules

cp Kernel/truecrypt.ko "$MOD_DIR" && chmod 600 $MOD_DIR/truecrypt.ko && 
/sbin/depmod -a
[ $? -ne 0 ] && error "Failed to install kernel module" && exit 1
echo Done.

Alternativ kann man auch mittels

export PATH=/sbin:$PATH

temporär den Suchpfad erweitern, was schneller und vorallem fehlerfreier geht.

Der Aufruf erfolgt dann mittels Konsole

[root]# truecrypt


Siehe auch