summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Bauer2015-05-08 15:43:18 +0200
committerJonathan Bauer2015-05-08 15:43:18 +0200
commit0d3476fa5101a2d13a3a3bef8d68e387d15f8967 (patch)
tree703fd45fea7a0c3636c8b22486b2f802e5cdf8ef
parentfix the cmdline hack for parsing ip config - now is statically set (diff)
parentMerge branch 'master' of git.openslx.org:openslx-ng/systemd-init (diff)
downloadsystemd-init-0d3476fa5101a2d13a3a3bef8d68e387d15f8967.tar.gz
systemd-init-0d3476fa5101a2d13a3a3bef8d68e387d15f8967.tar.xz
systemd-init-0d3476fa5101a2d13a3a3bef8d68e387d15f8967.zip
Merge branch 'master' of git.openslx.org:openslx-ng/systemd-init
-rw-r--r--readme.md99
1 files changed, 55 insertions, 44 deletions
diff --git a/readme.md b/readme.md
index dad940fd..9ad0f968 100644
--- a/readme.md
+++ b/readme.md
@@ -7,69 +7,73 @@ h2. Inhalt
{{toc}}
-h2. Begriffe
+#h2. Begriffe
-* qcow - qemu copy-on-write
-* stage3.1 initramfs
-* stage4 finales System
+#* qcow - qemu copy-on-write
+#* stage3.1 initramfs
+#* stage4 finales System
h2. Aufgabe
Es wird ein Skript bzw. Dracut-Modul benötigt, dass ein initramfs basierend auf
-systemd baut. Das resultierende initramfs muss Netzwerk-Support bereitstellen
-ein dnbd3 Blockdevice mounten können und einen "switch_root" bzw. "pivot_root"
-auf das zuvor gemountete Dateisystem umsetzen. Das initramfs sollte es
-ermöglichen sowohl *CentOS7*, *RedHat*, *ArchLinux* als auch *Ubuntu* booten zu
-können.
-
-* Overlay-fs (Dateibasiert) funktioniert nicht auf jedem Zielsystem (passieren Überraschungen)
- - aufs
- - layer fs
- - union fs
- - overlayfs
-* Schnelle, flexible Konfiguration
- - Nutzung von Systemd für den gesamten Bootvorgang
- - Hand-over bei switch-root/pivot-root mit Systemd
- - Flexibler Umgang mit verschiednen Varianten von Root-FS (NFS, NBD, DNBD3, ...)
-
-h2. Lösung
-
-* Statt ein Dateibasiertes Overlay-Dateisystem sollte ein auf Blockebene Agierendes eingesetzt werden
- - qemu kvm (Containerformat) qcow2 (NBD - DNBD3 (kann kein rw))
-* Die RedHatEnterpriseLinux-Distribution bietet das komfortable Initramfs-Bau-Framework DRACUT an.
+systemd baut. Das resultierende initramfs muss Netzwerk-Support bereitstellen,
+ein dnbd3 Blockdevice mounten können und einen "switch_root" auf das zuvor
+gemountete Dateisystem umsetzen. Das Framework sollte möglichst
+Distributionsunabhängig konstruiert sein. Es soll bereits vor dem
+"switch_root", also bevor das eigentliche Zielsystem im Root-Verzeichnis
+eingebunden werden systemd als init-System zum Einsatz kommen. Die Kernaufgabe
+eine initramfs ist es alle nötigen Anwendungen bereitzustellen, die benötigt
+werden, um dass finale Zielsystem einzubinden. In dieser konkreten
+Aufgabenstellung muss, dass initramfs ein nicht schreibbares Blockgerät
+eingebunden werden und eine schreibbare Zwischenshicht (Overlayfilesystem)
+zusätzlich eingebunden werden.
+
+h2. Möglicher Technologien für das Overlaykonzept
+
+* Dateibasierte Overlay-FS (Union-FS, Alternat-Union-FS, Overlay-FS)
+ - Funktioniert derzeit nicht auf jedem Zielsystem (Kernel)
+ - Nicht für den Linux-Kernel zertifiziert oder lässt sich nicht über das
+ Root-System legen.
+ - Bei wenigen Änderungen in einer großen Datei muss komplette Datei in
+ der schreibbaren Schicht gespeichert werden.
+* Blockorientierte Overlay-FS (Network-Block-Device, DNBD3, Qemu-Copy-On-Write-Image)
+ - NBD ist für den Linux-Kernel zertifiziert
+ - Weniger Netzwerkverkehr nötig, da nur geänderte Blöcke übertragen werden
+ müssen, statt ganze Dateien zu kopieren.
+ - DNBD3 hat Failover-Strategien, verzichtet auf komplexe Strategien zum
+ Schreiben in geänderte Blöcke über das Netzwerk
+ - Das verfügbare qcow2-Format bietet eine Technologie, um blockorientiert
+ Änderungen in einer zusätzlichen Dateisystemschicht zu speichern.
h2. Zielablauf
Der generelle Ablauf vor bzw. während des Ladens des initramfs und deren
-Minilinux-System sieht wie folgt aus:
+Minilinux-System:
# Boot PXE
-# Stage 3.1
-> # Kernel
-> # Initramfs
-> > # /init (auf in Systemd wechseln) Dracut ist das entsprechende Framework
-> > # /dev + Treibern
-> > # network aufbauen
-> > # rootfs einhängen => switch_root (=> pivot_root vlt. eleganter optional)
+> # Laden des initramfs images
+> # Laden des Kernels
+# Ausführen des iniramfs
+> # Ausführen von Systemd
+> > # Bereitstellen aller benötigten Dienste und Hardware (Netzwerk hochbringen)
+> > # Mounten des finalen Dateisystems als Wurzel
+> > # Wechsel (switch_root) in die finale Distribution
+> > # Starten / Weiterausführen von Systemd als Init-System
h2. Benötigte Pakete zum bauen des initramfs
+> * dracut
+# TODO
+
h2. Benötigte Pakete innerhalb des resultierenden initramfs
-* Development:
-> * qemu-img
-* Initramfs:
+> * systemd
> * quemu-img
> * quemu-nbd
+> * nbd-client
+> * dnbd3-client
-h2. Quellen
-
-* "Main Page Dracut on kerne.org":https://dracut.wiki.kernel.org/index.php/Main_Page
-* "Documentation on kernel.org":https://www.kernel.org/pub/linux/utils/boot/dracut/dracut.html
-* "Enable addional repository":http://www.tecmint.com/enable-rpmforge-repository
-* "Getting Dynamic Kernel Module Support":http://rpmfind.net/linux/rpm2html/search.php?query=dkms
-
-h2. Aufsetzen der Test-Arbeitsumgebung
+h2. Aufsetzen einer Test-Arbeitsumgebung für CentOS
h3. CentOS7/ArchLinux/RedHat/Ubuntu + VirtualBox + VirtualBoxGuestAdditions
@@ -459,3 +463,10 @@ dmesg
1114 l
1115 ldd qemu-nbd
1116 history
+
+h2. Quellen
+
+* "Main Page Dracut on kerne.org":https://dracut.wiki.kernel.org/index.php/Main_Page
+* "Documentation on kernel.org":https://www.kernel.org/pub/linux/utils/boot/dracut/dracut.html
+* "Enable addional repository":http://www.tecmint.com/enable-rpmforge-repository
+* "Getting Dynamic Kernel Module Support":http://rpmfind.net/linux/rpm2html/search.php?query=dkms