BootCamp via Apple-Skript starten?

jack.jack

Klarapfel
Registriert
20.03.09
Beiträge
280
Hallo
Ist es möglich ein Skript zu programmieren, dass Windows XP per Boot Camp startet?
 

jack.jack

Klarapfel
Registriert
20.03.09
Beiträge
280
Ich habe es nochmals ausprobiert. Manchmal geht es, meistens aber nicht. Manchmal bleibt auch einfach der Bildschirm weiss, wenn ich mein MacBook wieder herauffahre.
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Die Skripten sind Murks. Die Zeile:
do shell script "shutdown -r now" with administrator privileges
ist zu ersetzen mit:
tell app "System Events" to restart

Und das richtige bless-Kommando für eine Windows BootCamp-Partition lautet:
Code:
bless --setBoot --legacy --legacydrivehint /dev/disk0 --device /dev/disk0
(innnerhalb von AS auszuführen mit "with administrator privileges", sprich als root)
 

jack.jack

Klarapfel
Registriert
20.03.09
Beiträge
280
Kann ich auch mit einem ähnlichem Skript das Standartbetriebsystem herausfinden?
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Kann ich auch mit einem ähnlichem Skript das Standartbetriebsystem herausfinden?
Du meinst damit, welches Startvolume gerade eingestellt ist?

Das verrate ich dir, wenn du mir was versprichst: Schreib nie wieder "Standart" hier in diesem Forum. Das ist eine Schreibweise, die man nicht nur lesen, sondern auch deutlich riechen kann.
Rechtschreibung ist zwar nur die Wissenschaft der Esel, aber das tut nähmlich total foll weh tun in die Auge. Tanke.

Code:
bless --info --getBoot
Um den zurückgegebenen Gerätenamen elegant in einen verständlichen Volume-Namen zu übersetzen, kann man das ganze ein wenig mit Greplauch und Sediebeln würzen:
Code:
echo "$( diskutil info $( bless --info --getBoot ) | grep "Volume Name" | sed -e 's,.*: *,,1' )"
 
  • Like
Reaktionen: User 50673

jack.jack

Klarapfel
Registriert
20.03.09
Beiträge
280
Tschuldigung :p

Wie kann ich das dann in einen AppleScript einbetten? Es kommt folgende Fehlermeldung: "Unbekanntes Token" kann diesem "" "" nicht folgen. Dann wird das erste $ markiert.
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Wie kann ich das dann in einen AppleScript einbetten?
Indem du die Gänsefüsschen innerhalb des Shellskripts vor AS verbirgst, die haben auch für AppleSkript eine Sonderbedeutung. Sie kennzeichnen dort Anfang und Ende des Arguments für den Befehl do shell script ...
Der vorangestellte Backslash hebt diese Sonderbedeutung auf und sorgt für eine literale Weitergabe an das enthaltene Shellskript (Der Backslash wird bei der Übergabe entfernt, das Gänsefüsschen bleibt intakt).
Code:
[COLOR="Red"]do shell script "[/COLOR] echo [COLOR="Red"]\[/COLOR]"$( diskutil info $( bless --info --getBoot ) | grep [COLOR="Red"]\[/COLOR]"Volume Name[COLOR="Red"]\[/COLOR]" | sed -e 's,.*: *,,1' )[COLOR="Red"]\[/COLOR]" [COLOR="Red"]"[/COLOR]
 

jack.jack

Klarapfel
Registriert
20.03.09
Beiträge
280
Wie kann ich dann wieder OS X als Startbetriebssystem festlegen?
 

jack.jack

Klarapfel
Registriert
20.03.09
Beiträge
280
Wie kann ich dann nur für den nächsten Start das Standardbetriebssystem festlegen?
 

vino

Gala
Registriert
28.05.08
Beiträge
49
Sehr interessant, nur verwirrend ;) Könnte vielleicht wer das komplette Skript posten, das praktisch das tut:
- 1malig das Standardvolume auf die Windows-Partition setzen
- neustarten (dann soll natürlich unter windows gestartet werden)

Beim nächsten Neustart unter Windows soll dann wieder die Mac-Partition ausgewählt werden.
 
Zuletzt bearbeitet:

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Hat keiner gesehen, oder ;)
Nein, aber gerochen.

Als AppleSkript:
Code:
[SIZE="-2"]do shell script "bless --setBoot --nextonly --legacy --legacydrivehint /dev/disk0 --device /dev/disk0" with administrator privileges
tell app "System Events" to restart[/SIZE]
Als Shellskript:
Code:
[SIZE="-2"]sudo -v;
sudo bless --setBoot --nextonly --legacy --legacydrivehint /dev/disk0 --device /dev/disk0; sudo -k;
osascript -e "tell app \"System Events\" to restart";[/SIZE]