Je me suis livré à quelques exercices exploratoires dont voici les résultats.
Le volume Macintosh HD de mon OS en format Apple_HFS standard
Voici la rubrique de boot de la
NVRAM :
- efi-boot-device-data (le chemin à l'appareil de boot automatique de l'EFI) = disk0s2 (la partition du volume Macintosh HD de l'OS)
=> l'
EFI lit ce chemin > va à la partition
disk0s2 > lit le chemin sur l'en-tête du volume monté
Macintosh HD qui l'amène aux
CoreServices > exécute le
boot.efi. Simple et direct.
Dans ce cas de figure spécifique > le volume
Recovery HD de la partition de secours
disk0s3 recèle
2 dossiers : un dossier
com.apple.recovery.boot et un dossier
System. Le dossier
System est hors jeu > car une commande
bless --info sur le volume
Recovery HD monté révèle le chemin de boot suivant :
Bloc de code:
bless --info /Volumes/Recovery\ HD
finderinfo[0]: 23 => Blessed System Folder is /Volumes/Recovery HD/com.apple.recovery.boot
finderinfo[1]: 33 => Blessed System File is /Volumes/Recovery HD/com.apple.recovery.boot/boot.efi
bref : si l'utilisateur démarre avec
alt > choisit le volume affiché
Récupération 10.x > alors l'
EFI va à l'en-tête de ce volume > et va directement dans le dossier
com.apple.recovery.boot au
boot_loader boot.efi > lequel charge un
prelinkedkernel en lui passant le chemin de démarrage de l'appareil-Système qui est l'image-disque
BaseSystem.dmg recelant le
Recovery OS. Simple et sans bavure.
Si l'utilisateur démarre avec
⌘R --> alors cela force l'
EFI à lire la rubrique en
NVRAM =
efi-apple-recovery --> où est inscrit un chemin à la partition
disk0s1 (l'
EFI System Partition : partition-système de l'
EFI pour le boot via
⌘R) > et dans le volume
EFI monté automatiquement dans le temps de boot sur cette partition > à un fichier exécutable
XXX_LOCKED.scap (codé) qui doit rediriger sur le dossier
com.apple.recovery.boot de la
Recovery HD.
----------
Le volume Macintosh HD de mon OS monté sur un CoreStorage
Rubrique de boot de la
NVRAM :
- efi-boot-device-data = disk0s3 (la partition du volume Recovery HD)
Dans ce cas de figure > le volume
Recovery HD de la partition de secours
disk0s3 recèle
3 dossiers : le dossier
com.apple.recovery.boot > le dossier
System et un nouveau dossier
com.apple.boot.S.
Un
bless --info sur le volume
Recovery HD renvoie le chemin suivant inscrit sur son en-tête :
Bloc de code:
bless --info /Volumes/Recovery\ HD
finderinfo[0]: 86 => Blessed System Folder is /Volumes/Recovery HD/System/Library/CoreServices
finderinfo[1]: 664 => Blessed System File is /Volumes/Recovery HD/System/Library/CoreServices/boot.efi
Le dossier
com.apple.recovery.boot du
Recovery OS est donc échappé au profit du dossier
System > dans lequel un
boot_loader boot.efi sera donc exécuté par l'
EFI. Ce
boot_loader va échapper le dossier
com.apple.recovery.boot > et adresser le dossier
com.apple.boot.S.
Dans le dossier
com.apple.boot.S il y a 2 sous-dossiers principaux : un dossier
System recelant un cache de démarrage
prelinkedkernel et des ressources de l'
EFI .efires > et un dossier
Library contenant un fichier de préférence de boot
com.apple.Boot.plist. Le
root UUID (
UUID racine) indiquant la cible de démarrage est l'
UUID de la partition
disk0s2 - laquelle est convertie actuellement dans le contexte
CoreStorage à un magasin de stockage
Physical Volume [il faut noter ici qu'en aucun cas n'est mentionné le device d'un
Logical Volume qui serait
disk1 s'il était exporté à ce moment-là].
Ainsi donc dans le temps du boot > l'
EFI lit le chemin à la partition
disk0s3 de la
Recovery HD > accède à l'en-tête du volume automatiquement monté dans le temps du boot > lit le chemin de boot :
/Volumes/Recovery HD/System/Library/CoreServices/boot.efi et exécute le
boot.efi du dispositif «
booter » du
CoreStorage. Ce
boot.efi adresse le dossier «
booter »
com.apple.boot.S pour charger son
prelinkedkernel en lui passant l'adresse de la cible : la partition
disk0s2 recelant le
Physical Volume du
CoreStorage.
C'est donc un
kernel (dont le code est recelé dans le cache
prelinkedkernel) qui active dans le temps du boot l'exportation du
Volume Logique du
CoreStorage et charge le montage du volume
Macintosh HD sur la couche du
Volume Logique.
Cet extraordinaire mécanisme de contournement prouve sans aucun doute possible que le volume terminal
Macintosh HD n'est
en aucun cas monté dans le temps du boot s'il réside sur un
CoreStorage. Et que pas même le
Volume Logique de ce
CoreStorage n'est activé (
on-line = exporté) > car :
- si cela était > le système de fichiers JHFS+ ancré sur le dev node du Logical Volume monterait automatiquement le volume Macintosh HD sur ce disque virtuel dans le temps du boot > de sorte que ce volume serait directement adressable sans contournement.
- donc l'EFI n'aurait pas à être adressée à un boot_loader boot.efi du volume Recovery HD précurseur du boot_loader boot.efi interne au volume Macintosh HD > ce boot.efi n'aurait pas à charger un cache prelinkedkernel du volume Recovery HD précurseur du cache de démarrage interne au volume Macintosh HD > le kernel mis en cache une fois chargé n'aurait pas à adresser une partition convertie à un magasin de stockage Physical Volume pour déclencher l'exportation du Volume Logique qui en dépend > et par suite le montage du volume-hôte Macintosh HD.
L'analyse de ce mécanisme de démarrage par contournement me paraît prouver que > lorsque le volume
Macintosh HD de l'OS est l'hôte terminal d'un système de stockage
CoreStorage >
jamais ce volume n'est monté automatiquement dans le temps du boot > mais seulement les 2 volumes auxiliaires :
EFI sur la partition
disk0s1 et
Recovery HD sur la partition
disk0s3.
Quelqu'un qui démarre avec
alt > ne peut donc jamais voir monté à l'écran du
boot_manager le volume
Macintosh HD - car il n'est
jamais monté faute d'exportation automatique du
Volume Logique du
CoreStorage. Si un volume "
Macintosh HD" est affiché >
ce ne peut pas être le volume
Macintosh HD >
ce ne peut être que le volume
Recovery HD dont l'en-tête porte pour l'
EFI un chemin de boot au démarreur
boot.efi du dispositif «
booter du CoreStorage ». Dans ce cas de figure > le volume
Recovery HD monté comme
volume du « booter » > est intitulé du
nom du volume destiné à être booté au final =
Macintosh HD.
En cas de dispositif
CoreStorage > si l'utilisateur démarre avec
⌘R (sa seule possibilité pour lancer le
Recovery OS) --> alors comme quand il n'y a pas de
CoreStorage cela force l'
EFI à lire la rubrique en
NVRAM =
efi-apple-recovery --> où est inscrit un chemin à la partition
disk0s1 (l'
EFI System Partition : partition-système de l'
EFI pour le boot via
⌘R) > et dans le volume
EFI monté automatiquement dans le temps de boot sur cette partition > à un fichier exécutable
XXX_LOCKED.scap (codé) qui doit rediriger sur le dossier
com.apple.recovery.boot de la
Recovery HD.