Grub

De SeRoM - Wiki
Aller à : navigation, rechercher

Grub 2

Une doc bien complète

Grub 2 est le sucesseur de grub legacy. Je suis tomber sur ce très bon article alors plut que de recopier, je donne le lien:

(Vous trouverez toujours les astuces de l'ancien Grub ci-dessous)

Mes astuces 'vite fait'

Adapter les valeures principales dans /etc/default/grub:

 GRUB_GFXMODE=1024x768
 GRUB_TIMEOUT=2

Et puis lancer la compilation du fichier grub.cfg avec cette commande soud Debian/Ubuntu:

 update-grub2

Et sous RedHat/Fedora:

 grub2-mkconfig -o /boot/grub2/grub.cfg
   OR pour le matériel avec UEFI/
 grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg

Changer la résolution du menu et des TTY

Voir ce lien: http://forum.ubuntu-fr.org/viewtopic.php?id=360358

Mais en bref:

Éditer la résolution dans /etc/default/grub:

 GRUB_GFXMODE=1024x768

Adapter /etc/grub.d/00_header pour conserver cette résolution dans les TTYs

   if loadfont `make_system_path_relative_to_its_root "${GRUB_FONT_PATH}"` ; then
     set gfxmode=${GRUB_GFXMODE}
+    set gfxpayload=keep
     load_video

Mettre à jour les configuration de grub:

 update-grub2

Grub legacy

Modification des options du boot loader

Les options du boot loader, se trouve dans le fichier:

/boot/grub/menu.lst

Rajouter une entrée windows

Ajouter les lignes suivantes:

title       Windows 2000
root        (hd0,0)
savedefault
makeactive
chainloader +1

Modifier la résolution du mode console

C'est aussi dans le menu.lst de grub que ca se passe. Il faut aller ajouter le mode vga à la fin de la ligne kernel de l'entrée que l'on désire modifier (vga=xxx).

title		Debian GNU/Linux, kernel 2.6.18-4-686
root		(hd0,0)
kernel		/boot/vmlinuz-2.6.18-4-686 root=/dev/hda1 ro vga=791
initrd		/boot/initrd.img-2.6.18-4-686
savedefault

Voici un tableau sur lequel vous pouvez vous baser pour choisir votre résolution:

_________________|_Résolution___________________________________________
Couleurs         |    640x480      800x600      1024x768      1280x1024
256        (8bit)|     769          771           773           775
32000     (15bit)|     784          787           790           793
65000     (16bit)|     785          788           791           794
16.7 Mill.(24bit)|     786          789           792           795

Attention, cette solution est fonctionnel mais pas du tout perenne ... Si un update d'un kernel surviens, la consequence de cela est le regeneration du fichier /boot/grub/menu.lst via la commande update-grub. Ce qui ecrasera le vga=791 !!!

Pour rendre perenne ses modifications, il y a une ligne comprenant une variable nomme kopt. Cette variable contient les different argument a passe au kernel au boot ... on peux y ajouter les infos de resolution ... On fais donc les modification suivante :

# kopt=root=/dev/hda1 ro

par

# kopt=root=/dev/hda1 ro vga=791

et on relance un update-grub. Ce qui auras pour effet de recreer les "lignes de kernel" avec toutes les options specifie dans la variable kopt.

Passer de lilo à grub

Si vous êtes sous lilo et que vous souhaitez passer sous grub, rien de plus facile:

apt-get install grub grub-doc

Lancez ensuite grub par la commande très complexe:

grub

Vous allez entrer dans grub, et vous pouvez à présent écrires des lignes de commande pour la configuration de votre grub. Vous pouvez soit installer grub sur le MBR ou sur le premier secteur d'une partition. Dans mon cas, je vous montre comment le faire sur le MBR (ce qui sera le + souvent utilisé). Dans un premier temps tapez:

cfdisk

Cette uilitaire vous affichera l'ensemble des partitions sur votre/vos disques.

Les partitions sont nommées sous la forme (hdn,p) où hdn est le disque dur et p le numéro de partition, simple ! Les partitions principales sont numérotées de 0 à 3, les partitions étendues à partir de 4. Par exemple, votre partition hda2 sous Linux sera désignée (hd0,1) sous GRUB. En effet, Linux numérote les partitions à partir de 1 et GRUB à partir de 0. Maintenant, vous pouvez donc repérer le disque dur où se trouve votre linux, ainsi que la partition où se trouve votre / Dans mon cas, mon linux se trouve sur mon sda (convertit en hd0 pour grub), et la partition / sur sda3 (convertit en hd0,2 pour grub), je vais donc devoir taper ces commandes:

root (hd0,2)
setup (hd0)

Dans la première ligne je spécifie donc où est mon root, et sur la deuxième ligne, je dis d'installer grub dans le MBR du disque dur.

Restauration du Grub

Attention la 1ere partie de ce paragraphe est aproximative - voir Discution de la page.

Après avoir installer un Windows sur la partition fraîchement créé par redimensionnement; le Master Boot Record (et donc le sélectionneur de partition de GNU/Linux) est écrasé. Il faut donc le restaurer pour créer un 'dual boot'. On va supposer que le répertoire /boot est monter sur la partition /dev/hda1.

  • Lancer un LiveCD
  • Ouvrir une console en root
  • Monter la partition sur la quelle se trouve le dossier /boot
mount /dev/hda1 /media/hda1 
mount -o bind /dev /media/hda1/dev
mount -o bind /proc /media/hda1/proc
  • On copie un certain nombre de paramètre que grub aura besoin pour se remettre en place.
cp /proc/mounts /media/hda1/etc/mtab
  • On change d'environnement architecture de répertoire du CD pour simuler celui du disque
chroot /media/hda1
  • Et finalement on lance le grub-install
grub-install /dev/hda1
  • Si cette dernière commande génère des erreurs sortez du dernière environnement
exit
  • Et lancer l'utilitaire de grub existant sur le disque
/media/hda1/sbin/grub
  • Une fois que vous avez atterri dans le menu grub:
grub> find /boot/grub/stage1
grub> root (hd?,?) # ? doit être remplacé par le texte trouvé précédemment
grub> setup (hd?)  # ? 1er nombre donner par le find précédemment
grub> quit 
  • Vous pouvez redémarrer (retirer le LiveCD).

Bien normalement après ceci, le grub se lance au démarrage de la machine. Mais ne propose pas directement d'entrée vers la partition du Windows. On va la rajouter.

  • Une fois sous GNU/Linux lancer une console en route
  • Et éditer le fichier /boot/grub/menu.lst en rajoutant cette entré à la fin de fichier:
title		Windows 95/98/NT/2000
root		(hd0,0)		# remplacer le (0,0) selon le cas
makeactive
chainloader	+1

Notes

  • Quelques exemples de hd0,0 à remplacer:

(hd0,0) = hda1 (hd0,1) = hda2 (hd0,2) = hda3 (hd1,0) = hdb1 (hd1,2) = hdb2 ... = ...

Cela n'est pas vraiment correct meme si ca peut l'etre dans certain cas ... A la difference de linux qui nomme les peripheriques ide en fonction du controleur sur lequel il se trouve ainsi que de sa place dans la chaine, grub nomme les disques durs en fonction de l'ordre selon lequel ils sont detectes !!!

Ce qui a pour consequence que si vous n'avez que un seul disque dur dans votre machine, il se nomera toujours hd0 ... quelque soit sa place (hda, hdb ... hdz) !

Dans le "rare cas" ou vous avez un controleur ide supplementaire a celui de votre carte-mere, il faut donc voir dans quelle odre ils sont initialise (dans le cas de plusieurs disque toujours). Ses derniers sont generalement considerer par le bios comme des "carte scsi" externe, et ils est generalement possible de specifier dans le dit bios l'odre d'initialisation, en premier ide ou scsi et l'autre ensuite ...

  • Installation de GNU/Linux postérieur au Windows :

Si le système GNU/Linux est installé après le système Windows, toute cette manipulation est inutile. Car à l'installation, GNU/Linux détectera toutes entré d'OS sur le disque et génèrera le grub qui va bien automatiquement.

Ref