Page suivante Page précédente Table des matières | GRUB-HOWTO: Accéder aux fichiers par le GRUB |
Le gestionnaire d'amorçage doit charger en mémoire des données, appliquer à ces données certaines modifications (certaines données sont particulières puisqu'elles forment un noyau ou un autre amorceur qui doit être finalement exécuté). Bref : le GRUB doit pouvoir accéder à des champs de caractères placés quelque part : localement sur des périphériques, ou téléchargeables.
En gros, ces données sont réparties sur des champs de données (les disques par exemple), dans ces champs de données éventuellement dans des subdivisions (les partitions), auxquelles on doit pouvoir accéder soit en indiquant la liste des blocs à lire, soit, si le champ de données est équipé d'informations (un système de fichiers), en fournissant le nom de cet ensemble de blocs dans le système de fichiers.
La désignation d'un ensemble de données sera donc composée de la désignation du périphérique de stockage(le disque par exemple), de la partition dans le disque, et du nom de fichier dans le système de fichiers si ce système existe, ou de la liste des blocs.
Le GRUB, en tant que gestionnaire d'amorçage, dispose de moyens plus
limités qu'un OS complet. Il s'appuie essentiellement sur les interruptions
du BIOS (pour le moment celui des PC). Par conséquent, pour le GRUB, il
n'existe pas de différence entre des disques IDE ou SCSI, ils seront tous
appelés de la même façon : hdN
où N est un entier. Le premier disque
trouvé est désigné par hd
0, le deuxième par hd1
, etc... A donc
retenir que la numérotation est "à la C", démarrant de 0.
Plus précisément, pour désigner une unité de données (disque ou partition),
on place son nom entre parenthèses. (hd0)
signifie donc que l'on
désigne non pas une commande mais un périphérique (la distinction se fait
par les parenthèses), et que cette unité est le premier disque dur
--- hd0
.
Une disquette sera désignée par le préfixe fd, avec le même système de numérotation : (fd0) désigne donc la première unité de disquette.
Enfin, un périphérique spécial, (nd), existe lorsque le réseau a été initialisé (il s'agit du network device).
Les unités physiques sont partitionnées, dès lors qu'il y a la place pour stocker cette information (ce n'est pas le cas des disquettes). Pour désigner une partition sur une unité physique, on fait suivre la désignation de l'unité physique par une virgule et l'identifiant de la partition.
Ainsi hd0,0
désigne la première partition sur le premier disque dur.
Dans le cas de partitions BSD, on désignera par (hd1,a) la partition `a' du
deuxième disque dur, et par (hd1,1,a) le deuxième slice de la partition `a'
du deuxième disque dur.
A noter que l'écriture (hd0)
est tout à fait légitime : dans ce cas on
désigne le périphérique (disque) dans son intégralité. Cette notation est
utile pour accéder, par exemple, au MBR : le MBR n'appartient à aucune
partition. De même, dans le cas d'une disquette qui n'est pas partionnable
(en fait l'intégralité de la disquette se confond avec une partition), on
utilisera également la syntaxe (fd0)
.
Dès lors que le périphérique est désigné, si le système de fichiers est supporté, vous y avez accès en appelant les fichiers par leur nom (ce qui est quand même plus chaleureux). Ainsi :
(hd2,4)/vmlinuz
va désigner le fichier vmlinuz situé à la racine du système de fichiers existant sur la 5ème partition (première partition logique) du troisième disque dur.
ATTENTION ! Les systèmes de fichiers ne sont pas montés. Donc, si dans
votre fstab
cette partition était d'habitude montée sous boot
, le
nom n'est pas /boot/wmlinuz
: la racine pour ce système de
fichiers est... la racine, pas le point de montage hypothétique.
Comme évoqué dans l'introduction, l'une des caractéristiques du GRUB est de pouvoir accéder à un fichier en utilisant le système de fichiers. Mais il est également possible de désigner cet ensemble de données en syntaxe "bas niveau", c'est-à-dire en explicitant les blocs le composant.
La commande blocklist
sert à visualiser cette liste de blocs :
grub> blocklist (hd1,0)/vmlinuz (hd1,0)1322144+96,1322248+1227
qui signifie que le fichier vmlinuz, situé sur la première partition du deuxième disque, occupe 96 blocs en commençant du bloc 1322144, et 1227 blocs en commençant du bloc 1322248. Dans ce cas il est visible que le fichier est ---peu--- fragmenté.
A quoi cela sert-il ? Entre autres à accéder à des blocs de données qui ne
font pas partie de fichiers. Typiquement le MBR ou les secteurs d'amorçage.
Par exemple, si Windows est installé sur la deuxième partition primaire du
premier disque, la syntaxe (hd0,1)+1
désigne le premier bloc de cette
partition, qui renferme l'amorceur de Windows.
Plutôt que d'avoir à re-désigner, à chaque commande, le périphérique, autant
signifier au GRUB le périphérique par défaut. Nous retrouvons la commande
root
:
root (hd0,0)
qui stipule donc que le système de fichiers par défaut est celui existant sur la première partition du premier disque dur dans notre exemple.
A noter que le complétement permet de visualiser à la demande les
périphériques disponibles en invoquant `root (
' et en appuyant sur TAB.
Puis, en entrant `root (hd2,
' et en appuyant sur TAB vous obtenez la
liste des partitions et du type de système de fichiers présents sur le
troisième disque dur.
Page suivante Page précédente Table des matières |