Page suivante Page précédente Table des matières

1. Principes des périphériques "loopback" et des disques virtuels

Je vais d'abord décrire quelques-uns des principes généraux utilisés pour la mise en place d'un système de fichier en loopback comme racine.

1.1 Périphérique loopback

Sous Linux, un périphérique loopback est un périphérique virtuel, qui peut être utilisé comme tout autre périphérique.

Des exemples de périphériques normaux sont les partitions de disques durs comme /dev/hda1, /dev/hda2, /dev/sda1, ou des disques entiers comme les disquettes /dev/fd0, etc... Ce sont tous des périphériques qui peuvent contenir une structure de fichiers et de répertoires. Ils peuvent être formatés avec le système de fichier voulu (ext2fs, msdos, ntfs, etc...) puis montés.

Le périphérique loopback associe un fichier à un périphérique complet. Ce fichier peut appartenir à un autre système de fichiers.

Il peut alors être monté comme tout autre périphérique cité plus haut. Pour cela le périphérique appelé /dev/loop0 ou /dev/loop1 ou etc... est associé au fichier, puis ce nouveau périphérique virtuel est monté.

1.2 Les disques virtuels

Sous Linux, il est aussi possible d'avoir un autre type de périphérique virtuel monté en tant que système de fichiers, c'est le disque virtuel (ramdisk).

Dans ce cas, le périphérique ne se réfère pas à un élément du matériel, mais à une portion de la mémoire qui est mise de côté dans ce but. La mémoire allouée ainsi n'est jamais swapée sur le disque, mais reste dans le cache disque.

Un disque virtuel peut être créé à tout moment en écrivant dans le périphérique correspondant /dev/ram0 ou /dev/ram1, etc... Il peut alors être formaté et monté de la même façon que le périphérique loopback.

Quand un disque virtuel est utilisé pour l'amorçage (comme c'est souvent le cas avec les disquettes d'installation de Linux et les disquettes d'urgence), l'image du disque (le contenu complet du disque sous forme d'un seul fichier) peut être stocké sur la disquette de démarrage sous une forme compressée. L'image est automatiquement détectée par le noyau quand celui-ci démarre et décompressée dans le disque virtuel avant d'être montée.

1.3 Le disque virtuel initial

Le disque virtuel initial est, sous Linux, un autre mécanisme important dont nous aurons besoin pour utiliser le périphérique loopback comme système de fichier racine.

Quand le disque virtuel initial est utilisé, l'image du système de fichiers est copiée dans la mémoire et montée pour que les fichiers soient accessibles. Un programme sur ce disque virtuel (appelé linuxrc) est lancé. Une fois terminé un nouveau périphérique est monté comme système de fichiers racine. Le disque virtuel précédent existe toujours, il est monté sur le répertoire /initrd si celui-ci est présent, ou accessible à travers le périphérique /dev/initrd.

C'est un comportement peu habituel, puisque la séquence de démarrage normale se lance depuis la partition racine choisie et continue à tourner ainsi. Avec l'option de disque virtuel initial, la partition racine a la possibilité de changer avant que ne commence la séquence de démarrage principale.

1.4 Le système de fichiers racine

Le système de fichiers racine est le périphérique qui est monté en premier, et qui apparaît donc dans le répertoire appelé / après le démarrage.

Il y a un certain nombre de complications a propos du système de fichiers racine, qui sont dues au fait qu'il contient tous les fichiers. Au boot, les scripts rc sont lancés ; ce sont soit les fichiers dans /etc/rc.d ou /etc/rc?.d, suivant la version du programme /etc/init.

Quand le système a démarré, il n'est plus possible de démonter la partition racine ou d'en changer car tout les programmes l'utiliseront plus ou moins. C'est pourquoi le disque virtuel initial est si utile, puisqu'il peut être utilisé de façon telle que la partition racine finale n'est pas la même que celle qui est chargée au moment de l'amorçage.

1.5 La séquence d'amorçage de Linux

Pour montrer comment le disque virtuel initial opère pendant la séquence de démarrage, l'ordre des événements est présenté ci dessous.

  1. Le noyau est chargé en mémoire, ceci est effectué par LILO ou LOADLIN. Vous pouvez voir le message Loading... pendant que ceci arrive.
  2. L'image du disque virtuel est chargée en mémoire, à nouveau ceci est réalisé par LILO ou LOADLIN. Vous pouvez voir le message Loading... à nouveau quand ceci arrive.
  3. Le noyau est initialisé, y compris la lecture des options de ligne de commande et le montage du disque virtuel en tant que racine.
  4. Le programme /linuxrc est lancé sur le disque virtuel initial.
  5. Le périphérique racine est changé pour celui spécifié dans les paramètres du noyau.
  6. Le programme /etc/init est lancé, et va exécuter la séquence de démarrage paramétrable par l'utilisateur.

Ceci est juste une version simplifiée de ce qui arrive, mais c'est suffisant pour expliquer comment le noyau démarre et où le disque virtuel est utilisé.


Page suivante Page précédente Table des matières