Re: FreeBSD in VMWare, os@kobo24.de, freebsd@edvax.de

From: Bernd Walter <ticso(at)cicely7.cicely.de>
Date: Tue, 17 Jul 2012 18:41:04 +0200

On Mon, Jul 16, 2012 at 02:26:15PM +0200, Oliver Fromme wrote:
> Oliver <os(at)kobo24.de> wrote:
> > shared Verzeichnis (denke das kan Vmware), in die Datei legt Windows beim
> > starten eine (leere) Textdatei an. Fürs runterfahren eine Batch nutzen, die
> > erst die Textdatei löscht, 180 Sekunden Sleep und dann wie oben per RUNDLL32
> > oder shutdown.exe die Kiste herunterfährt/neustartet. Sleep.exe war mal in
> > einem Resource-Kit meine ich.
> >
> > Der FreeBSD-Gast prüft jede Minute per Cron ob die Datei da ist und wenn sie
> > weg ist fährt er runter.
> >
> > Was für eine kranke Konstruktion :)
>
> In der Tat ...
>
> Wenn man eine Datei als Semaphore "missbrauchen" will, wird
> im allgemeinen eher eine FIFO (named pipe) verwendet. Die
> Seite, die warten soll, macht einfach ein "read" aus dieser
> FIFO und wird dadurch solange blockiert, wie die FIFO leer
> ist. Wenn die andere Seite das Signal geben will, schreibt
> sie einfach irgendwas in die FIFO. Das "read" wacht dann
> auf und macht mit dem Skript weiter (in diesem Fall wäre
> das dann shutdown).
>
> Also gastseitig:
>
> FIFO=/shared/shutdown-semaphore
> rm -f $FIFO
> mkfifo $FIFO
> read DUMMY < $FIFO
> shutdown -h now
>
> Und hostseitig lediglich:
>
> echo foo >> /shared/shutdown-semaphore
>
> Vorteil gegenüber einer normalen Datei: Man muss nicht
> regelmäßig per cron (oder sonstwie) herumpollen, und das
> Signal wird _sofort_ ausgelöst, nicht erst bei nächsten
> Poll-Intervall.
>
> Allerdings weiß ich nicht, ob Windows auch FIFOs unter-
> stützt ... Mir sind dort noch keine untergekommen.

Nur, dass die Dinger nicht über Rechnergrenzen hinaus funktionieren.
Das ist ja das schöne an Jails, das solche Dinger machbar sind,
aber bei einer Vollsimulation geht das nicht.

> Wenn nicht, gäbe es noch einen weiteren Trick, der ohne
> FIFOs auskommt. Das sähe gastseitig dann so aus:
>
> SEMA=/shared/shutdown-semaphore
> rm -f $SEMA
> echo foo > $SEMA
> tail -f $SEMA | head -1 > /dev/null
> shutdown -h now
>
> »tail -f« wartet auf weiteren Input von der Datei. Da das
> Kommando »head -1« nur eine Zeile liest und dann abbricht,
> terminiert das tail-Kommando aufgrund eines SIGPIPE, sobald
> die zweite Zeile kommt (vom hostseitigen »echo >> ...«).
>
> Das waren jetzt nur allgemeingültige Kochrezepte, die man
> ihn ähnlichen Situationen verwenden kann. Ob das in dem
> konkreten Fall mit Windows + VMWare auch funktioniert, muss
> man ausprobieren.
>
> Aber ein anderes Problem hat man in jedem Fall, egal wie
> man die Signalisierung löst: Woher weiß das Host-System,
> wann der Gast mit dem Shutdown fertig ist? Er könnte
> einfach grundsätzlich drei Minuten warten (in der Hoffnung,
> dass das immer ausreicht), aber eine befriedigende Lösung
> ist das nicht.

Und genau deswegen sollte das über ACPI gehen...
Das scheint aber hier nicht zum Produkt zu gehören.
Bleibt lediglich das FreeBSD diskless zu betreiben und alles vom
Gast-OS zu mounten - bei Windows als Host auch eher bedingt
praktikabel...

-- 
B.Walter <bernd@bwct.de> http://www.bwct.de
Modbus/TCP Ethernet I/O Baugruppen, ARM basierte FreeBSD Rechner uvm.
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Tue 17 Jul 2012 - 18:41:30 CEST

search this site