GRUB 2 : scripts systèmes

Objet : GRUB 2, le chargeur d'amorçage version 2.

Niveau requis :

Commentaires : scripts à destination d'ajout ou de modification des différents systèmes installés.

Débutant, à savoir : Utiliser GNU/Linux en ligne de commande, tout commence là !.

Suivi :

Créé par smolski le 16/02/2010

Testé par ... le ...

Commentaires sur le forum : Lien vers le forum concernant ce tuto 1) N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !

Voir ce post sur le forum :

https://debian-facile.org/viewtopic.php?id=16770

/etc/grub.d/40_custom

C'est le script modèle destiné à faire l'objet de vos modifications.

Par défaut il ne contient rien !

On le copie et on lui donne un chiffre et un nom différent, puis on y intégre un script spécifique ou une entrée supplémentaire pour un système qui ne serait pas détecté par la commande :

os-prober

On peut créer ses propres scripts et leurs attribuer un préfixe libre afin de déterminer l'ordre d'exécution.

Veillez à ce que les nouveaux scripts soient exécutables !
ATTENTION ! Les distributions autres que DEBIAN n'ont pas vocation ici d'être maintenues à jour par nos membres ! Les indications les concernant sont donc formulées à titre d'exemple seulement.

Ajouter un système Archlinux

Il peut arriver qu'en ajoutant un second système linux, il y ait un méli mélo entre les partitions des 2 systèmes en configuration automatique.

Ainsi, bien que la distribution d'une archlinux fraîchement ajoutée soit correctement trouvée et la ligne d'ouverture visible, il y a la possibilité d'une confusion entre les boot de debian et celui de arch qu'il faut corriger manuellement.

Voir, cette installation de archlinux mise en exemple ou le boot trouvé automatiquement par grub2 était celui de debian sur /dev/sda6 et non celui de arch sur /dev/sda7 !

Pour ajouter un système archlinux sur la partition /dev/sda7 par exemple :

On pourra créer :

cp /etc/grub.d/40_custom /etc/grub.d/10_archlinux

Et y copier le script :

#!/bin/sh exec tail -n +3 $0 # 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. menuentry "ArchLinux" { set root=(hd0,6) linux /boot/vmlinuz-linux root=/dev/sda6 ro initrd /boot/initramfs-linux.img }
Mettre à jour le grub : update-grub

Et la configuration du /boot/grub/grub.cfg est à jour avec cette nouvelle distribution dans les lignes du grub.

Sans que nous ayons à intervenir dans le fichier grub.cfg directement.

Merci pour ce test et pour son amicale collaboration à TechDesk sur le salon #debianfr !

Ajouter un système Ubuntu

Pour ajouter un système Ubuntu Jaunty sur /dev/sdc1 par exemple :

Pour ajouter la même entrée pour Ubuntu, après les entrées par défaut mais avant les systèmes détectés par 40_os-prober et l'entrée de memtest, on pourra créer :

cp /etc/grub.d/40_custom /etc/grub.d/11_ubuntu-jaunty

Et y copier le script :

#!/bin/sh exec tail -n +3 $0 # This file is an example on how to add custom entries # #Ubuntu Jaunty sur /dev/sdc1 menuentry "Ubuntu (on /dev/sdc1)" { set root=(hd2,1) linux /vmlinuz root=/dev/sdc1 ro quiet silent initrd /initrd.img }
Mettre à jour le grub : update-grub

Et la configuration du /boot/grub/grub.cfg est à jour avec cette nouvelle distribution dans les lignes du grub.

Sans que nous ayons à intervenir dans le fichier grub.cfg directement.

Ajouter un système Windows

Dans cet exemple, le boot et la racine de windows se trouve sur : /dev/hda1.

Pour ajouter une distribution non reconnue par os_prober au démarrage, vous copiez et renommer le fichier 40_custom ainsi :

cp /etc/grub.d/40_custom /etc/grub.d/36_windows

Il vous revient de mettre un chiffre intermédiaire à votre convenance...

Ensuite, vous l'éditez :

nano /etc/grub.d/36_windows

Et vous y ajoutez sous les lignes déjà écrites les renseignements nécessaire entre deux balises EOF (EndOfFile).

Pour mon exemple d'un windows en /dev/hda1 :

#!/bin/sh exec tail -n +3 $0 # This file is an example on how to add custom entries # # WINDOWS EOF menuentry "Windows" { set root=(hd0,1) chainloader +1 } EOF
Mettre à jour le grub : update-grub

Ajouter un système personnel : Studio

Un exemple d'entrée /etc/grub.d/12_studio avec chainage, grub-set-default (ou grub-reboot) et retour sur l'entrée par défaut de grub2.

Editez :

nano /etc/grub.d/12_studio

Ecrire :

#!/bin/sh exec tail -n +3 $0 # studio menuentry "Studio" { search --fs-uuid --set 929247df-0ca7-46d3-b1d0-8e7fc1bca0b3 chainloader +1 saved_entry=0 save_env saved_entry }
Mettre à jour le grub : update-grub

Offert et corrigé par phlinux de ses mimines mêmes, vrai !

Sur le forum là : http://debian-facile.org/forum/viewtopic.php?pid=19319#p19319

Ajouter un système personnel : Fedora

#!/bin/sh exec tail -n +3 $0 #Fedora12 sur /dev/sdXx insmod chain # important a préciser pour le chainage menuentry "Fedora12 (on /dev/sdXx)" { set root=(hdX,x) # la partition de boot vue par grub chainloader +1 # et forcément préciser qu'il s'agit d'un chainage }
Mettre à jour le grub : update-grub

Yep !

Venu de Clem sur le forum ici :
http://debian-facile.org/forum/viewtopic.php?pid=19323#p19323

Suppression d'un système en dualboot

Une fois faite la désinstallation d'un système en dualboot, on opère sa suppression dans la liste du GRUB par la mise à jour.

Soit :

update-grub

https://debian-facile.org/viewtopic.php?pid=289096#p289096

Merci qui ?
Merci raleur !