StartUp-Manager (Gestionnaire d'amorçage)
Outils pour configurer Grub.
Configuration
Génération du fichier de configuration
|
sudo grub-mkconfig -o /boot/grub/grub.cfg
# installer os-prober pour détecter les systèmes d'exploitations installés sur les autres partitions
sudo pacman -S os-prober
|
Options
/etc/default/grub
|
# Sélection du premier (0) élément
GRUB_DEFAULT=0
# Temps d'attente en seconde avant la sélection par défaut
# 0 : sélection sans délai
# -1 : attente de sélection manuelle
GRUB_TIMEOUT=0
# Temps d'attente en seconde avant la pression de la touche Echap
# Utilisé avec GRUB_TIMEOUT=0 : menu affiché seulement si la touche Echap est pressée
GRUB_HIDDEN_TIMEOUT=1
# Masque le compte à rebours
GRUB_HIDDEN_TIMEOUT_QUIET=true
# liste des arguments à ajouter à toutes les entrées. Séparés par des espaces.
GRUB_CMDLINE_LINUX=""
# liste des arguments à ajouter à l'entrée par défaut
GRUB_CMDLINE_LINUX_DEFAULT=""
# Désactive le framebuffer pour GRUB. Commenter pour désactiver
GRUB_TERMINAL_OUTPUT=console
# résolution d'affichage du menu. Plusieurs résolution peuvent être listée, séparées par ','
GRUB_GFXMODE=auto
# résolution du texte de boot. Plusieurs résolution peuvent être listée, séparées par ','
# keep pour garder la même résolution que celle de GRUB
# text pour mode normal
GRUB_GFXPAYLOAD_LINUX=1440x900x32,text
# couleurs du menu
GRUB_COLOR_NORMAL="light-blue/black"
GRUB_COLOR_HIGHLIGHT="black/blue"
# thème
GRUB_THEME="/boot/grub/themes/starfield/theme.txt"
# thème supplémentaire : grub2-theme-archlinux (AUR)
|
Visual Configuration
Documentation Configuration GRUB 2
Ajouter des entrées supplémentaires
/etc/grub.d/40_custom
|
# ISO ArchLinux
menuentry "Archlinux-2012.10.06-dual.iso" {
set isofile="/isoboot/archlinux-2012.10.06-dual.iso"
loopback loop (hd0,2)$isofile
linux (loop)/arch/boot/x86_64/vmlinuz archisolabel=ARCH_201210 img_dev=/dev/sda2 img_loop=$isofile earlymodules=loop
initrd (loop)/arch/boot/x86_64/archiso.img
}
# ISO SystemRescueCd
menuentry "SystemRescueCd" {
loopback loop (hd0,2)/isoboot/systemrescuecd-x86-3.1.2.iso
linux (loop)/isolinux/rescuecd isoloop=isoboot/systemrescuecd-x86-3.1.2.iso
initrd (loop)/isolinux/initram.igz
}
|
Une autre possibilité est d'utiliser un fichier config qui sera sourcé.
De cette façon il n'est pas nécessaire de régénérer le fichier de configuration de GRUB à chaque modification.
/etc/grub.d/41_custom
|
#!/bin/sh
cat <<EOF
if [ -f \${config_directory}/custom.cfg ]; then
source \${config_directory}/custom.cfg
elif [ -z "\${config_directory}" -a -f \$prefix/custom.cfg ]; then
source \$prefix/custom.cfg;
fi
EOF
|
/boot/grub2/custom.cfg
|
# ISO SystemRescueCd
menuentry "SystemRescueCd" {
loopback loop (hd0,2)/isoboot/systemrescuecd-x86-3.1.2.iso
linux (loop)/isolinux/rescuecd isoloop=isoboot/systemrescuecd-x86-3.1.2.iso
initrd (loop)/isolinux/initram.igz
}
|
Clavier fr
Récupérez le script ckbcomp disponible dans le paquet console-setup pour Debian. Et le copier dans /usr/bin.
|
# générez un fichier de configuration de clavier pour GRUB
grub-kbdcomp -o fr.gkb fr
# et le copier dans grub
sudo mv fr.gkb /boot/grub
|
Inclure la nouvelle configuration de clavier dans GRUB :
/etc/grub.d/50_keyboard
|
#!/bin/sh
echo 'insmod keylayouts'
echo 'keymap /boot/grub/fr.gkb'
|
/etc/default/grub
|
GRUB_TERMINAL_INPUT=at_keyboard
|
Regénérez la configuration de GRUB.
Custom keyboard layout
Howto change the grub2 keymap
Fallback entry vs Normal entry
Sous ArchLinux, 2 entrées seront générées pour chaque noyau : une normale et une fallback.
Elles pointent toutes les 2 sur le même noyau.
- L'entrée normale charge les MODULES, BINARIES, FILES et HOOKS définis dans le fichier /etc/mkinitcpio.conf
- L'entrée fallback charge tous les MODULES, BINARIES, FILES et HOOKS par défaut
Kernel parameters
/etc/default/grub
|
# Déclare sur quelle partition se situe la sauvegarde d'hibernation (suspend-to-disk)
# Ajout de systemd
GRUB_CMDLINE_LINUX_DEFAULT="resume=/dev/sda5 init=/bin/systemd"
|
Normal Shell
Si GRUB rencontre un problème, il passe en mode normal shell
|
# Voici l'invite de commande de normal shell
sh:grub>
|
Rescue Shell
Si GRUB rencontre un problème grave, il passe en mode rescue shell
|
# Voici l'invite de commande de rescue shell
grub rescue>
# Charger le shell classique. sda2 = hd0,2
set prefix=(hdX,Y)/boot/grub
insmod (hdX,Y)/boot/grub/i386-pc/normal.mod
normal
# Charger le module linux
set prefix=(hdX,Y)/boot/grub
insmod (hdX,Y)/boot/grub/linux.mod
# booter sur une partition ArchLinux
set root=(hd0,2)
linux /boot/vmlinuz-linux root=/dev/sda2
initrd /boot/initramfs-linux.img
boot
|
Runlevels
- 0 – Halt Shuts down the system.
- 1 – Single-User Mode Mode for administrative tasks.
- 2 – Multi-User Mode Does not configure network interfaces / services.
- 3 – Multi-User Mode with Networking Starts the system normally.
- 4 – Not used/User-definable For special purposes.
- 5 – Start the system with display manager. As runlevel 3 + display manager.
- 6 – Reboot Reboots the system.
Installation
|
Ne pas oublier de générer le fichier de configuration une fois GRUB installé
|
grub-mkconfig -o /boot/grub/grub.cfg
| |
GPT
|
Une partition de type ef02 de 1Mio doit être présente dans les premiers 2TiB du disk |
|
pacman -S grub
grub-install --recheck --target=i386-pc /dev/sdx
grub-mkconfig -o /boot/grub/grub.cfg
|
MBR
|
Pas besoin de créer de partition dédiée, GRUB s'installe dans les 440-byte du code d'amorçage du disque. |
|
pacman -S grub
# ? modprobe dm-mod
grub-install --target=i386-pc /dev/sda
# --target=i386-pc ne fait pas référence aux OS 32 ou 64 bits
# ? --recheck --debug
grub-mkconfig -o /boot/grub/grub.cfg
# les 2 commandes suivantes ne semblent pas utiles car /boot/grub/locale/en.mo existe déjà
mkdir -p /boot/grub/locale
cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo
|
|
Bien vérifier que le support de boot est exécuté en UEFI:
|
ls -1 /sys/firmware/efi
| |
|
# montez la partition UEFI
mkdir -p /boot/efi
mount -t vfat /dev/sda1 /boot/efi
mkdir /boot/efi/EFI
modprobe dm-mod
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch_grub
--recheck --debug
|
efibootmgr
Normalement grub-install ajoute une entrée dans le Firmware Boot Manager. Si ce n'est pas le cas, il faut l'ajouter:
|
efibootmgr --create --disk /dev/sda --part 1 --write-signature
--label arch_grub --loader '\EFI\arch_grub\grubx64.efi'
# lister les entrées
efibootmgr -v
# suppression de l'entrée Boot0000
efibootmgr -b 0000 -B
|
|
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables Le support de boot n'a pas été lancé en UEFI. Pour les CD/DVD live allez dans le bios et passer en tête le lecteur CD/DVD avec la mention UEFI. |
Sur une clé USB
|
# identifier la clé usb
sudo fdisk -l
# formater la clé (vfat → FAT32)
sudo mkfs.vfat /dev/sdx1
# monter la partition (umask=0 pour donner les droits en écriture)
sudo mount -o umask=0 /dev/sdx1 /media/usb
# installer grub sur la clé usb (attention bien mettre /dev/sdx sans le 1)
grub-install --no-floppy --root-directory=/media/usb /dev/sdx
# ajouter le fichier de configuration
gedit /media/usb/boot/grub/grub.cfg
|
/boot/grub/grub.cfg
|
set timeout=-1 # Timeout for menu (-1 attendre indéfiniment)
set default=0 # Set default boot entry as the first one
menuentry "XUbuntu 10.10" {
insmod loopback # Load the loopback module
insmod iso9660 # Load the iso9660 module
set isofile="/boot/iso/xubuntu.iso"
loopback loop $isofile # Make a device from a file
# Load a Linux kernel image from file
linux (loop)/casper/vmlinuz iso-scan/filename=$isofile boot=casper quiet splash --
# Load an initial ramdisk for a Linux kernel image
initrd (loop)/casper/initrd.lz
}
menuentry "Slitaz 3.0" {
set isofile="/boot/iso/slitaz-3.0.iso"
loopback loop $isofile
# root= défini la partition root
linux (loop)/boot/bzImage lang=fr_FR kmap=fr-latin1 autologin root=/dev/null
initrd (loop)/boot/rootfs.gz
}
menuentry "Memtest86+" {
linux16 /boot/memtest86+.bin
}
menuentry "Reboot" {
reboot
}
menuentry "Shutdown" {
halt
}
|
linux (loop)/casper/vmlinuz locale=fr_FR bootkbd=fr console-setup/layoutcode=fr iso-scan/filename=$isofile boot=casper quiet splash --
Monter de version de GRUB Legacy vers GRUB 2
Sauvegarde et restauration de GRUB Legacy
|
# sauvegarde des fichiers de GRUB Legacy
mv /boot/grub /boot/grub-legacy
# sauvegarde du MBR
dd if=/dev/sda2 of=/path/to/backup/bootcode_backup bs=446 count=1
|
|
# sauvegarde des fichiers de GRUB 2
mv /boot/grub /boot/grub.nonfunctional
# restauration des fichiers de GRUB Legacy
cp -af /boot/grub-legacy /boot/grub
# restaurer le MBR
dd if=/path/to/backup/bootcode_backup of=/dev/sda2 bs=446 count=1
|
Backup
Restore GRUB Legacy
Installation
|
# installe GRUB 2 et remplace GRUB Legacy (grub)
pacman -S grub-bios
# installer GRUB 2 dans le MBR
modprobe dm-mod
grub-install --target=i386-pc --recheck --debug /dev/sda
mkdir -p /boot/grub/locale
cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo
|
Install to 440-byte MBR boot code region
Configuration
|
# créer le fichier de configuration à partir de celui de GRUB Legacy
grub-menulst2cfg /boot/grub-legacy/menu.lst /boot/grub/grub.cfg
|
Generate GRUB2 BIOS Config file