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

Documents pareils