Salut
makafish
Tu souhaites pouvoir activer, depuis ta session ouverte de
macOS, un reboot sur
Windows qui ne vaille
pour cette fois-ci seulement > sans modifier la préférence de démarrage automatique permanente inscrite en
NVRAM sur le volume
Macintosh HD. De telle sorte qu'en quittant
Windows pour re-démarrer > ce sera automatiquement sur
Macintosh HD que cela opérera.
J'ai la solution à ton problème. Elle implique les 2 opérations suivantes :
- a) Tu vas à :
Applications >
Utilitaires > tu lances l'«
Éditeur de script». Dans la fenêtre de saisie de script > tu fais un copier-coller direct de :
Bloc de code:
do shell script "bless --mount /Volumes/BOOTCAMP --legacy --setBoot --nextonly"
tell application "Finder" to restart
(note : le volume qui recèle
Windows est supposé ici s'intituer
BOOTCAMP - si ce n'était pas le cas > modifier dans le script à sa place exacte le nom
BOOTCAMP pour qu'il corresponde à l'intitulé actuel du volume
Windows)
puis tu presses le bouton du
pic égrisoir pour compiler les lignes > tu vas alors au menu
Fichier >
Exporter > et tu choisis :
- Exporter comme : bootWIN
- Emplacement : (à ton choix - c'est là que l'application sera loggée)
- Format de fichier : Application (exclusivement)
- Signature de code : Ne pas signer le code
et tu presses le bouton :
Enregistrer.
Cette application va :
- exécuter une commande bless ciblée sur le volume BOOTCAMP recelant Windows avec les options de démarrage --> legacy (par un BIOS émulé par l'EFI) > setBoot (établir le démarrage) > nextonly (seulement pour le prochain démarrage) ;
- demander au Finder de re-démarrer le Mac (ce qui est une manière plus propre de re-démarrer qu'un brutal : shutdown -r now qui provoque des séquelles).
---------
- b) tu vas à :
Applications >
Utilitaires > tu lances le «
Terminal». Dans la fenêtre de saisie de commande > tu fais un copier-coller direct de :
Bloc de code:
sudo chmod 4755 /usr/sbin/bless
et ↩︎ (presse la touche "
Entrée" du clavier pour activer la commande --> une demande de
password s'affiche (commande
sudo) --> tape ton mot-de-passe de session admin à l'aveugle - aucun caractère ne se montrant à la frappe - et valide de nouveau par ↩︎
Cette commande inscrit sur l'exécutable binaire
bless ce qui s'appelle un
SETUID_bit : il s'agit d'un bit qui établit (
SET) une IDentité exécutive d'Utilisateur (
UID) égale à
root quel que soit l'initiateur de la commande.
Il est nécessaire que tu établisses ce
SETUID_bit sur
bless > parce que cet utilitaire qui manipule les en-têtes de volumes et les entrées de la
NVRAM ne s'exécute qu'en droits
root. Grâce au
SETUID_bit > tu pourras lancer ton application
bootWIN de telle manière que l'exécution de
bless sera en droits
root automatiques.
NOTE. Si ton OS est «
Sierra» ou «
El Capitan» et si le
SIP (
System_Integrity_Protection) est activé > tu ne pourras pas directement inscrire le
SETUID_bit sur le binaire
bless > car la localisation
/usr/sbin est verrouillée.
Re-démarre d'abord en pressant les touches
⌘R de l'écran noir jusqu'à la > va à la barre supérieure de menus > menus
Utiltaires >
Terminal.
Saisis la commande :
et exécute-la.
Re-démarre sur ton OS > passe alors seulement la commande :
Bloc de code:
sudo chmod 4755 /usr/sbin/bless
Si tu veux
ré-activer le
SIP > dans le «
Terminal» de la
Recovery encore :
=> le
SETUID_bit sur
bless ne sera pas affecté par ce reverrouillage de
/usr/sbin.
----------
=> il te suffit de faire glisser l'application
bootWIN.app dans ton
Dock pour y créer un raccourci ou de t'en créer un alias sur le Bureau > et un clic (ou double-clic) l'exécutera > avec re-démarrage sur le
Windows du volume
BOOTCAMP uniquement
pour cette prochaine fois > un reboot à partir de
Windows te ramenant automatiquement au
macOS de
Macintosh HD.
----------
Comment fonctionne cette mirifique application de type "bricolage du dimanche au garage" ?
Ce qui détermine le
boot de l'
EFI (Programme Interne du Mac) > ce sont les instructions de la mémoire non-volatile
NVRAM de la Carte-Mère visitée dans le temps du pré-boot.
Lorsqu'un volume de démarrage automatique a été sélectionné dans le panneau
Disque de démarrage des
Préférences Système > cela revient à dire qu'une entrée de la
NVRAM intitulée :
efi-boot-device (appareil permanent de démarrage automatique de l'
EFI) se trouve déterminée par un chemin pointant au volume
Macintosh HD de
macOS (si tel est le choix).
Mais si une instruction de type :
Bloc de code:
bless --mount /Volumes/BOOTCAMP --legacy --setBoot --nextonly
se trouve exécutée > alors se crée en
NVRAM une
seconde entrée intitulée :
efi-boot-nextonly qui est déterminée par un chemin pointant au volume
BOOTCAMP (ou tout autre choisi) avec l'option :
boot en mode
Legacy par
BIOS_émulé dans ce cas de figure.
Cette entrée :
efi-boot-nextonly possède 2 caractéristiques :
- elle overrides (surclasse exécutivement) l'entrée régulière : efi-boot-device > ce qui fait que cette dernière sera échappée par l'EFI > et que seule l'entrée : efi-boot-nextonly sera suivie ;
- elle se trouve effacée par l'EFI de la NVRAM > juste après la prise en compte des instructions qu'elle comporte.
=> ainsi > lors même du
boot de type "
next-only" sur
Windows > la
NVRAM est purgée de l'entrée surclassante
efi-boot-nextonly > et ne reste plus en
NVRAM que l'entrée régulièrement déterminante :
efi-boot-device qui pointe au volume
Macintosh HD de
macOS. Ce sera donc cette option qui sera suivie au prochain re-démarrage et aussi longtemps que l'application
bootWin n'aura pas été exécutée pour forcer une
exception de boot unique sur
Windows.