Main menu:

Site search

Categories

mars 2025
L M M J V S D
 12
3456789
10111213141516
17181920212223
24252627282930
31  

Archive

Grub2

Grub2 est le chargeur de boot par défaut dans Ubuntu 9.10. Il est chargé de lancer l’OS et permet le choix quand plusieurs OS sont installés sur une même machine. En ce sens, il n’est pas différent de Grub1 renommé pour l’occasion Grub legacy.

Les avantages de Grub2 sont entre autres:

  • Support de scripts incluant des fonctions et des tests
  • Un mode de réparation (mode rescue)
  • Le support des thèmes
  • Le support de menus personnalisés
  • le boot depuis un CD directement depuis le disque dur sans reboot

La version 9.10 d’Ubuntu est une version de transition en ce qui concerne Grub. Un nouvelle installation d’Ubuntu 9.10 installera Grub2 tandis qu’une mise à jour depuis 9.04 gardera l’ancien Grub legacy. Pas toujours simple de s’y retrouver et les questions et problèmes soulevés dans les forums sont nombreux.

Installation de Grub2

Les paquets nécessaires à l’installation de Grub2 sont grub-pc et grub-common

$ sudo aptitude install grub-pc

Un script vous prendra en main pour mener à bien cette installation et importer dans Grub2 les infos recueillies dans le menu de boot de Grub legacy. Au redémarrage, un choix supplémentaire apparaîtra dans le menu de Grub legacy qui permet de chaîner ce menu avec celui de Grub2 de façon à tester le système.
A ce stade, testez les différents choix du menu et vérifiez que tout se passe bien. Si c’est le cas, vous pouvez opter définitivement pour Grub2 de cette manière:

$ sudo upgrade-from-grub-legacy

Répondez aux question une fois encore et vous aurez migré de Grub legacy vers Grub2.

Configuration de Grub2

Le fichier /boot/grub/menu.lst de Grub legacy n’existe plus. Il est, en gros, remplacé par le fichier /boot/grub/grub.cfg qui contient ce qui ressemble le plus à l’ancien menu.lst, c’est à dire, les informations sur les différents OS et comment les booter. Ce fichier ne doit pas être édité par l’utilisateur. Son contenu dépend du résultat d’une série de scripts lancés lorsqu’on fait un:

$ sudo update-grub

Le fichier /etc/default/grub, qui peut être édité, contient des infos comme l’OS à lancer par défaut ou le nombre de secondes avant le lancement de l’OS par défaut.
Le dossier /etc/grub.d qui contient les différents scripts qui vont construire le fichier /boot/grub/grub.cfg lorsque la commande update-grub est lancée. Dans ces scripts, il faut noter la présence du script 05_debian_theme qui permet d’insérer une image de fond (splash image), le script 30_os-prober qui est chargé de détecter les OS sur les disques et 40_custom qui est le script qui permet d’insérer des entrées personnalisées.

Voici à quoi ressemble le fichier /etc/default/grub:

$ cat /etc/default/grub
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entrys
#GRUB_DISABLE_LINUX_RECOVERY="true"

Et le fichier /boot/grub/grub.cfg. Il s’agit de mon fichier de configuration et vous pouvez voir qu’en plus d’Ubuntu, j’ai une Debian Squeeze qui est installée sur l’autre disque de mon PC.

$ cat /boot/grub/grub.cfg
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by /usr/sbin/grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
if [ -s /boot/grub/grubenv ]; then
  have_grubenv=true
  load_env
fi
set default="0"
if [ ${prev_saved_entry} ]; then
  saved_entry=${prev_saved_entry}
  save_env saved_entry
  prev_saved_entry=
  save_env prev_saved_entry
fi
insmod ext2
set root=(hd1,1)
search --no-floppy --fs-uuid --set b298d612-cb12-478a-8109-4cee1a0226f2
if loadfont /usr/share/grub/unicode.pf2 ; then
  set gfxmode=640x480
  insmod gfxterm
  insmod vbe
  if terminal_output gfxterm ; then true ; else
    # For backward compatibility with versions of terminal.mod that don't
    # understand terminal_output
    terminal gfxterm
  fi
fi
if [ ${recordfail} = 1 ]; then
  set timeout=-1
else
  set timeout=10
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/white
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###
menuentry "Ubuntu, Linux 2.6.31-14-generic-pae" {
        recordfail=1
        if [ -n ${have_grubenv} ]; then save_env recordfail; fi
	set quiet=1
	insmod ext2
	set root=(hd1,1)
	search --no-floppy --fs-uuid --set b298d612-cb12-478a-8109-4cee1a0226f2
	linux	/boot/vmlinuz-2.6.31-14-generic-pae root=UUID=b298d612-cb12-478a-8109-4cee1a0226f2 ro   quiet splash
	initrd	/boot/initrd.img-2.6.31-14-generic-pae
}
menuentry "Ubuntu, Linux 2.6.31-14-generic-pae (recovery mode)" {
        recordfail=1
        if [ -n ${have_grubenv} ]; then save_env recordfail; fi
	insmod ext2
	set root=(hd1,1)
	search --no-floppy --fs-uuid --set b298d612-cb12-478a-8109-4cee1a0226f2
	linux	/boot/vmlinuz-2.6.31-14-generic-pae root=UUID=b298d612-cb12-478a-8109-4cee1a0226f2 ro single 
	initrd	/boot/initrd.img-2.6.31-14-generic-pae
}
### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
	linux16	/boot/memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
	linux16	/boot/memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Debian GNU/Linux, kernel 2.6.26-2-686 (on /dev/sda1)" {
	insmod ext2
	set root=(hd0,1)
	search --no-floppy --fs-uuid --set 436e7961-5c40-412f-b27e-0f8ce60b19e4
	linux /boot/vmlinuz-2.6.26-2-686 root=/dev/hda1 ro quiet
	initrd /boot/initrd.img-2.6.26-2-686
}
menuentry "Debian GNU/Linux, kernel 2.6.26-2-686 (single-user mode) (on /dev/sda1)" {
	insmod ext2
	set root=(hd0,1)
	search --no-floppy --fs-uuid --set 436e7961-5c40-412f-b27e-0f8ce60b19e4
	linux /boot/vmlinuz-2.6.26-2-686 root=/dev/hda1 ro single
	initrd /boot/initrd.img-2.6.26-2-686
}
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

Mode rescue

Si Grub2 ne peut booter l’OS demandé, il vous donnera accès au mode rescue qui permet d’entrer des commandes et essayer de lever le problème. Pour cela, vous devez connaitre la partition sur laquelle est installé le noyau c’est à dire où se trouve le répertoire /boot. Si vous ne connaissez pas ces informations, utilisez un LiveCD ou directement les commandes de grub rescue comme la commande ls ou ls /boot qui permet d’inspecter les partitions à la recherche de celle contenant le noyau:

grub rescue> set root=sdxy                        # sdxy est la partition où se trouve /boot
grub rescue> insmod /boot/grub/linux.mod          # Charge le module linux
grub rescue> linux /vmlinuz root=/dev/sdxy ro     # Charge le noyau
grub rescue> initrd /initrd.img                   # Charge l'image initrd
grub rescue> boot                                 # boot sur cette image initrd

N’oubliez pas, évidemment, de remplacer dans sdxy le x et le y par la bonne valeur.
Je vous renvoie vers la documentation pour plus de détails (voir à la fin de l’article).

Restaurer Grub

Si vous avez installé un autre OS qui a écrasé Grub2 ou pour toute autre raison nécessitant de réinstaller Grub2 dans le MBR, lancez un LiveCD et ouvrez un terminal. Tapez-y la commande suivante:

$ sudo fdisk -l

Ceci affichera les disques et les partitions sur chaque disque. Repérez-y la partition où se trouve le système racine de Linux parce que cela va servir dans les commandes suivantes:

$ sudo mount /dev/sdxy /mnt
$ sudo grub-install --root-directory=/mnt /dev/sdx

Remplacez le x et y ci dessus par la valeur qui correspond chez vous. sdxy est la partitions où se trouve le répertoire /boot par exemple sda1 et sdx est le disque dans le MBR duquel vous voulez installer Grub par exemple sda.

Un OS manque dans les choix du menu Grub

Si un OS a été mal détecté, relancez la configuration de Grub:

$ sudo update-grub

Changer l’OS lancé par défaut

Pour changer l’OS booté par défaut, il suffit d’éditer le fichier /etc/default/grub pour y changer la valeur de:

GRUB_DEFAULT=0

Ensuite, il faut mettre à jour le fichier /boot/grub/grub.cfg en lançant la commande:

$ sudo update-grub

Mais il y a plus simple. Une commande lancée depuis le terminal et qui effectue le changement pour vous:

$ sudo grub-set-default x

Remplacez x par l’index de l’OS à lancer par défaut. Cet index commançant à 0 est donnépar la position de l’OS dans le menu grub.

Edit: Pour que la commande grub-set-default soit active, il faut que GRUB_DEFAULT=saved. C’est-à-dire que, dans ce cas, Grub lance l’OS qui a été lancé la fois précédente. Cet OS peut être modifié au moyen de la commande grub-set-default.

Supprimer Grub2 pour réinstaller Grub legacy

Si pour une raison ou une autre, vous voulez réinstaller Grub legacy à la place de Grub2, voici comment procéder.
Commencez par faire le backup des fichiers de grub2, on ne sait jamais:

$ sudo cp /boot/grub /boot/grub.old
$ sudo rm -R /boot/grub/*

Ensuite on supprime Grub2 via aptitude et on réinstalle Grub legacy:

$ sudo aptitude purge grub-pc grub-common
$ sudo aptitude install grub
$ sudo update-grub

La dernière commande va créer le fichier /boot/grub/menu.lst.
A ce stade, il faut encore installer grub dans le MBR ce qui se fait par la commande:

$ sudo grub-install /dev/sda

Remplacez éventuellement /dev/sda par le disque que vous voulez si vous ne voulez pas installer grub dans le MBR de sda.
Ensuite lancez grub en tapant:

$ sudo grub

Lorsque vous avez le prompt de grub, entrez la commande:

grub> find /boot/grub/stage1

Notez la réponse de grub car celle-ci devra être introduite dans la ligne suivante:

grub> root (hd0,0)
grub> setup (hd0)
grub> quit

Remplacez évidemment (hd0,0) par la valeur donnée par la commande find. Dans la commande setup, remplacez le zéro (hd0) par la valeur donnée par le premier chiffre de la commande find. Voir http://linux.leunen.com/?p=43

Voilà, Grub legacy est réinstallé et opérationnel. Rebootez pour voir apparaître le menu Grub et tester ces différents choix.

Note: Avec Grub1 (grub legacy), il fallait appuyer sur la touche Esc pour faire apparaître le menu de Grub quand on n’avait qu’un seul OS. Avec Grub2, c’est sur la touche Shift qu’il faut appuyer.

Sources

https://help.ubuntu.com/community/Grub2
http://doc.ubuntu-fr.org/grub-pc
http://ubuntuforums.org/showthread.php?t=1298932
http://ubuntuforums.org/showthread.php?t=1195275
http://ubuntuforums.org/showthread.php?t=1285897

Accès à Internet extrêmement lent

Certaines personnes ayant installé la version 9.10 d’ubuntu se plaignent de lenteur pour les accès à Internet avec leur browser. Ce n’est pas lié à Firefox parce que le même comportement est signalé pour Epiphany par exemple.
En fait, il semblerait que ce soit l’IPv6 qui soit en cause. Et il suffit de le désactiver pour retrouver une vitesse de navigation normale.

Pour le désactiver, il faut éditer le fichier /etc/default/grub:

$ gksudo gedit /etc/default/grub

et remplacer la ligne GRUB_CMDLINE_LINUX= » » par:

GRUB_CMDLINE_LINUX="ipv6.disable=1"

Enregistrez le fichier et relancez update-grub pour que les modifications soient prises en compte par grub2:

$ sudo update-grub

Il ne vous reste plus qu’à rebooter votre machine pour retrouver une vitesse de navigatipn normale sur Internet.

Simple comme Ubuntu

C’est Didier Roche lui-même qui nous l’annonce sur le framablog, son livre Simple Comme Ubuntu est distribué en version pdf dans les dépôts. Autrement dit, un simple:

$ sudo aptitude install simplecommeubuntu

et vous pouvez trouver son livre dans le répertoire /usr/share/doc/simplecommeubuntu en version pdf.gz.

Après avoir feuilleté ce livre, il semble qu’il est à conseiller à toutes personnes désireuses d’installer Ubuntu et de faire connaissance avec Ubuntu. L’installation est décrite en détail avec toutes les captures d’écrans nécessaires. Les différents menus sont expliqués ainsi que l’agencement du bureau.

Didier Roche nous présente aussi les logiciels les plus intéressants installés d’origine ou à installer. Il y a un gros chapitre sur les jeux. Et en fin de livre, un chapitre entrant un peu plus dans le détail du fonctionnement de Linux.

En conclusion, comme je le disais au début de ce billet, un livre à lire si vous ne connaissez pas Ubuntu et que l’envie de l’installer vous titille.

Songbird sous Karmic

Il y a quelques temps, j’expliquais comment installer le lecteur multimédia Songbird. Avec l’installation d’Ubuntu 9.10, Karmic Koala, Songbird ne fonctionne plus. Son lancement fait apparaître un tas d’erreurs concernant des plugins gstreamer que Songbird ne saurait plus charger.
Après avoir chercher sur Internet, il semble bien que la solution ci-dessous fonctionne. Du moins, elle permet de lancer Songbird. Il reste une série de Warning mais qui n’empêche pas Songbird d’apparaître à l’écran:

$ export LD_BIND_NOW=1
$ songbird

Mettez ces deux lignes dans un petit script et lancez Songbird en lançant le script.

Ne me demandez pas exactement à quoi sert le LD_BIND_NOW, je serais bien incapable de vous l’expliquez.

Réinstaller le MBR Windows

Lorsqu’on installe Ubuntu en dual boot avec Windows, il peut arriver que l’on doive restaurer le MBR pour pouvoir encore booter sous Windows. Cette restauration se fait généralement avec le CD d’installation de Windows en mode réparation. Si malheureusement vous n’avez pas pensé à sauvegarder dans un fichier le MBR et si, en plus, vous n’avez pas le CD original de Windows, comme c’est souvent le cas à l’achat d’un portable, vous allez être très embêté. Sachez qu’il est possible de restaurer le MBR avec des outils Linux.
Le MBR est le premier secteur du disque et il est utilisé lors de la séquence de boot du système d’exploitation. Vista, par exemple, n’aime pas du tout qu’on ait touché au MBR en y installant Grub. Donc, si vous avez malgré tout installé grub dans le MBR et constaté que Vista ne démarrait plus, voici comme faire.

La première méthode est d’installer le paquet mbr qui se trouve dans les dépôts:

$ sudo aptitude install mbr

Supposons que vous vouliez restaurer le MBR du disque /dev/sda. Le programme s’utilise de cette manière:

$ sudo install-mbr /dev/sda

Un MBR générique sera écrit sur le disque. Cela fonctionne dans la plupart des cas. Néanmoins, si vous avez des problèmes, essayez la seconde possibilité ci-dessous.

Une autre possibilité est d’utiliser l’outil ms-sys disponible à l’adresse http://ms-sys.sourceforge.net/.
Cet outil que vous devrez compiler d’abord est l’équivalent du fdisk /MBR de Windows. Par ailleurs, il écrit différent MBR suivant la version de windows utilisée. Un MBR pour Windows 98 n’est pas le même que celui pour Vista.
Rendez vous à l’adresse ci-dessus pour en télécharger l’archive.
Décompressez cette archive:

tar -xzvf ms-sys-2.1.4.tgz

Puis compilez le programme avec la méthode classique en vous plaçant dans le répertoire où vous avez décompressé l’archive:

$ make
$ sudo make install

Ceci va créer un exécutable dans le répertoire /usr/local/bin/ qui se trouve dans le path.
Pour utiliser cette commande et restaurer le MBR dans /dev/sda, il suffit de taper par exemple:

$ sudo ms-sys -i /dev/sda

Cette commande écrit un MBR Vista sur le disque /dev/sda. Il est possible de dire à ms-sys d’écrire un MBR pour d’autres versions de Windows. En fait toutes les versions et même Windows 7 sont supportées. N’oubliez pas de lire la page de manuel pour connaître toutes les options disponibles.

Pour éviter d’avoir à utiliser un de ces deux outils pour restaurer le MBR, il est plus simple de le sauvegarder auparavant sur une clef USB, un disque externe ou même sur votre disque dur. il suffit d’une commande très simple:

$ sudo dd if=/dev/sda of=/media/disk/mbr.bin bs=512 count=1

Ceci crée un fichier mbr.bin sur /media/disk qui est l’exact contenu du MBR. Si par malheur vous devez restaurer le MBR, taper cette commande-ci qui est l’inverse de la précédente:

$ sudo dd if=/media/disk/mbr.bin of=/dev/sda bs=512 count=1

Voilà, vous pouvez installer Ubuntu en dual boot avec Windows sans crainte pour votre MBR. Vous avez les outils pour le réparer au cas où cela serait nécessaire.

Installation de la version 9.10

L’installation de la version 9.10 d’Ubuntu appelée Karmic Koala s’est faite sans problème. Toutes mes applications ont été réinstallées et les drivers propriétaires NVidia pour ma carte graphique aussi. Pas la moindre remarque à faire si ce n’est – mais c’est vraiment pour dire quelque chose – que les icônes n’apparaissent pas, par défaut, dans les menus de Gnome. Ca fait un peu bizarre et il est facile d’y remédier: dans le menu Système/Préférences/Apparence, cliquez sur l’onglet Interface et cochez la case intitulée Afficher les icônes dans les menus.