diff options
| author | Jonathan Bauer | 2015-05-08 15:43:18 +0200 |
|---|---|---|
| committer | Jonathan Bauer | 2015-05-08 15:43:18 +0200 |
| commit | 0d3476fa5101a2d13a3a3bef8d68e387d15f8967 (patch) | |
| tree | 703fd45fea7a0c3636c8b22486b2f802e5cdf8ef | |
| parent | fix the cmdline hack for parsing ip config - now is statically set (diff) | |
| parent | Merge branch 'master' of git.openslx.org:openslx-ng/systemd-init (diff) | |
| download | systemd-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.md | 99 |
1 files changed, 55 insertions, 44 deletions
@@ -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 |
