Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Linux
  3. Séquence d'amorçage
Extrait - Linux Administration avancée - Maintenance et exploitation de vos serveurs (3e édition)
Extraits du livre
Linux Administration avancée - Maintenance et exploitation de vos serveurs (3e édition) Revenir à la page d'achat du livre

Séquence d'amorçage

Introduction

Ce chapitre a pour objectif d’étudier la séquence d’amorçage du système d’exploitation Linux.

Processus d’amorçage

Lorsque vous allumez un ordinateur, le processus de démarrage se réalise en plusieurs phases :

  • Le BIOS effectue un POST (Power-On Self Test) pour vérifier le bon fonctionnement du matériel.

  • Le MBR (Master Boot Record), situé dans le 1er secteur du disque qui est bootable, va exécuter le chargeur d’amorçage (bootloader) GRUB. Quant aux systèmes x86 basés sur UEFI, ils montent une partition système EFI qui contient une version du chargeur de démarrage GRUB. Le gestionnaire de démarrage EFI charge et exécute GRUB comme une application EFI.

  • Le chargeur d’amorçage GRUB (Grand Unified Bootloader) version 2 propose dans un écran d’accueil (splash screen) de choisir le noyau Linux à amorcer si, bien sûr, votre système en contient plusieurs. Un délai de quelques secondes vous permet d’effectuer le choix sinon, le processus de démarrage continue avec les paramètres définis par défaut dans le fichier de configuration de GRUB.

  • Grub charge ensuite le noyau vmlinuz et l’image initrd (INITial RamDisk) qui utilise le système de fichiers initramfs. Le noyau Linux initialise les périphériques par le biais des pilotes, démarre le processus noyau kswapd qui est le gestionnaire de swap. Il monte ensuite la racine...

GRUB 2

Debian 9 et RHEL 7 utilisent GRUB version 2.

Les commandes pour Debian commencent par grub- et pour Red Hat grub2-.

1. Identifier la version de GRUB

Syntaxe

grub-install <option> 

Option nécessaire :

Option

Description

courte

longue

-v

--version

Affiche la version.

Exemple avec Debian

Afficher la version de GRUB :

root@system1:~# grub-install -V 
grub-install (GRUB) 2.02~beta3-5 

Exemple avec Red Hat

Afficher la version de GRUB :

[root@system2 ~]# grub2-install -V 
grub2-install (GRUB) 2.02~beta2 

2. Fichiers de configuration

Le fichier contenant les paramètres du menu est /etc/default/grub. Il peut varier légèrement d’une distribution à l’autre.

root@system1:~# cat /etc/default/grub 
# If you change this file, run 'update-grub' afterwards to update  
# /boot/grub/grub.cfg 
# For full documentation of the options in this file, see: 
# info -f grub -n 'Simple configuration' 
 
GRUB_DEFAULT=0 
GRUB_TIMEOUT=5 
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` 
GRUB_CMDLINE_LINUX_DEFAULT="quiet" 
GRUB_CMDLINE_LINUX="" 
 
# Uncomment to enable BadRAM filtering, modify to suit your needs 
# This works with Linux (no patch required) and with any kernel  
that obtains 
# the memory map information from GRUB (GNU Mach, kernel of  
FreeBSD ...) 
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef" 
 
# Uncomment to disable graphical terminal (grub-pc only) 
#GRUB_TERMINAL=console 
 
# The resolution used on graphical terminal 
# note that you can use only modes which your graphic card  
supports via VBE 
# you can see them in real GRUB with the command `vbeinfo' 
#GRUB_GFXMODE=640x480 
 
# Uncomment if you don't want GRUB to pass "root=UUID=xxx"  
parameter to Linux 
#GRUB_DISABLE_LINUX_UUID=true 
 
# Uncomment to disable generation of recovery mode menu entries 
#GRUB_DISABLE_RECOVERY="true" 
 
# Uncomment to get a beep at grub start 
#GRUB_INIT_TUNE="480 440 1" 

Voici la signification de ces directives :

Directive

Description

GRUB_DEFAULT=<valeur>

Définit...

L’unité cible (target)

Au démarrage du système, lorsque le contrôle est transféré de initramfs à systemd, ce dernier tente d’activer la cible par defaut : default.target. Elle doit correspondre à un lien symbolique figurant dans le répertoire /etc/systemd/system/ vers graphical.target (environnement graphique) ou multi-user.target (ligne de commandes).

1. Gestion de la cible par défaut

La commande systemctl permet d’afficher la cible par défaut :

[root@system2 ~]# systemctl get-default 
multi-user.target 

La modification de la cible par défaut nécessite de choisir un environnement :

[root@system2 ~]# systemctl set-default graphical.target 
Removed symlink /etc/systemd/system/default.target. 
Created symlink from /etc/systemd/system/default.target to  
/usr/lib/systemd/system/graphical.target. 

Ou bien :

[root@system2 ~]# systemctl set-default multi-user.target 
Removed symlink /etc/systemd/system/default.target. 
Created symlink from /etc/systemd/system/default.target to  
/usr/lib/systemd/system/multi-user.target. 

Vous pouvez changer la cible actuelle immédiatement avec l’option isolate de la commande systemctl. Par exemple, basculer dans l’environnement graphique :

[root@system2 ~]# systemctl isolate graphical.target 

Seules les cibles dont les fichiers d’unité présentent la ligne AllowIsolate=yes peuvent être isolées :

[root@system2 ~]# cat /usr/lib/systemd/system/multi-user.target 
#  This file is part of systemd. 
# 
#  systemd is free software; you can redistribute it and/or modify it 
#  under the terms of the GNU Lesser General Public License as published by 
#  the Free Software Foundation; either version 2.1 of the License, or 
#  (at your option) any later version. 
 
[Unit] 
Description=Multi-User System 
Documentation=man:systemd.special(7) 
Requires=basic.target 
Conflicts=rescue.service rescue.target 
After=basic.target rescue.service rescue.target 
AllowIsolate=yes 

Répertorier toutes les unités de cible actuellement chargées :

[root@system2 ~]# systemctl list-units --type target 
UNIT                  LOAD   ACTIVE SUB    DESCRIPTION ...

Sauver et restaurer le MBR

Pour réaliser la sauvegarde du MBR du disque /dev/sda dans le fichier mbr.backup, utilisez la commande dd :

root@system1:~# dd if=/dev/sda of=mbr.backup bs=512 count=1 
1+0 enregistrements lus 
1+0 enregistrements écrits 
512 octets (512 B) copiés, 0,000370438 s, 1,4 MB/s 

Pour restaurer le MBR du disque /dev/sda depuis le fichier mbr.backup :

root@system1:~# dd if=mbr.backup of=/dev/sda bs=512 count=1 
1+0 enregistrements lus 
1+0 enregistrements écrits 
512 octets (512 B) copiés, 0,000245556 s, 2,1 MB/s 

GRUB peut également récupérer automatiquement le MBR en invoquant grub-install pour Debian ou grub2-install pour Red Hat.

Syntaxe

grub-install <disque> 

Pas d’options pour cette commande.

Exemple avec Debian

root@system1:~# grub-install /dev/sda 
Installation finished. No error reported. 

Vous devez redémarrer votre ordinateur pour tester la séquence d’amorçage avec le MBR récupéré.

Le journal du boot

La commande journalctl permet d’analyser le boot.

[root@system2 ~]# journalctl -b 
-- Logs begin at mar. 2018-12-04 21:29:58 CET, end at mer. 
2018-12-05 06:30:01 CET. - 
déc. 04 21:29:58 system2.staff.local systemd-journal[88]: Runtime 
journal is using 8.0M (max allowed 99.9M, trying to leave 149.9M free  
of 991.8M available → current limit 99.9M). 
déc. 04 21:29:58 system2.staff.local kernel: Initializing cgroup  
subsys cpuset 
déc. 04 21:29:58 system2.staff.local kernel: Initializing cgroup  
subsys cpu 
déc. 04 21:29:58 system2.staff.local kernel: Initializing cgroup  
subsys cpuacct 
déc. 04 21:29:58 system2.staff.local kernel: Linux version 3.10.
0-862.14.4.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc 
version 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) ) #1 SMP Wed Sep 26 
15:12:11 UTC 2018 
*** Sortie tronquée *** 

Vous disposez également dans le dossier /var/log du fichier journal boot.log :

[root@system2 ~]# cat /var/log/boot.log 
Nov 21 22:44:39 system2 NET[14696]: /usr/sbin/dhclient-script : updated /etc/resolv.conf 
[  OK  ] Started Show Plymouth Boot Screen. 
[  OK  ] Reached target Paths. 
[  OK  ] Reached target Basic System. 
[  OK  ] Found device /dev/mapper/sysVG-root. 
        Starting File System Check on /dev/mapper/sysVG-root... ...

Exercice

Vous allez utiliser la machine virtuelle CentOS 7.

1. Modifiez le délai du menu GRUB à 1 minute de façon permanente.

2. Redémarrez le système pour vérifier.