Je rajoute un note estivale à ce fil.
J'ai bien reçu par courrier la clé USB de
webamax et j'ai pu y mettre, en autant de volumes, une série d'installateurs de
macOS. Comme il n'avait pas effacé le volume créé par le logiciel «
TransMac» > j'ai pu étudier la distribution existante.
«
TransMac» a l'air d'un bon logiciel
Windows pour Mac > en ce sens qu'il crée bien un table de partition
GUID sur le disque > et un volume au format
JHFS+. Son action ensuite consiste effectivement à
restaurer le volume de l'image-disque
InstallESD.dmg recelée dans un installateur de
macOS au volume de la clé. On obtient donc une distribution conforme à celle dont j'avais donné une capture :
Ce procédé de restauration à un volume de clé du
InstallESD.dmg donnait effectivement un volume démarrable avec les installateurs de «
Lion» et «
Mountain Lion» > car le volume de ce dmg recelait des
boot_files de démarrage. Mais le volume des
InstallESD.dmg des installateurs ultérieurs (à partir de «
Mavericks 10.9») > ne recèlent plus de
boot_files => le procédé de restauration est donc voué à ne créer qu'un volume non-démarrable.
----------
J'ai eu la curiosité de consulter les
logs (les journaux d'installation) enregistrés dans un fichier à l'issue de l'installation correcte d'une application d'installation de
macOS dans le volume d'une clé.
Voici ce qui intéresse la séquence de la finalisation (après la recopie de l'application d'install proprement dite) - càd. la
génération des
boot_files et la
bénédiction du volume -->
Bloc de code:
Extracting boot files from /Volumes/OS X Install ESD/BaseSystem.dmg
Extracting Boot Bits from Inner DMG:
Copied prelinkedkernel
Copied Boot.efi
Copied PlatformSupport.plist
Ejecting disk images
Generating the com.apple.Boot.plist file
com.apple.Boot.plist: {
"Kernel Cache" = "/.IABootFiles/prelinkedkernel";
"Kernel Flags" = "container-dmg=file:///Applications/Install%20OS%20X%2010.11.1.app/Contents/SharedSupport/InstallESD.dmg root-dmg=file:///BaseSystem.dmg";
}
Done generating the com.apple.Boot.plist file
Blessing /Volumes/Installl%20macOSl%20Sierra -- /Volumes/Install%20macOSl%20Sierra/.IABootFiles
Certes > ce petit morceau de « prose informatique » peut apparaître une espèce de « Grec » ancien indéchiffrable > mais ce n'est qu'une simple apparence linguistique.
En gros > un
log est une espèce de journal intime dans lequel un sujet (qui est ici un programme informatique) consigne la série de ses actions (et parfois ses états d'âme). La rédaction de ce sujet suit les règles de la prose : « le bûcheron coupe l'arbre ; puis il élague les branches etc. » - càd. l'énoncé d'une série d'actions causales constituant un enchaînement déterministe, comme dans un court roman.
----------
Pour en revenir au journal intime de notre sujet installateur > voici ce que cela donne restitué en mode rhétorique :
- J'en arrive à la phase d'extraction des
boot_files à partir du dmg du
Recovery OS =
BaseSystem.dmg recelé dans le volume monté
OS X InstallESD du dmg parent :
InstallESD.dmg.
- Je crée dans le volume de la clé
Install macOS Sierra > un dossier de démarrage invisible
.IABootFiles > dans lequel je recopie successivement le
prelinkedkernel > le
boot.efi > le
PlatformSupport.plist présents dans le volume
OS X Base System du dmg
BaseSystem.dmg. Cela opéré > j'éjecte les volumes des 2 images-disques
BaseSystem.dmg &
InstallESD.smg.
- Et maintenant il me faut faire un travail littéraire créatif (et plus de copiste) : à savoir, créer le fichier d'instruction de boot
com.apple.Boot.plist qui va permettre au
boot_loader boot.efi de savoir quoi faire une fois lancé par l'
EFI.
- Exactement comme un utilisateur qui emploierait hardiment la commande
defaults pour fabriquer un fichier de préférence
plist > je vais créer un fichier
plist d'après le modèle suivant :
Bloc de code:
com.apple.Boot.plist: {
"Kernel Cache" = "/.IABootFiles/prelinkedkernel";
"Kernel Flags" = "container-dmg=file:///Applications/Install%20OS%20X%2010.11.1.app/Contents/SharedSupport/InstallESD.dmg root-dmg=file:///BaseSystem.dmg";
}
et ça va donner le fichier :
Bloc de code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Kernel Cache</key>
<string>/.IABootFiles/prelinkedkernel</string>
<key>Kernel Flags</key>
<string>container-dmg=file:///Install%20macOS%20Sierra.app/Contents/SharedSupport/InstallESD.dmg root-dmg=file:///BaseSystem.dmg</string>
</dict>
</plist>
- J'utilise les
"" pour échapper les espaces libres dans la saisie des
clés du fichier
plist > et les
‰20 pour la même fonction dans l'intitulé d'une
application ou d'un
volume.
- En résumé : j'indique au
boot.efi de trouver l'adresse du cache de démarrage à charger at :
/.IABootFiles/ prelinkedkernel (soit le fichier
prelinkedkernel dans le dossier
.IABootFiles dans l'espace-racine du volume de résidence) > et de passer au
kernel démarré l'instruction de montage en chaîne : dans l'installateur
Install macOS Sierra.app >
Contents >
SharedSupport --> monter le
InstallESD.dmg > et dans l'espace-racine de ce dmg > monter le
BaseSystem.dmg [de telle sorte que le
daemon \sbin\launchd sera adressable pour exécution afin qu'il initialise le
Recovery OS].
- Je viens de terminer avec succès mon travail de scribe du fichier :
com.apple.Boot.plist.
- Je jette la plume et je m'empare du goupillon pour un petit coup de bénédiction (à l"intention du
boot_manager de l'
EFI) --> je bénis l'en-tête du volume
Install macOS Sierra de la clé > par l'inscription du chemin :
Bloc de code:
/Volumes/"Instal%20macOS%20Sierra"/.IABootFiles
au dossier
.IABootFiles recelant les
boot_files [ainsi l'
EFI trouvera le
boot.efi à exécuter].
- J'ai terminé et je me rendors.