0% ont trouvé ce document utile (0 vote)
5 vues10 pages

Démarrage Linux : BIOS à UEFI et GRUB

Le document décrit le processus de démarrage de Linux, y compris les rôles du BIOS et de l'UEFI, ainsi que le fonctionnement du chargeur de démarrage GRUB. Il aborde également les systèmes d'initialisation comme SysV, Upstart et systemd, ainsi que la gestion des tâches planifiées avec cron et anacron. Enfin, il fournit des détails sur la configuration et l'utilisation des fichiers de journalisation et des unités systemd.

Transféré par

ichi00go
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
5 vues10 pages

Démarrage Linux : BIOS à UEFI et GRUB

Le document décrit le processus de démarrage de Linux, y compris les rôles du BIOS et de l'UEFI, ainsi que le fonctionnement du chargeur de démarrage GRUB. Il aborde également les systèmes d'initialisation comme SysV, Upstart et systemd, ainsi que la gestion des tâches planifiées avec cron et anacron. Enfin, il fournit des détails sur la configuration et l'utilisation des fichiers de journalisation et des unités systemd.

Transféré par

ichi00go
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

1.

Démarrage et niveaux de fonctionnement


Linux Boot séquence
Power ON -> BIOS -> MBR -> Boot loader -> Kernel -> Init -> Systemd/Run level

2 . BIOS
BIOS: Basic Input/Output System. C'est un Micrologiciel stocké dans une mémoire non volatile attachée à la carte
mère
Etapes de démarrage :
POST (Power-On Self Test) : Vérifie l'intégrité des composants matériels (CPU, RAM, disques, clavier,
etc.). Signale les erreurs via des codes sonores ou visuels (ex: écran BIOS/UEFI avec détails matériels)
BIOS :
Le BIOS cherche le premier secteur du disque dur (secteur 0 = MBR).
Il charge les 512 octets du MBR en mémoire à l'adresse 0x7C00.
Il exécute le code bootstrap (premiers 446 octets du MBR).
Exécution du Bootstrap (MBR) :
Lit la table de partitions (64 octets dans le MBR). Identifie la partition active (marquée bootable).
Charge le VBR (secteur 0 de la partition active) de cette partition.
GRUB Stage1
Le VBR contient GRUB stage1 ([Link] ou [Link]).
Charge GRUB Stage2 via :
Secteurs réservés (méthode traditionnelle)
Système de fichiers /boot (si [Link] avec modules)
GRUB stage2 prend le contrôle
Charge le fichier de configuration /boot/grub/[Link].
Affiche le menu de démarrage (appuyer sur Échap pour l'interrompre).
Charge le noyau Linux (vmlinuz) et l'initramfs en mémoire.
Passe les paramètres au noyau :
Passage au noyau
Le noyau démarre le système d’exploitation.

3. UEFI :
Les Limites du BIOS :

Supporte seulement le partitionnement MBR.


Gère au maximum 4 partitions principales
Taille maximale des disques limitée à ~2,2 To
N'est pas sécurisé !

Avantages de l’UEFI:
UEFI : Unified Extensible Firmware Interface
Ne s’appuie pas sur le MBR
Les paramètres sont mis dans une mémoire non volatile (NVRAM)
Ils indiquent l’emplacement des programmes compatibles UEFI (applications EFI), comme les chargeurs de
démarrage.
Ces derniers sont mis dans une partition de périphérique de stockage, appelée ESP (EFI System Partition).
Supporte le partitionnement GPT, en plus du MBR
Gère jusqu’à 128 partitions principales (selon l’OS).
Taille maximale des disques : 9,4 Zo (~109 To).
Supporte le Secure Boot pour n’exécuter que les applications EFI signées.

Etapes de démarrage avec UEFI :

UEFI :
POST : Auto-test matériel (identique au BIOS)
Secure Boot (optionnel) :
Vérifie la signature numérique des applications EFI
Lecture de la NVRAM :
Consulte les paramètres stockés en mémoire flash (ex: ordre de démarrage).
Recherche de la partition ESP :
Ne s'appuie pas sur le MBR
Cherche la partition ESP (EFI System Partition) formatée en FAT32
Monte la partition ESP (format FAT32).
Cherche le répertoire /EFI/ contenant les applications EF
Héberge bien les applications EFI
Lancement du binaire EFI :
Lance le binaire EFI (ex: [Link]) en mémoire.
Transfère le contrôle au bootloader

4. GRUB :
GRUB : GRand Unified Bootloader.
Affiche un menu de démarrage pour sélectionner l’OS à lancer, le noyau à charger ou transmettre des
paramètres au noyau.
N.B. Pour afficher le menu de GRUB, appuyer sur Shift (BIOS) ou Échap (UEFI).
Les paramètres du noyau ont la syntaxe : option=valeur
mem=512M : définit la quantité de RAM disponible pour le système.
maxcpus=2 : définit le nombre de processeurs/cœurs visibles pour le système.
quiet : masque la plupart des messages de démarrage
Les paramètres du noyau peuvent être ajoutés:
Dans le menu de GRUB : appuyer sur 'e' après sélection du noyau.
Dans le fichier /etc/default/grub, ligne GRUB_CMDLINE_LINUX
N.B. Les changements dans /etc/default/grub nécessitent de générer un nouveau fichier de
configuration par: grub-mkconfig -o /boot/grub/[Link]
6. Kernel :
Une fois chargé dans la RAM, le noyau :
Effectue une configuration matérielle de base,
Ouvre le disque mémoire initial initramfs (initial RAM File System) pour l’utiliser comme système de
fichiers racine temporaire,
Exécute le script /init dans l'initramfs pour :
Charge les pilotes nécessaires (ex: pour disques NVMe, LVM, chiffrement LUKS).
Détecte et monte la partition racine (/) réelle (ex: /dev/sda2 sur /root).
Utilise pivot_root pour basculer vers cette vraie racine.
Passe au vrai système de fichiers racine,
Monte les systèmes de fichiers présents dans /etc/fstab
L’initramfs est retiré de la RAM
Passe le process du demarrage a init

7. Inspection du dépannage
Le noyau Linux stocke les messages d’informations et d’erreurs (y compris les messages de démarrage) dans un
espace de mémoire appelé tampon circulaire du noyau (kernel ring buffer).
Le tampon circulaire du noyau est vidé à chaque arrêt du système ou appel de la commande dmesg --clear.
Afficher les messages du tampon: dmesg
Afficher les messages d’initialisation (cas de systemd) :
journalctl -b ou journalctl --boot : Affiche les journaux du démarrage actuel (depuis le
dernier boot).
-b -0 : Démarrage actuel (identique à -b).
-b -1 : Démarrage précédent.
-b -2 : Avant-dernier démarrage, etc.
journalctl -k ou journalctl --dmesg : Affiche uniquement les messages du noyau (équivalent
à dmesg, mais avec la mise en forme de journalctl).
Journalctl --list-boots : Liste les démarrages précédents en précisant :
Les N° de démarrage relatifs au démarrage en cours,
Les empreintes d’identification,
Les dates du 1er et du dernier message correspondant
Les messages de journalisation de systemd sont mis dans les fichiers log dans le répertoire /var/log/journal/
Lire des fichiers log dans des répertoires autres que /var/log/journal/: journalctl -D
les fichiers log de systemd ne sont pas des fichiers texte brut.

8. Init :
init exécute les scripts d’initialisation et lance les services (démons) du système
Il existe plusieurs implémentations de init :
SysV init : Contrôle les démons et ressources qui seront disponibles à base des niveaux de services
(runlevels) compris entre 0 et 6.
Upstrat : a été utilisé dans Ubuntu, remplacé par systemd.
systemd : Un système moderne, compatible avec les runlevels du SysV. Adopté par la plupart des
distributions Linux actuellement.
Le processus du gestionnaire de service porte le PID 1.

8.1 SysV init :

Dans cette norme, Linux peut fonctionner dans un état système donné. Ces états s’appellent runlevels (niveaux
d’exécution) :
Utilise des runlevels (niveaux d'exécution numérotés de 0 à 6) pour définir l'état du système.
Chaque runlevel active/désactive des services via des scripts situés dans /etc/init.d/.
Limites :
Démarrage séquentiel (lent pour les systèmes modernes).
Pas de gestion native des dépendances entre services.
Runlevels :
0 : Arrêt du système.
1 (s ou single) : Mode mono-utilisateur sans réseau.
2 : Mode multi-utilisateur, sans réseau.
3 : Mode multi-utilisateur complet (réseau et console).
4 : Non utilisé (laissé pour l’administrateur).
5 : Mode multi-utilisateur avec environnement graphique.
6 : Redémarrage du système.
Le runlevel par défaut du système est précisé dans le fichier /etc/inittab par la ligne (par exp. niveau 5) :
i[Link]initdefault:
Les scripts à gérer par init sont rangés dans le répertoire /etc/init.d/
Chaque script qui devrait se lancer dans le runlevel X est lié par un lien symbolique mis dans /etc/rcX.d/ avec 0 ≤
X ≤ 6.
/etc/inittab n’existe plus dans les distributions récentes.
Connaître le runlevel courant du système : $ runlevel
Basculer entre les runlevels à chaud : \(init ou\) telinit

8.2 Upstart :

Développé pour : Ubuntu Linux


Date d’apparition : 2006
Date d’arrêt : 2016
Les scripts sont mis dans: /etc/init
Lister les services du système : initctl list
Implémenté pour mieux gérer le multitâches (dépendance entre services, etc.).
Gère les ressources et services du système sous forme d’unités (units).
Chaque unité est composée de nom, de type et de fichier de configuration correspondant.
Sept types d’unités :
1. Service (*.service) : Le service peut être démarré/arrêté/rechargé.
2. Cible (*.target) : Regroupe d’autres unités. Permet de retrouver la notion de runlevel.
3. Socket (*.socket) : socket réseau ou socket de système de fichiers.
4. Périphérique (*.device) : s’associe à un périphérique matériel.
5. Montage (*.mount) : Définit un point de montage dans le système de fichiers.
6. Auto-montage (*.automount) : Comme mount, avec montage automatique.
7. Snapshot (*.snapshot) : Un état sauvegardé du systemd.
Le contrôle des unités systemd est assuré par la commande systemctl.
Syntaxe: systemctl action
Exemple: service cron: Systemctl start [Link]

Systemd :

Actions :
1. start/stop/restrat : démarrer/arrêter/redémarrer l’unité.
2. status : vérifier l’état de l’unité.
3. is-active : vérifier l’état d’activation de l’unité (si elle est en cours d’exécution).
4. enable/disable : activer/désactiver le démarrage de l’unité lors du démarrage du système.
5. is-enabled : vérifier si l’unité est active (démarre avec le système).
6. list-unit-files : Liste toutes les unités disponibles.
7. list-units --type=service : Lister seulement les services.
La cible (target) est un type d’unités qui regroupe plusieurs autres unités.
Il existe des cibles système (system targets) qui équivalent aux runlevels de la norme System V.
Basculer entre les cibles : systemctl isolate/set-default .target
Runlevels ↔ Cibles systemd
[Link], [Link] (runlevel 0): Arrête le système.
[Link], [Link] (runlevel 1): Mode mono-utilisateur.
[Link], [Link] (runlevel 3): Mode multi-utilisateur.
[Link]/[Link], [Link] (runlevels 2 et 4): identiques au 3 par défaut.
[Link], [Link] (runlevel 5): Mode graphique multiutilisateur.
[Link], [Link] (runlevel 6): Redémarrer le système.
Changer la cible de démarrage par défaut : # systemctl set-default .target
Connaître la cible de démarrage par défaut : # systemctl get-default
Arrêter/suspendre/hiberner/redémarrer le système : systemctl poweroff/suspend/hibernate/reboot

Cron files

/etc/crontab: For core system jobs.


/etc/cron.d/: For system jobs (modularly from packages/services).
/var/spool/cron/: For users and their jobs (where each user's crontab file resides)
/etc/[Link]/, /etc/[Link]/, et /etc/[Link]/ sont exclusivement exécutés par
Anacron. 30 01 * * * root /root/[Link] >>/root/[Link] 2>>/root/ [Link] le 2 signifie les erreurs Si
/etc/[Link] existe, seuls les utilisateurs (non-root) listés peuvent planifier les tâches par crontab. 2. Sinon, Si
/etc/[Link] existe, seuls les utilisateurs (non-root) listés ne peuvent pas planifier les tâches par crontab.
|RHEL 7 |cronie |crond |yum |/var/log/cron | |CentOS 8+ |cronie |crond |dnf |/var/log/cron |
|Fedora |cronie |crond |dnf |/var/log/cron| |Debian |cron |cron |apt |/var/log/syslog| |Ubuntu
|cron |cron |apt |/var/log/syslog| |Arch |cronie |cronie |pacman |/var/log/[Link]|

Systemd fichier :

/etc/systemd/system/ Créer un fichier .timer : /etc/systemd/system/[Link] Créer le service correspondant :


/etc/systemd/system/[Link] Activer l’unité timer : # systemctl enable [Link] Démarrer l’unité
timer : # systemctl start [Link] WantedBy=[Link] : Cette directive indique à Systemd comment
gérer votre unité (ici, [Link]) lorsque vous utilisez la commande systemctl enable.

systemd-run --on-calendar='2021-10-06 11:30' date systemd-run --on-active="2m" ./[Link]* Lister les timers actifs :
systemctl list-timers Lister tous les timers : systemctl list-timers --all En cas de modification de l’option OnCalendar,
recharger le démon : systemctl daemon-reload

anacron

/etc/anacrontab: For Anacron's central configuration (defining periods, delays, job identifiers, and
directories/commands to run).
/etc/[Link]/: For daily system jobs (scripts placed here are run daily by Anacron via run-parts).
/etc/[Link]/: For weekly system jobs (scripts placed here are run weekly by Anacron).
/etc/[Link]/: For monthly system jobs (scripts placed here are run monthly by Anacron).
/var/spool/anacron/: For timestamps of executed jobs (Anacron's state files, used to track last execution
dates). anacron est concu seulemnt pour les admin pour runné les taches administratives localise dans
/etc/anacron . les tache sont localise dans /etc/[Link] .... • -f : Force l'exécution immédiate des tâches, et
ignore les fichiers dateurs. • anacron -u est un moyen de "remettre à zéro" le compteur de temps d'Anacron
pour certaines tâches, sans avoir à subir leur exécution immédiate.. • -t anacrontab : Utilise le fichier anacrontab
défini, à la place de celui par défaut. Par exemple : anacron -t ~/.anacron/anacrontab • -T : Teste la syntaxe de
votre anacrontab, et indique les erreurs.

at La commande at est utile pour la planification de tâche à exécuter une seule fois. Le service (demon) [Link] doit
être actif Temps : HH:MM [MM/DD/YY] Mot_clé [+valeur unité] -c Affiche les commandes d’un job spécifié par son ID. • -d
Supprimer le job spécifié par son ID. (Alias de atrm) • -f Lire les commandes depuis un fichier au lieu du stdin. • -l Lister
les jobs en attente de l’utilisateur. (Alias de atq)

Si /etc/[Link] existe, seuls les utilisateurs (non-root) listés peuvent planifier les tâches par at. 2. Sinon, Si /etc/[Link]
existe, seuls les utilisateurs (non-root) listés ne peuvent pas planifier les tâches par at. 3. Sinon (aucun des deux
n’existe), l’accès dépend de la distribution utilisée.

- Cron et Crontab :
Crontabs utilisateur :
Cron est un démon (service) qui vérifie chaque minute un ensemble de tables afin de déterminer les
tâches à exécuter.
Ces tables s’appellent crontabs.
Les tâches à exécuter s’appellent cron jobs.
Chaque utilisateur possède sa propre crontab.
Un cron job s’exécute seulement si le système est démarré (n’est pas éteint) au moment programmé pour
l’exécution et crond est actif. ![[Pasted image [Link]]]
Crontabs Système :
Ce sont des fichiers texte qui gèrent les cron jobs système planifiés.
Ils ne peuvent être édités que par l’utilisateur root
Fichiers : • /etc/crontab • Tous les fichiers du répertoire /etc/cron.d
Les scripts mis dans le répertoire /etc/[Link], /etc/[Link], / etc/[Link] ou /etc/[Link] se
lanceront avec la fréquence appropriée
Variables crontab :
HOME=/var/log : Définit le répertoire de travail par défaut où cron exécute les commandes.
MAILTO="admin@[Link]" : Spécifie où envoyer les sorties (stdout/stderr) des commandes cron.
PATH=/usr/local/bin:/usr/bin:/bin : Définit les répertoires où cron cherche les commandes.
SHELL=/bin/bash : Définit le shell utilisé pour exécuter les commandes
*/5 * * * * /scripts/clean_logs.sh
Créer des tâches cron utilisateur:
crontab -l : Lister ses tâches crontab
crontab -r : Effacer ses tâches crontab
crontab -e : Créer/éditer son fichier crontab
crontab -u "user" -e : Créer/éditer le fichier crontab d’un autre utilisateur
Utiliser directement un éditeur de texte pour éditer /etc/crontab ou les fichiers dans /etc/cron.d
Exemple : 30 01 * * * root /root/[Link] >>/root/[Link] 2>>/root/[Link]
Configurer l’accès à cron :
Si /etc/[Link] existe, seuls les utilisateurs (non-root) listés peuvent planifier les tâches par crontab.
Sinon, Si /etc/[Link] existe, seuls les utilisateurs (non-root) listés ne peuvent pas planifier les tâches
par crontab.
Sinon (aucun des deux n’existe), l’accès dépend de la distribution utilisée.

- Systemd timers :
Systemd timers:
Systemd est un init system moderne et un service manager pour Linux.
Systemd Timers sont un équivalent des cron Jobs.
Systemd Timers offrent un contrôle plus raffiné et sont donc souvent préférés pour la gestion des services
(demons).
Créer un fichier .timer : /etc/systemd/system/[Link].
Créer le service correspondant : /etc/systemd/system/[Link]
Activer l’unité timer : # systemctl enable [Link]
Démarrer l’unité timer : # systemctl start [Link] ![[Pasted image [Link]]]
OnCalendar: définit le temps d’exécution de la commande.
Persistent=true: Ceci assure que la commande soit exécutée après démarrage, si la machine est éteinte quand la
tâche est planifiée.
WantedBy=[Link]: spécifie que le timer doit être activé (enabled) quand le service [Link] est activé.
:: sudo systemctl enable [Link]
Détails onCalendar : * | * - * - * | * : * : *
1.
Jour de la semaine Sat, Thu, Mon
2.

la date year-month-date
1. 2021-10-15 est le 15 Octobre
2.

10- 15 chaque année le 15 Octobre


3.

01-01 chaque nouvelle année


3.
: * : * - hour:minute:second

![[Pasted image [Link]]]

ExecStart: définit les commandes (main process) que doit lancer ce service personnalisé. (ExecStartPre,
ExecStartPost)
ExecStop: définit les commandes qu’on doit exécuter au moment où il faut stopper ce service. (ExecStopPre,
ExecStopPost)
Type: le mecanisme utilisé par le service pour notifier le système que le service start-up a fini. (simple, exec,
oneshot, dbus, …)
Systemd timers Propriété :
En cas de modification de l'option OnCalendar dans un fichier .timer systemd, vous devez recharger
systemd pour appliquer les changements a laide de la commande : sudo systemctl daemon-reload
Lister les timers actifs : systemctl list-timers
Lister tous les timers : systemctl list-timers --all
Systemd peut être utilisé pour planifier les tâche à exécution unique à travers la commande systemd-run :
Crée un timer et un service transitoires (visibles via systemctl list-timers --all).
Automatiquement supprimés après exécution. Idéal pour des tests rapides ou des tâches non récurrentes.
( systemctl enable [Link] (Timer permanent))

- Anacron :
Différence entre anacron et cron :
Si, au moment où une tâche était planifiée par cron, la machine était éteinte ⇒ cron n’exécutera pas cette
tâche au prochain démarrage. ⇒ cron est plus adéquat aux serveurs (24/7).
Si, au moment où une tâche était planifiée par anacron, la machine était éteinte ⇒ anacron exécutera
cette tâche au prochain démarrage. Si le système est démarré en permanence, les tâches d’anacron sont
lancées chaque jour à 07h30 par cron.
Anacron :
Le fichier /etc/anacrontab ressemble au fichier crontab.
Chaque ligne contient les champs suivants :
1. Cycle d’exécution en nombre de jours (un nombre ou @daily, @weekly, @monthly)
2. Minutes à attendre après démarrage du système pour exécuter la commande (peut être 0).
3. Étiquette: nom unique à attribuer à la tâche, pour les log.
4. Commande à exécuter. -> Exemple : 7 15 [Link] /bin/sh /home/sics/[Link]
1. 7 → Période en jours (ici, tous les 7 jours).
2. 15 → Délai aléatoire (en minutes) avant exécution (ici, max 15 min).
3. [Link] → Nom identifiant la tâche (stocké dans /var/spool/anacron/ pour le
suivi).
4. /bin/sh /home/sics/[Link] → Commande à exécute
Option de Anacron :
-f : Force l'exécution immédiate des tâches, et ignore les fichiers dateurs.
-u : Met à jour à la date dans les fichiers dateurs, mais ne lance rien.
-t anacrontab : Utilise le fichier anacrontab défini, à la place de celui par défaut. Par exemple : anacron -t
~/.anacron/anacrontab
-T : Teste la syntaxe de votre anacrontab, et indique les erreurs.

- At :
La commande at est utile pour la planification de tâche à exécuter une seule fois.
Le service (demon) [Link] doit être actif
Procédure :
Lancer la commande : at
Définir les commandes à exécuter
Quitter en appuyant sur CTRL+D.
Temps : HH:MM MM/DD/YY | Mot_clé +valeur unité

-> ┌──(root㉿kali)-[/etc]
└─# at now + 1 minute
warning: commands will be executed using /bin/sh
at Sat Jun 7 [Link] 2025
at> echo $(date) >> [Link]
at> <EOT>
job 1 at Sat Jun 7 [Link] 2025
- Options de la commande at :
1. -c Affiche les commandes d’un job spécifié par son ID.
2. -d Supprimer le job spécifié par son ID. (Alias de atrm) •
3. -f Lire les commandes depuis un fichier au lieu du stdin.
4. -l Lister les jobs en attente de l’utilisateur. (Alias de atq
5. Commande : atq : Affiche les jobs planifiés
6. Commande : atrm [ID2 [ID3 ...]] supprime les jobs spécifiés

On peut restreindre l’accès au planificateur de tâches dans :


Si /etc/[Link] existe, seuls les utilisateurs (non-root) listés peuvent planifier les tâches par at.
Sinon, Si /etc/[Link] existe, seuls les utilisateurs (non-root) listés ne peuvent pas planifier les tâches par
at.
Sinon (aucun des deux n’existe), l’accès dépend de la distribution utilisée

Vous aimerez peut-être aussi