flotow &
Locke
C'est du genre : "Casse-tête chinois".
Choisir un volume dans le panneau du
Startup-disk Manager (
Disque de démarrage) --> revient à inscrire en
NVRAM, à la variable
efi-boot-device, un chemin de démarrage automatique pour l'
EFI sur le volume-cible. Après > c'est le chemin de boot inscrit sur l'en-tête du volume-cible > qui fait que l'
EFI va pouvoir accéder à un
boot_loader pour l'exécuter.
La complication surgit, avec
Windows-7, du fait que cet OS se démarre en mode "
Legacy" (à l'ancienne) > et pas en mode "
UEFI" (à la moderne). Ce qui signifie : le
boot_loader de
W-7 est un fichier
bootmgr qui n'est pas exécutable par un programme interne de type "
EFI" (comme celui, natif, du Mac) > mais par un programme interne de type "
BIOS" (comme celui des anciens PC). Un
BIOS a besoin d'accéder au disque supportant le volume-cible par une table de partition de type
MBR > lui décrivant la partition de boot par un descripteur "ancien mode
Windows". Il faut de surcroît dans la table
MBR que le "
bootable_flag" (le fanion : "je suis démarrable !") > soit apposé en regard de la partition-cible.
Les ingénieurs de la avaient donc implémenté des fonctionnalités complexes : tout disque Mac est toujours porteur de
2 tables de partitions sur l'
en-tête (secteur d'amorçage : blocs
0 à
32) et pas d'une seule : la
GPT principale et une
MBR alternative. La
MBR alternative, inscrite sur le seul bloc
0, est par défaut une
PMBR (
Protective_MBR) ne décrivant aucune partition spécifique sur le disque > mais emballant l'ensemble de l'espace du disque dans une "super-partition" dotée du
hex code :
0xEE --> càd. partition de type
EFI GPT. Autant dire inutilisable. Mais, dès qu'une partition se trouve créée dans un format
Windows (comme le
FAT-32 ou le
NTFS) --> alors la
PMBR du bloc
0 se trouve
automatiquement convertie (
*) à une
HMBR (
Hybrid_MBR : table
MBR fonctionnelle > empruntant la description de
3 partitions
au plus à la table
GPT principale --> donc une
MBR "hybridée" de la définition
GPT des partitions).
- (*) ce mécanisme de conversion automatique de la PMBR du bloc 0 à une HMBR dès la création de toute partition dans un format Windows sur le disque --> a été abandonné à partir de l'OS Sierra 10.12. Parce que le nouveau W-10 bootant en mode "UEFI" (EFI --> GPT --> boot_loader bootmgr.efi) a rendu obsolète cette problématique d'un boot "Legacy" de Windows.
À la détection d'une
HMBR sur un en-tête de disque > le programme interne
EFI a été implémentée d'une capacité à «
émuler un
BIOS » --> on obtient alors le mécanisme logique :
EFI -->
BIOS_émulé -->
HMBR -->
boot_loader bootmgr.
Quand on démarre la touche "
alt" pressée > on déclenche le programme interne
EFI avec une "option de suspension" : un sous-programme appelé le
Boot_Manager va scanner tous les volumes montés dans le temps du boot > afin de détecter et d'afficher ceux qui ont un caractère
démarrable par l'
EFI. Ce qui fait que l'
EFI > au lieu de lire l'entrée de la variable
efi-boot-device (appareil de démarrage automatique de l'
EFI) en
NVRAM > se retrouve en "stand-by" > tandis que son
Boot_Manager affiche à l'écran le sous-ensemble des volumes démarrables. Le choix fait par l'utilisateur de tel volume affiché > inscrit en
NVRAM à une variable
efi-next-only (appareil de démarrage "seulement pour cette fois") l'adresse au volume-cible > avec valeur de surclassement de la variable
efi-boot-device (appareil de démarrage "régulier" de l'
EFI).
Bref : le choix du volume
Windows à l'écran du
Boot_Manager écrit une adresse à une variable
efi-next-only en
NVRAM > là où le choix de ce même volume à l'écran du
StartupDisk Manager écrit une adresse à la variable
efi-boot-device en
NVRAM.
A priori --> on attendrait que les 2 adresses soit équivalentes > ce qui fait que l'
EFI > « s'apercevant » que le volume-cible lui est désigné via un descripteur
MBR de l'en-tête du disque --> hop ! émule un
BIOS à la volée pour adresser ledit volume et pouvoir exécuter le
boot_loader "
Legacy" :
bootmgr. La question est donc : à quel moment une
variation s'introduit-elle dans le schéma directeur qui fait que -->
- si un choix via le StartupDisk Manager a inscrit à la variable efi-boot-device de la NVRAM l'adresse au volume Windows --> alors le boot se fait en mode "Legacy" (EFI --> BIOS_émulé --> descripteur HMBR > boot_loader bootmgr)
- si un choix via le Boot_Manager a inscrit à la variable efi-next-only de la NVRAM l'adresse au volume Windows --> alors le boot en mode "Legacy" avorte. Le "no bootable device" évoquant un programme interne EFI adressant en tant qu'EFI et pas BIOS_émulé le disque de résidence du volume Windows.
Il faut donc mener une enquête pour -->
- vérfier s'il y a bien une HMBR sur le bloc 0 du disque > signe que le boot de W-7 s'opère bien en mode Legacy (par un BIOS_émulé)
- examiner l'inscription valide à la variable efi-boot-device après un choix de Windows dans le panneau du StartupDisk Manager - le problème étant que l'entrée efi-next-only en cas de choix à l'écran du Boot_Manager reste inscrutable > puisque cette variable est effacée de la NVRAM après usage
Si le
SIP d'
El Capitan ne proscrivait pas encore la lecture du secteur d'amorçage du disque de démarrage -->
après avoir fait le choix du volume de boot Windows dans le panneau du
StartupDisk Manager --> passer les 2 commandes :
Bloc de code:
sudo gpt show /dev/disk0
nvram -p
- la 1ère affiche la distribution des blocs du disque > dont l'identification du type de MBR du bloc 0
- la 2è affiche le tableau des variables de la NVRAM
Tu n'as qu'à,
flotow, poster les 2 retours dans une fenêtre de code > dont je te rappelle le procédé -->
- dans la page de ce fil de MacGé > presse le bouton ⌹ (carré avec un + inscrit - juste au milieu de la largeur de la fenêtre totale) dans la barre de menus au-dessus du champ de saisie d'un message > menu : </> Code > par ⌘V colle dans la fenêtre Code > presse le bouton Insérer (ce procédé permet un affichage fenêtré qui économise l'espace de page en respectant la mise en forme des tableaux du «Terminal» --> d'où une plus grande lisibilité)
[Note: c'est le genre de problème où je pars battu d'avance > parce qu'à la simple lecture de sa description > je n'ai aucune "anticipation intuitive" d'une issue possible. Bref : je ne "vois" rien.]