Jump to content

[Tuto][Initié] Bootloaders


Recommended Posts

Sommaire

:mad2:Qu'est-ce qu'un bootloader?

:mad2:lilo, grub, lequel est le mieux?

:arrow:grub

  • installation
  • les bases
  • configuration standard
  • utiliser un initrd
  • booter windows
  • mettre une image de fond

:arrow:lilo

  • installation
  • les bases
  • configuration standard
  • utiliser un initrd
  • booter windows
  • mettre une image de fond

:arrow:trucs et astuces

Link to comment
Share on other sites

  • Replies 77
  • Created
  • Last Reply

:mad2:Qu'est-ce qu'un bootloader?

Un bootloader est un exécutable qui se trouve sur les premiers secteurs du disque dur et qui permet de choisir un système sur lequel booter.

Pour linux, cela permet aussi de spécifier le noyau à utiliser et les différents paramètres à utiliser.

:mad2:lilo, grub, lequel est le mieux?

lilo et grub permettent tous les deux à peut près la même chose... pour une utilisation courante, il ne va pas y avoir de grande différence.

Mais dès que l'on commence à "bidouiller", lilo sera vite embètant...

En effet, tout d'abord, après chaque modification du fichier de configuration, il va falloir lancer "lilo" dans la console afin d'appliquer les modifications.

C'est aussi vrai dès qu'un fichier est modifié (noyau remplacé, par exemple).

Au contraire de grub, lilo ne sais pas lire les partitions (ext2/3+reiserfs au moins pour grub), il stocke tout simplement l'adresse et la taille du noyau à charger sans se poser de question (ce qui peut même poser des problèmes dans certains cas)

Enfin, lilo ne dispose pas de console de récupération, ce qui peut se révéler très ennuyeux dans certains cas.

(exemple : passage d'un écran 1280x1024 à un 800x600 alors que vga=794 est dans les options de démarrage...il faudra alors trouver un live-CD et faire un "chroot" avec lilo, alors que cela est très simple sous grub)

Il est vrai que lilo permet à priori quelquefois des choses que grub ne fait pas, mais cela est très rare.

Ceci étant dit, comme le système est GNU/Linux, chacun peut choisir ce qui lui plaît le plus...

Link to comment
Share on other sites

:mad2:grub : installation

Il y a deux méthodes pour installer grub : soit en utilisant la commande grub-install

 $ grub-install --root-directory=/boot /dev/hdX

(avec /dev/hdX votre partition /boot)

soit en utilisant le shell grub :

 $ grub
grub> root (hdX,Y)
grub> setup (hdX)
grub> quit

avec (hdX,Y) la partition /boot et (hdX) le disque.

Note: la numérotation des disques est différente de la numérotation Linux, voir le chapitre suivant.

:mad2:grub : les bases

Le fichier de configuration de grub est /boot/grub/grub.conf (pour des raisons de compatibilités, un lien symbolique est créé vers /boot/grub/menu.lst)

Il y a une bonne raison pour laquelle ce fichier se trouve dans /boot : c'est que en général, /boot est un répertoire qui sera accessible à grub, donc celui-ci pourra y accéder. Si il ne trouve pas de fichier de configuration, grub fonctionne toujours! Mais en mode console.

Les disques ne sont pas reconnus de la même façon que sous Linux, que ce soit au niveau de la syntaxe que de l'ordre.

La sytaxe est la suivante : un disque est représenté par (hdX), avec X un numéro. Une partition est représentée par (hdX,Y) avec X le numéro du disque et Y le numéro de la partition.

Pour l'ordre, (hd0) est le disque de boot, et les autres disques sont ensuite numérotés les un après les autres.

Je vais parler du mode console, qui est très pratique en cas de problème, que le fichier de configration soit inaccessible ou non.

Pour accéder à ce mode, il suffit de presser "c" au menu de choix. On se retrouve alors avec un "shell" grub :

"grub>"

Il est possible d'utiliser de nombreuses commandes, notamment pour pouvoir booter.

La syntaxe est exactement celle du fichier de configuration...et il reste toujours la commande "help" et "help <commande>"

Il y a également la completion automatique, qui s'avère aussi pratique que sous bash, et permet aussi de compléter les disques... avec affichage des types de partition :

voici un exemple de démarrage en mode "grub shell"

(<TAB> représente l'appui sur la touche "tab")

grub> root (hd<TAB>
Possible disks are:  hd0 hd1 hd2

grub> root (hd1,<TAB>
Possible partitions are:
  Partition num: 0,  Filesystem type is fat, partition type 0xb
  Partition num: 1,  Filesystem type is ext2fs, partition type 0x83
  Partition num: 2,  Filesystem type unknown, partition type 0x83
  Partition num: 4,  Filesystem type unknown, partition type 0x82
  Partition num: 5,  Filesystem type is ext2fs, partition type 0x83
  Partition num: 6,  Filesystem type is fat, partition type 0xb

grub> root (hd1,1)
Filesystem type is ext2fs, partition type 0x83

grub> kernel /boot/<TAB>
Possible files are: initrd-2.6.8-ck4 kernel-2.6.8-ck4 grub

grub> kernel /boot/ker<TAB>
-> grub> kernel /boot/kernel-2.6.8-ck4

grub> kernel /boot/kernel-2.6.8-ck4 root=/dev/sda3 vga=794
  [Linux-bzImage, setup=0x1200, size=0x286b59]
grub> boot

Il y a ensuite la fonction "édition", qui est utile, par exemple si le disque a changé de place (passage de /dev/hda à /dev/hdc par exemple) ou bien si les options doivent être changées (changement vers un écran plus petit par exemple)

Il suffit de sélectionner l'entrée à modifier, puis d'appuyer sur "e".

Il y a ensuite la liste des options du fichier de configuration qui s'affiche...

On sélectionne par exemple la ligne "kernel" pour la modifier... puis on appuie sur "entrée" pour valider et enfin "b" pour booter...

Link to comment
Share on other sites

:mad2:grub : configuration standard

comme je le disait, le fichier de configuration de grub est /boot/grub/grub.conf, et voici un extrait d'un fichier standard :

timeout 10

title linux

root (hd0,1)

kernel /boot/kernel-2.6.8 root=/dev/hda1 vga=794

-la première ligne : "timeout 10" donne le temps en secondes pendant lequel grub va ettendre avant de démarrer le premier choix (on peut spécifier un choix par défaut avec "default" suivi du numéro de l'entrée : "default 1")

-ensuite, il y a le titre du choix... il vaut mieux éviter de mettre des caractères farfelus, et si il y en a, mettre des guillemets (par exemple, je crois que les . ne passent pas sans guillemets)

-la commande "root" permet de choisir la partition qui sera utilisée, non pas comme "root" pour linux, mais pour grub, afin de choisir ensuite le noyau.

Cette commande est facultative, en effet, il est possible de spécifier la partition avec la commande "kernel", mais cette manière de faire est, je pense, plus simple pour rajouter des choses ensuite, ou pour modifier le fichier de conf.

-la commande "kernel" permet de choisir le noyau à utiliser, si l'on a exécuté "root" avant, on peut directement taper le chemin du noyau ("kernel /boot/kernel..."), sinon, il faut spécifier la partition à utiliser ("kernel (hd0,1)/boot/kernel...")

Les options du noyau sont mises sur la ligne "kernel", comme l'option "root" qui va dire au noyau quelle partition utiliser pour démarrer, ou bien "vga" et bien d'autres...

:mad2:grub : utiliser un initrd

Vous savez sûrement après avoir lu le "topic noyau" à quoi sert un initrd, donc si vous en avez l'utilité, voici comment l'utiliser (avec en plus le vga pour changer la résolution):

timeout 10

title gentoo268-ck4

root (hd0,1)

kernel /boot/kernel-2.6.8 root=/dev/ram real_root=/dev/hda1 init=/linuxrc vga=794

initrd /boot/initrd-2.6.8

[...]

le ligne "initrd" permet de choisir l'initrd à utiliser, et s'utilise comme "kernel"...

les options du noyau sont à modifier pour utiliser l'inird... ces paramètres peuvent dépendre de l'initrd mais devraient être ceux-ci.

Link to comment
Share on other sites

:mad2:grub : booter windows

si windows est sur le même disque que grub, c'est tout simple :

[...]

title Windows

rootnoverify (hd0,1)

makeactive

chainloader +1

c'est la ligne "rootnoverify" qui choisit où se trouve windows (ou n'importe quel OS avec bootloader intégré et type de partition inconnue), il faut bien sûr modifier pour que cela corresponde à votre système :arrow:

Maintenant, si windows ne se trouve pas sur le disque où est grub, il va falloir "ruser"

En effet, windows demande d'être sur le disque de boot, sinon il refuse de démarrer.

[...]

title Windows

map (hd0) (hd1)

map (hd1) (hd0)

rootnoverify (hd1,0)

makeactive

chainloader +1

:mad2:grub : mettre une image de fond

pour mettre une image de fond, il faut rajouter une ligne au fichier de config :

splashimage=(hd0,0)/grub/splash.xpm.gz

(modifier en fonction de la partition ...)

Même si cela n'est pas une obligation, il est préférable de mettre l'image sur /boot

L'image est au format "xpm" (reconnu par The Gimp notamment) d'une taille de 640x480, 16 couleurs, compressée avec gzip.

Link to comment
Share on other sites

:mad2:lilo : installation

Pour installer lilo, il faut juste remplir le fichier de config et exécuter la commande "lilo" ou "/sbin/lilo".

Néammoins, il est possible de le désinstaller en exécutant "lilo -U"

:mad2:lilo : les bases

Le fichier de configuration de lilo est /etc/lilo.conf

A chaque modification du fichier de conf ou de n'importe quel fichier associé (noyaux, initrd, images), il faut réexécuter "lilo".

lilo possède lui aussi une manière de passer au noyau des option : il y a pour cela une invite "boot" en bas de l'écran quand lilo démarre.

il faut mettre le nom qui apparait dans la liste, suivi des options.

Link to comment
Share on other sites

:mad2:lilo : configuration standard

Voici donc un fichier de configuration simple :

boot=/dev/hda

timeout=100

prompt

image=/boot/kernel-2.6.8

label=linux

root=/dev/hda2

read-only

la ligne "boot" représente où lilo sera installé

"timeout" donne le temps avant de choisir l'entrée par défaut (en dixièmes de secondes)

(il faut marqer "default=" pour choisir l'entrée par défaut)

"prompt" signifie que la liste des noyaux sera affichée (pour pouvoir choisir

ensuite,

"image" désigne le noyau à utiliser

"label" désigne le nom qu'aura le noyau

"root=" désigne la partition qu'utilisera le noyau pour booter

(une fois le fichier de configuration modifié, pensez à relancer "lilo")

:mad2:lilo : utiliser un initrd

Voici un fichier de configuration avec un initrd (avec l'option vga):

boot=/dev/hda

prompt

vga=794

image=/boot/kernel-2.6.8

label=linux

root=/dev/ram0

append="init=/linuxrc ramdisk=8192 real_root=/dev/hda3"

initrd=/boot/initrd-2.6.8

read-only

Link to comment
Share on other sites

:mad2:lilo : booter windows

pour booter windows, il faut rajouter une ligne dans le lilo.conf :

other=/dev/hda2]

  label=windows

:mad2:lilo : mettre une image de fond

L'image doit être en 640x480, sous Gimp, mettre Image->Mode->Indexed, 16 Couleurs.

et rajouter "bitmap=<IMAGE>" avec <IMAGE> le chemin complet dans le fichier de conf

Link to comment
Share on other sites

:mad2:trucs et astuces

  • Déjà, essyez de ne jamais supprimer une entrée qui marche du bootloader (à moins d'en avoir plusieurs), cela vous permettra de toujours démarrer votre système.
  • Les différents modes "vga" :
    640x480x8 : 769 (0x301)
    800x600x8 : 771 (0x303)
    1024x768x8 : 773 (0x305)
    1280x1024x8 : 775 (0x307)
    640x480x16 : 785 (0x311)
    800x600x16 : 788 (0x314)
    1024x768x16 : 791 (0x317)
    1280x1024x16 : 794 (0x31A)
    640x480x32 : 786 (0x312)
    800x600x32 : 789 (0x315)
    1024x768x32 : 792 (0x318)
    1280x1024x32 : 795 (0x31B)
  • GRUBGRUBGRUB...
    Il semblerait que ce message soit causé par une mise à jour non complète de grub.
    La solution étant alors de récupérer les stages depuis l'install de grub (par exemple /lib/grub/i386-pc/*stage* ) et de remplacer ceux dans /boot ( /boot/grub ) puis de réinstaller grub dans la MBR
    (Merci Sandeman)
  • Utiliser "e" en cas de problème avec grub.conf
    Quand la configuration est presque bonne, il suffit d'éditer temporairement avec la configuration en utilisant "e":
    Éditer, valider, appuer sur "b" pour booter.

Link to comment
Share on other sites

Super topic. Quand je pense que ceux qui débutent avec ces docs sont gatés, parce que moi, j'ai bien galéré :D

Bon, je fais mon chieur, mais dans lilo, grub, lequel est le mieux? (dans le deuxième post), j'aurais rajouté que grub est le seul Bootloader tous OS confondus qui soit capable de booter tous les OS connus.

Bon je sais je chipote. Theo ;)

Ensuite, dans grub : utiliser un initrd (quatrième post)

Vous savez sûrement après avoir lu le "topic noyau" à quoi sert un initrd, donc si vous en avez l'utilité, voici comme l'utiliser

Enfin, post six :

grub : installation

Pour installer lilo

Voilou.

Super topic.

Et qu'on ne vienne pas me dire :yes: :yes:

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.


×
×
  • Create New...