Questions et réponses sur OpenBoot
Accueil  La plateforme Sun/SPARC  Questions et réponses sur OpenBoot
Dans cette section:
Qu'est-ce que OpenBoot?
Quel est l'avantage principal d'OpenBoot?
Pourquoi les développeurs d'applications doivent-ils s'intéresser à OpenBoot ?
Comment accéder à OpenBoot?
Qu'est-ce que Forth fait dans OpenBoot?
À quoi ressemble un programme Forth?
Comment changer les configurations d'OpenBoot?
Comment empêcher les gens de (re)démarrer ma station de travail?
Comment changer la bannière de mise sous tension?
Comment démarrer sur un noyau (kernel) différent?
Que se passe-t-il exactement durant le processus de démarrage?
Puis-je démarrer depuis n'importe quel périphérique?
Quels sont les paramètres d'options dans le noyau de démarrage Solaris?
Quels autres programmes autonomes sont disponibles pour OpenBoot?
Qu'est-ce qu'un arbre de périphérique (device tree)?
Comment créer des "aliases" de périphérique (device aliases)?
Comment interpréter un arbre de périphérique?
Que puis-je faire avec un "node" de périphérique (device node)?
Comment diagnostiquer un périphérique?
Comment faire du débogage avec OpenBoot?
Comment faire un changement définitif dans les configuratons d'OpenBoot?
À l'OpenBoot, puis-je monter un système de fichiers et accéder aux fichiers?
Comment réinitialer/redémarrer le système?
Sujets connexes:
Questions et réponses sur OpenBoot
Remplacement de la pile du NVRAM
Les machines SPARC (32 bit)
Les machines UltraSPARC (64-bit)
Les incontournables:
Questions et réponses sur OpenBoot
Forum de discussions
Remplacement de la pile du NVRAM
Les machines SPARC (32 bit)
Les machines UltraSPARC (64-bit)
OpenBoot -- le progiciel dans le PROM d'initialisation (boot PROM) Sun -- est un composant commun et présent dans toutes les stations de travail, mais il s'avère être assez important, avec quelques dispositifs intéressants.

Qu'est-ce que OpenBoot? haut
 
Lorsque vous mettez sous tension une station de travail Sun, le progiciel dans le PROM d'initialisation (programmable read-only memory) est exécuté immédiatement. La fonction principale du PROM d'initialisation est de charger un programme autonome dans le "core" de la mémoire et commencer son exécution. Le programme autonome peut être un système d'exploitation, logiciel de diagnostique, et autres. Le progiciel dans le PROM d'initialisation Sun est appelé OpenBoot. Autre que le chargement et l'invocation initial, OpenBoot fournit des fonctions de mise au point pour assister au débogage du noyau (kernel) et du système.
 
Quel est l'avantage principal d'OpenBoot? haut
 
Sun offre plusieurs architectures de machines (Ex: sun4d, sun4m, sun4u, etc ...) et périphériques de démarrage (Ex: different types de disques durs). Au lieu d'avoir différentes versions des progiciels de PROM d'initialisation pour supporter toutes les combinaisons, OpenBoot supporte les pilotes de gestion de périphériques "plug-in". Les pilotes sont écrits dans un dialecte du language interprété Forth (OpenBoot met en application un interprète Forth). Le code pour le pilote peut résider dans le dispositif PROM lui-même ou dans un espace vide sur le PROM de la carte mère du système. Ce dispositif "plug-in" permet à Sun ou à tous les tiers fournisseurs de développer de nouveaux dispositifs d'initialisation mais sans recompiler ou relier le PROM d'initialisation.

Un autre aspect intéressant d'OpenBoot est qu'il se comporte de la même façon sur des plateformes différentes. Les révisions récentes fournissent de nouvelles commandes, mais en général OpenBoot est stable.
 
Pourquoi les développeurs d'applications doivent-ils s'intéresser à OpenBoot ? haut
 
Lorsqu'un réseau connecté à votre station de travail est interrompu, et que vous ne pouvez rien faire d'autre, vous pouvez toujours aller à l'OpenBoot pour écrire un programme Forth et ainsi vous divertir pour quelques heures. Autrement, il y a plusieurs choses pratiques que vous pouvez faire avec OpenBoot, comme la sécurité et diagnostiques. OpenBoot est aussi très pratique pour accéder à une machine via un cable NullModem (lorsque vous perdez votre connexion ssh par exemple).
 
Comment accéder à OpenBoot? haut
 
En pressant les touches L1 et A en même temps (ou Stop + A, ou ctrl + break lorsque connecté par nullmodem) vous serez acheminé vers le système OpenBoot. Vous verrez l'affichage suivant:
 
Type b (boot), c (continued), or n (new command mode)
>
 
Vous interagissez maintenant avec le moniteur restreint qui vous permet de faire trois (3) choses. Taper b pour démarrer un programme autonome (la plupart du temps un système d'exploitation). Taper c pour résumer l'exécution du programme arrêté. Taper n pour obtenir le moniteur Forth, et l'invité de commandes changera pour ok. La majeure partie de la syntaxe Forth est acceptée dans le moniteur Forth, a.k.a., à l'invite de commandes ok.
 
ok
 
Vous êtes maintenant prêt et en mesure de faire plusieurs choses intéressantes. Pour continuer l'exécussion (ex: retourner au système d'exploitation), tapez:
 
ok go
 
Qu'est-ce que Forth fait dans OpenBoot? haut
 
OpenBoot contient un interpréteur de commandes (tout comme un shell). Au lieu de fournir une nouvelle syntaxe de langage de commande, il incorpore un dialecte du langage de programmation Forth. Forth est un language populaire utilisé dans beaucoup de systèmes incorporés. Étant donné que ce language est simple et l'interpréteur petit, le système Forth prend vraiment peu d'espace. Il s'intègre parfaitement dans le PROM.
 
À quoi ressemble un programme Forth? haut
 
La programmation Forth est interactive, tout comme la programmation BASIC. Vous appercevez le résultat immédiatement. Les commandes Forth sont aussi appelées words. En plus d'accepter les arguments, les words Forth s'appuis fortement sur les valeurs dans le "stack" Forth, lequel est un amortisseur (buffer) "last-in", "first-out" (LIFO), pour retenir temporairement les informations. Le mot showstack affiche le contenu courrant du "stack". Forth utilise la notation postfix plutôt que infix. Par exemple, dans Forth, vous écrivez "3 4 +" au lieu de "3 + 4".

Vous pouvez définir vos propres mots Forth. La syntaxe est bizarre. Le signe ":" commence la définition, et le point-virgule ";" la termine. (Il y a un espace entre le ":" et le nom du "word".)

Dans l'exemple suivant, nous définissons un nouveau "word" Forth "double", lequel double les valeurs de l'item supérieur du "stack".

dup et + sont des "words" Forth intégrés. dup reproduit l'item supérieur du "stack". + ajoute les deux items les plus élevés du "stack" et pousse le résultat sur le dessus du "stack". La commande intégrée "." (oui, c'est un point) pointe le premier item du "stack" et l'affiche. Vous pouvez voir le code source de n'importe quel mot Forth avec la commande "see".
 
ok : double dup + . ;
ok 4 double
8
ok see double
: double dup + . ;
 
Comment changer les configurations d'OpenBoot? haut
 
Il y a des paramètres de configuration d'OpenBoot que vous pouvez ajuster. Ils sont emmagasinés dans la NVRAM (non-volatile RAM), laquelle conserve les valeurs des paramètres même lorsque la machine est hors tension. Pour afficher toutes les valeurs courantes, tapez:
 
ok printenv
 
Pour afficher seulement la valeur courante d'un paramètre donné, tapez:
 
ok printenv paramètre
 
(paramètre est le nom de la valeur que vous désirez voir.)

Pour ajuster (changer) le paramètre nommé à une valeur donnée, tapez:
 
ok setenv paramètre valeur
 
Pour réinitialer tous les paramètres ou un paramètre nommé au défaut de la manufacture, tapez:
 
ok set-defaults
 
ou pour réinitialer seulement un paramètre:
 
ok set-default paramètre
 
Quelques uns des paramètres valides sont:
  • boot-device
  • boot-file
  • screen-#columns
  • screen-#rows
  • security-mode
 
Comment empêcher les gens de (re)démarrer ma station de travail? haut
 
OpenBoot peut fournir une sécurité au (re)démarrage. Les paramètres de sécurité contrôlent quels actions les utilisateurs peuvent performer dans OpenBoot. Rapellez-vous, les utilisateurs interagissent avec OpenBoot aussi bien à travers le moniteur restreint que par le moniteur Forth. Le paramètre de sécurité security-mode place une restriction sur comment le processus de démarrage fonctionne. La valeur défaut du security-mode est none; toutefois, n'importe qui peut (re)démarrer la machine.

Avec security-mode ajusté à command, un mot de passe est requis pour démarrer avec les paramètres (la commande b), ou exécuter la commande n dans le moniteur restreint. Celà prévient les utilisateurs illégaux d'exécuter des programmes illégaux. Par example:
 
>b stand_alone_program_virus
PROM Password:

>n
PROM Password:
 

Dans l'exemple ci-dessus, un mot de passe est requis pour les commandes b et n, et n'est pas affichée lorsque tapée.

Note
: Un mot de passe n'est pas requis pour (re)démarrer avec les paramètres défauts. Si vous ajustez security-mode à full, alors un mot de passe est requis pour performer tout type de (re)démarrage. Par example:

 
>b
PROM Password:
 
Vous pouvez ajuster (ou changer) le mot de passe avec la commande password dans le moniteur Forth. Par example:
 
ok password
New Password (only first 8 chars are used);
Retype new password:
 

Vous pouvez réinitialer la sécurité à none avec la commande setenv security-mode none.

Rappelez vous d'une chose -- si vous activez le mot de passe et l'oubliez, vous aurez à appeler le support de Sun pour retirer le mot de passe et faire en sorte que votre machine démarre à nouveau.

 
Comment changer la bannière de mise sous tension? haut
 
Premièrement, vous pouvez afficher la bannière du système en exécutant la commande banner. Ceci affichera le logo de mise sous tension Sun et un message. Afin de permettre une petite liberté aux partenaires OEM, Sun (ou OpenBoot) vous permet de configurer votre propre logo de mise sous tension et message. Par example, tapez:
 
ok setenv oem-banner message

ok setenv oem-banner? True
 
Ceci configurera votre propre message de mise sous tension. Pour configurer le logo de mise sous tension, vous faites la même chose avec les paramètres oem-logo et oem-logo?. Toutefois c'est un peu plus compliqué de configurer le paramètre oem-logo, puisque le logo est une icone "bit-mapped". Il est préférable de le faire avec l'outil eeprom inclus dans le système d'exploitation. eeprom peut être utilisé pour accéder aux configurations d'OpenBoot. Premièrement, au niveau du système d'exploitation, exécutez iconedit pour créer l'icone de mise sous tension, et utilisez ensuite eeprom pour convertir l'icone au format interne que oem-logo utilise.
 
Comment démarrer sur un noyau (kernel) différent? haut
 
Au niveau du moniteur Forth, la commande pour démarrer un programme autonome (ex: kernel d'un système d'exploitation) est:

ok boot [périphérique] [programme] [attribut(s)]

Si vous exécutez boot sans arguments, le défaut est utilisé. Les valeurs défauts sont emmagasinées dans les paramètres de configuration boot-device et boot-file. Pour afficher leur contenu, tapez:
 
ok printenv boot-device
boot-device disk0 disk

ok printenv bootfile
boot-file
 
Dans l'exemple ci-dessus, les valeurs courrantes et défauts de boot-device sont disk0 et disk. Et la valeur de boot-file est une chaîne vide. disk0 et disk sont des "aliases" de périphériques. Pour voir le vrai périphérique, tapez:
 
ok devalias disk0
disk0 /sbus/esp@0,800000/sd@3,0
 
Comme vous pouvez voir dans le résultat, disk0 est un disque SCSI (sd). Une chaîne vide pour boot-file signifie de laisser le démarreur secondaire choisir le défaut, habituellement kernel/unix.

Les commandes devalias et printenv sans arguments afficheront tous les "aliases" de périphériques et les paramètres de configuration NVRAMRC dans le progiciel OpenBoot, respectivement.
 
Que se passe-t-il exactement durant le processus de démarrage? haut
 
Beaucoup de choses. Premièrement, depuis le moniteur Forth, la commande boot localise le périphérique de démarrage. boot charge les blocs à taille fixe bootblock depuis un endroit fixe dans le périphérique de démarrage.

En second lieu, bootblock charge le démarreur secondaire depuis le périphérique. L'endroit du démarreur secondaire est enregistré dans le bootblock. bootblock est préparé par l'utilitaire de Solaris installboot. Si le périphérique de démarrage est un système de fichiers UFS, le démarreur secondaire est ufsboot.

Finalement, le démarreur secondaire localise et charge le programme autonome. Si le nom du programme autonome n'a pas été spécifié dans boot, ufsboot chargera ses défauts kernel/unix.

Enfin, le programme autonome est exécuté.

Un démarreur secondaire différent est requis pour chaque type de système de fichiers différent instalé dans le périphérique de démarrage. La raison est que le démarreur secondaire requiert de comprendre le protocole de ce système de fichiers particulier pour être en mesure de localiser et charger le programme autonome. Par exemple, si vous spécifiez le programme autonome comme étant /home/sparchead/test/version10/kernel/unix, le démarreur secondaire devra être capable de localiser le fichier depuis le système de fichiers du périphérique de démarrage.
 
Puis-je démarrer depuis n'importe quel périphérique? haut
 
Officiellement, Sun supporte seulement le démarrage depuis les périphériques suivants: disque dur, cdrom, disque floppy et ethernet. Un disque floppy n'a typiquement pas la capacité de démarrer un kernel, étant donné leur taille d'emmagasinage restreint. Vous pouvez toutefois l'utiliser pour démarrer d'autres programmes autonomes (en assumant qu'il entre sur un disque floppy unique).

Lorsque vous démarrez depuis un réseau, OpenBoot propage une requête renversé ARP (appelé "RARP") vers le réseau, et le serveur de démarrage répond. Alors OpenBoot établi une connexion TFTP vers le serveur de démarrage pour trouver le démarreur secondaire inetboot. inetboot utilise le protocole "bootparams" pour obtenir le système de fichiers racine, et il utilise alors le protocole "NFS" pour atteindre le kernel par Ethernet. Le serveur de démarrage requiert de configurer convenablement sa base de données de paramètres de démarrage pour que le processus de démarrage fonctionne.
 
Quels sont les paramètres d'options dans le noyau de démarrage Solaris? haut
 
Un noyau (kernel) Solaris supporte quelques attributs standards depuis le moniteur Forth. Les voici:

ok boot kernel/unix [-a | -r | -s | -v ]

-a vous demande interactivement pour l'information de configuration. Vous utilisez cet attribut si vous désirez spécifier un fichier de configuration système différent (différent de /etc/system), un système de fichier racine différent, un chemin de recherche différent pour des modules à chargement dynamique (DLMs), etc.

-r reconfigure votre arbre de périphériques autant dans /dev que /devices. Vous voudrez utiliser cet attribut pour démarrer lorsque vous avez ajouté un nouveau périphérique au système. Le système sonde tout le matériel attaché et reconstruit l'arbre de périphériques depuis le début.

-s démarre le kernel en mode single-user. Lorsque vous échouez plusieurs fois à compléter un démarrage du kernel, vous préférerez au moin démarrer en mode single-user et performer l'analyse à partir de là.

-v active le mode verbose. Celà signifi que les messages de démarrage du système n'iront pas seulement dans les fichiers log du système (habituellement /var/adm/messages) mais seront aussi simultanément affichés à la console.
 
Quels autres programmes autonomes sont disponibles pour OpenBoot? haut
 
À 99% du temps, le programme autonome est le kernel de Solaris. Le reste du temps vous exécuterez probablement le débuggeur de kernel kadb et quelques outils de diagnostique matériel du vendeur de matériel.

kadb est basé sur le débuggeur adb et inclus plusieurs macros pré-définis, lesquels comprennent la structure de données du kernel. Désolé, vous ne pouvez pas définir vos propres macros. Ils sont compilés ensemble avec kadb. La syntaxe pour exécuter kadb est:

ok boot [périphérique de démarrage] kadb [-d] [kernel-attributs]

Avec -d, kadb vous demande quel kernel vous désirez débugger; autrement le défaut kernel/unix est utilisé. Les attributs du Kernel sont simplement passé au kernel par kadb.
 
Qu'est-ce qu'un arbre de périphérique (device tree)? haut
 
Le matériel Sun utilise un concept d'arbre de périphériques pour organiser les périphériques attachés au système. Pour voir l'arbre de périphériques entier, utilisez show-devs:
 

ok show-devs
/io-unit@f,e1200000
/io-unit@f,e0200000
/mem-unit@f,e1100000
/mem-unit@f,e0100000
/cpu-unit@f,e1800000
/cpu-unit@f,e1000000
/cpu-unit@f,e0800000
/cpu-unit@f,e0000000
/boards
/openprom
/virtual-memory@0,0
/memory@0,0
/aliases
/options
/packages
/io-unit@f,e1200000/sbi@0,0
/io-unit@f,e1200000/sbi@0,0/SBUSDKHS@3,2000
/io-unit@f,e1200000/sbi@0,0/lebuffer@0,40000
/io-unit@f,e1200000/sbi@0,0/dma@0,81000
/io-unit@f,e1200000/sbi@0,0/lebuffer@0,40000/le@0,60000
/io-unit@f,e1200000/sbi@0,0/dma@0,81000/esp@0,80000

 
Chaque ligne du résultat représente un périphérique. Au niveau du système d'exploitation Solaris, vous pouvez apercevoir le même arbre dans /devices. De plus, le moniteur Forth fourni des commandes à saveur Unix pour manipuler les périphériques. Par exemple:
 
ok cd /io-unit@f,e0200000/sbi@0.0
 
La commande cd fait du périphérique /io-unit@f,e0200000/sbi@0.0 le "node" courrant.
 
ok ls
ffda2b3c qec@3,20000
ffda093c lebuffer@1,40000
ffd9baec dma@1,81000
ffd998ec lebuffer@0,40000
ffd946c4 dma@0,81000
 
La commande ls liste les "nodes" sous le "node" courrants. La seconde colonne du résultat liste le nom des "nodes". La première colonne liste l'adresse physique associée avec les "nodes".

La commande pwd affiche les chemins des "nodes" courrants:
 
ok pwd
/io-unit@f,e0200000/sbi@0,0
 
Comment créer des "aliases" de périphérique (device aliases)? haut
 
Comme vous pouvez le constater, chaque chemin de périphérique est assez long. Alors il serait bien d'être capable de créer des "aliases" pour ces périphériques. OpenBoot fourni la commande devalias pour cette usage.

ok devalias [alias]

La commande devalias affiche la valeur courrante de tous les "aliases" de périphérique (si aucun paramètre n'est donné) ou les "aliases" nommés.

ok devalias alias chemin_du_périphérique

devalias avec deux arguments défini l'aliase du périphérique alias à la valeur chemin_du_périphérique.
 
Comment interpréter un arbre de périphérique? haut
 
Chaque "node" dans l'arbre de périphériques représente un périphérique. Les "Nodes" avec "children" représente habituellement les bus et leurs contrôleurs associés. Leurs "children" sont des périphériques connectés au bus ou aux contrôleurs.

Un chemin de périphérique complet commence avec un /. Il s'agit de la racine de l'arbre et représente le "node" de la machine. Chaque nom de "node" a la forme nom@adresse:arguments. Autre que le nom, le reste est optionnel et le format est dépendent du périphérique. Si le système peut identifier le périphérique sans ambiguité, vous pouvez ignorer cette portion du nom de chemin de périphérique. J'écris habituellement le chemin complet.

adresse représente une adresse physique associée au périphérique. arguments est utilisé pour passer des informations additionnelles au logiciel du périphérique.

Regardons un exemple simple. Admettons que le système de fichiers racine sur une IPX est /dev/dsk/c0t3d0s0, lequel est équivalent au "node" du périphérique:

/sbus@1,f8000000/esp@0,800000/sd@3,0:a

Regardons maintenant comment interpréter le chemin. De sd@3,0:a, nous savons que le périphérique est un disque SCSI sd attaché au bus SCSI à la cible 3 (target) et à l'unité logique 0. Le "a" à la fin représente la première partition du disque. De esp@0,800000, nous savons que le bus SCSI est implémenté comme un adapteur d'hôte SCSI esp résidant dans le SBus slot 0 à offset 800,000. Finalement de sbus@1,f8000000, nous savons que l'interface SBus est attachée au bus du système à l'adresse 1,f8000000.
 
Que puis-je faire avec un "node" de périphérique (device node)? haut
 
Chaque "node" de périphérique possède des attributs et méthodes associés. Utilisez les commandes du moniteur Forth .attributes et words pour afficher les valeurs du "node" courrant. Par exemple:
 
ok cd /io-unit@f,e0200000/sbi@0,0/dma@0,81000/esp@0,80000/sd
ok .attributes
device_type     block
name            sd
ok words
selftest        reset           load            write          read
seek            sd-selftest     close           open
write-blocks    read-blocks     dma-free        dma-alloc
max-transfer    block-size      spin-up
 
L'exemple ci-dessus affiche un disque SCSI sd et que c'est un périphérique de type block. Des méthodes sont fournie pour ouvrir, fermer, lire et écrire le périphérique. La commande cd est requise pour faire que le périphérique nommé soit le "node" courrant. .attributes et words fonctionne seulement sur le "node" courrant.
 
Comment diagnostiquer un périphérique? haut
 
Il y a quelques commandes très pratiques pour le diagnostique des périphériques. probe-scsi-all identifie tous les périphériques SCSI attachés au système.

(Note: probe-scsi-all n'est pas supporté jusqu'à OpenBoot révision 2.6. La commande banner vous indiquera la révision courrante d'OpenBoot pour votre machine.)
 
ok probe-scsi-all
/io-unit@f,e1200000/sbi@0,0/dma@0,81000/esp@0,80000
Target 0
Unit 0   Disk     CONNER  CP30548  SUN0535AEBX9308288P
Target 1
Unit 0   Disk     CONNER  CP30548  SUN0535AEBX93082PA7
Target 2
Unit 0   Disk     CONNER  CP30548  SUN0535AEBX9308280V
Target 3
Unit 0   Disk     CONNER  CP30548  SUN0535AEBX93082PMC

/io-unit@f,e0200000/sbi@0,0/dma@1,81000/esp@1,80000
Target 0
Unit 0   Disk     SEAGATE ST42400N SUN2.1G0417705457  Copyright (c)
1992 Seagate All rights reserved
ok
 
probe-scsi identifie seulement les périphériques SCSI attachés au bus SCSI intégré:
 
ok probe-scsi
Target 0
Unit 0   Disk     SEAGATE ST31200N SUN1.05872200147810Copyright (c)
1994 Seagate All rights reserved 0000
Target 1
Unit 0   Disk     SEAGATE ST31200N SUN1.05872200137389Copyright (c)
1994 Seagate All rights reserved 0000
Target 2
Unit 0   Disk     SEAGATE ST31200N SUN1.05872200150421Copyright (c)
1994 Seagate All rights reserved 0000
Target 3
Unit 0   Disk     SEAGATE ST31200N SUN1.058722001494te All rights
reserved 000078Copyright (c) 1994 Seagate All rights reserved 0000
Target 5
Unit 0   Removable Tape     ARCHIVE Python 28454-XXX4ASB
Target 6
Unit 0   Removable Read Only device     SONY    CDU 561  SUNMSCD1.9k
ok
 
test exécute la méthode nommée selftest. En autres termes, si words liste la méthode, selftest, test fonctionnera:
 
ok  test /io-unit@f,e0200000/sbi@0,0
No selftest method for /io-unit@f,e0200000/sbi@0,0
ok test disk
 
Dans l'exemple ci-dessus, le périphérique /io-unit@f,e0200000/sbi@0,0 ne possède pas de méthode selftest; Alors test ne fonctionnera pas. Le périphérique disk possède une méthode; alors, test fonctionnera. Si selftest réussit, il ne produit rien.

test-all teste tous les périphériques dans le système:
 
ok test-all
Testing /memory@0,0

Testing /io-unit@f,e1200000/sbi@0,0/lebuffer@0,40000
Testing /io-unit@f,e1200000/sbi@0,0/lebuffer@0,40000/le@0,60000
Internal loopback test -- succeeded.
External loopback test -- succeeded.
Testing /io-unit@f,e1200000/sbi@0,0/dma@0,81000/esp@0,80000
Testing /io-unit@f,e0200000/sbi@0,0/qec@3,20000
Testing /io-unit@f,e0200000/sbi@0,0/lebuffer@1,40000
Testing /io-unit@f,e0200000/sbi@0,0/lebuffer@0,40000
Testing /io-unit@f,e0200000/sbi@0,0/qec@3,20000/qe@3,0
Internal loopback test -- succeeded.
Internal (including Mendec) loopback test -- succeeded.
Link state check --  failed, transceiver cable problem? or check the
hub.
Selftest failed. Return code = -1
 
watch-clock teste la fonction de l'horloge. Le système répond en incrémentant un nombre (commençant à zéro) par un à chaque seconde:
 
ok watch-clock
Watching the 'seconds' register of the real time clock chip.
It should be 'ticking' once a second.
Type any key to stop.
49
ok
 
watch-net surveille le trafique réseau. Il affiche un point (.) chaque fois qu'il reçoit un paquet sans erreur. Le test du loopback externe échouera si le système n'est pas connecté à l'Ethernet:
 
ok watch-net
Internal loopback test -- succeeded.
External loopback test -- succeeded.
Looking for Ethernet packets.
'.' is a good packet.  'X' is a bad packet.
Type any key to stop.
.................................................................
...................................
ok
 
show-bus affichera tous les périphériques SBus instalés et sondés:
 
ok show-sbus
Board# 0 SBus slot 0 lebuffer le dma esp
Board# 0 SBus slot 1 lebuffer le dma esp
Board# 0 SBus slot 2
Board# 0 SBus slot 3 qec qe qe qe qe
Board# 1 SBus slot 0 lebuffer le dma esp
Board# 1 SBus slot 1
Board# 1 SBus slot 2
Board# 1 SBus slot 3 SBUSDKHS
ok
 
Comment faire du débogage avec OpenBoot? haut
 
OpenBoot fourni des commandes "register-display", des commandes "breakpoint", un désassembleur, et des capacités de débogage symbolique. Cependant ils sont prévus pour assister au "bring-up" des périphériques. Ils ne sont pas d'usage général pour le grand public. Pour les systèmes d'exploitation et les applications de niveau de débogage, kadb est le choix préféré.

Les commandes de débogage d'OpenBoot affichent normalement l'adresse en hexadécimal. Cependant, si vous chargez le programme autonome à travers la commande dload (laquelle est une autre façon de procéder au chargement de programme dans OpenBoot), OpenBoot gardera l'information de table de symbole, et les adresses de mémoire sont montrées symboliquement autant que possible. Le système d'exploitation n'est habituellement pas chargé avec dload mais à travers un genre de démarreur (comme le ufsboot utilise avec boot); donc l'information de table de symbole inclus dans le fichier a.out du kernel n'est pas disponible à l'outil de débogage d'OpenBoot. Ce n'est pas d'une grande utilité pour la plupart des utilisateurs si l'information de table de symbole n'est pas disponible.

Voici quelques commandes pratiques si vous avez à déboger au niveau du OpenBoot (par exemple, si kadb n'a pas été démarré au temps du démarrage, et que le système plante):

.fregisters affiche les valeurs dans les registres %f0 à travers %f31:
 
ok .fregisters
     0        1        2        3        4        5        6        7
+0:        0        0 ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
+8: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
+16: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
+24: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
fsr:        0 fq:address:        0 fq:instruction:  81a00000
 
.registers affiche les valeurs dans les registres %g0 à travers %g7, plus %pc, %npc, %psr, %y, %wim, %tbr :
 
ok .registers
%g0      %g1      %g2      %g3      %g4      %g5      %g6      %g7
0 e00511f0 e3781ec0 e0069fb8      570        0        1 e3781ec0
PC      nPC        Y      PSR      WIM      TBR
ffd72210 ffd72214        0 40400ce6       10 e0040050
 
.locals affiche les valeurs dans %i, %L, et les registres %o. En terminologie SPARC , %i, %L, et %o sont des registres entré (input), local et sortie (output), respectivement:
 

ok .locals
0        1        2        3        4        5        6        7
IN:         2 ffd418a0        e e01a54e2  0        1 e379fdb0  e006ca04
LOC: 40800cc6       f0 e006c518       40  0 e0069fb8        7  ffffffc0
OUT: e0040050 ffeff000        0  1f00506  0      f00 e379fd50  ffd418ac

 
%f0 et etc. retournent la valeur du registre individuel respectivement. La valeur est poussée sur le "stack" du moniteur Forth. La commande . est utilisée pour attraper la valeur du "stack" et l'afficher:
 
ok %g1 .
e00511f0
ok %pc .
ffd72210
 
w configure la fenêtre active courrante pour afficher %i, %L, et les registres %o. En changeant la fenêtre courrante du registre, vous pouvez examiner l'ensemble des différents registres locaux. SPARC a le concept du "register sliding windows". Chaque fenêtre possède sa propre ensemble de registres locaux pour un contexte de commutation plus rapide. 1 w .locals avance une fenêtre et exécute .locals. :
 

ok 1 w .locals
IN:  2e0000       6e  2e0000        4  1       6e e379fe10  e004c878
LOC:     60 e00e48a0       f       10  1 e01b88c8        1  e01c4f10
OUT:      2 ffd418a0       e e01a54e2  0        1 e379fdb0  e006ca04

 
ctrace affiche le "stack" de retour montrant les fonctions de C:
 
ok ctrace
PC: ffd72210
Last leaf: call ffd721ec    from ffd418ac
0 w  %o0-%o5: ( e0040050 ffeff000        0  1f00506        0      f00 )

jmpl  ffd418a0    from e006ca04
1 w  %o0-%o5: (        2 ffd418a0 e01b8800        f        c        1 )

call e006c9a4    from e004c878
2 w  %o0-%o5: (   2e0000       63   2e0000 e01b88dc        c       63 )

call e004c764    from e004c748
3 w  %o0-%o5: (        0   740000       74        0 e01c497c e01c497c )

ok
 
dis commence le désassemblage à l'adresse donnée. +dis continu le désassemblage là ou le dernier désassemblage à été laissé. Dans l'exemple suivante, Le désassemblage commence au compteur du programme courrant. La commande %pc place la valeur courrante du compteur du programme sur le "stack" du moniteur Forth. dis attrape la valeur sur le dessus du "stack" et le prend comme argument:
 
ok %pc
ok dis
ffd72210     ta      %g0, 7f
ffd72214     wrtbr   %o0, 0
ffd72218     sethi   0, %g0
ffd7221c     sethi   0, %g0
ffd72220     sethi   0, %g0
ffd72224     jmp     %o7, 8, %g0
ffd72228     sethi   0, %g0
ok +dis
ffd7222c     call    ffd48ecc
ffd72230     sub     %g7, 4, %g7
ok
 
Comment faire un changement définitif dans les configuratons d'OpenBoot? haut
 
Une portion de la NVRAM appelée NVRAMRC est réservée pour emmagasiner les commandes définies par l'utilisateur et les "aliases" de périphériques. Les commandes définies par l'utilisateur sont écrites en Forth. Vous pouvez regarder celà comme les fichiers Unix rc dans lesquels les commandes sont exécutées durant le démarrage. Ces commandes sont emmagasinées dans un format texte ASCII. Presque toutes les commandes de moniteur Forth peuvent être employées. Les exceptions sont: banner, boot, go, nvedit, password, reset, et setenv security-mode. Voici quelques commandes pratiques pour opérer NVRAMRC:

ok nvalias alias chemin_du_périphérique

L'effet de nvalias est d'emmagasiner la commande "devalias alias chemin_du_périphérique" dans le NVRAMRC. Ou vous pouvez utiliser l'éditeur NVRAMRC nvedit pour directement modifier le buffer NVRAMRC. nvedit possède ses propres commandes de modification, un peu comme Emacs, ex: CTRL-P pour avancer un caractère et CTRL-B pour revenir en arrière. nvedit opère seulement sur un buffer temporaire. Pour faire un changement permanent au NVRAMRC, executez la commande nvstore après que vous ayez quitté nvedit. Pour tester le changement dans le buffer, essayez nvrun, lequel exécute le contenu du buffer temporaire. Aussi:

ok nvunalias alias

efface les "aliases" nommés du NVRAMRC.
 
À l'OpenBoot, puis-je monter un système de fichiers et accéder aux fichiers? haut
 
Non, en pratique vous ne pouvez pas. OpenBoot ne comprent ni le système de fichiers Solaris ni les fichiers. C'est un système vraiment primitif qui transige principalement avec les périphériques matériel et n'est pas d'objets haut niveau comme les systèmes de fichiers et fichiers.

Mais oui, théoriquement, vous pouvez. Vous pouvez écrire un programme Forth pour agir d'interface avec la méthode du périphérique comme un disque dur. Par exemple un disque dur aurait les méthodes pour lire et écrire les blocs du disque. Vous pouvez alors pointer la structure de données en relation avec les blocs du disque et localiser les fichiers individuels. Le processus entier n'est certainement pas signifiant.
 
Comment réinitialer/redémarrer le système? haut
 
Avec la commande "ok reset" (qui ne fonctionne pas sur tous les serveurs, notamment sur les serveurs comme les Sun Fire V240 et V440, etc.) ou encore "ok reset-all".

La commande reset réinitialise le système au complet et est similaire à un "power cycle". Elle initialise la mémoire à zéro. Si auto-boot? est configuré à true, le système d'exploitation va aussi redémarrer. Alternativement vous pouvez employer la commande sync pour redémarrer le système. sync synchronise tous les systèmes de fichiers monté et "flush" toutes les "dirty pages" du disques avant la réinitialisation:
 
ok sync
 
La commande sync revient au système d'exploitation qui synchronise alors (sync) tous les système de fichiers montés, et sauvegarde une image "core" du kernel. Vous pouvez appuyer L1-A ("Stop A" sur les claviers types 5 et 6, ou encore un "break signal" en mode terminal) pour arrêter le "core dump". Sync redémarre toujours automatiquement la machine à la fin.
 
(Source: sparchead - Références: 1)
 
 
Version imprimable
Ce site a été fièrement réalisé sous:
Venez nous voir au forum!

SunQuébec, c'est une plateforme de ressources et d'entraîde francophone. C'est aussi - et surtout - un forum de discussions!! Venez donc vous y inscrire et partager avec nous!
Les conditions actuelles:

Accueil Forum de discussions La plateforme Sun/SPARC Procédures et documentations Les galeries d'images
Copyright © 2011, SunQuebec (www.sunquebec.com), tous droits réservés.
Protégé par les lois du copyright des États-Unis et du Canada et par des traités internationaux.
SunQuebec