in

MBR, démarrage Linux, GRUB

Acronyme

Cet article tentera d’expliquer comment installer et configurer grub2 pour démarrer avec le mode BIOS hérité en fonction de mes expériences. Bien que j’aie fait de mon mieux pour assurer la qualité de cet article, les informations peuvent être incomplètes et incorrectes. À l’avenir, je pourrais mettre à jour cet article en ajoutant les informations sur le démarrage par UEFI.

De nos jours, la plupart des cartes mères de PC utilisent l’interface UEFI (Unified Extensible Firmware Interface) au lieu du BIOS (Basic Input/Output System) pour le démarrage. On peut activer le mode Legacy BIOS pour émuler le comportement du BIOS pour le démarrage en UEFI. Lorsque vous démarrez à partir du Legacy BIOS, il essaiera d’abord de charger le chargeur de démarrage dans le premier secteur du premier disque dur (vous pouvez modifier la priorité dans le BIOS). Ici, nous allons nous concentrer sur son fonctionnement avec le chargeur de démarrage grub2 et quelques détails sur grub2.

GRUB (GNU GRand Unified Bootloader), qui fait officiellement référence à la version 2, c’est-à-dire grub2, est un bootloader du projet GNU. Il contient les codes dits stage1, stage1.5 et stage2, qui s’exécutent de manière séquentielle. Lorsque vous utilisez le BIOS pour démarrer, vous devez installer le code stage1 de 440 octets dans le premier secteur, c’est-à-dire le MBR alias LBA 0 via la grub-installcommande. C’est-à-dire:

# dans le cas du démarrage du BIOS Legacy 
$ grub-install /dev/sda

Après l’exécution grub-install /dev/sda, le programme d’installation copiera non seulement le code grub2 stage1 dans le LBA 0 de /dev/sdamais écrira également l’adresse nécessaire pour que le code stage1 puisse trouver le code stage1.5 et enfin trouver le code stage2 dans /boot/grub/.

Voyons ce qui s’est passé ici plus en détail. En exécutant l’une des commandes suivantes, vous pouvez vider les 512 premiers octets de votre sda, qui est le contenu de MBR ou LBA 0. Vous y trouverez le code grub2 stage1 et la table de partition MBR :

$ sudo dd if=/dev/sda bs=512 count=1|od -Ax -t x1z -v 
$ sudo dd if=/dev/sda bs=512 count=1|hd
Le code GRUB2 stage1 existe dans les 440 premiers octets du secteur LBA 0

Au fait, pour rappel, 8 bits = 1 octet. Ainsi, en hexadécimal, il faut deux chiffres pour représenter un octet, par exemple, 0xFF = 0b11111111.

Après les 440 premiers octets, vous pouvez voir la table de partition MBR, qui est expliquée par les figures suivantes :

Les quatre premiers octets sont l’identifiant du disque, qui est 0x20815c55 dans cet exemple.

Comme vous pouvez le voir, dans une machine little-endian, les octets arrivent dans un ordre inversé. À partir de 1be, il y a quatre entrées de partition de 16 octets. Le contenu de la première entrée de partition est expliqué ci-dessous :

Si le premier octet de l’entrée de partition est 0x80, il s’agit d’une partition de démarrage. Sinon, ce sera 0x00.
Le reste de l’entrée de la partition contient le type, le point de départ et la taille de la partition, comme indiqué dans la figure.

Configuration de votre code GRUB2 stage2

Le fichier de configuration principal de votre grub2 est le /boot/grub/grub.cfgfichier. Il est généré par grub-mkconfigcommande. Donc, vous ne devez pas le modifier manuellement, sauf si vous souhaitez modifier l’entrée de menu générée automatiquement. Nous listons les lieux que vous pouvez configurer. Après les avoir modifiés, vous devez exécuter update-grub , qui équivaut à grub-mkconfig -o /boot/grub/grub.cfg, pour mettre à jour le grub.cfgfichier.

/etc/default/grub

Un exemple d’une installation Ubuntu est

# Si vous modifiez ce fichier, exécutez ensuite 'update-grub' pour mettre à jour 
# /boot/grub/grub.cfg.
# Pour une documentation complète des options de ce fichier, voir :
# info -f grub -n 'Simple configuration'GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=caché
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="éclaboussure silencieuse"
GRUB_CMDLINE_LINUX=""# Décommentez pour activer le filtrage BadRAM, modifiez en fonction de vos besoins
# Cela fonctionne avec Linux (aucun patch requis) et avec n'importe quel noyau qui obtient
# les informations de carte mémoire de GRUB (GNU Mach, noyau de FreeBSD ...)
#GRUB_BADRAM=" 0x01234567,0xfefefefe,0x89abcdef,0xefefefef"# Décommenter pour désactiver le terminal graphique (grub-pc uniquement)
#GRUB_TERMINAL=console# La résolution utilisée sur le terminal graphique
# notez que vous ne pouvez utiliser que les modes pris en charge par votre carte graphique via VBE
# vous pouvez les voir dans le vrai GRUB avec la commande `vbeinfo'
#GRUB_GFXMODE=640x480# Décommentez si vous ne voulez pas que GRUB passe le paramètre "root=UUID=xxx" à Linux
#GRUB_DISABLE_LINUX_UUID=true# Décommenter pour désactiver la génération des entrées du menu du mode de récupération
#GRUB_DISABLE_RECOVERY="true"# Décommentez pour obtenir un bip au démarrage de grub
#GRUB_INIT_TUNE="480 440 1"

Et vous pouvez consulter le manuel GNU GRUB pour les clés valides dans /etc/default/grub. Par exemple, si vous souhaitez activer le menu grub avec un délai de 5 secondes, vous pouvez modifier le GRUB_TIMEOUT_STYLEet en GRUB_TIMEOUTconséquence :

#GRUB_TIMEOUT_STYLE=masqué 
#GRUB_TIMEOUT=0
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=5

/etc/grub.d/*

Il existe différents scripts dans /etc/grub.d/, que vous pouvez modifier.

cory@cory-ubuntu:/etc/grub.d$ ls 
00_header 10_linux 20_linux_xen 30_os-prober
05_debian_theme 10_linux_zfs 20_memtest86+ 30_uefi-firmware 40_custom 41_custom LISEZMOI

/etc/default/grub.d/*

Parfois, certains fichiers de configuration peuvent exister dans /etc/default/grub.d/*. Par exemple, dans certaines versions d’ubuntu-server, le paramètre os-prober est masqué dans le /etc/default/grub.d/50-curtin-settings.cfgfichier.

Encore une fois, après les avoir modifiés, n’oubliez pas d’exécuter update-grubou grub-mkconfig -o /boot/grub/grub.cfgde mettre à jour le grub.cfgfichier, modifiant ainsi le menu de démarrage de grub2.

What do you think?

Written by Le professeur

Comments

Laisser un commentaire

GIPHY App Key not set. Please check settings

Loading…

0

 le calendrier complet du Concours des ECN France 2022

Annales anciennes épreuves de physique au concours de L’ENSP ( École nationale supérieure polytechnique de Yaoundé)