This is an archive of past FreeBSD releases; it's part of the FreeBSD Documentation Archive.

Les ``internes'' de FreeBSD

Chapitre 24. Les ``internes'' de FreeBSD

Table des matières
24.1. Le processus de démarrage
24.2. Utilisation de la mémoire du PC
24.3. L'accès direct à la mémoire - -DMA : Qu'est-ce que c'est et comment ça marche
24.4. La gestion de mémoire virtuelle de FreeBSD

Version française de Frédéric Haby .

24.1. Le processus de démarrage

Contribution de Poul-Henning Kamp . v1.1, 16 Avril 1995.

Le démarrage de FreeBSD est essentiellement un processus en trois étapes : charger le noyau, identifier le système de fichiers racine et initialiser utilisateur. Cela autorise d'intéressantes combinaisons décrites plus loin.

24.1.1. Charger un noyau

Nous disposons actuellement des trois mécanismes de base décrits ci-dessous pour charger un noyau : ils transmettent tous des informations au noyau afin de l'aider à décider de ce qu'il doit faire ensuite.

Biosboot

Biosboot est notre ``code de démarrage''. Il consiste en deux fichiers qui seront copiés sur les huit premiers kilo-octets de la disquette ou de la ``tranche'' - slice - du disque dur à partir de laquelle on démarrera.

Biosboot peut charger un noyau donné par son nom dans un système de fichiers FreeBSD.

Dosboot

Dosboot a été écrit par DI. Christian Gusenbauer, et c'est malheureusement actuellement l'un des quelques codes qui ne compilent pas sous FreeBSD, parce qu'il est écrit pour les compilateurs Microsoft.

Dosboot peut charger un noyau depuis un fichier MS-DOS ou un système de fichiers FreeBSD sur disque. Il essaye de négocier avec les divers et étranges gestionnires de mémoire qui hantent les adresses hautes des systèmes MS-DOS et les gagne en général à sa cause.

Netboot

Netboot recherche une carte Ethernet supportée et utilise BOOTP, TFTP et NFS pour trouver un noyau permettant de démarrer.

24.1.2. Identifier le système de fichiers racine

Dès que le noyau est chargé et que le code de démarrage lui passe la main, le noyau s'initialise, il essaie de déterminer quels sont les matériels installés, et ainsi de suite; il lui faut ensuite trouver le système de fichiers racine.

Nous reconnaissons actuellement les types suivants de systèmes de fichiers racine :

UFS

C'est le type de système de fichiers racine le plus habituel. Il peut être sur disquette ou sur disque dur.

MSDOS

Bien que ce soit techniquement possible, ce n'est pas particulièrement utile, du fait de l'impossibilité pour le système de fichiers FAT de gérer les liens, les fichiers spéciaux et autres particularités ``UNIX''.

MFS

Il s'agit en rélité d'un système de fichiers UFS intégré au noyau à la compilation de ce dernier. Cela signifie que le noyau n'a pas vraiment besoin de disque dur, disquette ou autre matériel pour s'exécuter.

CD9660

Cela permet d'utiliser un CD-ROM comme système de fichiers racine.

NFS

Cela permet d'utiliser un serveur de fichiers comme système de fichiers racine, essentiellement pour faire fonctionner une machine sans disque dur.

24.1.3. Initialiser l'environnement utilisateur

Pour que les programmes utilisateur puissent s'exécuter, le noyau, quand la phase d'initialisation est terminée, lance un processus de pid == 1 et exécute un programme du système de fichiers racine;, normalement /sbin/init.

Vous pouvez remplacer /sbin/init par n'importe quel programme, tant que vous vous rappelez que :

Il n'y a pas de stdin/out/err à moins que vous ne les ouvriez vous-même. Si vous sortez du programme, la machine panique. La gestion des signaux par le processus de pid == 1 est particulière à ce processus.

Le programme /stand/sysinstall de la disquette d'installation est un exemple d'``init'' adapté.

24.1.4. Combinaisons intéressantes

Démarrer un noyau contenant un système de fichiers MFS avec un programme /sbin/init particulier qui...

A -- En utilisant DOS
  • monte votre disque C: sous le répertoire /C:

  • attache le fichier spécial /dev/vn0 au fichier C:/freebsd.fs

  • monte /dev/vn0 sous /rootfs

  • crée les liens symboliques /rootfs/bin -> /bin, /rootfs/etc -> /etc, /rootfs/sbin -> /sbin (etc.)

Vous faites maintenant tourner FreeBSD sans avoir repartitionné votre disque dur...

B -- En utilisant NFS
  • monte avec NFS votre serveur:~vous/FreeBSD sur /nfs, redéfinit la racine comme /nfs - avec chroot(8) - et y exécute /sbin/init

Vous faites maintenant tourner FreeBSD sans disque dur, bien que vous n'ayez pas le contrôle du serveur NFS...

C -- Démarre un serveur X

Vous avez maintenant un terminal X, bien plus efficace que X sous Windows, tellement lent que vous pouvez- voir- tout- ce qu'il- fait, alors que votre patron assure que cela est toujours mieux que de dépenser encore de l'argent en matériel.

D -- En utilisant une bande
  • copie /dev/rwd0 sur un lecteur de bandes sur le réseau ou sur un serveur de fichiers.

Vous avez finalement la sauvegarde que vous auriez dû faire il y a un an déjà...

E -- Fonctionne comme coupe-feu / serveur Web / que sais-je encore...

C'est particulièrement intéressant parce que vous pouvez démarrer à partir d'une disquette protégée en écriture, et pouvez malgré tout écrire sur votre système de fichiers racine.

Ce document, ainsi que d'autres peut etre téléchargé a ftp.FreeBSD.org/pub/FreeBSD/doc/.

Pour toutes questions a propos de FreeBSD, lisez la documentation avant de contacter <questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez <doc@FreeBSD.org>.