Boot sous OS 9 des nouvelles machines, suite
Commençons par le nom Custer, Nous avons reçu des tas d'informations à son sujet. Jeff a peut être trouvé la bonne raison qui a poussé Apple à appeler le fichier par ce nom:
Custer était encore plus connu pour sa mort. il combattait les indiens, et sa dernière bataille est connue sous le nom de "Custer's Last Stand"--un effort futile. Cela pourrait représenter le dernier sursis de Mac OS 9...
Passons maintenant aux choses sérieuses.
Gilles a fait des tests poussés. Voici ses longues et intéressantes conclusions:
Voici un état des lieux détaillé, après pas loin de trois bonnes heures de tests et de recherches, plus ou moins fructueuses.
Tout d'abord un petit topo sur le boot des Mac :
- Les Mac "OldWorld", c'est à dire tous les PowerMac et portables à architecture PCI sortis avant le G3 B&W) démarrent sur la Rom Mac proprement dite (barrette sur la carte mère). la "rom Mac" est sélectionnée comme périph par défaut dans OpenFirmware.
Si on fait la commande printenv en Openfirmware sur un mac "OldWorld", on obtient entre autres :
boot-device /APPL,ROM
La rom contient le code pour piloter les disques durs et passer le relais au fichier system. On peut très bien dire à ces Mac OldWorld de booter sur un autre périph (pour NetBSD par ex) avec la commande "setenv boot-device xxx" ou tout simplement "boot" suivi du chemin du périph.
- Les Mac "newworld" (à partir G3 blanc bleu) bootent directement sur le disque interne.
Par défaut ils sont réglés pour chercher un fichier de type "tbxi" dans la racine du disque (en fait : type "tbxi" créateur : "chrp").
Sous OS 9 ce fichier est tout simplement le fichier "MacOS Rom" qui est le premier fichier chargé au cours du démarrage sur les mac NewWorld. Sous X ce fichier est "BootX" qui est dans /System/Library/CoreServices.
Si on fait la commande printenv sous OpenFirmware sur une machine newworld on obtient par défaut :
boot-device hd:,\tbxi
(que le démarrage soit sous 9 ou X). Je pense que dans les premiers blocs des partitions HFS de tout disque Mac il y a un pointeur vers le fichier du dossier système "actif" (que ce soit un système X ou 9).
Donc si on veut par exemple forcer le démarrage sur le CD-rom OS 9 quand on est en open firmware sur un iMac LCD, par ex, la première chose à faire est de connaître le chemin du lecteur de CDrom. Pour ça on tape :
dev /
ls
(syntaxe très proche d'un shell unix..) On obtient ainsi la liste des périphériques de l'ordinateur, en particulier on trouve :
[...]
/pci@f2000000
[...]
mac-io@17
[...]
ata-3@20000
C'est le lecteur CD (le disque a un nom contenant ATA-6, un disque firewire serait en fw/node@xxx).
Pour booter sur CD, donc, voici la commande :
boot pci@f2000000/mac-io@17/ata-3@20000/@0:9,\\:tbxi
en gros on recopie l'arborescence, et on copie le n° de partition sur laquelle se trouve le fichier de boot et son accès : @0:9 signifie que c'est sur le disque 0 (master) et la 9e partition de ce disque (les 8 autres partitions sont les partitions des drivers etc).
Bien sûr c'est plus compliqué sur d'appuyer sur "C" mais ça va nous servir pour forcer le boot sur CD.
Maintenant quelques infos sur les CD fournis par Apple aux centres agrées.
Il y en a 2 types :
- les CD MacTest Pro : il s'agit d'un CD bootable avec un MacOS inférieur ou égal à 9.1. Ils contiennt un vrai système de démarrage (en anglais bien sûr) presque identique à un CD d'install MacOS. Ils sont assez remplis : logiciels de tests, logiciel de calibrage d'écran, et des utilitaires et pilotes / mises à jour système en général.
- les CD Hardware Test : identiques en tout point à ceux fournis aux clients sur les machines récentes ils n'ont qu'une et une seule fonction, tester le matériel. En observant leur structure, on voit
que tous les dossiers sont invisibles. Il y a un système 9.1 minimal caché, qui ne sert qu'à pouvoir sélectionner le CD comme disque de
démarrage sous OS 9 je pense.
Le fichier réel de démarrage (type tbxi) est un fichier nommé fde-boot-info, qui n'est autre qu'un script open firmware. En fait le CD Hardware test complet semble être un CD entièrement basé en open firmware, s'aidant juste d'une interface minimale, et basé sur l'environnement de diagnostic "Indy" (je n'en sais pas plus).
Conclusion à ce stade : le CD Hardware test n'est d'aucune utilité pour le boot des Mac en OS 9.
Je me suis quand même amusé à recopier le contenu d'un CD Hardware Test sur un disque firewire (avec Synchronize) pour tester le boot et ça fonctionne très bien à la condition de rendre le dossier où se trouve le fde-boot-info" visible et de le "bénir" (to bless comme on dit chez Apple) il suffit de l'ouvrir une fois dans le finder, pour qu'il soit rendu bootable (ce dont témoigne son icône)
Une des leçons de mes tests est qu'on peut très bien se faire une ou plusieurs partition de test dupliquée à partir du CD Hardware Test sur un disque Firewire.
Donc si on veut le boot sous 9 il faut se servir du système contenu dans les derniers CD MacTestPro. Maintenant qu'est-ce qui empêche les nouveaux Mac de booter sous 9 :
1 - une protection du firmware volontaire de la part d'apple (quidétecte si le fichier tbxi est un "macos Rom" ou un bootX, et qui empêche le boot si c'est un MacOS rom)
2- le fait que les nouveaux matériels soient basés sur des nouveaux jeux de circuits (northbridge/southbridge) pour lesquelles il n'y a pas de drivers dans les MacOS rom existants.
Pour le premier point, comme on a vu il suffit de rentrer en OpenFirmware et on "casse" la protection :
- Il suffit de mettre un CD MacOS 9.2.2 (ou le CD MacTestPro Apple) dans le lecteur, de booter en open firmware (pomme-alt-O-F) et de taper la commande correspondant au boot sur CD :
boot pci@f2000000/mac-io@17/ata-3@20000/@0:9,\\:tbxi (pour le cas d'un iMac G4 15 ou 17")
on rempace "boot" par "setenv boot-device si on veut garder les réglages pour le prochain démarrage.
ça fonctionne aussi selon le même principe pour le boot sur disque dur interne ou firewire.
- Un autre moyen de casser la protection du firmware est de modifier le fichier MacOS Rom avant gravage du CD MacOS 9 (ou copie sur disque dur). En effet ce fichier est identifié par sa ressource "ftag" : Si on met un CD OS 9.2.2 dans un iMac FP 17" il n'est pas vu dans le menu de boot quand on appuie sur alt au démarrage : c'est à cause de la ressource ftag du fichier MacOS Rom, reconnue comme trop ancienne ! Si on modifie le fichier MacOS Rom en recopiant la ressource ftag à partir du fichier BootX d'OS X, là notre système 9 sera reconnu dans le menu de démarrage !!
Malheureusement à ce point le démarrage se fait mais on bloque sur le panneau "sens interdit" : le démarrage se lance bien mais les fichiers MacOS Rom les plus récent ne gèrent pas les nouvelles cartes mères, apparemment.
l'iMac 17" se bloque sur le panneau sens interdit.. :-(
On y arrivera !