bsd:bsb
Table des matières
Boot
Amorçage (celui qui attrape le noyau)
- la ROM1) de la machine charge puis exécute l’amorçage du système d'exploitation se trouvant sur disque dure, disquette, CD-ROM
- la ROM ne sachant rien du formatage du disque, l'amorce se trouvera en général au même endroit sur les 512 premiers octets du disque ou de la disquette
- si amorçage en bonne et due forme: boot sinon plantage
- l'amorce est capable de comprendre le partitionnement du disque ainsi que le système de fichiers des partitions, l'amorce sait donc ou trouver le noyau puis ensuite l'exécuter
- bien souvent l'amorce ou la ROM permet à l'utilisateur d’interrompre le démarrage automatique pour indiquer des options de démarrage particulières ou le nom et l'emplacement du noyau à charger, sur les trois BSD la page man boot (8) décrit les options disponibles
- si la ROM de la machine à une petite limite assez basse sur la taille de l’amorçage qu'elle peut charger et qu'il est impossible de mettre toute la taille de l’amorçage
- on utilisera alors deux amorces:
- un petite amorce primaire, que la ROM peut charger, contenant la position explicite sur le disque de l'amorce secondaire qui sera ensuite chargée
- l'amorce secondaire, plus volumineuse sera capable de trouver et charger le noyau2)
- sur certaines plateformes, la ROM est capable de comprendre le partitionnement d'un disque et de son système de fichiers, dans ce cas on peut démarrer directement le noyau sans amorce, cela pose l'inconvénient majeur de ne pas pouvoir s'écarter du partitionnement et du système de fichiers compris par la ROM
Démarrage du noyau
- le noyau est invoquer et procède à l'initialisation de la machine
- configuration du processeur pour le placer dans un mode adéquat pour la mémoire et choisir entre gros boutisme big endianness3) ou petit boutisme little endianness, blocages des interruptions …
- découverte du matériel
- chaque pilote4) présent dans le noyaux utilise une sonde pour contrôler la présence du matériel de la machine qu'il est capable de gérer
- lors de la découverte d'un périphérique qu'il connaît, le pilote l'initialise et le noyau enregistre l'association entre le périphérique et le pilote, ensuite on passe au suivant
- si un périphérique ne peut être sondé de manière fiable, ou si il est endommagé, plantage machine, cela concerne les PC à base de bus ISA
- pour éviter les plantages, certains UNIX7) permettent d'intervenir avant la phase de détection du matériel
- sur les BSD, ceci se fait en démarrant le noyau avec l'option -c
- sur NetBSD pour démarrer le noyau sur le premier disque dur SCSI8), il faut interrompre l’amorçage lorsqu'elle s’apprête à invoquer le noyau et demander un démarrage sur sd0:/netbsd -c
Attention: Sur certain BSD et surtout sur FreeBSD utilise une amorce tertiaire qui est /boot/loader, il est un maillon indispensable dans la chaîne de démarrage
Choix de la racine
- lorsque le noyau à détecter tout le matériel, il monte la racine9) du système de fichiers
- le noyau à besoin pour cela de deux informations (qui sont configurées lors de sa compilation)
- l'emplacement de cette racine
- le type de système de fichiers
- le noyau va essayer automatiquement les réglages par défaut indiqué lors de la compilation
- si cela ne fonctionne pas, certains noyaux plantent mais d'autres interrompent le démarrage automatique et s’enquièrent de ces renseignements sur la console, c'est le cas des systèmes BSD
- on peut aussi indique l'option de démarrage -a pour forcer le noyau à poser la question, cela s'indique par sd0:/netbsd -a
Attention:
- les noyaux UNIX sont incapables d'utiliser certains systèmes de fichiers pour la racine
Attention: pour les démarrages via le réseau, le noyau doit trouver
- son adresse IP
- il faut ensuite monter la racine
Attention: Pourquoi le noyau doit il retrouver une adresse IP via le DHCP alors que la ROM l'a déjà fait? Parce qu’il n’y a aucun mécanisme pour transmettre au noyau ces paramètres! Les paramètres sont purement oubliés lors du démarrage du noyau et il doit alors les redécouvrir.
Mode mono-utilisateur
- une fois la racine montée le noyau recherche le programme init pour l’exécuter
- init démarre tout les autres processus de la machine
- avant l'intervention de init, la machine est en mode mono-utilisateur appelé aussi le mode maintenance
- init procède à l'initialisation du système, d'une façon différente que l'on soit sur UNIX BSD ou System V15)
- une fois l'initialisation, le système passe en mode multi-utilisateurs qui est le mode de fonctionnement normal de la machine
- si init se passe mal
- init reste en mode mono-utilisateur
- init démarre un shell16) avec les droits root sur la console
- on peut configurer le système pour qu'il demande le mot de passe de root17) avant l'accès au shell mais on peut très facilement contourner cette disposition en indiquant au noyau d'utiliser /bin/sh comme programme d'initialisation, à la place de init
- on peut rester en mode mono-utilisateur volontairement en indiquant au noyau une option de démarrage -s
- exemple on oublier le mot de passe root
bsd/bsb.txt · Dernière modification : de 127.0.0.1
