| TuxMobil.DE | [suchen] | |
| [Laptops&Notebooks] | [PDAs] | [Handys] | [Media Player] | [eBooks] | [GPS] | [Wearables] | [Teile&Zubehör] | [Software] | [HOWTOs] | [Verschiedenes] |
|
Linux auf dem Samsung X20 Laptop mit LVM2 und VerschlüsselungDieses Howto behandelt die Installation von Linux Debian Sarge auf einem Samsung X20. Das Rootfilesystem wird auf LVM2 liegen. Das LVM2 wiederum liegt auf einer verschlüsselten Partition. Warum noch eine Anleitung, wie ein verschluesseltes Dateisystem einzurichten ist? Ganz einfach, in dieser Art ist es noch nicht dokumentiert worden. Das besondere ist hier das das ganze System, abgesehen vom /boot, auf LVM2 liegt. Das LVM nutzt als physikalisches Gerät (PV) eine mit Cryptsetup-Luks verschlüsselte Partition. Im späteren Betrieb muß nur ein mal ein Passwort beim booten eingegeben werden, um das System zu starten. Das Passwort kann beliebig gewechselt werden, da cryptsetup-Luks benutzt werden wird. Als Dateisystem wird XFS benutzt werden. Ein solches HOWTO ist bis jetzt noch nicht im Netz zu finden, also wirklich Anlaß genug eines zu schreiben :-)
Ich setze ein grundlegendes Verständniss im Umgang mit LVM und Cryptsetup vorraus, genauso wie die Antwort auf die Frage "Warum verschlüsseln?" Für einen Einstieg in die wundersame Welt von LVM empfehle ich [2] Informationen zu LVM2 (en) Noch einmal deutlich: Sie sollten verstehen, was Sie tun. Sie werden einen eigenen Kernel bauen müssen, den Bootloader per Hand installieren, eine initrd selbst erstellen. Dieses Howto ist für Fortgeschrittene. Bitte machen Sie bevor Sie anfangen ein Backup. Es ist Ihr Rechner, Ihre Daten, Ihre Verantwortung! Andere Wege zum Glück
Normalerweise wird erst ein LVM angelegt und dann _AUF_ dem LVM ein Crypto- Filesystem. Das hat Vorteile in der einfacheren Einrichtung, ist aber etwas schwieriger beim Verändern der Partitionen zu handhaben. Unter [1] Howto zur Verschlüsselung auf LVM (en) Dieses Howto geht genau den anderen Weg. Hier wird eine verschlüsselte Partition angelegt, und _DARAUF_ ein LVM. Ich beschreibe das hier am Beispiel eines Samsung X20, auf dem ich ein Debian Sarge installiert habe. Ich habe dieses Howto in zwei Teile gegliedert. Im ersten Teil wird die Installation von Debian mit Cryptsetup-Luks und LVM2 in allen Einzelheiten erklärt. Dieser Teil des Howtos wird auch für jeden anderen Rechnerer und für jedes beliebige Linux funktionieren, auf dem Cryptsetup-Luks und LVM2 verfügbar ist. Im zweiten Teil wird dann unabhängig von der Verschlüsselung und dem LVM2 auf die Konfiguration des Laptops eingegangen, wie die Sondertasten zur Mitarbeit unter Linux bewegt werden können, 3D-Beschleunigung und einige Sachen mehr. Wenn Sie Anregungen oder die Kritik zu diesen Howto haben schicken Sie bitte eine Mail an Lutz Willek <l.willek_at_belug.de>,wenn Ihnen dieses Howto hilft freue ich mich über Postkarten: Belug e.V.,Lutz Willek, Lehrter Straße 53, 10557, Berlin.. Ich bin für Anregungen, Kritik und Grußkarten immer offen. Nun aber zur Sache, los gehts! Teil 1: LVM2 auf einer verschlüsselten PartitionWie sollen die Partitionen aussehen, wenn alles fertig ist? /dev/hda - 80 GB unformatierte Kapazität | |-1 10 GB, mit ntfs für Windows partitioniert |-2 500 Mb, mit xfs unverschlüsselt als Rettungspartition |-4 48 GB, ohne Dateisystem, nimmt das verschlüsselte System auf | |-5 128 Mb, mit xfs unverschlüsselt als /boot |-6 restlicher Platz, ohne Dateisystem, nimmt später den unverschlüsselten Teil der Daten auf Auf Partition Nummer 6 kann verzichtet werden, sie ist für die Funktion des Systems nicht wichtig. Ich hatte anfangs Bedenken das eine Verschlüsselung mein System zu stark belastet. Mit dieser Partition wollte ich mir die Möglichkeit offenhalten, Daten auch unverschlüsselt ablegen zu können. Wer das nicht möchte kann den betreffenden Teil auslassen, das System wird dennoch funktionieren. Es kann jedoch nicht auf die unverschlüsselte Bootpartition verzichtet werden. Auf dieser liegen jedoch im allgemeinen keine relevanten Daten, so das das Sicherheitsrisiko ehe gering einzuschätzen ist. Wie funktioniert das später alles?Im ersten Schritt startet und initialisiert der Kernel alle gefundenen Geräte. Dann startet er eine angepasste initrd, die zuerst die verschlüsselte Partition "aufschließt". Dazu muss ein Passwort eingegeben werden. Der entschlüsselte Inhalt der Partition 4 wird dann auf ein virtuelles Gerät gelegt. Von und auf dieses virtuelle Gerät kann gelesen und geschrieben werden, die Verschlüsselung ist aus Benutzersicht nicht mehr vorhanden. Die Daten werden jedoch nur verschlüsselt auf der Partition abgelegt, sind nirgends im Klartext vorhanden. Als zweiter Schritt wird dieses virtuelle Gerät (und die Partition 6 mit Klartextdaten) als PV für das LVM gefunden. Es wird nach Volume- Groups (VG) gesucht, dann nach Logical Volumes (LV). Diese LV werden dann ganz normal wie herkömmliche Partitionen gemountet und die Kontrolle wird von der initrd an das init-Programm von Debian übergeben. Ab diesen Zeitpunkt startet das System normal weiter. Der meisste Vodoo liegt also in dieser initrd. Puh, und wie mache ich das?In 4 Schritten. Zuerst wird ein minimales Debiansystem installiert, zusätzlich mit den benötigten Packeten für cryptsetup und LVM. Dann wird ein eigener Kernel erstellt und neu gebootet. Als drittes werden die Verschlüsselung und LVM angelegt. Zum Schluss wird das laufende System ins LVM kopiert, eine angepasste initrd erstellt und der Bootloader angepasst. Schritt 1: Howto Install a Small DebianAls erstes muss Windows verkleinert werden und einige Partitionen für Linux angelegt werden. Bei diesem Laptop gibt es eine kleine Falle, die das einfache Partitionieren der Festplatte verhindert, es ist im Bios per Default deaktiviert. Also zuerst ins Bios und "Löschen der Sicherungspartition erlauben" einschalten. Ich habe danach eine grml- Live-CD eingelegt, alle vorhandenen Partitionen gelöscht, nach meinen Vorstellungen wieder angelegt und dann ein Windows XP Professional auf Partition 1 installiert. Für mich war das mitgelieferte XP Home nicht gut genug, deshalb konnte ich diesen Weg gehen. Wer das mitgelieferte XP ohne Neuinstallation behalten möchte kann auch einfach mit qtparted seine vorhandene Installation verkleinern. Bitte die Datensicherung vorher nicht vergessen! Folgende Partitionen wurden angelegt: /dev/hda - 80 GB unformatierte Kapazität | |-1 10 GB primär |-2 500 Mb primär |-4 48 GB, primär |-5 128 Mb, erweiterte Partition |-6 restlicher Platz, erweiterte Partition Die Partition 2 wird mit dem XFS Dateisystem ausgestattet: mkfs.xfs /dev/hda2
Nach dem Partionieren wird Windows XP auf /dev/hda1 installiert. Danach wird ein minimales Debian Sarge installiert. Dazu kann die erste Installations- CD genauso wie eine Netinstall CD von Debian verwendet werden, die von [6] Debian Debian Sarge wird ohne zusätzliche Packete nur auf /dev/hda2 installiert, keine andere Partition wird benutzt. Nachdem die Basisinstallation beendet ist wird zusätzlich das Packet LVM2 mit aptitude installiert. Das automatische Setup des grub-installers versagt bei einer Partition mit XFS-Dateisystem. Per Hand installiert funktioniert er aber wunderbar. Dazu einfach folgendes eingeben: #grub # startet die grubshell >root (hd0,<TAB> # der Tabulator listet alle bekannten Partitionen auf, # wir brauchen hda2, in grubzählweise also hd(0,1) >root (hd0,1) # das angefangene Kommando wird vervollständigt # Grub erkennt nun die Partition als XFS >setup (hd0) # schreibt grub in den Masterbootrecord von hda >quit Jetzt muss für das ordnungsgemäße Booten des Rechners noch die (1) /boot/grub/menu.lst angepasst werden. Wenn Sie das gleiche Partitionierungsschema und den gleichen Kernel wie ich nutzen wird diese Datei ohne Modifikationen bei Ihnen funktionieren. Für das eben installierte System ist der Eintrag "Debian Standardkernel" vorgesehen. Schritt 2. Einen neuen Kernel bauen
Die Kernelkonfiguration unterscheidet sich abhängig von der von Ihnen verwendeten Hardware. Deshalb hier nur einige allgemeine Hinweise und die von mir verwendete (2) .config Alle neueren 2.6er Kernel werden funktionieren, laden Sie sich einen aktuellen Kernel von [8] Kernel.org Schritt 3: Anlegen der verschlüsselten Partitionen mit Cryptsetup-LuksCryptsetup-Luks ist seit kurzer Zeit in Debian unstable. Die Datei (3) /etc/apt/sources.list muss zum installieren aus Debian Sid (Unstable) kurz angepasst werden. Kommentieren Sie die beiden Einträge für Sid aus. Danach wird die Packetliste aktualisiert und cryptsetup-Luks installiert. Danach werden die beiden Zeilen wieder mit Kommentarzeichen versehen oder gleich gelöscht. Wir brauchen Sie nicht mehr. nano /etc/apt/sources.list apt-get update apt-get install cryptsetup nano /etc/apt/sources.list In Debian Sarge existiert auch ein Packet mit Namen cryptsetup, das aber noch keine Erweiterungen enthält. Ich empfehle dieses Packet nicht. Das Cryptsetup Packet von Sid ist notwendig, weil es bereits die Cryptsetup-Luks Erweiterung enthält. Ohne diese Erweiterung ist beispielsweise das wechseln des verschlüsselten Passwortes nur sehr schwer möglich. Deshalb empfehle ich dringend, dieses Packet aus Sid zu installieren. Abgesehen von diesem Packet (und dem späteren X-Server von XOrg) ist das System ein reines Sarge. /dev/hda4 verschlüsseln: cryptsetup -c aes-cbc-essiv:sha256 -y -s256 luksFormat /dev/hda4 Die Passphrase kann jederzeit gewechselt werden: cryptsetup luksAddKey /dev/hda4 #Schluessel hinzufuegen cryptsetup luksDelKey /dev/hda4 <Slot-Nummer> #Schluessel mit <Slot-Nummer> loeschen Nachdem die verschlüsselte Partition erstellt wurde muss sie geöffnet werden: cryptsetup luksOpen /dev/hda4 crypt öffnet die verschlüsselte Partition und bildet sie auf dem virtuellen Gerät /dev/mapper/crypt ab. An dieser Stelle wird nach dem oben eingegebenen Schlüssel gefragt. LVM kann von Hause aus nicht mit solchen virtuellen Geräten umgehen, das müssen wir ihm erst beibringen. Dazu wird die (4) /etc/lvm/lvm.conf angepasst, damit lvm auch mit verschlüsselten Partitionen umgehen kann. Folgender Filter muss hinzugefügt werden: types = [ "device-mapper", 16 ] Danach können die beiden PV (Physical Volumes) und danach die VG (Volume Groups) für das LVM2 erzeugt werden: pvcreate /dev/mapper/crypt #wenn hier Fehlermeldung: lvm.conf falsch! pvcreate /dev/hda6 vgcreate vg-plain /dev/hda6 vgcreate vg-crypt /dev/mapper/crypt Zum Abschluss werden die Logical Volumes (LV) auf den VG erzeugt. Diese LV können später wie normale Partitionen behandelt werden. lvcreate -L1000 -nroot vg-crypt lvcreate -L2000 -ntmp vg-crypt lvcreate -L500 -nhome vg-crypt lvcreate -L500 -nvar vg-crypt lvcreate -L2500 -nusr vg-crypt lvcreate -L8000 -nvmware vg-crypt lvcreate -L2200 -nswap vg-crypt lvcreate -L8000 -nplain vg-plain Der Schalter -L bestimmt die Größe in MB. Das kann später jederzeit geändert werden. Genau aus diesem Grund installieren wir ja schließlich ein LVM. Der Schalter -n bestimmt den späteren Namen des LV. Nun müssen wir nur noch ein Dateisystem und Swap auf den LV erzeugen, dann sind sie einsatzbereit. mkfs.xfs /dev/hda5 mkfs.xfs /dev/vg-plain/plain mkfs.xfs /dev/vg-crypt/root mkfs.xfs /dev/vg-crypt/tmp mkfs.xfs /dev/vg-crypt/home mkfs.xfs /dev/vg-crypt/var mkfs.xfs /dev/vg-crypt/usr mkfs.xfs /dev/vg-crypt/vmware mkswap /dev/vg-crypt/swap Glückwunsch! Wir haben nun ein LVM auf einem verschlüsselten Dateisystem. Schritt 4: Erzeugen der initrd und Starten des neuen Systems
Kommen wir zum letzten Punkt des ersten Teils.
Wie startet mein späteres System von diesem LVM? Daran habe ich auch relativ lange geknobelt. Im Endeffekt muss einfach nur eine Initrd erstellt werden, die die Schritte für uns erledigt. Als Basis habe ich ein Skript von [9] LVM mkdir /target mount /dev/vg-crypt/root /target mkdir /target/boot mkdir /target/tmp mkdir /target/home mkdir /target/var mkdir /target/usr mkdir /target/vmware mount /dev/hda5 /target/boot mount /dev/lv-crypt/tmp /target/tmp mount /dev/lv-crypt/home /target/home mount /dev/lv-crypt/var /target/var mount /dev/lv-crypt/usr /target/usr mount /dev/lv-crypt/vmware /vmware Das laufende System wird nun nach /target kopiert: init s cp -av / /target/ einige Fehler des Kopierens müssen noch beseitigt werden, da das kopieren ja im laufendem Betrieb geschah: rm -fr /target/tmp/* rm -fr /target/proc/* rm -fr /target/sys/* rm /target/etc/mtab Die Partitionstabelle des neu erzeugten Systems muss noch angepasst werden. Ein Beispiel finden sie unter (6) . nano /target/etc/fstab Zum Abschluss muss der Bootloader angepasst werden, damit direkt aus der Partition 5 gebootet werden kann und die Partition 2 wieder komplett frei wird. Darauf kann dann später ein kleines Notsystem kopiert werden. Ich verweise hier einfach mal auf den hd-installer der grml CD. Nur so als Tip... ohne irgend eine Empfehlung aussprechen zu wollen... wirklich... aber das gehört nicht zum Howto. Wir wechseln jetzt ins neue System und installieren den grub neu: chroot /target umount -a mount -a grub >root (hd0,4) #/boot in /dev/hda5 >setup (hd0) >quit exit Zum Abschluss ist die /boot/grub/menu.lst mindestens doppelt auf Fehler zu prüfen, dann kann neu gebootet werden. Das System ist nun lauffähig. Noch einige Worte zur gefühlten Schnelligkeit des Systems: Im laufendem Betrieb ist nichts von der Verschlüsselung zu merken, das System fühlt sich genau so an, als würde ich auf einer unverschlüsselten Partition arbeiten. Der relativ schnelle Prozessor(9) cpuinfo und das 1 GB RAM trägt hier sicher einen großen Teil dazu bei. Einen kleinen Benchmark des Datendurchsatzes der verschlüsselten und unverschlüsselten Partition finden Sie ebenfalls in (9) bonnie. Weitergehende Tests habe ich nicht gemacht, ich bin mit der Gesamtsituation zufrieden. Teil 2: Laptopspezifische Konfiguration
Nachdem die Verschlüsselung unseres Systems arbeitet kommmen wir zu den Besonderheiten des X20. Fangen wir mit der Hardware des Rechners an, hier die Ausgabe von 0000:00:00.0 Host bridge: Intel Corp. Mobile Memory Controller Hub (rev 03) 0000:00:02.0 VGA compatible controller: Intel Corp. Mobile Graphics Controller (rev 03) 0000:00:02.1 Display controller: Intel Corp. Mobile Graphics Controller (rev 03) 0000:00:1c.0 PCI bridge: Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1 (rev 03) 0000:00:1d.0 USB Controller: Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (rev 03) 0000:00:1d.1 USB Controller: Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 (rev 03) 0000:00:1d.2 USB Controller: Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 (rev 03) 0000:00:1d.3 USB Controller: Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 (rev 03) 0000:00:1d.7 USB Controller: Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (rev 03) 0000:00:1e.0 PCI bridge: Intel Corp. 82801 PCI Bridge (rev d3) 0000:00:1e.2 Multimedia audio controller: Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 [..] 0000:00:1e.3 Modem: Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller (rev 03) 0000:00:1f.0 ISA bridge: Intel Corp. 82801FBM (ICH6M) LPC Interface Bridge (rev 03) 0000:00:1f.1 IDE interface: Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller (rev 03) 0000:00:1f.3 SMBus: Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller (rev 03) 0000:06:05.0 Ethernet controller: Broadcom Corporation BCM4401-B0 100Base-TX (rev 02) 0000:06:07.0 Network controller: Intel Corp. PRO/Wireless 2200BG (rev 05) 0000:06:09.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev b3) 0000:06:09.1 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 08) 0000:06:09.2 0805: Ricoh Co Ltd: Unknown device 0822 (rev 17) 0000:06:09.3 System peripheral: Ricoh Co Ltd: Unknown device 0592 (rev 08) Abgesehen vom Modem und dem sd-Kartenleser, die ich beide nicht getestet habe, läuft die gesamte Hardware sehr gut mit Linux. Die einzelnen Punkte: Sondertasten / Extratasten
Die zusätzlichen Tasten werden schon als Tastaturcodes erkannt. Das System muss also nur noch mit diesen Tasten bekannt gemacht werden. Das geschieht mit dem Kommando setkeycodes. Dazu einfach das Skript (7) /etc/init.d/setkeycodes nach ln -s /etc/init.d/setkeycodes /etc/rc2.d/S25setkeycodes
oder einfach nach Debianart mit dem Kommando 3D Beschleunigung
Die 3D Beschleunigung funktioniert prima mit den Treibern von [10] Intel Netzwerk
Die Lankarte funktioniert sofort mit dem Kerneltreiber, für die Wlankarte wurde der IPW2200 Treiber verwendet. Einfach die [12] IPW2200 Treiber Weitere HardwareDie restliche Hardware funktioniert sofort ohne manuelle Korrektur mit einem aktuellen Kernel. Das Modem und der SD- Kartenleser wurden nicht getestet. Alle Konfigurationen und Links auf einen Blick
Sollten Sie Fragen, Anregungen oder Kritik haben schreiben Sie mir bitte. Haben Sie viel Spaß mit diesem Laptop. Lutz Willek <lutz.willek_at_belug.de> |
||
|
[ -> nach oben]
Impressum - Haftungsausschlüsse · Kontakt · SiteMap Letzte Änderung Fri Apr 11 2008 · http://tuxmobil.de/samsung_x20_linux_lvm_encryption.html · Copyright © Werner Heuser 1997-2011 |