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 :

  1. Ajouter les trois entrées de menu de boot correspondant à eeeXubuntu, reprises du fichier /boot/grub/menu.lst de eeeXubuntu[1].
  2. Désactiver l'option cachant le menu
  3. 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é)