Booter l'eeePC sans la SD card où est installé eeeXubuntu
Par Milvus le vendredi, février 8 2008, 18:07 - Informatique - Lien permanent
J'ai installé avant-hier eeeXubuntu sur une carte SD, et j'ai découvert qu'on se retrouve alors face à un petit problème : GRUB affiche un beau message d'erreur si la carte SD n'est pas dans le lecteur. Un peu gênant si on veut utiliser la distribution d'origine sans se soucier de savoir où on a mis cette fichue carte...
Que se passe-t-il ?
GRUB marche en fait en deux phase : stage1 qui est installée sur le MBR du premier disque du système (ici le SSD de l'eeePC) et stage2, qui est installée dans /boot/grub/
d'un des linux installés sur l'ordinateur. Hors, eeeXubuntu installe ici la stage2 sur la carte SD, et GRUB ne peut donc pas se lancer sans la carte SD.
Note préalable : Les manips suivantes portent sur des parties très sensibles de l'eeePC. En cas d'erreur (de ma part ou de la votre...), il est possible que l'eeePC ne démarre plus ou que vous perdiez des données. Ne les faites donc qu'à vos risques et périls, et sauvegardez vos données les plus précieuses !
Que faire ?
Faire en sorte que le stage2 présent sur le SSD prenne en compte eeeXubuntu, et reconfigurer GRUB pour qu'il cherche son stage2 sur le SSD et non la carte SD.
Comment faire ?
Éditer le fichier /boot/grub/menu.lst
Comme son nom le suggère, c'est le fichier de configuration de GRUB définissant les options du menu qui s'affiche au démarrage de l'ordinateur. Voici son contenu par défaut dans la Xandros de l'eeePC :
# # Configured by Xandros Configuration system. # hiddenmenu # default boot entry default=0 # Boot automatically after 1 second. timeout=0 # Fallback to Configure. fallback=2 title Normal Boot root (0x80,0) kernel /boot/vmlinuz-2.6.21.4-eeepc quiet rw vga=785 irqpoll root=/dev/sda1 initrd /boot/initramfs-eeepc.img title Perform Disk Scan root (0x80,0) kernel /boot/vmlinuz-2.6.21.4-eeepc quiet rw vga=785 irqpoll root=/dev/sda1 XANDROSSCAN=y initrd /boot/initramfs-eeepc.img title Restore Factory Settings root (0x80,0) kernel /boot/vmlinuz-2.6.21.4-eeepc quiet rw vga=normal nosplash=y irqpoll root=/dev/sda1 XANDROSRESTORE=y initrd /boot/initramfs-eeepc.img
Pour prendre en compte, la présence de l'eeeXubuntu, il faut modifier 3 points :
- Ajouter les trois entrées de menu de boot correspondant à eeeXubuntu, reprises du fichier
/boot/grub/menu.lst
de eeeXubuntu[1]. - Désactiver l'option cachant le menu
- Mettre un temps d'attente avant le boot sur l'entrée par défaut.
Pour faire celà, lancez une console (Ctrl+Alt+t
), et tapez : sudo cp /boot/grub/menu.lst /boot/grub/menu.lst.bak
(pour sauvegarder le fichier original) puis sudo nano /boot/grub/menu.lst
pour éditer le fichier. Une fois les modifications faites, on a au final :
# # Configured by Xandros Configuration system. # # hiddenmenu # default boot entry default=0 # Boot automatically after 10 seconds. timeout=10 # Fallback to Configure. fallback=2 title Normal Xandros Boot root (0x80,0) kernel /boot/vmlinuz-2.6.21.4-eeepc quiet rw vga=785 irqpoll root=/dev/sda1 initrd /boot/initramfs-eeepc.img title Perform Disk Scan root (0x80,0) kernel /boot/vmlinuz-2.6.21.4-eeepc quiet rw vga=785 irqpoll root=/dev/sda1 XANDROSSCAN=y initrd /boot/initramfs-eeepc.img title Restore Factory Settings root (0x80,0) kernel /boot/vmlinuz-2.6.21.4-eeepc quiet rw vga=normal nosplash=y irqpoll root=/dev/sda1 XANDROSRESTORE=y initrd /boot/initramfs-eeepc.img # Xubuntu Entries title Ubuntu 7.10, kernel 2.6.22-14-generic root (hd1,0) kernel /boot/vmlinuz-2.6.22-14-generic root=UUID=5caeac74-9342-470a-b56c-7790db6d0b2a ro quiet splash initrd /boot/initrd.img-2.6.22-14-generic quiet title Ubuntu 7.10, kernel 2.6.22-14-generic (recovery mode) root (hd1,0) kernel /boot/vmlinuz-2.6.22-14-generic root=UUID=5caeac74-9342-470a-b56c-7790db6d0b2a ro single initrd /boot/initrd.img-2.6.22-14-generic title Ubuntu 7.10, memtest86+ root (hd1,0) kernel /boot/memtest86+.bin quiet
Notez que j'ai choisi de démarrer par défaut sur Xandros (option default=0
), mais vous pouvez choisir de démarrer par défaut sur eeeXubuntu, auquel cas il faudra marquer default=3
. Vous pouvez aussi mettre n'importe quelle durée d'attente (en secondes) qui vous convient dans l'option timeout
.
Reconfigurer grub
Dans la console (Ctrl+Alt+t
), taper sudo grub
. On entre alors dans le shell de GRUB.
Taper root (hd0,1)
. On indique ici à GRUB que le stage2 avec le fichier /boot/grub/menu.lst
est sur la deuxième partition du premier disque de l'eeePC[2].
Taper setup (hd0)
. GRUB est reconfiguré sur le MBR.
Taper quit
pour sortir du shell de GRUB.
Conclusion
Et voilà ! Au démarrage, vous avez désormais un menu vous permettant de choisir entre Xandros et eeeXubuntu que la carte SD soit présente ou non. Bien sûr, si la carte SD est absente, seul Xandros marchera.
Outre de pouvoir booter sans se soucier de la présence de la carte SD, ce genre de manipulation permettra d'utiliser ou de tester plusieurs OS en les mettant chacun sur sa carte SD. Il faudra par contre à chaque fois éditer à la main le fichier /boot/grub/menu.lst
pour qu'ils soient pris en compte dans le menu. De même le mises à jour de noyau de Xubuntu n'apparaîtrons dans le menu que si on édite le fichier /boot/grub/menu.lst
.
Notes
[1] L'ordre des entrées est importante pour les options, puisque qu'on indique aussi à GRUB par un numéro quel entrée utiliser par défaut, et quel entrée utiliser en cas de problème.
[2] La première partition du premier disque de l'eeePC est une image de la Xandros par défaut. La deuxième partition contient les modifications effectuées par l'utilisateur de l'eeePC. Taper root (hd0,0)
reviendrait donc à revenir à la configuration initiale de l'eeePC (menu de GRUB caché)
Commentaires
Merci pour ce petit tuto fort instructif.
Cependant, pour ma part j'ai eu quelques problèmes tout simplement dans grub au moment de générer le mbr, il me disait qu'il ne trouvait pas de fichier stage1 ni stage2 sur (hd0,1), ce qui était vrai puisque toutes les modifs que nous avions fait étaient sur (hd0,0), la partition montée au moment de l'édition (et là ça marchait, mais avec un autre menu.lst, celui de la config de base, car au moment du boot, hd0,0 est la partition cachée)
J'ai donc monté la partition cachée (/dev/sda2), j'y ai copié le contenu de /boot/grub de ma partition actuelle, et quand j'ai refait la commande grub, tout s'est bien passé, maintenant ça marche nickel.
Si jamais cela prut aider :-)
Bonjour
J'ai eu le même problème qu'elalitte, sauf que je ne l'ai pas encore résolu : suivre des instructions détaillées comme cet excellent tutoriel, ça va, monter une partition cachée, en copier le contenu sur une autre partition dépasse de loin mes très maigres compétences linuxiennes. Serait-ce abuser de demander une marche à suivre plus détaillée ?
Cordialement
Régis
Merci pour ce tuto trés claire
.... sauf pour la fin .... setup (hd0)....
elalitte nous donne qqs precisions mais la réalisation "en pratique et en commande" n'apparait pas
Est il possible de completer le tuto ? je suis certains de ne pas etre le seul interessé
Merci
Je suis pas sur à 100% de comprendre les problèmes qui se produisent chez vous, mais je vais essayer de résumer la situation :
On a Xandros sur le SSD interne, et une installation *ubuntu sur une carte SD. Normalement, on a la situation suivante :
/dev/sda1 : partition UnionFS avec les fichiers par défaut de Xandros
/dev/sda2 : partition Union FS correspondant aux fichiers de Xandros modifiés par le propriétaire de l'eee
/dev/sdb1 : partition ubuntu
En conséquence, quand je suis dans le shell du Grub (après avoir tapé sudo grub dans la console, sous Xandros) et que je tape la commande "find /boot/grub/stage2", j'ai trois résultats :
hd(0,0)
hd(0,1)
hd(1,0)
On retrouve bien la même configuration : Xandros par défaut/Xandros modifié/Ubuntu. Bref, je ne comprends pas vraiment pourquoi grub ne trouve pas de stage2 sur hd(0,1). Il doit y avoir une subtilité sur UnionFS qui nous échappe...
À noter que le moyen le plus propre de résoudre ce problème reste de le faire lors de l'installation de *ubuntu sur la carte SD, en allant dans les options avancées au moment de l'installation de grub, pour le mettre sur le SSD et pas sur la carte SD...