Retourner au contenu. Retourner à la navigation

 

Module 1

by admin @ 23/02/2006

Chapitre 07 - Gestion des disques

1. Boot-loader


1.1 Qu'est ce que le boot-loader?

Le boot loader est un programme lancé juste après le chargement du Bios. Il permettra à l’utilisateur de choisir quel système d’exploitation il veut lancer. Dans le cas de linux, le boot loader permet aussi de choisir quel noyau l’utilisateur veut charger.

Il existe deux principaux bootloaders sous Linux qui sont Grub et Lilo. Il en existe d’autre, mais nous ne les verrons pas dans ce cours.

Le bootloader peut faciliter la réparation d'un système Linux dans certains cas (perte du mot de passe root, maintenance sur les systèmes de fichiers).

1.2 Démarrage

Que se passe-t'il entre le moment où l'on allume sa machine jusqu'au moment où l'on entre son login et mot de passe :

procedure de boot
  1. le BIOS effectue une série de tests sur le matériel (RAM, détection des disques, ...) nommé POST : Power On Self Test. C'est pendant cette étape que l'utilisateur peut appuyer sur une touche pour entrer dans le BIOS.

  2. le bootloader est chargé en mémoire, l'utilisateur peut alors choisir le système à démarrer

  3. le noyau linux est chargé en mémoire par le bootloader, il s'initialise, détecte les périphériques, ...

  4. le noyau passe alors la main au programme sysvinit, souvent dénommé init, père de tous les processus. En effet c'est ce programme ayant comme PID 1, qui va lancer tous les services au démarrage.

  5. init lance en dernier un terminal virtuel qui demande un login/password pour ouvrir un shell

Bootloader utilisé suivant les os


Windows

Linux

NTLDR

Lilo


Grub


2. Configuration de lilo et grub

2.1 Lilo

Lilo est le bootloader le plus connu sous linux car c’est l’un des plus vieux. Il ne peut pas être installé sur tous les systèmes de fichier, mais il est compatible avec les plus répandus : ext2, ext3, ...

Lilo est séparé en deux stages

  • le stage_1 est un petit programme (<= 512 octets) pouvant être placé dans le MBR (Master Boot Record) ou une disquette. Ce stage fait appel au second qui possède plus d'espace mémoire

  • le stage_2, appelée chargeur d'amorçage, est généralement placé sur le disque dur. Il offre un menu permettant la sélection des systèmes d'exploitations et de charger le noyau en RAM

Lilo est configuré grâce au fichier de configuration : /etc/lilo.conf

A chaque modification du fichier de configuration, la commande /sbin/lilo doit obligatoirement être exécutée pour mettre à jour le stage_1.

boot = /dev/hda		# Emplacement du stage_1, ici le MBR

default = Linux # Image à lancer par défaut (voir ci-dessous)
timeout = 100 # Temps en dixeme de secondes
# avant de booter sur l’image par défaut

prompt # Affiche la liste des images
message=/boot/message # Fichier contenant le texte qui sera affiché

password = secret # Le mot de passe en clair
restricted # Un mot de passe sera demande si l’utilisateur
# ajoute des options à une image

## Configuration pour linux

image=/boot/bzImage # Specifie l'emplacement du noyau
label=linux # Nom affiche dans le menu
initrd=/boot/initrd.img # Image ramdisk
read-only # Montera « / » en lecture seul
root=/dev/hda5 # partition où se trouve « / »

## Configuration pour non-Linux
other=/dev/hda1
label=windows

2.2 Grub

Grub (Gnu Grand Unified Bootloader) est un bootloader qui devient de plus en plus courant.

Comme lilo, grub fonctionne par stages.

En plus des 2 stages évoqués dans lilo, grub intègre un stage intermédiaire, le stage 1_5 qui permet de charger le stage 2 sur n'importe quel système de fichier.

Pour installer Grub il faut taper les commandes suivantes.

root@localhost # grub
grub> root (hd0,1) # partition où sont les fichiers
# de configuration de grub
grub> setup (hd0) # Emplacement du stage_1, ici le MBR
grub> quit

Comme lilo, grub possède un fichier de configuration : "/boot/grub/grub.conf"

timeout=30	# Temps d'attente en seconde avant le démarrage par défaut.
default=0 # Système par défaut, ici le premier de la liste.

splashimage=(hd0,1)/grub/splash.xpm.gz # image de fond

## Configuration pour Linux

title Linux # Nom qui apparaitra dans la liste
root (hd1,0) # Partition où sont les fichiers
# de configuration de grub

kernel /boot/vmlinuz-2.4.25 root=/dev/hdb2
# Emplacement de l’image suivit de la partion “/”
initrd /initrd.img # Image ramdisk

## Configuration pour Windows

title Windows
rootnoverify (hd0,0)
chainloader +1

3. Boot loader sur disquette

L'un des autres moyens de booter un système est de placer le boot loader sur disquette.

Ceci peut être très utile si on écrase le MBR, ou si une erreur dans un fichier de configuration empêche la machine de redémarrer.

3.1 Lilo

L'installation de lilo sur disquette se fait en changeant l’option "boot" du fichier de configuration.

boot=/dev/fd0

Puis on exécute la commande lilo pour copier le stage_1 sur une disquette.

3.2 Grub

Pour grub, pas besoin de modifier le fichier de configuration. On va simplement copier les deux stages sur deux disquettes.

Premièrement, formatez les deux disquettes

roto@localhost # fdformat /dev/fd0
root@localhost # mke2fs /dev/fd0

Copiez les deux stages sur deux disquettes différentes, sinon vous écraserez le premier.

root@localhost # dd if=/boot/grub/stage1 of=/dev/fd0 bs=512 count=1
root@localhost # dd if=/boot/grub/stage2 of=/dev/fd0 bs=512 count=1

Rendre la disquette contenant le stage 1 bootable

root@localhost # grub
grub> root(fd0)
grub> setup(fd0)
grub> quit

4. Gestion des disques

4.1 Les disques durs sous Linux

Comme vu précédemment, sous Linux tout est représenté par un fichier. Les disques durs n'échappent pas à cette règle. Par convention tous les périphériques sont représentés dans le dossier "/dev". On distingue deux types de disques : les IDE et les SCSI. Ils sont nommés respectivement "hd" et "sd" suivit d'une lettre et d'un chiffre. La lettre représente la position du disque sur le bus et le chiffre représente l'une des partition de ce disque.

Par exemple, le disque maître du premier contrôleur IDE sera nommé "/dev/hda". La seconde partition de ce disque sera "/dev/hda2".

4.2 Partitions

Un disque ne peut contenir que 4 partitions primaires. Mais il est possible de remplacer une partition primaire par une partition étendue. Cette partition étendue peut contenir maximum 12 partitions logiques. Notre disque pourra donc, au maximum, contenir 15 partitions utilisables soit 3 primaires plus les 12 partitions logiques.

Cette méthode est la plus utilisée, indépendemment du système d'exploitation. Il existe une autre méthode appelé LVM (Logic Volume Manager) mais elle ne sera pas abordée dans ce cours.

Sous Linux, contrairement à Windows, chaque partition n'est pas représentée sous forme de lecteur. Nous allons pouvoir monter, c'est à dire ajouter cet espace disponible à notre système de dossier hiérarchique.

Par exemple si notre machine fait office de serveur FTP, nous pourrons créer une partition dédiée qui sera montée dans "/var/ftp/". Ainsi le serveur FTP n'utilisera pas la place réservée aux utilisateurs ou aux fichiers de logs.

Il faudra aussi prévoir une partition réservée à la swap.

4.2.1 Partitionner un disque dur

Il existe plusieurs outils pour partitionner un disque dur sous linux. Les plus communs sont :

  • fdisk : utilitaire en mode texte avec menu interactif

  • cfdisk : utilitaire en mode curses (pseudo graphique) avec une liste des partitions.

Ces deux utilitaires se lancent de la même façon :

commande /dev/disk

Il est possible de modifier les partitions d'un disque dur en cours d'utilisation. Mais vous devrez redémarrer pour que les changements soient prises en compte.

Voici un exemple avec fdisk

Nous allons créer 1 partition primaire contenant la swap (512Mo) et une partition logique contenant "/" (5Go)

root@localhost # fdisk /dev/hda

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-2434, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-2434, default 2434): +512M

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 82
Changed system type of partition 1 to 82 (Linux swap)

Command (m for help): n
Command action
e extended
p primary partition (1-4)
e
Partition number (1-4): 2
First cylinder (64-2434, default 64):
Using default value 64
Last cylinder or +size or +sizeM or +sizeK (64-2434, default 2434):
Using default value 2434

Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (64-2434, default 64):
Using default value 64
Last cylinder or +size or +sizeM or +sizeK (64-2434, default 2434): +5000M

Command (m for help): p

Disk /dev/hda: 20.0 GB, 20020396032 bytes
255 heads, 63 sectors/track, 2434 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hda1 1 63 506016 82 Linux swap
/dev/hda2 64 2434 19045057+ 5 Extended
/dev/hda5 64 672 4891761 83 Linux

Command (m for help): w
Writing table partition

m

Aide

p

Affiche l'état du disque

n

Crée une nouvelle partition

d

Supprime une partition

t

Change le type de partition (82 : Linux Swap, 83 : Linux Native)

w

Sauver et quitter

q

Quitter sans sauver

4.2.2 Formater une partition

Une fois nos partitions créées, il faut les formater afin de pouvoir créer un système de fichier dessus.

Le système de fichier indique, entre autres, comment organiser les données sur le disque dur.

Dans la majorité des cas, nous utiliserons la commande mkfs. Certains systèmes de fichiers utilisent leur propre commande, nous les verrons ci-dessous.

Il existe deux moyens d'utiliser la commande mkfs :

mkfs -t type /dev/partition
mkfs.type /dev/partition

voici un tableau des systèmes de fichiers utilisables sous linux avec la commande à utiliser.


swap

mkswap

ext2

mke2fs, mkfs -t ext2, mkfs.ext2

ext3

mke2fs -j, mkfs -t ext3, mkfs.ext3

reiserfs

mkreiserfs

xfs

mkfs -t xfs, mkfs.xfs

jfs

mkfs -t jfs, mkfs.jfs

vfat

mkfs -t vfat, mkfs.vfat

4.3 Access aux périphériques de stockage

Une fois le disque dur partitionné et formaté, nous allons pouvoir l'utiliser. Comme dit précedemment, pour accéder à ce disque nous allons devoir le monter. Le terme monter signifie que nous allons ajoute un disque ou un partage réseau à notre arborescence.

Concrètement, nous allons définir un répertoire, appelé point de montage, qui va pointer vers la ressource voulue.

Par convention, les points de montage sont regroupés dans le dossier "/mnt".

4.3.1 commande mount / umount

La commande mount va permettre de monter un périphérique. Si l'on utilise la commande mount sans paramètres, on obtiendra la liste des périphériques déjà montés.

Syntaxe :

mount -t type /dev/partition /mnt/dir

L'option -t renseigne le système de fichier utilisé. On peut mettre auto pour que mount essaye de trouver le système de fichier lui-même.

Pour connaître tous les systèmes de fichier supportés par votre noyau, consultez le fichier "/proc/filesystems"

Il est possible de passer plus d'options grâce à l'argument -o (voir tableau ci-dessous)

La commande umount va, au contraire, démonter un périphérique.

Syntaxe :

umount /mnt/dir

4.3.2 fichier /etc/fstab

Ce fichier va nous être utile pour deux choses. Premièrement, on va pouvoir y entrer toutes les partitions à monter automatiquement au démarrage. Deuxièmement, faciliter l'utilisation de la commande mount, en entrant toutes les options à utiliser pour chaque périphérique.

Dans le ficher "/etc/fstab" chaque ligne représente un périphérique à monter. Chaque ligne est composée de six parties :

  • le chemin du périphérique

  • le point de montage

  • le système de fichier

  • les options (argument -o de mount)

  • dump : activer ou non la sauvegarde du disque avec l'utilitaire dump (1 ou 0)

  • fsck : activer ou non la vérification du système de fichier avec l'utilitaire fsck (0, 1, 2 ou 3)

Exemple de fichier /etc/fstab

/dev/hda1	none		swap	sw		0 0
/dev/hda5 / ext3 defaults 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,users,ro 0 0

Gr?ce à ce fichier, maintenant les deux commandes suivantes sont équivalentes.

mount -t iso9660 -o noauto,users,ro /dev/cdrom /mnt/cdrom
mount /mnt/cdrom

no/auto

Monte automatiquement le périphérique

defaults

Active rw, suid, exec, auto, nouser

no/exec

Autorise l'exécution de binaires

no/suid

Autorise l'utilisation du suid et guid

ro

Lecture seule

rw

Lecture écriture

nom d'utilisateur

Autorise un utilisateur à monter et démonter un périphérique

no/users

Autorise tous les utilisateurs à monter ou démonter un périphérique


Par admin Dernière modification 22/03/2007 15:52
Navigation
Actualités
23/06/2008 Opération du libre à Nantes !
23/06/2008 OpenSuse 11
18/06/2008 Firefox 3 !
09/06/2008 Linux Pratique Essentiel
08/06/2008 Ordinateurs vendus avec gNewSense
Plus d'actualités...
Articles
22/05/2008 Première approche de Qmail
19/05/2008 Test de la distribution Elive 1.0 Gem
14/05/2008 GNUPG introduction à la cryptographie et utilisation de GnuPG
21/02/2008 GNU / Screen
03/09/2007 The Linux File System Encryption API
More articles
Tips
28/04/2008 Mozilla Firefox : Google Talk et Facebook Chat
22/04/2008 Sed : Rechercher du texte entre deux chaines de caractères
04/04/2008 Gérer son(ses) écran(s) avec xrandr
26/03/2008 Tips sur l'historique de vos commandes
13/02/2008 Linux-Unix Cheat Sheets
More tips
Codes
09/04/2008 Chapitre 13 - Administration DNS et DHCP
09/04/2008 Chapitre 06 - Service web avec Apache
04/04/2008 Chapitre 09 - PureFTPd
04/04/2008 Chapitre 06 - Scripting Bash
01/04/2008 Chapitre 20 - Haute Disponibilité
More codes
Courses
13/09/2006 Module 3
23/02/2006 Module 2
23/02/2006 Module 1
More courses
Formation Linux

Supinfo Training Center has the first Linux Certification. The training is 13 days and allow you to pass the LPI 101 and 102.

more info
 
 
Vous êtes ici :
Cours Module 1 Chapitre 07 - Gestion des disques