8.2.2. Implementierung im EduxOS Installer
Die Implementierung der Persistenz Partition wurde bereits bei der basischen Erklärung des Installers angesprochen, sowie das einfache Kopieren der Root Disk auf ein neues Target. Es soll eine Möglichkeit geben, die Konfiguration des aktuellen Systems mit auf das neue System zu kopieren.
Bemerkung
Im Folgenden werden Linux Shell (Bash) Befehle vorgeführt, die den Programmablauf grob beschreiben.
Für die aktuelle Disk (mit EduxOS) wird ${SOURCE}
und für die Ziel Festplatte ${TARGET}
verwendet.
8.2.2.1. Erstellen der Partition
Um das zu bewerkstelligen, muss zunächst die Partition selbst auf der Target Disk erstellt werden:
parted -a optimal "${TARGET}" mkpart primary 0% 100%
Dieser Befehl erstellt eine neue Primary Partition, welche den Rest der Disk einnimmt.
8.2.2.2. Formatieren
Nun, da die Partition entstanden ist und in der Partitionstabelle steht, kann mit dem mke2fs
Tool das Formatieren begonnen werden.
Wie bereits erwähnt wurde, muss das Dateisystem, das für die Persistenz verwendet wird, das
Label persistence haben:
mkfs.ext4 -L persistence "${TARGET}"
Bemerkung
Hier ist mkfs.ext4
verwendet worden, da unsere Partition ein ext4 Dateisystem haben soll.
Das gleiche ist natürlich auch mit mkfs.btrfs
möglich.
8.2.2.3. Kopieren der Konfigurationsdateien
Zuletzt müssen noch die Konfigurationsdateien auf das neue Target kopiert werden.
Dazu werden zuerst die beiden Persistenz Partitionen gemountet:
SOURCE_MNT="/mnt/source"
TARGET_MNT="/mnt/target"
mkdir -p $SOURCE_MNT
mkdir -p $TARGET_MNT
mount -t ext4 -o ro "${SOURCE}" $SOURCE_MNT
mount -t ext4 -o rw "${TARGET}" $TARGET_MNT
Anschließend können die wichtigsten Sachen kopiert werden:
cp -r \
$SOURCE_MNT/etc \
$SOURCE_MNT/usr \
$SOURCE_MNT/var \
/etc/eduxos-installer/persistence.conf \
$TARGET_MNT
Bemerkung
/etc/eduxos-installer/persistence.conf ist Teil des EduxOS Installer Debian Paketes
und wird der persistence.conf von $SOURCE
vorgezogen.
Wichtig
Man beachte, dass /home/edu/.ssh nicht mit kopiert wurde.
Das liegt daran, dass der sync-server
diesen Teil der Konfiguration übernimmt.
SOURCE ssh Schlüssel, etc. sollen nicht auf dem Target liegen.
Zu guter Letzt werden ausstehende Schreib-Befehle durchgeführt und die Partitionen wieder unmounted:
sync
umount $SOURCE_MNT
umount $TARGET_MNT
rm -rf $SOURCE_MNT $TARGET_MNT
unset SOURCE_MNT
unset TARGET_MNT
8.2.2.4. Implementierung
Nun, da die basische Funktionsweise beleuchtet wurde, kann die Implementierung im EduxOS Installer selbst betrachtet werden.
Abb. 8.1 Zeigt den Groben Ablauf, den das Programm einschlägt, wenn der Installieren Knopf betätigt wird.
Zuerst wird geprüft, ob es sich bei der Source um eine Disk oder ein Datenträgerabbild handelt.
Ist die Source eine Datei (oder CD/DVD), so wird der erste dd
Command direkt angewandt, ohne
count
.
Das liegt daran, dass lsblk
in CD/DVDs keine Partitionen erkennt und es zu Fehlern kommen würde.
Das Diagramm macht diese feine Unterscheidung nicht, da es im Endeffekt auf das selbe Ziel
hinausläuft.
Hier wird dieser Prozess als “Kopiere die ersten beiden Partitionen auf das Target” beschrieben.
Hat die Source Disk eine Persistenz Partition, so steht diese in der Partitionstabelle, egal was
als count
angegeben wurde.
Um Klarheit darüber zu gewinnen, warum die ersten 64 Sektoren mit der Partitionstabelle überhaupt
kopiert wurden und nicht einfach das seek
Feature des dd
Kommandos gebraucht wurde, sollte
nochmal unter Allgemeines in EduxOS Installer
nachgelesen werden.
Die eben genannte Partition, die in der Partitionstabelle des Targets steht, wird im Folgeschritt entfernt, insofern sie vorhanden ist.
Anschließend wird auf die jetzt nur noch zwei Partitionen eine weitere hinzugefügt und formatiert. Zu guter Letzt können die Dateien, sowie die persistence.conf auf der neuen Partition deployed werden und der Vorgang ist abgeschlossen.
Bemerkung
Zur Sicherheit wurde im EduxOS Installer nach parted
und mke2fs
Operationen ein partprobe
durchgeführt, um das Betriebssystem über Partitions Änderungen zu informieren.