Démarrage de Linux

publicité
Introduction à Linux : chapitre 1
Linux : Présentation
Linux : un hobby devenu un système d'exploitation professionnel
●
Retour en août 1991... un étudiant finlandais envoie un message sur
comp.os.minix commençant par ces quelques mots :
Hello everybody out there using minix
I'm doing a (free) operating system (just a hobby,
won't be big and professional like gnu) for
386 (486) AT clones.
●
Cet étudiant est Linus Torvalds, et le hobby dont il parle est devenu ce
que nous connaissons aujourd'hui... Linux.
Linux : un système d'exploitation professionnel
●
●
●
A l'origine un projet d'étudiant, Linux est maintenant un système
d'exploitation mûr pour l'industrie, qui fait partie intégrante de la
stratégie système et réseaux de nombres d'entreprises
Fait aussi partie de la stratégie de développement de grands noms tels
que Oracle, Sun, IBM, HP, Intel : Linux bénéficie d'une réelle
reconnaissance par les plus grands.
Linux rivalise avec les systèmes d'exploitations traditionnels, c'est
pourquoi il devient inévitable
Linux : ses atouts
Linux intéresse principalement pour les avantages suivants :
●
●
●
Stabilité et robustesse
Excellente qualité de service : pas « de plantage surprise » ni
d'instabilité, grâce à une gestion efficaces des processus
Performances, rendement et adaptabilité
Peu gourmand en ressources, même en mode multi-utilisateurs.
Exploitable sur machines de configuration modeste ou obsolète, tout en
restant à jour, mais aussi sur multiprocesseurs, clusters, et mainframes
Coût réduit
Le noyau Linux et la plupart des modules étant gratuit, chacun peut
construire une version adaptée à ses besoins. Cependant, des
distributions, gratuites ou payantes, sont disponibles sur Internet (Red
Hat, Fedora, Mandrake, SuSESlackware, Debian, etc.)
Linux : ses atouts (suite)
Linux présente d'autres avantages :
●
Assistance
●
Libre et Ouvert : code source disponible et modifiable
●
Portable : disponible sur de nombreux types de systèmes
●
Conforme aux normes et standards
●
Très proche des autres Unix
●
Nombreux logiciels interopérables, souples et extensibles
●
X Window
●
Dynamique industrielle
●
Bénéficie à tous les utilisateurs
●
Migration facilitée par émulateurs et portage d'applications
Linux : applications
●
●
●
●
●
Station de développement
La plupart des langages disponibles : ADA95, C, C++, Fortran, Java, Cobol, LISP,
Prolog, SmallTalk, Delphi (Kylix) + outils de développement perfectionnés : contrôle
des sources, travail en groupe (groupware), suivi des erreurs, validation et vérification
Station bureautique
Suites bureautiques de qualité professionnelle (Open Office) couplées aux
environnements graphiques évolués tels KDE ou Gnome : traitement de texte, tableur,
logiciel de présentation et de dessin, gestion de fichiers, partage de documents, etc.
Station réseau
Palette complète d'outils réseau : navigateur, courrier électronique, agenda (IBM
Lotus), FTP, messagerie instantanée, IRC, newsgroups, et outils professionnels :
ping, traceroute, analyseur de protocoles, etc.
Station graphique ou PAO
Centre multimédia
Linux : applications (suite)
●
●
●
●
Serveur de fichiers et d'impression
Support des trois principaux protocoles de partages de fichiers: NFS (UNIX),
SMB (Windows), AppleShare (MacOS) et protocoles de partages
d'imprimantes. Egalement serveur de fax.
Serveur Réseau puissant
Serveur Web (Apache) avec support de PHP, MySQL, etc., serveur FTP,
newsgroups, courrier électronique, DNS
Puissant firewall (iptables), routage (RIP, IGRP, OSPF, BGP4, etc.), proxy NAT
Serveur d'applications client/serveur
SGBD relationnels, relationnels-objets ou objets, commerciaux (Oracle 9i, IBM
DB2) ou libres (mySQL, PostgreSQL), serveurs d'applications JAVA
Admnistration
IBM Tivoli, IBM Websphere, BEA Weblogic
Linux : présentation
●
●
Linux est un système d'exploitation libre de type UNIX développé par le
finlandais Linus Torvalds.
Le noyau de Linux, le « kernel », le coeur du système, est développé sous
licence GNU

●
●
●
La licence GNU spécifie que le code source est disponible à quiconque,
mais que sa version originale appartient à son auteur.
Autour de ce noyau s'articulent des modules, les composants du systèmes qui
permettent d'interfacer le noyau avec les périphériques
Le Shell est l'interface utilisateur en mode texte
Le système X Window est un environnement graphique, au dessus duquel une
surcouche logicielle peut être implémentée, permettant d'étendre les fonctions
de X Window : par ex. KDE ou Gnome
Linux : présentation (suite)
●
Il existe de nombreuses applications pour Linux

●
●
La compilation de diverses applications, du noyau, des environnements
graphiques, donne lieu à des distributions, généralement fournies avec une
interface d'installation du système et des outils d'administration
Il existe nombre de distributions, gratuites ou payantes

●
Gratuites ou payantes, libres ou protégées
RedHat et sa version gratuite Fedora, Mandrake, SuSE, Debian, Slackware,
Et une foule de distributions moins connues adaptées à certains besoins
 Exemple : Knoppix, une version démarrable à partir d'un CDROM
 Xbox Linux, transforme une console Xbox en système Linux
 FraizeWall, qui offre une passerelle/firewall préconfigurés
 etc.
Linux : l'avenir
Dernier noyau disponible : 2.6
●
●
●
●
●
Adapté aussi bien aux mainframes, qu'aux stations de travail et
microcontrôleurs embarqués
Optimisation pour serveurs à 32 processeurs, support des
architectures Numa (Non Uniform Memory Access)
Derniers processeurs supportés
4 milliards d'utilisateurs connectés, 1 milliard de processus
possibles
Architecture UCLinux dédiée aux systèmes embarqués
Linux : présentation
NOTES
Introduction à Linux : chapitre 2
Linux en détail
Etapes de démarrage
●
●
●
●
●
●
●
●
Le BIOS vérifie le système (POST)
Bootloader 1 lancé à partir du MBR du disque dur principal
Le Boot1oader 1 lance le bootloader 2 sur la partition /boot/
Le Bootloader 2 charge le noyau Linux (kernel) et initrd en mémoire
Le noyau charge les modules nécessaires (initrd) et monte la partition root
en lecture seulement
Le noyau passe le contrôle du processus de démarrage au programme
/sbin/init.
/sbin/init : chargement des services et outils de l'espace utilisateur,
montage des partitions répertoriées dans /etc/fstab.
Invite de connexion de l'utilisateur
Bootloader : chargeur de démarrage
MBR : Master Boot Record
Etapes de démarrage : BIOS
●
Au démarrage, exécution du BIOS (Basic Input/Output System) stocké
en ROM (mémoire morte)

Test du système, recherche et vérification des périphériques,
principalement périphérique d'amorçage du système (disquette,
CDROM, ou disque dur)

Recherche du MBR sur le périphérique d'amorçage
●

MBR (Master Boot Record) : secteur de 512 octets, contient le
bootloader, ainsi que la table de partition du disque.
Chargement et exécution du Bootloader, suite d'instructions de
démarrage du système d'exploitation sur le périphérique.
Etapes de démarrage : chargeur de démarrage
●
Les deux chargeurs de démarrage les plus connus : GRUB ou LILO
●
Exécution divisée en deux étapes :
●
●

le BIOS exécute un binaire de taille réduite stocké dans le MBR

ce 1er chargeur localise et exécute un 2è chargeur stocké à l'endroit indiqué
dans la configuration (disque dur par ex.)
LILO : configuration succinte stockée dans le MBR. A chaque changement de
configuration, une écriture dans le MBR doit être faite (/sbin/lilo -v -v)
GRUB : chargeur plus récent, lecture possible de la configuration sur partition
ext2 ou ext3 dans /boot/grub/grub.conf
Etapes de démarrage : chargeur de démarrage
●
●
●
●
●
Affichage de l'écran de sélection des système d'exploitation ou des
différents noyaux Linux. Une séléction automatique d'un choix par
défaut est effectué au bout d'un laps de temps configurable.
En fonction du choix, exécution d'un binaire de noyau Linux stocké dans
/boot/ ; nom de type vmlinuz-<version-noyau> (où <version-noyau>
correspond à la version du noyau spécifiée dans les paramètres du
chargeur de démarrage)
chargement en mémoire de initrd, "image disque RAM initial" : utilisé
ensuite par le noyau pour charger des pilotes utiles au système (par ex.
pour disque SCSI)
Avertissement : Supprimer le répertoire /initrd/ provoquerait un échec de
votre système, avec un message d'erreur panique au moment du
démarrage.
Le processus de démarrage est cédé au noyau (kernel)
Etapes de démarrage : noyau
●
●
Le noyau initialise et configure la mémoire, les processeurs, le système
E/S, les périphériques de stockage, "standards"
Le noyau utilise ensuite initrd pour charger des pilotes et modules
spécifiques (principalement SCSI, RAID, USB) nécessaires au noyau
pour accéder au système de fichier réel et continuer le démarrage




●
Le fichier /boot/initrd.img est chargé en mémoire comme un périphérique
de stockage virtuel RAMDisk (par ex. /dev/ram0)
Ce disque virtuel RAMDisk est ensuite monté en tant que racine temporaire
du système de fichiers (/).
Les pilotes et modules mentionnés plus haut sont maintenant chargés par le
noyau.
initrd est démonté en tant que racine et la racine définitive est montée.
À ce stade, le noyau est chargé en mémoire et est désormais
opérationnel. Il faut maintenant initialiser l'environnement utilisateur.
Etapes de démarrage : init
●
●
●
●
Le programme /sbin/init finalise le processus de démarrage.
Il est guidé par le fichier /etc/inittab qui décrit l'ensemble des processus
qui sont lancés en fonction des circonstances :

principalement à l'initialisation du système, lorsque le système passe à un
niveau d'exécution différent (runlevel), lorsque les touches CTRL-ALTDEL sont pressées, etc.

Suivant le runlevel, les processus lancés sont divers : gestionnaire de son,
serveur de mail, web, scheduler de tâches (crond), etc.
/sbin/init devient parent ou grand-parent de tous les processus qui sont
lancés.
init tourne tout le temps. Si init meure, tous les processus meurent.
Etapes de démarrage : init (suite)
●
●
/etc/inittab lance d'abord le script /etc/rc.d/rc.sysinit
si::sysinit:/etc/rc.d/rc.sysinit
rc.sysinit réalise les opérations d'initialisation du système :










initialise la variable PATH pour les autres scripts
active la partition de swap
monte les partitions de disque dur suivant /etc/fstab
initialise le nom du système (hostname)
vérifie l'intégrité du système de fichiers
démarre la gestion des quotas
initialise le "Plug and Play"
prépare la gestion des modules
initialise l'horloge système
détruit les fichiers de verrouillage
Etapes de démarrage : init (suite)
●
●
init lance ensuite divers processus en fonction du niveau d'exécution
(runlevel) configuré dans inittab
Le runlevel est le contexte dans lequel se trouve le système et qui va
induire l'arrêt ou le démarrage de processus. On distingue 7 runlevels
différents :







●
0 - Arrêt du système (Halt)
1 - Mode mono-utilisateur
2 - Mode multi-utilisateurs (sans NFS)
3 - Mode Multi-utilisateurs
4 – Non utilisé
5 - Mode Multi-utilisateurs avec login graphique
6 – Redémarrage du système (Reboot)
Le runlevel peut changer pendant la vie du système. init effectue alors
les opérations correspondantes
Etapes de démarrage : init (suite)
●
●
●
●
En fonction du runlevel, innitab indique à init de démarrer les processus dont
les scripts de démarrage se trouvent dans le répertoire correspondant au
runlevel
Par ex : pour runlevel 5, /etc/rc.d/rc5.d/
En réalité, ces scripts sont des liens symboliques vers des scripts existants
dans le répertoire /etc/rc.d/init.d/.
On peut ainsi modifier le lien (ajouter, supprimer, renommer) sans affecter le
script auquel il fait référence
Le nom de ces liens symboliques décrit si les processus doivent être
démarrés (S, Started) ou arrêtés (K, Killed), et dans quel ordre (le nombre
suivant la 1ère lettre du nom)
Par ex : dans /etc/rc.d/rc5.d/ on trouve les scripts S10network et S55sshd
S10network indique que toutes les opérations relatives au démarrage du réseau sont effectuées
avant de démarrer le serveur de connexion sécurisée sshd
Etapes de démarrage : init (suite)
●
●
●
●
init arrête tout d'abord tous les liens symboliques K du répertoire en
émettant la commande /etc/rc.d/init.d/<commande> stop,
<commande> correspondant au processus à arrêter
Elle démarre ensuite tous les liens symboliques S :
/etc/rc.d/init.d/<commande> start
Par ex : le lien S55xinetd lancera la commande /etc/rc.d/init.d/xinetd
start
Remarque : on peut utiliser ces mêmes scripts en tant que superutilisateur (root) pour démarrer ou arrêter des services
Par ex : /etc/rc.d/init.d/httpd stop arrêtera le serveur Web Apache
Pour les runlevels 2 à 5, le script local (S99local) pointant vers
/etc/rc.d/rc.local est le dernier à être exécuté. Ce script permet de lancer
des commandes de personnalisation du système.
Etapes de démarrage : init (suite)
●
Après avoir exécuté tout les scripts de /etc/rc.d pour le runlevel, le script
/etc/inittab établit un processus /sbin/mingetty pour chaque console virtuelle
(invites de login) assignée à ce niveau d'exécution :



●
●
●
Pour les runlevels 2 à 5, six consoles virtuelles sont démarrées
Le runlevel 1 (mode mono-utilisateur) n'obtient qu'une console
Pour les runlevels 0 (arrêt) et 6 (redémarrage), aucune console n'est démarrée
mingetty est un getty, un gestionnaire (GET) de terminal (TTY, teletype). Le
getty attend une connexion sur les liens série. A la connexion, il configure le
lien série, demande un login et un mot de passe, puis effectue le processus
de login pour l'utilisateur
Pour le runlevel 5 (login graphique), /etc/inittab exécute le script
/etc/X11/prefdm qui affiche le login graphique
La séquence de démarrage est terminée.
Introduction à Linux
Les services réseaux
Les services réseaux
●
●
Plusieurs services réseaux disponibles

Partage de fichiers et d'imprimantes (NFS, SMB)

Serveurs de connexion sécurisée (sshd) ou pas (telnet)

Serveurs web (httpd = apache)

Serveurs FTP (wu-ftpd, pro-ftpd, etc.)

Etc.
Deux moyens de démarrer ces services :

À l'initialisation du runlevel ou par ligne de commande

À l'attente de connexion avec les TCP Wrappers et Xinetd
Lancement des services réseaux
●
●
●
●
●
●
Dans le chapitre précédent, nous avons vu comment démarrer un service (réseau
ou pas) à l'initialisation du système ou par ligne de commande
Linux offre un contrôle d'accès sécurisé fiable grâce à la mise en oeuvre du
firewall IPTables
Cependant, pour accroître la sécurité, il est recommandé d'ajouter une couche de
protection supplémentaire individuelle à chaque service réseau démarré
Cette protection est offerte sur deux niveaux :
Les TCP Wrappers (enveloppeurs réseaux) qui détermine les machines
autorisées à se connecter à chaque service
Xinetd qui s'intercale entre les TCP Wrappers et le service réseaux et offre un
contrôle d'accès plus affiné au service réseau
Les enveloppeurs TCP
●
●
●
●
●
Les enveloppeurs TCP offrent un contrôle d'accès basé sur le nom ou
l'adresse de la machine qui tente la connexion
Lorsqu'une tentative de connexion à un service est effectuée
 L'enveloppeur TCP contrôle l'accès en fonction des fichiers
/etc/hosts.allow et /etc/hosts.deny
 Il loggue (enregistre) ensuite les informations de connexion dans le
fichier de logs /var/log/secure ou /var/log/messages
Si l'accès est donné, l'enveloppeur TCP n'interfère plus dans le processus
de communication entre le serveur et le client
Les enveloppeurs TCP sont ainsi complètement transparents dans le
contrôle d'accès à un serveur
Ils offrent de plus une gestion centralisée de l'accès aux services réseaux
Xinetd : un super-server
●
●
●
●
xinetd est un super-service enveloppé dans un enveloppeur TCP contrôlant
l'accès à un sous-réseau de services réseaux comme ftpd, telnetd, etc.
En ce sens, xinetd est un super-service car il centralise l'accès à d'autres services
réseaux et permet de les contrôler plus finement
xinetd offre une panoplie complète de gestion du service, allant du simple
contrôle d'accès à la redirection réseau, en passant par la gestion des ressources
et l'enregistrement de connexion (logging)
C'est un service très puissant. Cependant, beaucoup de services décident de
contrôler eux-même l'accès et se passent de xinetd

Exemples : Samba (httpd), sshd
Fonctionnement de xinetd
●
Xinetd écoute sur certains ports réseaux associés à des services
●
Lors d'une tentative de connexion à un service réseau géré par xinetd

Une première vérification d'accès est faite par l'enveloppeur TCP

Si l'accès est autorisé, xinetd vérifie l'accès et les modalités de démarrage
du service en fonction de sa propre configuration pour ce service

Si l'accès est autorisé par xinetd, une instance du service est démarrée à qui
la connexion est cédée. xinetd n'intervient plus alors dans le processus de
communication entre le serveur et le client

Xinetd gère les nouvelles tentatives de connexion à ce service, et en
fonction des ressources allouées, décide s'il doit lancer une nouvelle
instance de ce service
Xinetd : fichiers de configuration
●
●
/etc/xinetd.conf : configuration globale de xinetd
Le répertoire /etc/xinetd.d/ : fichiers de configuration spécifiques
au service


Un seul fichier est nécessaire, mais organisation plus simple
avec un fichier pour chaque service
● includedir /etc/xinetd.d (dans xinetd.conf)
La plupart des directives de configuration globale sont héritées
aux services
/etc/xinetd.conf : configuration globale
●
Paramètres généraux lus une seule fois au démarrage de xinetd

●
Lors de changement dans la configuration, nécessaire de
redémarrer xinetd
Exemple :
defaults
{
instances
= 60
log_type
= SYSLOG authpriv
log_on_success
= HOST PID
log_on_failure
= HOST
cps
= 25 30
}
includedir /etc/xinetd.d
/etc/xinetd.conf : configuration globale
●
●
●
●
●
●
Instances : nombre de requêtes maximum que xinetd peut gérer
log_type : les logs sont envoyées à syslogd avec la facilité
authpriv. Pour enregistrer directement dans un fichier sans envoyer
à syslogd, FILE /var/log/xinetdlog
log_on_success : engregistrer les connexions réussies. Par defaut,
l'adresse IP de la machine et le process ID du server lancé sont
enregistrés
log_on_failure : entregistrer les connexions non-réussies ou nonautorisées
Cps : nombre de connexion / seconde pour chaque service. Si cette
limite est atteinte, le service est inacessible pendant 30s.
includedir /etc/xinetd.d/ : inclus les options de configurations pour
chaque service, sous la forme d'un fichier spécifique
Le répertoire /etc/xinetd.d
●
●
Ce répertoire contient les fichiers de configuration spécifiques à
chaque service. Comme xinetd.conf, lus au démarrage de xinetd
une fois pour toute.
Exemple :
service telnet
{
flags
= REUSE
socket_type = stream
wait
= no
user
= root
server
= /usr/sbin/in.telnetd
log_on_failure += USERID
disable
= yes
}
Le répertoire /etc/xinetd.d
●
●
Service : nom du service. Correspond en général aux services
définis dans /etc/services file.
Flags : définis les attributs de la connexion. REUSE ordonne à
xinetd de réutiliser le socket pour une connexion Telnet
●
socket_type : définit le type de socket à stream
●
Wait : le service est simple-tâche (yes) our multi-tâches (no) ?
●
User : sous quel utilisateur le service doit être lancé
●
Server : définit le programme à lancer
●
●
log_on_failure : paramètres à enregistrer en cas de connexion
réussie, en plus des paramètres par défaut définis dans xinetd.conf
Disable : définit si le service est active ou pas
Téléchargement