Fichier imprimable PDF
Transcription
Fichier imprimable PDF
Introduction aux systèmes GNU/Linux Séance 6 inetdoc.net Philippe Philippe Latu Latu // Université Université Toulouse Toulouse 33 –– Paul Paul Sabatier Sabatier Plan séance 6 Séance Séance 6 6 -- Initialisation Initialisation du du Système Système GNU/Linux GNU/Linux Identifier Identifier les les étapes étapes de de sélection sélection d'un d'un système système d'exploitation d'exploitation Analyser Analyser le le fonctionnement fonctionnement des des niveaux niveaux de de démarrage démarrage Caractériser Caractériser le le découpage découpage de de l'espace l'espace mémoire mémoire du du système système kernelspace kernelspace & & userspace userspace Analyser Analyser la la gestion gestion des des modules modules pilotes pilotes de de périphériques périphériques runlevels runlevels sysfs sysfs & & udev udev Manipulations Manipulations réalisables réalisables sur sur machines machines virtuelles virtuelles Étudier Étudier la la liste liste des des services services lancés lancés au au démarrage démarrage Différencier Différencier les les modules modules utilisés utilisés entre entre système système hôte hôte et et système système virtuel virtuel inetdoc.net - 2/26 Initialisation du système POST POST + + BIOS BIOS POST POST → → Power Power On On Self Self Test Test BIOS BIOS → → Basic Basic Input Input Output Output System System Premiers Premiers programmes programmes appelés appelés par par le le processeur processeur Analyse Analyse de de la la configuration configuration matérielle matérielle Recherche Recherche d'un d'un système système d'exploitation d'exploitation Ordre Ordre de de scrutation scrutation défini défini dans dans les les paramètres paramètres du du BIOS BIOS Pour Pour chaque chaque périphérique périphérique désigné désigné → → lecture lecture du du Master Master Boot Boot Record Record (MBR) (MBR) Si Si le le code code Boot Boot Loader Loader est est présent présent dans dans un un MBR MBR → → initialisation initialisation du du système système inetdoc.net - 3/26 Initialisation du système Master Master Boot Boot Record Record Contient Contient le le code code Boot Boot Loader Loader Désigne Désigne la la partition partition d'amorçage d'amorçage Accède Accède au au gestionnaire gestionnaire d'amorce d'amorce Gestionnaire Gestionnaire d'amorce d'amorce → → 22 exemples exemples LILO LILO → → Linux Linux Loader Loader Accès Accès direct direct aux aux adresses adresses disque disque Écriture Écriture du du code code MBR MBR àà chaque chaque changement changement de de configuration configuration GRUB2 GRUB2 → → Grand Grand Unified Unified Boot Boot Loader Loader Code Code modulaire modulaire àà deux deux «étages» «étages» → → Boot Boot Loader Loader + + Shell Shell Support Support GPT GPT → → Grand Grand Partition Partition Table Table Support Support systèmes systèmes de de fichiers fichiers + + RAID RAID + + LVM LVM Fichier Fichier de de configuration configuration lu lu àà chaque chaque initialisation initialisation inetdoc.net - 4/26 Initialisation du système Partition Partition ou ou répertoire répertoire /boot /boot Fichiers Fichiers noyau noyau + + configuration configuration gestionnaire gestionnaire d'amorce d'amorce $$ mount mount || /dev/vda2 /dev/vda2 grep grep boot boot on on /boot /boot type type ext2 ext2 (rw,relatime,errors=continue) (rw,relatime,errors=continue) Contenu Contenu du du répertoire répertoire $$ ls ls -1X -1X /boot /boot grub grub Gestionnaire d'amorce lost+found lost+found config-3.2.0-3-amd64 config-3.2.0-3-amd64 initrd.img-3.2.0-3-amd64 initrd.img-3.2.0-3-amd64 System.map-3.2.0-3-amd64 System.map-3.2.0-3-amd64 vmlinuz-3.2.0-3-amd64 vmlinuz-3.2.0-3-amd64 Partie monolithique du noyau $$ ls ls -1X -1X /boot/grub/part* /boot/grub/part* /boot/grub/partmap.lst /boot/grub/partmap.lst /boot/grub/parttool.lst /boot/grub/parttool.lst /boot/grub/part_acorn.mod /boot/grub/part_acorn.mod /boot/grub/part_amiga.mod /boot/grub/part_amiga.mod /boot/grub/part_apple.mod /boot/grub/part_apple.mod /boot/grub/part_bsd.mod /boot/grub/part_bsd.mod /boot/grub/part_gpt.mod /boot/grub/part_gpt.mod /boot/grub/part_msdos.mod /boot/grub/part_msdos.mod /boot/grub/part_sun.mod /boot/grub/part_sun.mod /boot/grub/part_sunpc.mod /boot/grub/part_sunpc.mod /boot/grub/parttool.mod /boot/grub/parttool.mod Modules de gestion des types de partitions inetdoc.net - 5/26 Initialisation du système Partie Partie monolithique monolithique du du noyau noyau Fichier Fichier bzimage bzimage → → image image compressée compressée du du noyau noyau Initialisation Initialisation → → éclatement éclatement en en plusieurs plusieurs zones zones mémoire mémoire discontigues discontigues Source wikipedia inetdoc.net - 6/26 Initialisation du système Disque Disque RAM RAM initial initial Shell Shell + + boîte boîte àà outils outils busybox busybox → → chargement chargement des des modules modules utiles utiles $$ mkdir mkdir initrd initrd && && cd cd initrd initrd $$ gzip gzip -dc -dc /boot/initrd.img-3.2.0-3-amd64 /boot/initrd.img-3.2.0-3-amd64 || cpio cpio -idv -idv $$ tree tree -L -L 11 .. ├── ├── bin bin ├── ├── conf conf ├── ├── etc etc Processus parent ├── ├── init init busybox ├── ├── lib lib ├── ├── lib64 lib64 ├── ├── run run ├── ├── sbin sbin └── └── scripts scripts 88 directories, directories, 11 file file $$ tree tree -L -L 22 lib lib lib lib ├── ├── firmware firmware │ │ ├── ├── cis cis │ │ └── └── isci isci ├── ├── klibc-zwaqV1ZlhQoBCjGimVZufRwsjdg.so klibc-zwaqV1ZlhQoBCjGimVZufRwsjdg.so ├── ├── modprobe.d modprobe.d │ │ └── └── aliases.conf aliases.conf Arborescence des ├── modules ├── modules modules du noyau │ └── 3.2.0-3-amd64 │ └── 3.2.0-3-amd64 ├── ├── udev udev │ │ ├── ├── ata_id ata_id │ │ ├── ├── edd_id edd_id │ │ ├── ├── firmware.agent firmware.agent …… inetdoc.net - 7/26 Compilation d'un nouveau noyau Conditions Conditions initiales initiales L'utilisateur L'utilisateur etu etu appartient appartient au au groupe groupe système système src src L'arborescence L'arborescence /usr/src /usr/src appartient appartient au au groupe groupe src src Les Les paquets paquets suivants suivants doivent doivent être être installés installés $$ $$ $$ $$ $$ $$ $$ ## kernel-package kernel-package fakeroot fakeroot libncurses-dev libncurses-dev cd cd /usr/src /usr/src && && wget wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.5.3.tar.bz2 http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.5.3.tar.bz2 tar tar xf xf linux-3.5.3.tar.bz2 linux-3.5.3.tar.bz2 ln ln -s -s linux-3.5.3 linux-3.5.3 linux linux && && cd cd linux linux Reprise de la configuration cp cp /boot/config-3.2.0-3-amd64 /boot/config-3.2.0-3-amd64 .config .config du noyau de la distribution make menuconfig make menuconfig make-kpkg make-kpkg --rootcmd --rootcmd fakeroot fakeroot --initrd --initrd kernel_image kernel_image cd cd .. ; .. ; su su dpkg dpkg -i -i linux-image-3.5.3_3.5.3-10.00.Custom_amd64.deb linux-image-3.5.3_3.5.3-10.00.Custom_amd64.deb inetdoc.net - 8/26 Compilation d'un nouveau noyau Interface Interface de de configuration configuration Arborescence Arborescence assez assez complexe complexe et et difficile difficile àà assimiler assimiler Noyau Noyau de de la la distribution distribution → → configuration configuration déjà déjà fonctionnelle fonctionnelle Pour Pour débuter débuter → → procéder procéder par par modifications modifications successives successives inetdoc.net - 9/26 Gestionnaire d'amorce Configuration Configuration déclenchée déclenchée À À chaque chaque nouvelle nouvelle installation installation de de noyau noyau À À chaque chaque nouvelle nouvelle version version des des outils outils Script Script update-grub update-grub & & personnalisation personnalisation ## update-grub update-grub Generating Generating grub.cfg grub.cfg ... ... Found Found background background image: image: /usr/share/images/desktop-base/desktop-grub.png /usr/share/images/desktop-base/desktop-grub.png Found Found linux linux image: image: /boot/vmlinuz-3.5.3 /boot/vmlinuz-3.5.3 nouveau noyau Found Found initrd initrd image: image: /boot/initrd.img-3.5.3 /boot/initrd.img-3.5.3 Found Found linux linux image: image: /boot/vmlinuz-3.2.0-3-amd64 /boot/vmlinuz-3.2.0-3-amd64 noyau de la Found Found initrd initrd image: image: /boot/initrd.img-3.2.0-3-amd64 /boot/initrd.img-3.2.0-3-amd64 distribution done done $$ ls ls -1X -1X /etc/grub.d/ /etc/grub.d/ 00_header 00_header 05_debian_theme 05_debian_theme 10_linux 10_linux 20_linux_xen 20_linux_xen 30_os-prober 30_os-prober 40_custom 40_custom personnalisation 41_custom 41_custom du menu README README inetdoc.net - 10/26 Initialisation du noyau Architecture Architecture & & processeur processeur Exemple Exemple des des processeurs processeurs Intel Intel → → mode mode protégé, protégé, 32 32 ou ou 64 64 bits bits Séquence Séquence d'initialisation d'initialisation Paramètres Paramètres de de la la ligne ligne de de commande commande Systèmes Systèmes embarqués embarqués Lancement Lancement de de la la boîte boîte àà outils outils busybox busybox Architecture Architecture Mémoire Mémoire virtuelle virtuelle Ordonnanceur Ordonnanceur → → horloges horloges et et interruptions interruptions Ouverture Ouverture du du disque disque RAM RAM initial initial Chargement Chargement des des modules modules propres propres au au système système Distinction Distinction entre entre noyau noyau monolithique monolithique & & modulaire modulaire Noyau Noyau monolithique monolithique → → architecture architecture figée figée inetdoc.net - 11/26 Représentation des périphériques Contexte Contexte historique historique Unix Unix Tout Tout est est fichier fichier Arborescence Arborescence /dev /dev Création Création manuelle manuelle des des entrées entrées àà la la demande demande Commande Commande /sbin/MAKEDEV /sbin/MAKEDEV fournie fournie avec avec le le paquet paquet makedev makedev Contexte Contexte contemporain contemporain Répartition Répartition entre entre espaces espaces mémoire mémoire Kernelspace Kernelspace userspace userspace inetdoc.net - 12/26 Représentation des périphériques Kernelspace Kernelspace → → espace espace noyau noyau Arborescences Arborescences /sys /sys et et /proc /proc sysfs sysfs procfs procfs Système Système de de fichiers fichiers virtuel virtuel Exportation Exportation des des informations informations du du noyau noyau vers vers l'espace l'espace utilisateur utilisateur Système Système de de fichiers fichiers spécial spécial Informations Informations sur sur les les processus processus Paramètres Paramètres de de réglage réglage des des sous-systèmes sous-systèmes du du noyau noyau Userspace Userspace → → espace espace utilisateur utilisateur Démon Démon udev udev Actions Actions déclenchées déclenchées par par les les informations informations sysfs sysfs Règles Règles de de configuration configuration dans dans /etc/udev /etc/udev inetdoc.net - 13/26 Représentation des périphériques Démon Démon udev udev et et unité unité de de disque disque Informations Informations sur sur le le matériel matériel $$ lspci lspci 00:06.0 00:06.0 || grep grep -i -i storage storage SCSI SCSI storage storage controller: controller: Red Red Hat, Hat, Inc Inc Virtio Virtio block block device device Informations Informations collectées collectées par par udev udev ## udevadm udevadm info info --query=all --query=all --name=/dev/vda --name=/dev/vda P: P: /devices/pci0000:00/0000:00:06.0/virtio2/block/vda /devices/pci0000:00/0000:00:06.0/virtio2/block/vda N: N: vda vda S: S: disk/by-path/pci-0000:00:06.0-virtio-pci-virtio2 disk/by-path/pci-0000:00:06.0-virtio-pci-virtio2 E: E: DEVLINKS=/dev/disk/by-path/pci-0000:00:06.0-virtio-pci-virtio2 DEVLINKS=/dev/disk/by-path/pci-0000:00:06.0-virtio-pci-virtio2 E: E: DEVNAME=/dev/vda DEVNAME=/dev/vda E: E: DEVPATH=/devices/pci0000:00/0000:00:06.0/virtio2/block/vda DEVPATH=/devices/pci0000:00/0000:00:06.0/virtio2/block/vda E: E: DEVTYPE=disk DEVTYPE=disk E: E: ID_PART_TABLE_TYPE=dos ID_PART_TABLE_TYPE=dos E: E: ID_PATH=pci-0000:00:06.0-virtio-pci-virtio2 ID_PATH=pci-0000:00:06.0-virtio-pci-virtio2 E: E: ID_PATH_TAG=pci-0000_00_06_0-virtio-pci-virtio2 ID_PATH_TAG=pci-0000_00_06_0-virtio-pci-virtio2 ... ... inetdoc.net - 14/26 Représentation des périphériques Démon Démon udev udev et et interface interface réseau réseau Informations Informations sur sur le le matériel matériel $$ lspci lspci 00:03.0 00:03.0 || grep grep -i -i ethernet ethernet Ethernet Ethernet controller: controller: Red Red Hat, Hat, Inc Inc Virtio Virtio network network device device Informations Informations collectées collectées par par udev udev ## udevadm udevadm info info --query=all --query=all --path --path /sys/class/net/eth0 /sys/class/net/eth0 P: P: /devices/pci0000:00/0000:00:03.0/virtio0/net/eth0 /devices/pci0000:00/0000:00:03.0/virtio0/net/eth0 E: E: DEVPATH=/devices/pci0000:00/0000:00:03.0/virtio0/net/eth0 DEVPATH=/devices/pci0000:00/0000:00:03.0/virtio0/net/eth0 E: E: ID_BUS=pci ID_BUS=pci E: E: ID_MODEL_ID=/sys/devices/pci0000:00/0000:00:03.0/virtio0 ID_MODEL_ID=/sys/devices/pci0000:00/0000:00:03.0/virtio0 E: E: ID_VENDOR_ID=0x1af4 ID_VENDOR_ID=0x1af4 E: E: IFINDEX=2 IFINDEX=2 Accès aux autres attributs avec la commande E: INTERFACE=eth0 E: INTERFACE=eth0 udevadm info --attribute-walk --path=/sys/class/net/eth0 E: MATCHDEVID=0x0 E: MATCHDEVID=0x0 E: E: MATCHIFTYPE=1 MATCHIFTYPE=1 E: E: SUBSYSTEM=net SUBSYSTEM=net ... ... inetdoc.net - 15/26 Représentation des périphériques Démon Démon udev udev $$ ## ## ## ## ## Exemple Exemple de de règles règles sur sur les les interfaces interfaces réseau réseau cat cat /etc/udev/rules.d/70-persistent-net.rules /etc/udev/rules.d/70-persistent-net.rules This This file file was was automatically automatically generated generated by by the the /lib/udev/write_net_rules /lib/udev/write_net_rules program, program, run run by by the the persistent-net-generator.rules persistent-net-generator.rules rules rules file. file. You You can can modify modify it, it, as as line, line, and and change change only only long long as as you you keep keep the the value value of of the the each each rule rule on on aa single single NAME= NAME= key. key. Identification du composant matériel ## PCI PCI device device 0x8086:0x1502 0x8086:0x1502 (e1000e) (e1000e) SUBSYSTEM=="net", SUBSYSTEM=="net", ACTION=="add", ACTION=="add", DRIVERS=="?*", DRIVERS=="?*", ATTR{address}=="e4:11:5b:25:28:f5", ATTR{address}=="e4:11:5b:25:28:f5", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" NAME="eth0" Adresse MAC Nom d'interface référencé dans /etc/network/interfaces ## PCI PCI device device 0x8086:/sys/devices/pci0000:00/0000:00:1c.3/0000:25:00.0 0x8086:/sys/devices/pci0000:00/0000:00:1c.3/0000:25:00.0 (iwlwifi) (iwlwifi) SUBSYSTEM=="net", SUBSYSTEM=="net", ACTION=="add", ACTION=="add", DRIVERS=="?*", DRIVERS=="?*", ATTR{address}=="08:11:96:b4:33:10", ATTR{address}=="08:11:96:b4:33:10", ATTR{dev_id}=="0x0", ATTR{dev_id}=="0x0", ATTR{type}=="1", ATTR{type}=="1", KERNEL=="wlan*", KERNEL=="wlan*", NAME="wlan0" NAME="wlan0" inetdoc.net - 16/26 Manipulations sur les modules Correspondance Correspondance entre entre matériel matériel et et nom nom de de module module ## lspci lspci -k -k ... ... 00:19.0 00:19.0 Ethernet Ethernet controller: controller: Intel Intel Corporation Corporation 82579LM 82579LM Gigabit Gigabit Network Network Connection Connection (rev (rev 04) 04) Subsystem: Subsystem: Hewlett-Packard Hewlett-Packard Company Company Device Device 1630 1630 Kernel Kernel driver driver in in use: use: e1000e e1000e Paquet Paquet kmod kmod Ensemble Ensemble des des outils outils lsmod lsmod → → liste liste des des modules modules chargés chargés en en mémoire mémoire modprobe modprobe → → (dé)chargement (dé)chargement d'un d'un module module et et de de ses ses dépendances dépendances en en mémoire mémoire Fichier Fichier /etc/modules /etc/modules Liste Liste des des modules modules àà charger charger obligatoirement obligatoirement inetdoc.net - 17/26 Manipulations sur les modules Paramétrage Paramétrage des des modules modules Fichiers Fichiers du du répertoire répertoire /etc/modprobe.d/ /etc/modprobe.d/ Exemple Exemple pour pour une une interface interface wifi wifi ## cat cat /etc/modprobe.d/ieee80211.conf /etc/modprobe.d/ieee80211.conf options options cfg80211 cfg80211 ieee80211_regdom=EU ieee80211_regdom=EU ## lsmod lsmod || grep grep cfg80211 cfg80211 cfg80211 137140 cfg80211 137140 22 mac80211,iwlwifi mac80211,iwlwifi rfkill 19012 rfkill 19012 55 bluetooth,cfg80211,hp_wmi bluetooth,cfg80211,hp_wmi ## grep grep cfg80211 cfg80211 /var/log/kern.log /var/log/kern.log …… cfg80211: cfg80211: Calling Calling CRDA CRDA for for country: country: EU EU cfg80211: cfg80211: Regulatory Regulatory domain domain changed changed to to country: country: EU EU cfg80211: (start_freq cfg80211: (start_freq -- end_freq end_freq @@ bandwidth), bandwidth), (max_antenna_gain, (max_antenna_gain, max_eirp) max_eirp) cfg80211: (2402000 cfg80211: (2402000 KHz KHz -- 2482000 2482000 KHz KHz @@ 40000 40000 KHz), KHz), (N/A, (N/A, 2000 2000 mBm) mBm) cfg80211: (5170000 cfg80211: (5170000 KHz KHz -- 5250000 5250000 KHz KHz @@ 40000 40000 KHz), KHz), (N/A, (N/A, 2000 2000 mBm) mBm) cfg80211: (5250000 cfg80211: (5250000 KHz KHz -- 5330000 5330000 KHz KHz @@ 40000 40000 KHz), KHz), (N/A, (N/A, 2000 2000 mBm) mBm) cfg80211: (5490000 cfg80211: (5490000 KHz KHz -- 5710000 5710000 KHz KHz @@ 40000 40000 KHz), KHz), (N/A, (N/A, 2700 2700 mBm) mBm) inetdoc.net - 18/26 Manipulations sur les modules Applications Applications Gestion Gestion des des capteurs capteurs de de carte carte mère mère Bus Bus I2C I2C non non hotplug hotplug Exécution Exécution du du script script sensors-detect sensors-detect du du paquet paquet lm-sensors lm-sensors Scrutation Scrutation du du bus bus I2C I2C Liste Liste des des composants composants reconnus reconnus → → modules modules àà charger charger manuellement manuellement Recherches Recherches sur sur les les modules modules Comment Comment retrouver retrouver un un module module dans dans l'arborescence l'arborescence système système ?? Comment Comment charger charger un un module module en en mémoire mémoire ?? Comment Comment vérifier vérifier qu'un qu'un module module est est chargé chargé ?? Quelles Quelles sont sont les les informations informations udev udev sur sur l'interface l'interface réseau ? réseau ? inetdoc.net - 19/26 Dynamic Kernel Module Support (dkms) Environnement Environnement de de mise mise àà jour jour autonome autonome de de modules modules Gestion Gestion des des modules modules analogue analogue àà celle celle des des paquets paquets Compilation Compilation Construction Construction de de paquets paquets (dés)installation (dés)installation Application Application d'un d'un processus processus d'assurance d'assurance qualité qualité Possibilité Possibilité de de publier publier des des modules modules «propriétaires» «propriétaires» indépendants indépendants Exemple Exemple pratique pratique Installer Installer le le paquet paquet xtables-addons-dkms xtables-addons-dkms inetdoc.net - 20/26 Initialisation des processus 2 2 processus processus initiaux initiaux Processus Processus idle idle Occupe Occupe le le processeur processeur pendant pendant les les «temps «temps morts» morts» Processus Processus init init Assure Assure le le séquencement séquencement du du démarrage démarrage du du système système Contrôle Contrôle l'accès l'accès àà la la partition partition racine racine Exécute Exécute le le programme programme /sbin/init /sbin/init ps ps aux aux --sort=pid --sort=pid USER PID USER PID %CPU %CPU root 11 0.0 root 0.0 root 22 0.0 root 0.0 root 33 0.0 root 0.0 root 55 0.0 root 0.0 root 66 0.0 root 0.0 root 77 0.0 root 0.0 root 88 0.0 root 0.0 %MEM VSZ %MEM VSZ 0.0 0.0 10636 10636 0.0 00 0.0 0.0 00 0.0 0.0 00 0.0 0.0 00 0.0 0.0 00 0.0 0.0 00 0.0 RSS RSS 796 796 00 00 00 00 00 00 TTY TTY ?? ?? ?? ?? ?? ?? ?? STAT STAT Ss Ss SS SS SS SS SS SS START START 09:58 09:58 09:58 09:58 09:58 09:58 09:58 09:58 09:58 09:58 09:58 09:58 09:58 09:58 TIME TIME 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 COMMAND COMMAND init init [2] [2] [kthreadd] [kthreadd] [ksoftirqd/0] [ksoftirqd/0] [kworker/u:0] [kworker/u:0] [migration/0] [migration/0] [watchdog/0] [watchdog/0] [migration/1] [migration/1] inetdoc.net - 21/26 Niveaux de démarrage - runlevels 7 7 niveaux niveaux http://refspecs.linuxfoundation.org/lsb.shtml http://refspecs.linuxfoundation.org/lsb.shtml 00 11 22 33 44 55 66 halt halt single single user user mode mode multiuser multiuser with with no no network network services services exported exported normal/full normal/full multiuser multiuser reserved reserved for for local local use, use, default default is is normal/full normal/full multiuser multiuser multiuser multiuser with with aa display display manager manager or or equivalent equivalent reboot reboot Niveaux Niveaux définis définis dans dans /etc/inittab /etc/inittab Debian Debian → → niveau niveau 22 par par défaut défaut → → id:2:initdefault: id:2:initdefault: 1 1 niveau niveau → → un un ensemble ensemble de de scripts scripts àà exécuter exécuter inetdoc.net - 22/26 Niveaux de démarrage - runlevels Scripts Scripts d'initialisation d'initialisation des des services services Répertoire Répertoire /etc/init.d /etc/init.d Fonctions Fonctions usuelles usuelles start start → → lancement lancement du du service service stop stop → → arrêt arrêt du du service service reload reload → → rechargement rechargement de de la la configuration configuration restart restart → → redémarrage redémarrage complet complet du du service service Appel Appel direct direct du du script script ou ou commande commande service service # # /etc/init.d/apache2 /etc/init.d/apache2 reload reload [....] [....] Reloading Reloading web web server server config: config: apache2 apache2 .. ok ok # # service service apache2 apache2 reload reload [....] [....] Reloading Reloading web web server server config: config: apache2 apache2 .. ok ok inetdoc.net - 23/26 Niveaux de démarrage - runlevels Scripts Scripts d'initialisation d'initialisation des des services services Exemple Exemple de de script script → → /etc/init.d/atd /etc/init.d/atd #! #! /bin/sh /bin/sh description des ### BEGIN INIT INFO ### BEGIN INIT INFO dépendances # atd # Provides: Provides: atd # # Required-Start: Required-Start: $syslog $syslog $time $time $remote_fs $remote_fs # # Required-Stop: Required-Stop: $syslog $syslog $time $time $remote_fs $remote_fs # # Default-Start: Default-Start: 22 33 44 55 # 00 11 66 # Default-Stop: Default-Stop: # # Short-Description: Short-Description: Deferred Deferred execution execution scheduler scheduler # Debian # Description: Description: Debian init init script script for for the the atd atd deferred deferred # executions scheduler # executions scheduler ### END INIT ### END INIT INFO INFO # # # Ryan # Author: Author: Ryan Murray Murray <[email protected]> <[email protected]> # # PATH=/bin:/usr/bin:/sbin:/usr/sbin PATH=/bin:/usr/bin:/sbin:/usr/sbin DAEMON=/usr/sbin/atd DAEMON=/usr/sbin/atd PIDFILE=/var/run/atd.pid PIDFILE=/var/run/atd.pid test test -x -x $DAEMON $DAEMON |||| exit exit 00 .. /lib/lsb/init-functions /lib/lsb/init-functions instructions pour chaque commande case case "$1" "$1" in in start) start) log_daemon_msg log_daemon_msg "Starting "Starting deferred deferred execution execution scheduler" scheduler" "atd" "atd" start_daemon start_daemon -p -p $PIDFILE $PIDFILE $DAEMON $DAEMON log_end_msg log_end_msg $? $? ;; ;; stop) stop) log_daemon_msg log_daemon_msg "Stopping "Stopping deferred deferred execution execution scheduler" scheduler" "atd" "atd" killproc -p $PIDFILE $DAEMON killproc -p $PIDFILE $DAEMON log_end_msg log_end_msg $? $? ;; ;; force-reload|restart) force-reload|restart) $0 $0 stop stop $0 start $0 start inetdoc.net - 24/26 Niveaux de démarrage - runlevels Répertoires Répertoires /etc/rc*.d /etc/rc*.d Liens Liens symboliques symboliques vers vers les les scripts scripts du du répertoire répertoire /etc/init.d /etc/init.d Un Un même même script script → → exécution exécution àà des des niveaux niveaux différents différents Lien Lien débutant débutant par par 'S' 'S' → → commande commande start start Lien Lien débutant débutant par par 'K' 'K' → → commande commande stop stop Numéro Numéro d'ordre d'ordre d'exécution d'exécution après après la la première première lettre lettre Exemple Exemple du du service service atd atd $$ find find /etc/rc*.d /etc/rc*.d -type -type ll -iname -iname \*atd \*atd /etc/rc0.d/K01atd /etc/rc0.d/K01atd /etc/rc1.d/K01atd /etc/rc1.d/K01atd /etc/rc2.d/S18atd /etc/rc2.d/S18atd /etc/rc3.d/S18atd /etc/rc3.d/S18atd /etc/rc4.d/S18atd /etc/rc4.d/S18atd /etc/rc5.d/S18atd /etc/rc5.d/S18atd /etc/rc6.d/K01atd /etc/rc6.d/K01atd inetdoc.net - 25/26 Bilan séance 6 Initialisation Initialisation du du système système Gestionnaire Gestionnaire d'amorce d'amorce 22 espaces espaces mémoire mémoire Contrôle Contrôle de de l'empreinte l'empreinte mémoire mémoire Modules Modules du du noyau noyau kernelspace kernelspace → → sysfs sysfs userspace userspace → → udev udev Démons Démons & & Services Services Basic Input Ouput System → recherche MBR MBR Master Boot Record → recherche GRUB GRUB Grand Unified Bootloader → recherche noyau kernel Noyau Linux → exécution /sbin/init runlevels runlevels Niveaux de démarrage → exécution des services GRUB2 GRUB2 Noyau Noyau Linux Linux BIOS Gestion Gestion autonome autonome de de chaque chaque processus processus inetdoc.net - 26/26