{{tag> }}
====== Postsync (without Sync) on Start Hack ======
Wenn man z.B. aus Geschwindigkeitsgründen ein "Sync+Start" vermeiden will, aber auf ein "postsync"-Skript nicht verzichten will, kann man folgendes tun:
**Achtung.**
Veränderungen am Kern von Linbo.
Jegliche Handlung auf eigene Gewähr und vermutlich ohne support durch die Entwickler.
Funktioniert nur mit Linbo 2.3.14 und vielleicht mit neueren.
You have been warned.
* Kopiere die Datei ''/var/cache/linuxmuster-linbo/linbofs64/usr/bin/linbo_cmd'' z.B. nach:
# cp /var/cache/linuxmuster-linbo/linbofs64/usr/bin/linbo_cmd /var/linbo/my_linbo_cmd
* Editiere die Kopie ''/var/linbo/my_linbo_cmd'' und suche die Zeilen
start(){
...
# sets machine password on server
invoke_macct
# kill torrents if any
killalltorrents
...
* Füge nach ''invoke_macct'' die Zeilen ein:
# do a postsync on start, if configured with PostsyncOnStart=yes in next line after baseimage=${image}.cloop line
# does NOT do all the windows/linux stuff: restore bcd,gpt,registry and newdev.dll-patching,
image="$(cat /mnt/.linbo)"
postsync="$image.cloop.postsync"
local RET=""
RET="$(grep -i "baseimage[[:space:]]*=[[:space:]]*${image}.cloop" -A 1 /start.conf | grep -i ^postsynconstart | tail -1 | awk -F= '{ print $2 }' | awk '{ print $1 }' | tr A-Z a-z)"
if [ "x$RET" = "xyes" ]; then
echo "do a postsync anyway"
# source postsync script
[ -s "/cache/$postsync" ] && . "/cache/$postsync"
sync; sync; sleep 1
fi
* Füge in die Datei ''/usr/share/linuxmuster-linbo/update-linbofs.sh'' an der folgenden Stelle (ca. Zeile 100) die "postsynconstart" und nachfolgende Zeile ein:
...
# copy default start.conf
cp -f $LINBODIR/start.conf .
#postsynconstart
cp /var/linbo/my_linbo_cmd $linbofscachedir/usr/bin/linbo_cmd
# pack default linbofs${suffix}.lz again
find . | cpio --quiet -o -H newc | lzma -zcv > "$linbofs" ; RC="$?"
[ $RC -ne 0 ] && bailout "failed!"
...
* Das ganze hat zur Folge, dass bei jedem ''update-linbofs'' die eigene my_linbo_cmd als neue linbo_cmd ins LINBO kopiert wird. D.h. eigentlich ist diese Aktion nur einmal notwendig. Danach würde das linbo_cmd aus dem bestehenden Image nicht verändert (außer linuxmuster-linbo wird neu heruntergeladen). Also kann die letzte Änderung von update-linbofs.sh nach dem ersten update-linbofs wieder herausgenommen werden.
===== Was dann? =====
* Füge in deine ''start.conf.'' **direkt** nach der Zeile ''baseimage=meinimage.cloop'' die Zeile
PostSyncOnStart = yes
ein.
* Passe dein postsync-Skript so an, dass ein postsync ohne Sync auch Sinn ergibt.
* Führe einmal ''update-linbofs'' aus.
* Starte einen Client und lasse ihn nicht autostarten.
* Teste per ''# grep -i postsynconstart /usr/bin/linbo_cmd'', ob der Hack funktioniert hat
* Starte den Client auf dem client per ''# linbo_wrapper start:1'' und beobachte den Output. Alles was dein Postsync-Skript als output erzeugt, sollte kurz vor dem STart sichtbar werden.
* Viel Spaß...
Achtung: Bei jedem upgrade von linuxmuster-linbo geht die Änderung an update-linbofs.sh verloren, ebenso möglicherweise der Patch selbst an linbo_cmd. Wenn bei einem upgrade von LINBO ein neues linbo_cmd mit dem obigen Patch inkompatibel wird, muss man wieder ran....