Démarrage (boot)
Firmware : BIOS, UEFI
Quelques marques : AMI, Insyde (Dell, HP, Sony, etc.), Phoenix (Fujitsu, etc.)
Le BIOS (et son MBR),
créés au début des années 1980, sont remplacés ces dernières années par le BIOS UEFI
(et GPT) pour plusieurs raisons :
UEFI
UEFI (Unified EFI) utilise GPT
Docs, articles & tutos
Aide
Boot
- ESP (EFI System Partition) - partition de 100 ou 200 Mb, au format
FAT32 => on retrouve dans /etc/fstab son point de montage /boot/efi
Secure boot (SecureBoot)
Fr : Comment
désactiver le Secure Boot (pour que la clé USB soit visible au boot, etc.)
Angl : Infos, Outil
insyde (exécutable Windows 8) - permet une vérification de la fonctionnalité "UEFI Secure Boot"
Commande Linux qui affiche l'état du secure boot : mokutil --sb-state
GPT
GPT (GUID Partition Table) dépasse les limitations du MBR, par ex. GPT utilise des valeurs sur 64 bits et peut gérer des disques de taille
max. 9,4 zettaoctets (9,4 x 1021).
Tables de partitionnement GPT, et outils pour GPT
Différences entre GPT et MBR
MBR
MBR ne gère que 4 partitions primaires et des disques de 2 To max. (valeurs sur 32 bits).
Infos Wikipédia
Tables de partitionnement MBR
Outils, réparation
Boot Linux
Naviguer dans le code de syslinux
Comprend les boot loaders suivants qui permettent de charger un noyau Linux :
- IsoLinux : boot loader ISO 9660/El
Torito (CD-ROMs).
- SysLinux (howto)
: boot loaders pour le système de fichiers FAT.
- EXTLinux : boot loaders pour les systèmes de fichiers ext2/3/4
ou btrfs.
- PXELinux : boot loader
réseau.
- Memdisk : module auxiliaire, utilisé conjointement avec un de
ces boot loaders.
Debug
Outils
Récolte infos
- Outils qui génèrent un rapport graphique sur ce qui se passe durant le boot.
- De même concernant systemd
- systemd‐analyze
- son option blame affiche les processus démarrés au boot
- son option plot génère un graphique au format SVG
- systemd-analyze plot > services.svg
- son option dot permet d'utiliser l'outil dot du package GraphViz pour afficher les dépendances
- systemd-analyze dot | dot -Tsvg > dependances.svg
- systool, fait partie du package sysfsutils
Réparation
Articles
Chargeur d'amorçage
- Bellamy : infos concernant les disques durs, les partitions, le multi-boot
et les outils associés.
Infos & articles fr
Infos & articles angl
Multi-boot (dual boot)
Boot réseau
- netboot_live (DHCP, TFTP, PXE, NFS, etc.)
- Boot PXE Linux : article fr, article fr
- Tutos angl : Ubuntu community, pxe.pdf,
part 1 (DHCP, TFTP, SAMBA), part
2 (NFS, etc.)
Etapes du boot
1ère étape : BIOS ou UEFI
2eme étape : MBR + grub
3eme étape : Boot loader - Boot record (GNU/Linux : grub sur la partition)
4eme étape (GNU/Linux) : fichiers du dossier /boot
initrd (initial RAM disk), initramfs (initial RAM file system)
Sous /boot, les fichiers initrd.img (Ubuntu 12.04, 12.10 ; SLES 11 SP1 ; RHEL 4, etc.) sont remplacés par des, fichiers
initramfs.img depuis le noyau 2.6.13 dans certaines distrib (RHEL 6, etc.).
- doc : Wikipédia, Wikipedia,
/usr/share/doc/linux-doc/initrd.txt.gz, /usr/src/linux-source-3.2.0/Documentation/initrd.txt, $ man 4 initrd, $ man -k initramfs
- initrd.img et initramfs.img sont des images de boot (en fait des arborescences de fichiers, archivées par cpio, et compressées par
gzip).
- En lister le contenu (fichier shell-script init, et autres fichiers)
:
- $ lsinitramfs -l /boot/initrd.img-`uname -r` | more
- $ zcat /boot/initrd.img-$(uname -r) | cpio -it > /tmp/liste.txt
- $ gzip -dc /boot/initrd.img-$(uname -r) | cpio -itv > /tmp/liste.txt (option v => liste détaillée)
- Accéder au contenu
- copier le fichier initrd.img et le renommer avec le suffixe .gz, puis le parcourir par le navigateur de fichiers, qui utilisera le
gestionnaire d'archive (File Roller, sous Ubuntu)
- ou, décompresser le contenu manuellement :
- $ mkdir /tmp/verif ; cp /boot/initrd.img-2.6.32-27-generic /tmp/verif ; cd /tmp/verif ; gzip -dc initrd.img-2.6.32-27-generic| cpio -i
- Au boot, initrd.img (ou initramfs.img) est décompressé, désarchivé dans une RAM
disk, monté, et utilisé comme système de fichiers racine ( / ) initial ; ensuite le root device ( partition / ) est
cherché et monté.
- En cas d'ajout de driver, un nouvel initrd.img (initramfs.img) doit être constitué et sera utilisé pour booter.
- Debian/Ubuntu : installer le paquet initramfs-tools et voir : man update-initramfs
- Outil : dracut
5e étape : le reste
Le reste du boot peut être masqué à l'écran, par l'option de boot "quiet" ou
par le chargeur graphique (ex : Plymouth à partir d'Ubuntu 10.04).
Système d'initialisation System V (init, inittab, etc.) d'Unix
Le noyau démarre le shell-script init (inclus dans le initrd ou dans le initramfs),
qui charge les modules des périphériques et démarre les autres programmes (services, etc.) en fonction de la configuration (fichier
/etc/inittab, fichiers de /etc/rc*.d).
- En ajoutant comme option au noyau : init=/bin/bash, init sera remplacé par ce shell.
- En cas de plantage/bloquage d'init au boot : pour avoir un shell qui permette de déboguer, en
démarrer un là où ça plante, ex :
mount -r /dev/mapper/vg-root /newroot ||
/bin/sh
Les fichiers de démarrage des services sont des shell-scripts dans /etc/init.d, les services sont démarrés si des liens existent dans
/etc/rc*.d vers le fichier /etc/init.d du service.
Pour ajouter un shell-script dans /etc/init.d, créer un shell-script (/etc/init.d/monservice), le rendre exécutable, et indiquer de l'utiliser
au démarrage (# update-rc.d monservice defaults)
systemd-networkd — Network configuration
Les unes après les autres, les distribs GNU/Linux remplacent le système d'initialisation séquentiel System V par systemd
(infos Wikipédia), qui permet un démarrage // et donc plus rapide.
- Debian l'adopte en v.8 Jessie, à cette occasion est né le fork Devuan, ce qui permet le choix entre init et systemd.
- En 2015 Ubuntu avait remplacé init par upstart, ensuite Ubuntu adopta
également systemd.
Dossiers de fichiers de config : /etc(ou run)/systemd/system, /usr/libsystemd/system
Mes infos concernant la gestion des périphériques (par devfs, udev) et de leurs modules
Raspbian Jessie, systemd, et module RTC sur Raspberry Pi
Article
