Bei switch_root läßt einen daß hier zurückschrecken.
Code: Alles auswählen
WARNUNG: switch_root entfernt rekursiv alle Dateien und Verzeichnisse im aktuellen Wurzeldateisystem.
Code: Alles auswählen
WARNUNG: switch_root entfernt rekursiv alle Dateien und Verzeichnisse im aktuellen
Wurzeldateisystem.
Das hier dürfte als Blutdrucksenker helfen:
An sich koennte man mit chroot und mount das auch umsetzen. Ich denke, der Grund, dass es pivot_root als Systemcall gibt, liegt daran, dass es im Hintergrund noch magisch in den Prozessen rumfummelt und Working Directories aendert.Manpage pivot_root(2) hat geschrieben: pivot_root() moves the root file system of the calling
process to the directory put_old and makes new_root the
new root file system of the calling process.
The typical use of pivot_root() is during system startup,
when the system mounts a temporary root file system
(e.g., an initrd), then mounts the real root file system,
and eventually turns the latter into the current root of
all relevant processes or threads.
Danke. Das war interessant zu lesen.KBDCALLS hat geschrieben:21.06.2024 13:26:04Hier https://unix.stackexchange.com/questio ... witch-root habe ich noch was zu dem Thema pivot_root vs. switch_root gefunden.
Code: Alles auswählen
...
# Vorher wurden Module geladen, LUKS-Passwort abgefragt und LVM gestartet
...
cd mnt # Hierhin habe ich das Gerät gemountet, das "/" beherbergen soll
pivot_root . mnt # Der eigentliche Wechsel des Root-Verzeichnisses
exec chroot . /bin/bash -c \ # Die Shell soll den Wechsel auch mitbekommen
"/bin/umount /mnt; \ # Der Mount-Point wurde ausgetauscht, /mnt wird nicht mehr gebraucht
# Der alte initrd-Mechanismus benutzt ram-Devices -> das ungenutzte Gerät wird geleert:
/sbin/blockdev --flushbufs /dev/ram0; \
# /sbin/init des Hauptsystems ersetzt vollständig den init-Prozess aus initrd.
# Außerdem werden alle Brücken zur alten console abgerissen und neu belegt
# und die vorher gesicherten Kernelparameter an init übergeben:
exec /sbin/init ${CMDLINE}" <dev/console >dev/console 2>&1