FUNIX

Mettez un manchot dans votre PC



Séquence de boot

[ Séquence de bootle chargeur primaire PDCle chargeur secondaire  |  une fois le noyau chargéle script /sbin/rc ]

Initialisation et démarrage



Séquence de boot

Le système peut (re)démarrer par trois moyens : un reset (uniquement sur certaines machines), un transfert de contrôle (TC), une mise sous tension. Le démarrage passe par deux étapes:

  • séquence de démarrage contenue sur la ROM de boot (Processor Dependent Code),
  • séquence de démarrage du noyau HP-UX contenu sur le disque de boot.

Quand le système est allumé, le programme de boot initialise et teste le matériel pour que tout soit prêt avant le chargement du noyau du système d'exploitation.

Le transfert de control est le bouton qui est placé pas très loin du bouton ON/OFF des stations HP715, vous avez tout intérêt à le dissimuler car vous tomberez à coup sûr sur un utilisateur un peu curieux qui se demandera ce que ça fait quand on appuie dessus...

Le TC est un reset "soft", il n'efface pas les données qui sont dans la RAM, elles pourront être exploitées pour diagnostiquer d'où vient le problème.

Après que le petit programme contenu en PROM aie trouvé et testé le matériel, il va chercher un périphérique bootable. Sur ce dernier il va trouver l'Initial System Loader (ISL), qu'il va charger en mémoire. L'ISL va appeler à son tour le chargeur secondaire hpux. hpux va chercher alors le noyau /stand/vmunix et le charger pour lancer le système.

[Retour haut de la page]

Le chargeur primaire PDC

Vous pouvez interrompre le processus de boot de la station de travail, peu après la mise sous tension, quand l'écran de boot apparaît (bannière HP) appuyez sur la touche ESC. Vous pouvez relacher la touche dès que vous avez une crampe ou que le prompt BOOT_ADMIN apparaît.

Le menu qui s'affiche alors depend de la version du PDC que vous possédez, vous pourriez voir un menu du genre:

Command Description
Auto [boot|search] [on|off] Display or set auto flag
Boot [pri|alt|scsi.addr] [isl] Boot from primary, alternate or SCSI
Boot lan[.lan_addr] [install] [isl] Boot from LAN
Chassis [on|off] Enable chassis mode
Diagnostic [on|off] Enable/Disable diagnostic boot mode
Fastboot [on|off] Display or set fast boot flag
Help Display the command menu
Information Display system information
LanAddress Display LAN station addresses
Monitor [type] Select monitor type
Path [pri|alt] [lan.id|SCSI.addr] Change boot path
Pim [hpmc|toc|lpmc] Display PIM info
Search [ipl] [scsi|lan [install]] Display potential boot devices
Secure [on|off] Display or set security mode

Pour chercher des périphériques bootables tapez:

BOOT_ADMIN>search

Le système vous affichera alors la liste des périphériques bootables, ça peut être intéressant si vous voulez pas booter sur votre disque système et booter ailleurs (réseau, CDROM voire DAT).

Pour booter sur le périphérique SCSI d'adresse 4, vous devrez tapez:

BOOT_ADMIN>boot scsi.1.0

Ne pas oubliez que vous tapez comme si vous aviez un clavier qwerty. A partir de ce menu vous pouvez changer le chemin par défaut de boot (boot primary path), et le chemin secondaire en cas de défaillance du premier.

A noter qu'en mettant l'option Secure à off, vous interdisez quiconque d'interrompre le processus de boot et de parvenir au menu du PDC. Vous disposez de deux moyens pour désactiver cette option:

  • branchez deux périphériques SCSI avec la même adresse,
  • faites en sorte qu'il n'y ait aucun périphérique bootable.

Le système vous redonnera alors la main, vous retrouverez le menu et pourrez remettre Secure à on.


[Retour haut de la page]

Le chargeur secondaire

hpux est le chargeur secondaire, il est généralement appelé de manière non interactive par l'ISL qui se trouve sur le disque système bootable.

Vous pouvez utiliser hpux de manière interactive, au niveau du menu PDC si le disque à l'adresse 6 est votre disque système, tapez:

BOOT_ADMIN>boot scsi.6.0 isl

Vous pouvez taper isl ou ipl, le résultat est le même. l'ISL se charge et le prompt change.

ISL>hpux

Chargement du noyau par défaut /stand/vmunix

ISL>hpux -is

Hyper intéressant, avec cette option vous démarrez en mode simple utilisateur en étant root sans avoir à donné le mot de passe. En d'autres termes en interrompant le processus de boot par ESC, en appelant l'ISL sur votre disque système, en appelant hpux avec les options qui vont bien vous vous retrouvez root sur un système sans connaître le mot de passe.

ISL>hpux /stand/vmunix.prev

Charge le noyau de sauvegarde, utile si vous venez de regénérer un noyau foireux...

ISL>hpux ll /stand

Si vous avez oublié le nom du noyau, un petit ll.

ISL>hpux -lm

Mode maintenance pour des disques LVM en vrac.


[Retour haut de la page]

Une fois le noyau chargé

Une fois lancé le noyau /stand/vmunix cherche et configure les différents périphériques, trouve le filesystem root, démarre un shell et lance /sbin/pre_init_rc, c'est ce script qui lance (éventuellement) un fsck sur le disque système, et lance le premier process init. C'est un script non modifiable.

Le process init lit le fichier /etc/inittab qui définit l'environnement de travail et l'état de marche. A tout moment HP-UX est dans un état de marche particulier. Par défaut le système se trouve dans l'état de marche définit par la ligne:

init:4:initdefault

L'état de marche par défaut est 4. Il existe les états de marche suivant nommés: 0, 1, 2, 3, 4, 5, 6, s et S. L'état de marche 0 par exemple correspond au shutdown, l'état de marche s correspond au mode simple utilisateur pour des tâches d'administration système, l'état de marche 4 correspond au mode normal avec CDE.

Vous pouvez lors d'une utilisation normale changer d'état de marche avec la commande init. En état de marche 4, pour passer à l'état de marche 3, faites init3.

Le process init lance alors ioinitrc qui comme son nom l'indique scrute le système pour découvrir des nouveaux périphériques et installer les fichiers spéciaux correspondant. Il lance alors /sbin/bcheckrc et /sbin/rc.

[Retour haut de la page]

Le script /sbin/rc

Le script /sbin/rc permet de lancer les processus qui doivent l'être suivant l'état de marche choisi. Il est exécuté à chaque fois qu'un nouvel état de marche est appelé.

Mais d'abord jettons un coup d'oeil sur l'arborescence, on prendra comme exemple le process cron qui est lancé au passage de l'état 1 à 2, et qui doit disparaître au passage de l'état 2 à 1.

/ etc rc.config  
rc.config.d cron
sbin rc2.d S700cron
rc1.d K012cron
init.d cron

les fichiers de configuration sont sous /etc/rc.config.d en fait dans ces scripts on ne fait que positionner des variables que /sbin/rc va évaluer. On aurait pour le script de configuration de cron, un fichier du genre:

#cron config
#
#set CRON=1 to start
#
CRON=1

Sous /sbin/init.d vous allez trouver les scripts exécutables de lancement des process. Pour /sbin/init.d/cron, en voici un exemple simplifié:

#cron startup
#
case $1 in
'start')
  if [$CRON -eq 1]
  then /usr/sbin/cron
  fi
'stop')
  kill 'ps -ef|grep cron|cut -c10 -c14
esac

/sbin/init.d/cron est appelé avec l'argument start pour lancer le processus cron, à la condition que la variable CRON définie dans le fichier de configuration /etc/rc.config.d/cron soit correctement positionné, et stop pour le tuer

Maintenant comment les scripts de lancement sous /sbin/init.d et plus particulièrement /sbin/init.d/cron sont ils lancés ?

Vous voulez que cron soit lancé à l'état de marche 2 et tuer à l'état de marche 1. Vous allez donc créer un lien symbolique (ln -s) de /sbin/init.d/cron sous le répertoire /sbin/rc2.d avec comme nom S700cron. Un autre lien sera crée de /sbin/init.d/cron sous le répertoire /sbin/rc1.d avec comme nom K012cron.

Quand vous allumez le système, /sbin/rc va le script /etc/rc.config qui va lire tous les fichiers de configuration sous /etc/rc.config.d et positionner les variables d'environnement des différents processus. Lors de cette étape CRON est fixé à 1. Le système va alors à un moment passer de l'état 1 à 2, il va exécuter tous les fichiers de lancement (qui sont en fait des liens) qui sont sous /sbin/rc2.d et qui commencent par S (S pour Start, le numéro correspond à l'ordre de lancement). Pour cron il va trouver le lien S700cron vers le fichier /sbin/init.d/cron, /sbin/rc va donc exécuter /sbin/rc2.d/S700cron start qui aura pour effet de lancer cron puisque CRON est à 1.

Quand vous éteignez le système, /sbin/rc va à un moment passer de l'état 2 à 1, il va exécuter tous les fichiers (qui sont de liens) qui sont sous /sbin/rc1.d et qui commencent par K (K pour kill, le numéro correspond à l'ordre d'exécution). Pour cron il va trouver le lien K012cron vers le fichier /sbin/init.d/cron, /sbin/rc va donc exécuter /sbin/rc1.d/cron stop qui va tuer le process cron.

Nota: - Le script /sbin/init.d/cron et ses équivalents sont un peu plus "sioux" en fait, c'est dans ces scripts qu'on définit le message qui s'affichera au boot lors de la lecture du script.

- Si vous venez d'installer un process, samba par exemple, vous pouvez lancer d'un shell, en tant que root bien sûr /sbin/init.d/samba start pour le lancer et /sbin/init.d/samba stop pour le tuer, c'est parfois utile quand on a modifié les fichiers de configuration et qu'on veut obliger le process à relire son fichier de config.

- Les fichiers sous /sbin/init.d ne sont normalement pas à modifier.

- Il existe /sbin/init.d un fichier template qui vous permet de développer vos propres scripts de démarrage pour lancer vos process.


[Retour page d'accueil FUNIX]
[Retour haut de la page]