<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.archlinux.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Smoneck</id>
	<title>wiki.archlinux.de - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.archlinux.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Smoneck"/>
	<link rel="alternate" type="text/html" href="https://wiki.archlinux.de/title/Spezial:Beitr%C3%A4ge/Smoneck"/>
	<updated>2026-04-13T04:58:46Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.archlinux.de/index.php?title=LVM&amp;diff=18788</id>
		<title>LVM</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.de/index.php?title=LVM&amp;diff=18788"/>
		<updated>2016-03-31T07:41:58Z</updated>

		<summary type="html">&lt;p&gt;Smoneck: /* Logical Volume */  typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Übersicht =&lt;br /&gt;
Der Logical Volume Manager, kurz LVM, ist eine Alternative zu den klassischen Partitionen um Massenspeicher wie Festplatten logisch zu unterteilen. LVM bietet dabei gegenüber normalen Partitionen viele Vorteile, aber auch Nachteile.&lt;br /&gt;
&lt;br /&gt;
== Vorteile ==&lt;br /&gt;
=== Flexibilität im Layout ===&lt;br /&gt;
Während eine Partitionstabelle immer fix ist und nur unter bestimmten Bedingungen geändert werden kann, ist LVM immer vollständig flexibel. Gehen wir bei Partitionen von folgender Situation aus:&lt;br /&gt;
 sda1 - 20GB - /&lt;br /&gt;
 sda2 - 20GB - /usr&lt;br /&gt;
 sda3 - 20GB - /home&lt;br /&gt;
Jetzt fällt einem auf dass man sda1 viel zu großzügig dimensioniert hat, man wird auf diesem Dateisystem niemals an die 20GB Grenze kommen. Also wäre es sinnvoll sda1 auf 10GB zu verkleinern und diesen Platz sda3 zu überlassen, da hier zu erwarten ist dass dort mit der Zeit immer mehr Daten anfallen. Mit Partitionen ist das nicht möglich. Zwar kann man sda1 verkleinern, der freie Platz liegt dann aber zwischen sda1 und sda2. Partitionen müssen immer an einem Stück sein, weswegen es nun nicht möglich ist den übrigen Platz sda3 zuzuweisen. Man könnte ihn nur sda2 überlassen. Es wäre höchstens möglich durch zeitaufwendige und nicht ganz ungefährliche Verschieboperationen das Problem lösen.&lt;br /&gt;
&lt;br /&gt;
LVM hingegen ist egal wo die Bereiche liegen. Ob das nun an einem Stück ist oder nicht ist völlig egal, es kann sogar auf einem völlig anderem Gerät(z.B. einer anderen Festplatte) liegen. Den Benutzer kümmert es meistens auch nicht wo was genau liegt, er kann das System einfach benutzen.&lt;br /&gt;
&lt;br /&gt;
=== Vergrößern und Verkleinern ===&lt;br /&gt;
Zwar kann man auch Partitionen vergrößern und verkleinern, allerdings beschreibt das obige Beispiel die Restriktionen ganz gut.&lt;br /&gt;
LVM unterstützt vergrößern und verkleinern im Betrieb, das Ganze dauert keine 5 Sekunden. Es sei allerdings dazu gesagt dass die allermeisten Dateisysteme zwar vergrößern im Betrieb erlauben, verkleinern aber nicht. Ext3 und 4 gehören dazu.&lt;br /&gt;
&lt;br /&gt;
=== Snapshots ===&lt;br /&gt;
LVM unterstützt sogenannte Snapshots. Dabei wird ein neues Blockdevice angelegt, welches den Zustand des jeweiligen Volumes zu dem Zeitpunkt des Snapshots repräsentiert. Dieses Blockdevice ist auch beschreibbar.&lt;br /&gt;
So ergeben sich verschiedene Vorteile:&lt;br /&gt;
&lt;br /&gt;
- Es können auf schnellste Art und Weise Backups angelegt werden. Müsste das System für ein konsistentes Backup normalerweise für die gesamte Zeit offline sein, reicht es kurz alles nötige abzuschalten, den Snapshot anzulegen und dann wieder alles zu aktivieren. Man kann dann in aller Ruhe von dem Snapshot ein Backup anlegen, während das System unberührt weiterläuft. Gerade für Server ein unschlagbarer Vorteil.&lt;br /&gt;
&lt;br /&gt;
- Dadurch dass die Snapshots auch beschreibbar sind ist es auch möglich von ihnen &#039;&#039;zu booten&#039;&#039;, es sind ja ganz normale Blockdevices. Das ist perfekt falls es sich bei dem betreffenden System um ein Produktivsystem handelt, gerade bei Arch Linux. Arch Linux ist eine &amp;quot;bleeding edge&amp;quot; Distribution, in der immer das Neueste zu finden ist. Daher kann und wird es passieren dass irgendwelche Updates das System in Teilen oder im Ganzen unbenutzbar machen. Ohne Snapshots müsste man sich nun mit dem Problem beschäftigen, wofür im Zweifelsfall keine Zeit ist. Mit Snapshots rebootet man einfach auf sein garantiert funktionierendes System und kann sich mit den Problemen beschäftigen wenn Zeit dafür ist.&lt;br /&gt;
&lt;br /&gt;
Mit den Snapshots von LVM ist allerdings, im Gegensatz zu denen von ZFS, kein Rollback möglich. Man kann LVM also nicht sagen &amp;quot;Vergiss alles was passiert ist und spring zu dem Stand des Snapshots zurück&amp;quot;. Benötigt man einen solchen Mechanismus muss man alle Änderungen auf dem Snapshot selbst machen, denn den Snapshot kann man wieder löschen.&lt;br /&gt;
&lt;br /&gt;
== Nachteile ==&lt;br /&gt;
=== Linux exklusiv (nahezu) ===&lt;br /&gt;
LVM gibt es fast ausschließlich für Linux. HP-UX verwendet ihn zwar auch, spielt aber im Privatbereich nahezu keine Rolle. Zwar hat *BSD mit GEOM einen ähnlichen Mechanismus, allerdings ist GEOM nicht mit LVM kompatibel. Für andere Betriebssysteme wie Mac OSX oder Microsoft Windows gilt das gleiche.&lt;br /&gt;
Daher lohnt es sich nur dann LVM einzusetzen wenn auf dem System exklusiv Linux läuft, man kann von anderen Betriebssystemen die Daten im LVM nicht lesen. Eine Notlösung wäre die Einrichtung einer Ext2/3 oder FAT Austauschpartition, wobei für diese dann wieder die Einschränkungen der Partitionen gelten.&lt;br /&gt;
&lt;br /&gt;
DragonflyBSD unterstützt seit Mitte 2010 LVM (siehe [http://leaf.dragonflybsd.org/mailarchive/users/2010-07/msg00036.html]).&lt;br /&gt;
&lt;br /&gt;
=== Schwerer Umstieg ===&lt;br /&gt;
Man kann Partitionen nicht in LVM Volumes konvertieren, wodurch sich der Umstieg auf einem bereits eingerichteten System als schwer erweist. Man müsste ein neues Volume anlegen und alle Daten dort hin kopieren, was dadurch erschwert wird dass man in einem klassischem System mit Partitionen üblicherweise bereits den gesamten zur Verfügung stehenden Platz durch Partitionen reserviert hat. Entweder man besorgt sich einen weiteren Datenträger mit ausreichender Größe, oder man verkleinert bereits bestehende Partitionen so dass genug Platz vorhanden ist.&lt;br /&gt;
Man fährt am besten wenn man bereits zur Installation LVM benutzt.&lt;br /&gt;
&lt;br /&gt;
=== Kompliziertere Benutzung ===&lt;br /&gt;
Durch die vielen Features von LVM muss man sich auch Zeit nehmen um mit LVM umgehen zu können. Der alltägliche und vorallem sinnvolle Umgang mit LVM will gelernt sein.&lt;br /&gt;
&lt;br /&gt;
=== Keine LVM Unterstützung in GRUB ===&lt;br /&gt;
Dadurch dass in GRUB selbst keine LVM Unterstützung vorhanden ist muss man mindestens eine normale /boot Partition haben auf der GRUB, der Linux Kernel und eine Initrd(falls benötigt) vorhanden sind. Eine Alternative wäre GRUB 2, welches bereits LVM Unterstützung bietet. Allerdings ist GRUB 2 nach wie vor in Entwicklung.&lt;br /&gt;
&lt;br /&gt;
= Die Theorie =&lt;br /&gt;
LVM repräsentiert die Daten ziemlich abstrakt. &lt;br /&gt;
== Physical Volume ==&lt;br /&gt;
Auf der untersten Ebene sind die sog. Physical Volumes. Das können beliebige Blockdevices sein. Festplatten, Partitionen, Ramdisks und so weiter. Physical Volumes werden weiterhin mit ihren normalen Namen, beispielsweise /dev/sda2, angesprochen.&lt;br /&gt;
&lt;br /&gt;
== Volume Group ==&lt;br /&gt;
Physical Volumes werden dann zu Volume Groups zusammengefasst. Diese Volume Groups stellen quasi einen Speicherplatz Pool dar, ähnlich wie eine Festplatte. Allerdings ohne die Begrenzung, dass dieser Pool auf einem bestimmten physikalischen Gerät vorhanden sein muss.&lt;br /&gt;
Volume Groups werden mit ihrem Namen angesprochen, welchen man selbst wählen kann. Volume Groups dürfen über beliebig viele Physical Volumes verteilt sein und können im Betrieb vergrößert und verkleinert werden. Das Entfernen von Physical Volumes aus einer Volume Group ist logischerweise nur dann möglich wenn sie redundant sind, also die gleichen Daten bereits auf einem anderen Physical Volume vorhanden sind oder sich auf dem zu entfernenden Physical Volume keine Daten befinden.&lt;br /&gt;
&lt;br /&gt;
== Logical Volume ==&lt;br /&gt;
In der Volume Group werden wiederum Logical Volumes angelegt, sie sind ähnlich wie Partitionen. Das sind dann auch die tatsächlich ansprechbaren Blockdevices auf denen sich ein Dateisystem erstellen lässt. &lt;br /&gt;
&lt;br /&gt;
Für ein Logical Volume ist die einzige Begrenzung dass es in einer bestimmten Volume Group sein muss, es kann nicht über 2 verschiedene Volume Groups gehen. Logical Volumes können im Betrieb vergrößert oder verkleinert werden. Logical Volumes können immer angelegt werden solange in der entsprechenden Volume Group genügend Platz vorhanden ist. Sie können weder umbenannt noch entfernt werden, sollten sie in Benutzung sein.&lt;br /&gt;
Logical Volumes werden durch die Volume Group in der sie sich befinden und einen frei wählbaren Logical Volume Namen angesprochen. Ist ein Logical Volume in der Volume Group &amp;quot;tank&amp;quot; und heisst selbst &amp;quot;lvol-root&amp;quot;, dann ist der Pfad zum Blockdevice:&lt;br /&gt;
 /dev/tank/lvol-root&lt;br /&gt;
Es gibt noch einen weiteren Pfad, da der erstgenannte in frühen Bootphasen eventuell noch nicht existiert. Er lautet:&lt;br /&gt;
 /dev/mapper/tank-lvol-root&lt;br /&gt;
Snaphots zählen ebenfalls als Logical Volume, für sie gelten die gleichen Begrenzungen. Zusätzlich müssen sie sich in der selben Volume Group befinden wie ihr Original.&lt;br /&gt;
&lt;br /&gt;
= Die Einrichtung =&lt;br /&gt;
Ich gehe hier von einer frischen Installation mittels einer Arch Linux CD aus, ob x86_64 oder i686 spielt hierbei keine Rolle.&lt;br /&gt;
Das Arch Linux Setup verfügt zwar über LVM Kompatibilität, allerdings nur so weit dass sich LVM benutzen lässt. Die Einrichtung von LVM muss manuell geschehen.&lt;br /&gt;
Nachdem man auf eine Konsole gewechselt ist, partitioniert man erstmal normal. Dabei ist nur zu beachten, dass es zwingend eine separate /boot Partition geben muss. Ich empfehle eine Größe von 128-256 MB, damit auch mal ein paar mehr Snapshot Kernel drauf passen. Der Rest kann zu einer Partition allokiert werden und wird dann später in das LVM übernommen. &lt;br /&gt;
Im Beispiel wird davon ausgegangen, dass {{ic|/dev/sda1}} für {{ic|/boot}} verwendet wird, {{ic|/dev/sda2}} und {{ic|/dev/sdb}} sollen in das LVM übernommen werden.&lt;br /&gt;
Nachdem man das Device-Mapper Modul &amp;quot;dm-mod&amp;quot; geladen hat, kann man mittels pvcreate Physical Volumes anlegen:&lt;br /&gt;
 pvcreate /dev/sda2 /dev/sdb&lt;br /&gt;
Nun fügt man diese beiden Physical Volumes mittels vgcreate zu einer Volume Group zusammen:&lt;br /&gt;
 vgcreate tank /dev/sda2 /dev/sdb&lt;br /&gt;
Dabei wird eine Volume Group mit dem Namen &amp;quot;tank&amp;quot; angelegt, welche die beiden Physical Volumes {{ic|/dev/sda2}} und {{ic|/dev/sdb}} beinhaltet.&lt;br /&gt;
In der Volume Group werden jetzt Logical Volumes für die verschiedenen Mountpunkte mittels lvcreate eingerichtet:&lt;br /&gt;
 lvcreate --name lvol-root -L10G tank&lt;br /&gt;
Dies würde das Logical Volume &amp;quot;lvol-root&amp;quot; mit einer Größe von 10 GB in der Volume Group &amp;quot;tank&amp;quot; erstellen. Man möchte natürlich auch Logical Volumes für Swap und /home:&lt;br /&gt;
 lvcreate --name lvol-swap -L2G tank&lt;br /&gt;
 lvcreate --name lvol-home -l50%FREE tank&lt;br /&gt;
Das erste Kommando arbeitet nach dem selben Prinzip. Im zweiten verwenden wir -l anstatt -L, damit kann man Extents als Größe angeben. 50%FREE gibt an, dass die Hälfte des restlichen Speichers in der Volume Group für lvol-home genutzt werden soll. Ob das schlau ist oder nicht, muss man für sich selbst entscheiden - die Volume Group könnte ja auch 5TB groß sein. Dieses Beispiel soll nur den Syntax zeigen.&lt;br /&gt;
&lt;br /&gt;
Ist das alles geschehen, kann man das Arch Linux Setup starten. Hier überspringt man die Partitionierung und geht direkt zum Festlegen der Mountpunkte. Es sollte sichergestellt sein, dass {{ic|/dev/sda1}} als /boot eingetragen wird, andernfalls wird das System nicht booten.&lt;br /&gt;
Am Ende der Installation muss man {{ic|/etc/mkinitcpio.conf}} bearbeiten, um sicherzustellen, dass &amp;quot;lvm2&amp;quot;  in dem HOOKS Array eingetragen ist und vor &amp;quot;filesystems&amp;quot; steht. Es ist zu empfehlen, in {{ic|/etc/mkinitcpio.conf}} &amp;quot;dm-snapshot&amp;quot; in das MODULES Array mit einzutragen, da sonst auf &#039;&#039;&#039;kein Volume mehr zugegriffen werden kann&#039;&#039;&#039; sollten Snapshots verwendet werden.&lt;br /&gt;
Man sollte vor dem Reboot noch sicherstellen, dass Bootloaderkonfiguration und {{ic|/etc/fstab}} richtig ausgefüllt wurden, was aber in der Regel der Fall ist.&lt;br /&gt;
&lt;br /&gt;
= Der Alltag =&lt;br /&gt;
Das System läuft zwar jetzt, allerdings haben sich bisher keine Vorteile gegenüber dem klassischen Partitionssystem ergeben. Im Gegenteil, dadurch dass die Einrichtung komplexer war musste man bisher ausschließlich mit Nachteilen leben. Zeit für die Feature Keule.&lt;br /&gt;
&lt;br /&gt;
== Mount Punkte setzen ==&lt;br /&gt;
Wie schon erwähnt werden die Mountpunkte mit dem Mapper erstellt. Also ist anstatt {{ic|/dev/sda2}} {{ic|/dev/mapper/tank-home}} zu verwenden.&lt;br /&gt;
&lt;br /&gt;
Desweiteren ist unbedingt zu beachten, dass in {{ic|/etc/mkinitpio.conf}} die Hooks {{ic|udev}} und {{ic|lvm2}} im Hooksarray eingetragen sind und sich {{ic|lvm2}} vor dem {{ic|filesystems}} Eintrag befindet.&lt;br /&gt;
{{hc|/etc/mkinitcpio.conf|&lt;br /&gt;
HOOKS{{=}}&amp;quot;base udev ... block lvm2 filesystems&amp;quot; }}&lt;br /&gt;
&lt;br /&gt;
== Partition Hinzufügen==&lt;br /&gt;
Um eine Partition in die Volume Group aufzunehmen muß diese erst ins &#039;Linux LVM&#039; Format formatiert werden. Danach wird auf der Platte ein Volumen erstellt und der Volume Group hinzugefügt.&lt;br /&gt;
  pvcreate /dev/sdb1&lt;br /&gt;
  vgextend tank /dev/sdb1&lt;br /&gt;
&lt;br /&gt;
==Partitionen Entfernen==&lt;br /&gt;
Bevor eine Partition aus der Volume Group entfernt wird, sollten vorher alle Daten auf die restlichen Datenträger der Volume Group geschoben werden, um Datenverlust zu vermeiden.&lt;br /&gt;
  pvmove /dev/sdb1&lt;br /&gt;
Sollen die daten auf eine bestimmte Festplatte verschoben werden&lt;br /&gt;
  pvmove /dev/sdb1 /dev/sda1&lt;br /&gt;
Nun kann die Festplatte aus der Volume Group entfernt werden.&lt;br /&gt;
  vgreduce tank /dev/sdb1&lt;br /&gt;
Weiterhin können alle unbenutzten Festplatten entfernt werden mit&lt;br /&gt;
  vgreduce --all vg0&lt;br /&gt;
Abschliesend muß nun noch folgender Befehl benutzt werden&lt;br /&gt;
  pvremove /dev/sdb1&lt;br /&gt;
&lt;br /&gt;
== Vergrößern ==&lt;br /&gt;
Da das Vergrößern von Logical Volumes immer mit ein bisschen Aufwand verbunden ist empfiehlt es sich für alle größeren Sachen ein eigenes Logical Volume anzulegen. Was aber wenn das viel zu klein geraten ist?&lt;br /&gt;
Mit lvextend können Logical Volumes vergrößert werden, wenn es das Dateisystem erlaubt auch im Betrieb.&lt;br /&gt;
 lvextend -L15G tank/lvol-home&lt;br /&gt;
Würde lvol-home auf 15GB vergrößern. Man kann die Angaben auch relativ machen:&lt;br /&gt;
 lvextend -L+5G tank/lvol-home&lt;br /&gt;
Dies vergrößert lvol-home um 5GB. Man kann ebenfalls -l benutzen um Angaben mit Hilfe von Extents zu machen.&lt;br /&gt;
Bisher ist nur das Logical Volume vergrößert, das Dateisystem weiß es noch nicht. Im Falle von ext2/3/4 kann man das Dateisystem mit Hilfe von&lt;br /&gt;
 resize2fs /dev/tank/lvol-home&lt;br /&gt;
auf die maximale Größe bringen. Zu beachten ist das hier mit /dev Pfaden gearbeitet werden &#039;&#039;&#039;muss&#039;&#039;&#039;, da resize2fs ja nichts von LVM weiß. Man kann auch in LVM Kommandos mit /dev Pfaden arbeiten.&lt;br /&gt;
&lt;br /&gt;
== Verkleinern ==&lt;br /&gt;
Verkleinern funktioniert im Prinzip gleich, allerdings muss hier auf das Dateisystem geachtet werden. Nur die wenigsten unterstützen das Verkleinern im Betrieb, ext2/3/4 gehören nicht dazu. Falls das Dateisystem das Verkleinern im Betrieb nicht unterstützt muss es vorher ausgehangen werden, andernfalls kommt es von Datenverlust bis hin zur Zerstörung des gesamtem Dateisystems.&lt;br /&gt;
Bevor man das Logical Volume verkleinert muss das Dateisystem verkleinert werden, sonst würde man am Ende Daten abschneiden. Bei ext2/3/4 geht das ebenfalls mit resize2fs:&lt;br /&gt;
 resize2fs /dev/tank/lvol-home 10000&lt;br /&gt;
Würde das Dateisystem auf lvol-home auf etwa 9.8GB verkleinern. Man sollte zuerst das Dateisystem etwas kleiner als die endgültige Größe machen und nachher auf die maximale bringen, damit auch sichergestellt ist dass keine Daten abgeschnitten werden.&lt;br /&gt;
Nun wird das Logical Volume selbst mittels lvreduce verkleinert:&lt;br /&gt;
 lvreduce -L10G tank/lvol-home&lt;br /&gt;
Auch hier kann wieder mit relativen Angaben und Extents gearbeitet werden.&lt;br /&gt;
Zum Schluss wird noch das Dateisystem auf die endgültige Größe gebracht:&lt;br /&gt;
 resize2fs /dev/tank/lvol-home&lt;br /&gt;
&lt;br /&gt;
== Snapshots ==&lt;br /&gt;
Snapshots anzulegen ist nicht viel Aufwand. Es muss nur sichergestellt sein dass in der Volume Group genug unreservierter Platz vorhanden ist, da die Änderungen vom Snapshot zum Original und umgekehrt in die Volume Group geschrieben werden. Ein Snapshot kann man mit dem Parameter -s oder --snapshot bei lvcreate anlegen:&lt;br /&gt;
 lvcreate -s --name lvol-root-testing -L5G tank/lvol-root&lt;br /&gt;
Sollten mehr als 5GB Änderungen auf dem Snapshot oder dem Original seit Anlegen des Snapshots geschrieben worden sein springt der Snapshot raus und das dort vorhanden Dateisystem ist aller Wahrscheinlichkeit nach defekt. Das Original ist davon nicht betroffen.&lt;br /&gt;
Der Snapshot ist jetzt unter /dev/tank/lvol-root-testing ansprechbar. Er lässt sich ganz normal mounten und so weiter.&lt;br /&gt;
Mit lvremove lässt sich der Snapshot auch wieder entfernen:&lt;br /&gt;
 lvremove tank/lvol-root-testing&lt;br /&gt;
&lt;br /&gt;
== Ein testing System ==&lt;br /&gt;
Eingangs wurde erwähnt dass sich LVM Snapshots eignen um Updates zu testen. Allerdings kommt keine schwarze Magie ins Spiel – wir können nicht sofort vom Snapshot booten wenn er angelegt wurde. Es sind ein paar Vorbereitungen nötig.&lt;br /&gt;
&lt;br /&gt;
Als erstes wird ein Snapshot angelegt und gemountet, ich gehe von /mnt/lvol-root-testing aus. Dort wird ein neuer Ordner namens &amp;quot;boot-real&amp;quot; angelegt und die Datei etc/fstab mittels eines Editors geöffnet.&lt;br /&gt;
Die Gerätedatei des Wurzelverzeichnisses / wird von /dev/mapper/tank-lvol--root auf /dev/mapper/tank-lvol--root--testig geändert. Der Mountpunkt von /dev/sda1 von /boot auf /boot-real. Zusätzlich wird folgender Eintrag hinzugefügt:&lt;br /&gt;
 /boot-real/testing                    /boot none bind,rw,noatime 0 0&lt;br /&gt;
Dieser bewirkt dass der Ordner /boot-real/testing, welcher erst noch angelegt wird, nach /boot gemountet wird. Das hat den Hintergrund dass ein Kernel Update auf dem Testsystem auch den Kernel von dem normalen System überschreiben würde, da sich beide Systeme dieselbe /boot Partition teilen. Mit diesem Eintrag wird das getrennt.&lt;br /&gt;
Falls man noch mehr Volumes hat auf denen auf Änderungen auftreten könnten die man im normalen System nicht haben möchte(z.B. /usr, /home, ...) muss von diesen auch ein Snapshot angelegt werden. Die Einträge dieser werden wie die von / in etc/fstab abgeändert.&lt;br /&gt;
Der Snapshot kann jetzt wieder ausgehangen werden. In /boot wird nun der Ordner testing erstellt, in welchen die Dateien vmlinuz26(der Kernel), kernel26.img(die Initrd) und System.map26 kopiert werden.&lt;br /&gt;
Nun wird jegedlich ein Eintrag im GRUB benötigt um vom neuen Snapshot auch starten zu können. In /boot/grub/menu.lst sollte sich ein Eintrag befinden, der so ähnlich aussieht:&lt;br /&gt;
 title Arch Linux&lt;br /&gt;
 root   (hd0,0)&lt;br /&gt;
 kernel /vmlinuz26 root=/dev/mapper/tank-lvol--root ro&lt;br /&gt;
 initrd /kernel26.img&lt;br /&gt;
Da weder /dev/tank/lvol-root als /, noch /boot/vmlinuz26 als Kernel und /boot/kernel26.img als Initrd benutzt werden soll wird ein neuer Eintrag mit folgenden Inhalt erstellt:&lt;br /&gt;
 title Arch Linux testing&lt;br /&gt;
 root (hd0,0)&lt;br /&gt;
 kernel /testing/vmlinuz26 root=/dev/mapper/tank-lvol--root--testing ro&lt;br /&gt;
 initrd /testing/kernel26.img&lt;br /&gt;
Einmal gespeichert kann man jetzt in GRUB das neue System auswählen und es booten. Im System sollten alle Mountpunkte überprüft werden bevor die Updates letztendlich eingespielt werden. Auch sollte man die bisher geschehenen Änderungen, einsehbar mit lvdisplay unter &amp;quot;Allocated to snapshot&amp;quot; im Auge behalten und rechtzeitig vergrößern falls benötigt. Steht der Wert bei 100% springt der Snapshot raus und das Dateisystem auf dem Snapshot ist wahrscheinlich defekt.&lt;br /&gt;
&lt;br /&gt;
== Tipps für den Alltag ==&lt;br /&gt;
Eine komplette Dokumentation über alle Befehle und Möglichkeiten von LVM würde den Rahmen eines Wiki Artikels sprengen, doch ein paar gute Tipps sind nie fehl am Platz.&lt;br /&gt;
&lt;br /&gt;
=== Alles in Logical Volumes auslagern ===&lt;br /&gt;
Stellt man fest dass etwas größeres nicht mehr in das aktuelle Logical Volume passt(zum Beispiel ein Spiel o.ä.) sollte man dafür ein neues Logical Volume anlegen anstatt das bestehende zu vergrößern. Das hat den großen Vorteil dass man ein Logical Volume viel leichter wieder entfernen kann als ein bestehendes zu verkleinern. Ausserdem trifft dann die zwar minimale, aber trotzdem vorhanden Fragmentierung des neuen Volumes nicht auf das alte zu.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Konfiguration]]&lt;br /&gt;
[[en:LVM]]&lt;/div&gt;</summary>
		<author><name>Smoneck</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.de/index.php?title=Dm-crypt&amp;diff=18348</id>
		<title>Dm-crypt</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.de/index.php?title=Dm-crypt&amp;diff=18348"/>
		<updated>2015-03-25T07:52:02Z</updated>

		<summary type="html">&lt;p&gt;Smoneck: /* Arch Linux installieren und konfigurieren */ Fehlende root Angabe in Kernelparameter --&amp;gt; bleibt beim Booten bei UUIDs stecken&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[en:System_Encryption_with_LUKS_for_dm-crypt]]&lt;br /&gt;
{{achtung|Nach der Verschlüsselung der Festplatte sind etwaige vorherige Daten nicht mehr zu rekonstruieren! In jedem Fall sollte also ein Backup alter Daten erstellt werden}}&lt;br /&gt;
&lt;br /&gt;
Eine komplett verschlüsselte Festplatte kann in vielen Fällen sinnvoll sein. Zum Beispiel kann es sehr schnell passieren, dass der private Laptop mit den privaten Daten irgendwo liegen gelassen oder geklaut wird. In solchen Fällen ist es immer besser, wenn niemand auf die Daten zugreifen kann. In diesem Beitrag werden zwei Varianten vorgestellt wie sich Festplatten bereits während der Installation von Arch Linux verschlüsseln lassen. Beide Varianten sind gleich sicher, erstere Variante verlangt allerdings weniger Konfigurationsaufwand.&lt;br /&gt;
&lt;br /&gt;
==Festplatte Verschlüsseln==&lt;br /&gt;
Das Ver- und Entschlüsseln wird über das Kryptographie-Modul des Devicemappers des Kernels abgewickelt. Dieser stellt uns ein virtuelles Device zu Verfügung, über das auf die verschlüsselten Partitionen zugegriffen werden kann.&lt;br /&gt;
Der Verschlüsselungsalgorithmus, die Größe des Schlüssels und viele weitere Dinge die die Verschlüsselung beeinflussen, können selber festgelegt werden. Nähere Informationen zu den verfügbaren Parametern gibt es hier auf der [http://www.saout.de/misc/dm-crypt/ Seite von dm-crypt].&lt;br /&gt;
Informationen über die Geschwindigkeit der einzelnen Algorithmen gibt es [http://web.archive.org/web/20070519171434/http://www.saout.de/tikiwiki/tiki-index.php?page=UserPageChonhulio hier] übersichtlich dargestellt. &lt;br /&gt;
&lt;br /&gt;
===Verschlüsselte LVM Partition(Variante 1)===&lt;br /&gt;
Dies ist die meist verbreitete Variante zumal viele andere Distributionen solch eine Verschlüsselung automatisch bei der Installation anbieten. Man kann den normalen [[Arch Install Scripts]] bzw. der  [[Anleitung für Einsteiger]] folgen und muss nur an einigen Punkten abweichen.&lt;br /&gt;
&lt;br /&gt;
====Partitionslayout====&lt;br /&gt;
Man folge den Anleitungen bis zur Partitionierung, danach folge man dieser Anleitung bis auf weiteres.&lt;br /&gt;
&lt;br /&gt;
Das Grundlayout solch einer Festplatte sieht vor, dass bis auf eine kleine Bootpartition die gesamte Platte verschlüsselt wird. Innerhalb des verschlüsselten Bereichs wird eine [[LVM]] angelegt. In dieser können wiederum eine unbegrenzte Anzahl von Logical Volumes angelegt werden. D.h. man partitioniert die Festplatte wie in der Anleitung mit dem Unterschied, dass man nur zwei Partitionen benötigt, einmal die besagte Bootpartition und einmal eine, die verschlüsselt wird und in der später logische Partitionen für z.B. die Root- oder Homepartition angelegt werden. Ein beispielhaftes Layout auf einem reinen Linuxsystem könnte also so aussehen:&lt;br /&gt;
&lt;br /&gt;
 /dev/sda1 - ca. 100MB(Bootpartition)&lt;br /&gt;
 /dev/sda2 - Rest der Festplatte&lt;br /&gt;
&lt;br /&gt;
====Verschlüsselung anlegen====&lt;br /&gt;
Nun sollte man die zu verschlüsselnde Partition mit zufälligen Daten überschreiben:&lt;br /&gt;
 # shred -v /dev/sda2&lt;br /&gt;
shred überschreibt die Festplatte dreimal mit Zufallswerten. Eine schnelle Alternative wäre die Partition nur mit Nullen zu überschreiben. &lt;br /&gt;
 # shred -vn 0 -z /dev/sda2&lt;br /&gt;
Ob einem das reicht, muss man selber entscheiden. Laut einem Artikel von 2009 bei [http://www.heise.de/newsticker/meldung/Sicheres-Loeschen-Einmal-ueberschreiben-genuegt-198816.html Heise] reicht dies bei modernen Festplatten.&lt;br /&gt;
&lt;br /&gt;
Dann müssen die benötigten Kernelmodule geladen werden:&lt;br /&gt;
 # modprobe dm-crypt&lt;br /&gt;
Danach verschlüsselt man sda2 mit folgendem Befehl:&lt;br /&gt;
 # cryptsetup -c aes-xts-plain -y -s 512 luksFormat /dev/sda2&lt;br /&gt;
{{Hinweis|Für Volumes größer als 2TiB sollte &#039;&#039;&#039;aes-xts-plain64&#039;&#039;&#039; verwendet werden. Kernelunterstützung hierfür gibt es seit Kernel 2.6.33.}}&lt;br /&gt;
Den Befehl bestätigen und das gewünschte Passwort eingeben, wobei man beachte, dass das Passwort [https://de.wikipedia.org/wiki/Passwort#Wahl_sicherer_Passw.C3.B6rter sicher] ist. Beim AES-Algorithmus bringen Passwörter, die länger als 32 Zeichen sind, keinen Sicherheitsgewinn.&lt;br /&gt;
&lt;br /&gt;
Zur Auswahl alternativer Algorithmen konsultiere man die Manpage von Cryptsetup:&lt;br /&gt;
 # man cryptsetup&lt;br /&gt;
&lt;br /&gt;
Für die weiteren Schritte muss man die eben verschlüsselte Partition gleich einbinden:&lt;br /&gt;
 # cryptsetup luksOpen /dev/sda2 lvm&lt;br /&gt;
&lt;br /&gt;
In dem Ordner /dev/mapper erscheint jetzt die neue Gerätedatei lvm.&lt;br /&gt;
&lt;br /&gt;
====LVM einrichten====&lt;br /&gt;
Mit&lt;br /&gt;
 # pvcreate /dev/mapper/lvm&lt;br /&gt;
 # vgcreate main /dev/mapper/lvm&lt;br /&gt;
richtet man jetzt die LVM und eine Volume Group (hier im Beispiel mit dem Namen main) ein. Jetzt muss man noch die jeweiligen Logical Volumes einrichten. Logical Volumes sind so etwas wie virtuelle Partitionen, die von Linux wie richtige Partitionen gemountet und verwendet werden können. Zuallererst sollte man sich über das gewünschte Layout im klaren sein.&lt;br /&gt;
&lt;br /&gt;
 / → etwa 10GB (evtl. mehr, einige Pakete wie urbanterror (&amp;gt;1GB) oder auch texlive-full (=1GB) füllen schnell 10GB)&lt;br /&gt;
 /swap → abhängig von der Größe des verbauten RAM (siehe [[Swap]])&lt;br /&gt;
 /home → restlicher Festplattenplatz&lt;br /&gt;
Das Layout ist nur eine Empfehlung und kann beliebig verändert werden.&lt;br /&gt;
&lt;br /&gt;
Um obiges Layout im LVM anzulegen muss man folgende Befehle verwenden:&lt;br /&gt;
 # lvcreate -L 10GB -n root main&lt;br /&gt;
 # lvcreate -L 2GB -n swap main&lt;br /&gt;
 # lvcreate -l 100%FREE -n home main&lt;br /&gt;
&lt;br /&gt;
Möchte man statt GB mit MB-Größen arbeiten, lässt sich auch Folgendes anwenden:&lt;br /&gt;
&lt;br /&gt;
 # lvcreate -L 3072M -n swap main&lt;br /&gt;
&lt;br /&gt;
====Arch Linux installieren und konfigurieren====&lt;br /&gt;
Nun folgt man der gewöhnlichen Installationsanleitung. Wenn man während der Installation die Mountpoints festlegt, muss man jedoch natürlich die eben erstellten Partitionen wählen. In unserem Beispiel muss {{ic|/boot}} auf {{ic|/dev/sda1}} angelegt werden, {{ic|/home}} auf {{ic|/dev/mapper/main-home}}, {{ic|/ }}auf {{ic|/dev/mapper/main-root}} und {{ic|swap}} ist in diesem Fall {{ic|/dev/mapper/main-swap}}. {{ic|/dev/sda2}} und {{ic|/dev/mapper/lvm}} bleiben indes unangetastet.&lt;br /&gt;
&lt;br /&gt;
Im Vergleich zur normalen Installation müssen ab der Erstellung des Linux-Kernels Änderungen beachtet werden. Man editiert in {{ic|/etc/mkinitcpio.conf}} die &#039;&#039;HOOKS&#039;&#039;-Zeile, dabei ist darauf zu achten, dass &#039;&#039;encrypt&#039;&#039; &#039;&#039;&#039;vor&#039;&#039;&#039; &#039;&#039;lvm2&#039;&#039; und beide in dieser Reihenfolge vor &#039;&#039;filesystems&#039;&#039; eingetragen werden! Wünscht man bei der Abfrage der Passworts ein   z.B. deutsches Tastaturlayout, muss man noch &#039;&#039;keymap&#039;&#039; vor &#039;&#039;encrypt&#039;&#039; einfügen. Benutzt man eine USB-Tastatur (oder hat man vor, dies irgendwann zu tun), so muss zusätzlich noch &#039;&#039;keyboard&#039;&#039; vor &#039;&#039;encrypt&#039;&#039; eingetragen werden.&lt;br /&gt;
 HOOKS=&amp;quot;base udev autodetect modconf block &#039;&#039;keyboard keymap encrypt lvm2 filesystems&#039;&#039; fsck shutdown&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Nachdem &#039;&#039;grub&#039;&#039; installiert wurde, muss man vor der Erstellung der Konfigurationsdatei mit {{ic|grub-mkconfig -o /boot/grub/grub.cfg}} noch die Kernelparameter anpassen. Dazu ändert man in {{ic|/etc/default/grub}} den Eintrag &#039;&#039;&#039;GRUB_CMDLINE_LINUX&#039;&#039;&#039; wie folgt:&lt;br /&gt;
&lt;br /&gt;
{{hc|nano /etc/default/grub|&lt;br /&gt;
GRUB_CMDLINE_LINUX{{=}}&amp;quot;cryptdevice{{=}}/dev/sda2:main root{{=}}/dev/mapper/main-root&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
Sollte &#039;&#039;keymap&#039;&#039; in die mkinitcpio.conf eingetragen worden sein und man wünscht beispielsweise ein deutsches Tataturlayout, so müssen entsprechend noch &amp;quot;lang=de&amp;quot; und &amp;quot;locale=de_DE.UTF-8&amp;quot; in die Kernelzeile eingetragen werden. Danach kann man nach der normalen Anleitung weitermachen. Grub selbst sollte auf {{ic|/dev/sda}} installiert werden.&lt;br /&gt;
&lt;br /&gt;
Wird [[syslinux]] als Bootloader verwendet, editiert man die {{ic|APPEND}}-Zeile in {{ic|/boot/syslinux/syslinux.cfg}}:&lt;br /&gt;
 APPEND cryptdevice=/dev/sda2:main root=/dev/mapper/main-root rw&lt;br /&gt;
unter Verwendung der UUID ist die Zeile nach folgendem Muster zu gestalten:&lt;br /&gt;
  APPEND cryptdevice=UUID=&amp;quot;i23ac042-fac8-3cf4-acac3-8295c5a525be&amp;quot;:main root=/dev/mapper/root-main rw&lt;br /&gt;
{{achtung|Es ist darauf zu achten, die UUID des crypto_LUKS devices zu verwenden.}}&lt;br /&gt;
&lt;br /&gt;
====LVM manuell mounten====&lt;br /&gt;
&lt;br /&gt;
Möchte man ein mit LVM eingerichtetes und verschlüsseltes System manuell mounten, beispielsweise beim Start von einer Live-CD, so ist wie im Folgenden zu verfahren.&lt;br /&gt;
&lt;br /&gt;
Verschlüsselte Partition einbinden:&lt;br /&gt;
&lt;br /&gt;
 # cryptsetup luksOpen /dev/sda2 lvm&lt;br /&gt;
&lt;br /&gt;
Unter {{ic|/dev/mapper/}} erscheint nun die Gerätedatei lvm. Im nächsten Schritt ist mitunter der folgende Befehl nötig, um die Volume-Group - in diesem Fall lautet sie &#039;&#039;main&#039;&#039; - zu aktivieren.&lt;br /&gt;
&lt;br /&gt;
 # vgchange -ay&lt;br /&gt;
&lt;br /&gt;
Nun sollte es möglich sein, einzelne Partitionen aus dieser Volume-Group ins System einzubinden.&lt;br /&gt;
&lt;br /&gt;
 # mount -t ext4 /dev/main/root /mnt&lt;br /&gt;
&lt;br /&gt;
===Partitionen einzeln verschlüsseln(Variante 2)===&lt;br /&gt;
Eine weitere Variante verfährt ohne LVM. Diese Anleitung ähnelt trotzdem stark der ersten, daher wird auf die einzelnen Punkte nur rudimentär eingegangen.&lt;br /&gt;
&lt;br /&gt;
====Partitionslayout festlegen====&lt;br /&gt;
Wieder verfährt man nach Anleitung bis zur Partitionierung. Diesmal partitioniert man jedoch die Festplatte schon von vornherein so, wie man sie später haben will. Ein beispielhaftes Layout:&lt;br /&gt;
&lt;br /&gt;
 /dev/sda1 → /boot (100MB)&lt;br /&gt;
 /dev/sda2 → swap abhängig von der Größe des verbauten RAM (siehe [[Swap]])&lt;br /&gt;
 /dev/sda3 → / (10-15GB)&lt;br /&gt;
 /dev/sda4 → /home (restliche Festplatte)&lt;br /&gt;
&lt;br /&gt;
Die Größe der einzelnen Partitionen kann natürlich variieren.&lt;br /&gt;
&lt;br /&gt;
====Crypto-Devices anlegen====&lt;br /&gt;
Laden der benötigten Kernelmodule:&lt;br /&gt;
&lt;br /&gt;
 modprobe dm-crypt   &lt;br /&gt;
&lt;br /&gt;
Anlegen des Crypto-Devices:&lt;br /&gt;
&lt;br /&gt;
 # cryptsetup luksFormat /dev/sda3 --cipher aes-xts-plain -y -s 512&lt;br /&gt;
&lt;br /&gt;
Öffnen des eben erstellten Crypto-Devices:&lt;br /&gt;
&lt;br /&gt;
 # cryptsetup luksOpen /dev/sda3 root&lt;br /&gt;
&lt;br /&gt;
Formatieren und mounten der Partition: &lt;br /&gt;
&lt;br /&gt;
 # mkfs.ext4 -j /dev/mapper/root&lt;br /&gt;
 # mount /dev/mapper/root /mnt&lt;br /&gt;
&lt;br /&gt;
Für die Homepartition soll kein extra Passwort verwenden, sondern ein Keyfile, damit nicht bei jedem Start des Systems zwei Passwörter eingeben werden müssen. Das Keyfile für die Partition wird in /crypto/home.key abgelegt. Allerdings ist es sehr wichtig dieses Keyfile zu sichern. Sollte die Root-Partition einmal beschädigt und nicht wiederherstellbar sein, ist die Home-Partition mit allen Daten ebenfalls verloren. &lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Eine andere Möglichkeit wäre es auch hier ein Passwort zu benutzen und dieses dann in der /etc/crypttab anzugeben. So muss das Passwort nicht auf einem physikalischen Datenträger abgelegt werden.}}&lt;br /&gt;
&lt;br /&gt;
Das Keyfile wird zufällig erstellt, indem man einen 2048 Byte großen Block aus /dev/urandom kopiert.&lt;br /&gt;
&lt;br /&gt;
 # mkdir /mnt/crypto&lt;br /&gt;
 # dd if=/dev/urandom of=/mnt/crypto/home.key bs=1k count=2&lt;br /&gt;
&lt;br /&gt;
Anlegen des nächsten Crypto-Devices:&lt;br /&gt;
&lt;br /&gt;
 # cryptsetup luksFormat /dev/sda4 /mnt/crypto/home.key --cipher aes-xts-plain -s 512&lt;br /&gt;
 # cryptsetup luksOpen /dev/sda4 home --key-file /mnt/root/crypto/home.key&lt;br /&gt;
&lt;br /&gt;
Formatieren und mounten der Partition: &lt;br /&gt;
&lt;br /&gt;
 # mkfs.ext4 -j /dev/mapper/home&lt;br /&gt;
 # mkdir /mnt/home&lt;br /&gt;
 # mount /dev/mapper/home /mnt/home&lt;br /&gt;
&lt;br /&gt;
====Arch Linux installieren und konfigurieren====&lt;br /&gt;
Man verfährt nun nach der normalen Installationsanleitung.&lt;br /&gt;
&lt;br /&gt;
Die Konfigurationsdateien für Grub und mkinitcpio müssen analog zur ersten Anleitung angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Damit das System die Home-Partition korrekt einbindet und die Swap-Partition bei jedem Start mit einem neuen zufälligen Schlüssel verschlüsselt, muss noch folgendes gemacht werden:&lt;br /&gt;
&lt;br /&gt;
Zuerst wird {{ic|/etc/crypttab}} geöffnet und die Home-Partition samt Schlüssel, der auf der Root-Partition in /crypto/home.key liegt, eingetragen.&lt;br /&gt;
&lt;br /&gt;
 # NAME        SOURCE DEVICE      PASSWORD          OPTIONS&lt;br /&gt;
 home          /dev/sda4          /crypto/home.key&lt;br /&gt;
 ....&lt;br /&gt;
&lt;br /&gt;
Um die Partitionen über die UUID einzubinden, wird die aus folgendem Befehl resultierende UUID benutzt&lt;br /&gt;
 $ cryptsetup luksDump /dev/sda4 | grep UUID:&lt;br /&gt;
&lt;br /&gt;
Damit wird bei jedem Systemstart die Home-Partition automatisch geöffnet. Jetzt wird {{ic|/dev/mapper/home}} ganz normal in {{ic|/etc/fstab}} eingetragen, damit {{ic|/home}} korrekt gemountet wird.&lt;br /&gt;
&lt;br /&gt;
 # &amp;lt;file system&amp;gt;         &amp;lt;dir&amp;gt;      &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;     &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
 /dev/mapper/home        /home      ext4     defaults      0       0&lt;br /&gt;
&lt;br /&gt;
Auch die Swap Partition wird in die {{ic|/etc/crypttab}} eingetragen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; unbedingt darauf achten, dass hier das richtige Device angegeben wird, da sonst Datenverlust droht!&lt;br /&gt;
&lt;br /&gt;
 # NAME          SOURCE DEVICE           PASSWORD                OPTIONS&lt;br /&gt;
 swap            /dev/sda2               SWAP                    -c aes-xts-plain -s 512&lt;br /&gt;
&lt;br /&gt;
Jetzt muss nur noch {{ic|/dev/mapper/swap}} in die fstab Datei eintragen werden.&lt;br /&gt;
&lt;br /&gt;
 # &amp;lt;file system&amp;gt;         &amp;lt;dir&amp;gt;      &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;     &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
 /dev/mapper/swap        swap       swap     defaults      0      0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*ANMERKUNG: &#039;&#039;Falls nach dem Neustart die Swap-Partition nicht richtig eingebunden wird, kann folgender Befehl Abhilfe schaffen:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=/dev/sda2&lt;br /&gt;
&lt;br /&gt;
Achtung: Dies überschreibt die Partition mit Nullen - hierbei ist unbedingt darauf zu achten, dass es sich bei sda2 auch tatsächlich um die besagte SWAP-Partition handelt, da man sonst eine andere Partition überschreibt!&lt;br /&gt;
&lt;br /&gt;
==System per USB-Stick entschlüsseln==&lt;br /&gt;
Wer nicht jedesmal beim Booten das LUKS Passwort für die root Partition eingeben will kann auch ein Keyfile auf einem USB-Stick speichern.&lt;br /&gt;
Wenn der Stick beim Booten eingesteckt ist wird das System automatisch aufgeschlossen. Es gibt zwei Möglichkeiten den Key auf dem Stick zu speichern.&lt;br /&gt;
Als einfache (sichtbare) Klartextdatei, oder zwischen dem MBR und der ersten Partition des Sticks.&lt;br /&gt;
&lt;br /&gt;
===Vorbereitungen===&lt;br /&gt;
Bei beiden Methoden muss zunächst erstmal eine Udev Regel für den Stick erstellt werden. Wie das geht wird [[Einbindung_von_USB-Geräten#Udev-Regel_erstellen|hier]] beschrieben. Ab jetzt wird angenommen, dass die Udev Regel den Stick &#039;&#039;usbstick&#039;&#039; nennt und die erste Partition des Sticks &#039;&#039;usbstick1&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Jetzt erstellt man ein Keyfile und speichert es auf dem USB-Stick. Soll das Keyfile als Klartextdatei gespeichert werden, darf der Name keine Sonderzeichen, Punkte (versteckte Dateien) etc. enthalten, da der &#039;&#039;encrypt&#039;&#039; HOOK die Datei sonst beim Booten nicht findet.&lt;br /&gt;
&lt;br /&gt;
USB-Stick mounten&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/usb-stick&lt;br /&gt;
 mount /dev/usbstick1 /mnt/usb-stick&lt;br /&gt;
&lt;br /&gt;
Keyfile erstellen und auf dem Stick speichern.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/urandom of=/mnt/usb-stick/archkey bs=512 count=4&lt;br /&gt;
&lt;br /&gt;
Jetzt kann das Keyfile zu den Schlüsseln für die root Partition (hier {{ic|/dev/sda3}}) hinzugefügt werden. Das alte LUKS Passwort sollte man nicht löschen. Falls das Keyfile mal verloren geht, oder das Entschlüsseln per USB-Stick nicht auf Anhieb funktioniert, kommt man immer noch ins System.&lt;br /&gt;
&lt;br /&gt;
 cryptsetup luksAddKey /dev/sda3 /mnt/usb-stick/archkey&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;/dev/sda3&#039;&#039; gegebenenfalls anpassen...&lt;br /&gt;
&lt;br /&gt;
Als nächstes wird die {{ic|/etc/mkinitcpio.conf}} angepasst. Die Udev-Regel wird in die FILES=&amp;quot;&amp;quot; Zeile eingetragen und zu den HOOKS &#039;&#039;block&#039;&#039; hinzugefügt (vor encrypt).&lt;br /&gt;
&lt;br /&gt;
 FILES=&amp;quot;/etc/udev/rules.d/50-myusb.rules&amp;quot;&lt;br /&gt;
 HOOKS=&amp;quot;... block encrypt filesystems ...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Soll das Keyfile als Klartextdatei gespeichert werden, müssen noch zwei Module zur MODULES=&amp;quot;&amp;quot; Zeile hinzugefügt werden. Eins für das Dateisystem des Sticks (hier vfat) und eins für die Codepage&lt;br /&gt;
&lt;br /&gt;
 MODULES=&amp;quot;ata_generic ata_piix &#039;&#039;&#039;nls_cp437&#039;&#039;&#039; &#039;&#039;&#039;vfat&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Module für das Dateisystem und die Codepage müssen durch die passenden ersetzt werden, falls der USB-Stick ein anderes Dateisystem hat (z.B. ext2). Benutzer des Arch-stock Kernels sollten die hier genannte Codepage verwenden.&lt;br /&gt;
&lt;br /&gt;
Jetzt kann das neue initrd-image erstellt werden. (evtl. das alte vorher sichern)&lt;br /&gt;
&lt;br /&gt;
 mkinitcpio -p linux&lt;br /&gt;
&lt;br /&gt;
===Schlüssel als Klartextdatei speichern===&lt;br /&gt;
Da das Keyfile bereits auf dem Stick existiert, muss nur noch die Kernelzeile in der &#039;&#039;/boot/grub/menu.lst&#039;&#039; angepasst werden.&lt;br /&gt;
&lt;br /&gt;
 kernel /vmlinuz-linux cryptdevice=/dev/sda3:root root=/dev/mapper/root ro vga=771 cryptkey=/dev/usbstick1:vfat:/archkey&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;/dev/usbstick1&#039;&#039; ist dabei die FAT-Partition mit dem Keyfile.&lt;br /&gt;
&lt;br /&gt;
Wenn alles geklappt hat, sollte das System beim nächsten Booten automatisch &amp;quot;aufgeschlossen&amp;quot; werden, vorausgesetzt der USB-Stick ist eingesteckt.&lt;br /&gt;
&lt;br /&gt;
===Schlüssel zwischen MBR und erster Partition speichern===&lt;br /&gt;
&#039;&#039;&#039;ACHTUNG:&#039;&#039;&#039; Man sollte das hier nur machen, wenn man weiß, was man tut. Es kann zu Datenverlust kommen und die Partitionen oder der MBR des Sticks beschädigt werden.&lt;br /&gt;
&lt;br /&gt;
Sollte auf dem Stick ein Bootloader installiert sein, müssen einige Werte angepasst werden. GRUB braucht z. B. die ersten 16 Sektoren. Man müsste also &#039;&#039;seek=4&#039;&#039; durch &#039;&#039;seek=16&#039;&#039; ersetzen. Andernfalls würden Teile von GRUB überschrieben werden. Im Zweifelsfall kann man sich die ersten 64 Sektoren anschauen und nach einem genügend großen freien Bereich suchen. &lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/usbstick of=64sectors bs=512 count=64   # kopiert die ersten 64 Sektoren&lt;br /&gt;
 hexcurse 64sectors                                                      # freien Platz suchen&lt;br /&gt;
&lt;br /&gt;
Den Schlüssel auf den Stick schreiben:&lt;br /&gt;
&lt;br /&gt;
 dd if=/mnt/usb-stick/archkey of=/dev/usbstick bs=512 seek=4&lt;br /&gt;
&lt;br /&gt;
Wenn das geklappt hat kann das (Klartext-) Keyfile vom Stick gelöscht werden:&lt;br /&gt;
&lt;br /&gt;
 shred --remove --zero /mnt/usb-stick/archkey&lt;br /&gt;
&lt;br /&gt;
Jetzt muss noch die Kernelzeile in der &#039;&#039;menu.lst&#039;&#039; (GRUB) Datei angepasst werden:  &lt;br /&gt;
&lt;br /&gt;
 kernel /vmlinuz-linux cryptdevice=/dev/sda3:root root=/dev/mapper/root ro vga=771 cryptkey=/dev/usbstick:2048:2048&lt;br /&gt;
&lt;br /&gt;
Das Format für die &#039;&#039;cryptkey&#039;&#039; Option sieht so aus:&lt;br /&gt;
&lt;br /&gt;
 cryptkey=BLOCKDEVICE:OFFSET:SIZE&lt;br /&gt;
&lt;br /&gt;
Die Werte für OFFSET und SIZE passen für dieses Beispiel, da das Keyfile die Länge 2048 hat (bs=512 count=4) und ab OFFSET 2048 (bs=512 seek=4) auf dem Stick gespeichert ist. Gegebenenfalls müssen die Werte angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Das System wird nun beim nächsten Booten automatisch &amp;quot;aufgeschlossen&amp;quot; werden,&lt;br /&gt;
vorausgesetzt der USB-Stick ist eingesteckt.&lt;br /&gt;
&lt;br /&gt;
==Padlock Fehlermeldung==&lt;br /&gt;
 FATAL: Error inserting padlock_aes (/lib/modules/2.6.24-ARCH/kernel/drivers/crypto/padlock-aes.ko): No such device&lt;br /&gt;
Wenn diese Fehlermeldung beim Booten erscheint, ist das nicht weiter schlimm.&lt;br /&gt;
Die padlock-Module können nur mit speziellen Mini-ITX-Mainboards von VIA mit C7- oder Eden-CPU benutzt werden. Diese Mainboards enthalten eine Verschlüsselungseinheit namens Padlock, die unter anderem einen Hardware-Zufallsgenerator bereitstellt sowie hardwarebeschleunigte AES-Ver-/Entschlüsselung ermöglicht.&lt;br /&gt;
&lt;br /&gt;
Die Module werden an zwei Stellen versucht zu Laden:&lt;br /&gt;
&lt;br /&gt;
* in der initrd&lt;br /&gt;
* durch udev&lt;br /&gt;
&lt;br /&gt;
Um die Meldung weg zu bekommen kan mann folgendes machen:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;a)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Der encrypt-Hook bewirkt beim Erstellen des initrd-Images das alle Module die in Verzeichnissen namens crypto liegen eingebunden und versucht zu laden werden. Das kann man steuern durch den Parameter CRYPTO_MODULES in der /etc/mkinitcpio.conf ähnlich des MODULES Parameters dort. D.h., man muss alle Crypto-Module, die zum Aufschließen der verschlüsselten Root-Partition nötig sind, dort explizit aufführen da der encrypt-Hook diese nicht mehr automatisch einfügt. Die benötigten Module kann man durch lsmod im laufenden System finden. Wer seine crypto-Module anhand des Namens nicht eindeutig identifizieren kann findet sie auf diesen Weg:&lt;br /&gt;
&lt;br /&gt;
 cd /lib/modules/$(uname -r)&lt;br /&gt;
 source /lib/initcpio/functions &lt;br /&gt;
 m=&amp;quot;$(all_modules &amp;quot;/crypto/&amp;quot;) &amp;quot;&lt;br /&gt;
 echo $m&lt;br /&gt;
&lt;br /&gt;
Diese Module würde der encrypt-Hook automatisch einbinden (darunter auch die padlock).&lt;br /&gt;
Zum Abgleich mit den eigenen Modulen jetzt einfach lsmod mit dieser Liste vergleichen.&lt;br /&gt;
&lt;br /&gt;
Der nötige Eintrag in der /etc/mkinitcpio.conf kann z.B. so aussehen:&lt;br /&gt;
&lt;br /&gt;
 CRYPTO_MODULES=&amp;quot;blowfish sha256_generic aes_i586 aes_generic&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Jetzt noch das initrd-Image erstellen(als root): &lt;br /&gt;
&lt;br /&gt;
 mkinitcpio -g /boot/initramfs-linux.img&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;b)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Damit das Modul durch udev nicht versucht wird zu laden. Es reicht nicht (bzw. hat keine Auswirkung) die Module in der rc.conf mit ! vom Laden ausschließen zu wollen. Erst das explizite Blacklisten bei udev führte bei mir zum Erfolg. Also Datei /etc/modprobe.d/modprobe.conf editieren&lt;br /&gt;
&lt;br /&gt;
 blacklist padlock-aes&lt;br /&gt;
 blacklist padlock-sha&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nachtrag:&#039;&#039;&#039;&amp;lt;br&amp;gt;Durch das Update auf 2.6.27 hat sich bei den notwendigen CRYPTO_MODULES wieder einiges geändert. Ich konnte meinen Laptop erstmal nicht normal starten, da in meinen vorgegebenen Modulen welche fehlten. Um das (und das padlock-Problem zu umgehen) habe ich nun die CRYPTO_MODULES Zeile wieder rausgenommen und habe einfach die Module selbst in lib/modules/2.6.27-ARCH/kernel/drivers/crypto/padlock-* gelöscht. Dann das initrd neu erstellt. Somit taucht diese Meldung ebenfalls nicht mehr auf (ich verwende nie eine Hardware für das ich dieses padlock brauchen würde).&lt;br /&gt;
&lt;br /&gt;
==lrw-benbi==&lt;br /&gt;
Wer wie im [http://wiki.archlinux.org/index.php/System_Encryption_with_LUKS_for_dm-crypt#Mapping_partitions US-Arch-Wiki] mit lrw-benbi verschlüsseln will, muss ebenso die /etc/mkinitcpio.conf anpassen:&lt;br /&gt;
&lt;br /&gt;
 CRYPTO_MODULES=&amp;quot;blowfish &#039;&#039;&#039;lrw&#039;&#039;&#039; sha256_generic aes_i586 aes_generic&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Bei einem Dateisystem-Prüffehler==&lt;br /&gt;
Sollte der seltene Fall eintreten, dass die Dateisystem-Überprüfung einer entschlüsselten Partition fehlschlägt (etwa nach einem Crash des Betriebssystems mit anschließendem Kaltstart) und man dieses mit [https://wiki.archlinux.org/index.php/Fsck fsck] händisch machen muss, ist unbedingt darauf zu achten, die betroffene Partition (wie üblich) vorher mit &#039;&#039;umount&#039;&#039; auszuhängen!&lt;br /&gt;
&lt;br /&gt;
Bei folgendem Boot-Szenario hängt die Überprüfung bei &#039;&#039;/dev/mapper/root&#039;&#039;, das mit ext3 formatiert ist:&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 :: Running Hook [keymap]&lt;br /&gt;
 :: Loading keymap...done.&lt;br /&gt;
 :: Running Hook [encrypt]&lt;br /&gt;
 ...&lt;br /&gt;
 EXT3-fs: barriers not enabled&lt;br /&gt;
 EXT3-fs (dm-0): mounted filesystem with writeback data mode&lt;br /&gt;
 kjournald starting.  Commit interval 5 seconds&lt;br /&gt;
 INIT: version 2.88 booting&lt;br /&gt;
 &lt;br /&gt;
  &amp;gt; Arch Linux&lt;br /&gt;
 ...&lt;br /&gt;
    ---------------------------                                         [DONE]&lt;br /&gt;
 :: Starting UDev Daemon                                                [DONE]&lt;br /&gt;
 :: Triggering UDev uevents                                             [DONE]&lt;br /&gt;
 :: Loading Modules                                                     [DONE]&lt;br /&gt;
 :: Waiting for EDev uevents to be processed                            [DONE]&lt;br /&gt;
 :: Bringing up loopback interface                                      [DONE]&lt;br /&gt;
 :: Unlocking encrypted volumes: home..ok                               [DONE]&lt;br /&gt;
 :: Mounting Root Read-only                                             [BUSY]&lt;br /&gt;
 :: Checking Filesystems&lt;br /&gt;
 /dev/mapper/root contains a file system with errors, check forced.&lt;br /&gt;
 ...&lt;br /&gt;
 Inode 90689 has imagic flag set.		&lt;br /&gt;
 &lt;br /&gt;
 /dev/mapper/root: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.&lt;br /&gt;
       (i.e., without -a or -p options)&lt;br /&gt;
                                                                        [FAIL]&lt;br /&gt;
 **************** FILESYSTEM CHECK FAILED *****************&lt;br /&gt;
 *                                                        *&lt;br /&gt;
 * Please repair manually and reboot. Note that the root  *&lt;br /&gt;
 * file system is currently mounted read-only. To remount *&lt;br /&gt;
 * it read-write write: mount -n -o remount,rw /          *&lt;br /&gt;
 * When you exit the maintenance shell the system will    *&lt;br /&gt;
 * reboot automatically.                                  *&lt;br /&gt;
 *                                                        *&lt;br /&gt;
 **********************************************************&lt;br /&gt;
 &lt;br /&gt;
 Give root password for maintenance&lt;br /&gt;
 (or type Control-D to continue): _&lt;br /&gt;
 &lt;br /&gt;
Wie zu sehen, hängt die Überprüfung bei einer bestimmten Adresse (inode) -- es muss aber bei weitem nicht die einzige sein! Außerdem ist die entschlüsselte &#039;&#039;/dev/mapper/root&#039;&#039;-Partition bereits als / (Root) &amp;quot;read-only&amp;quot; eingehängt.&lt;br /&gt;
&lt;br /&gt;
Nachdem man sich nun in der Wartungsumgebung (maintenance shell) als &#039;&#039;root&#039;&#039; eingeloggt hat, hängt man die Root-Partition (oder eben eine andere betroffene Partition) also wieder aus:&lt;br /&gt;
&lt;br /&gt;
 # umount /&lt;br /&gt;
und repariert sie anschließend mit:&lt;br /&gt;
 # fsck.ext3 /dev/mapper/root&lt;br /&gt;
(oder je nach Format mit einer anderen fsck-Variante.) Fsck gibt dann laufend Statusmeldungen aus, und je nachdem, ob es viele Fehler gibt (was man vorher nicht wissen, aber wovon ausgehen kann), muss man häufig bestätigen. Um dies zu vermeiden, gibt man alternativ ein:&lt;br /&gt;
&lt;br /&gt;
 # fsck.ext3 -y /dev/mapper/root&lt;br /&gt;
&lt;br /&gt;
Die Reparatur kann einige Zeit in Anspruch nehmen, &#039;&#039;man darf sie aber auf keinen Fall abbrechen, sonst wird die Partition zerstört!&#039;&#039; -- Schließlich startet man das System neu, und das Problem ist behoben.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Verschlüsseltes Verzeichnis]]&lt;br /&gt;
* [[TrueCrypt]]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [https://wiki.koeln.ccc.de/index.php/Suspend_to_Cryptodisk &amp;quot;Suspend to Cryptodisk&amp;quot;-How-To auf wiki.koeln.ccc.de] {{sprache|de}}&lt;br /&gt;
* [http://www.marcstraube.de/linux/2012/08/installation-von-archlinux-mit-verschlusseltem-lvm-und-systemd/ Blog-Artikel zur Komplettverschlüsselung von Arch Linux] {{sprache|de}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Sicherheit]]&lt;/div&gt;</summary>
		<author><name>Smoneck</name></author>
	</entry>
</feed>