- Date : noyau Linux a été créé par Linus Torvalds à partir de 1991.
- De nombreuses distributions : Mandrake, Red Hat, Fedora, Debian, Knoppix, Suse, Slackware, Gentoo,... (http://www.developpez.net/forums/viewtopic.php?t=145061)
- Licence GPL de GNU : le code source de Linux est accessible gratuitement.
- Interface graphique :
X = interface graphique, développée au MIT, permettant de créer des applications graphiques fonctionnant sur diverses plateformes.
X-Window = interface graphique des stations UNIX.
Sous Linux il existe une implémentation libre du système X-Window appelée XFree86.
- Système de fichiers supportés par Linux (pour la majorité des distributions) : Ext2, Ext3, ReiserFS, Linux Swap(, FAT16, FAT32, NTFS)
1. Chargement du bios (inventaire des périphériques).
2. Recherche d’un système d’exploitation :
Si on ne démarre pas sur une disquette, le BIOS charge en mémoire le MBR (Master Boot Record, 1er secteur de la 1ère piste du 1er disque dur, 512 octets).
3. Si LILO dans le MBR => exécution du chargeur de système LILO (LInux LOader, installé le plus souvent dans le MBR) en 2 parties.
4. Le prompt LILO s'affiche, et au bout de quelques secondes (durée réglable), le système par défaut est lancé.
5. Le noyau de ce système quel qu'il soit (Linux, Windows, ...) est décompressé "à la volée" et est chargé en mémoire.
BSD :
Scripts de démarrage dans le dossier /etc et commencant par les lettres rc.
System V :
Scripts de démarrage dans le dossier /etc/init.d (liens symboliques créées dans les dossiers /etc/rcX.d ou X correspond au niveau d’exécution encours). En fait, c’est le fichier /etc/inittab qui indique à init ce qu’il doit faire quand il change de niveau d’exécution. Par défaut, quand le processus init change de niveau, il exécute les scripts correspondants dans le bon dossier.
Linux :
Niveau de chargement par défaut (runlevels) est réglable dans le fichier inittab :
- 0 : provoque un arrêt (shutdown) de la machine
- 1 : pour rentrer en mode mono-utilisateur, réservé à root
- 2 : mode multi-utilisateurs, sans NFS
- 3 : mode multi-utilisateurs avec tous les services réseaux
- 4 : démarrage du serveur graphique X11 en plus
- 5 : redémarrage de la machine (la commande reboot lance le niveau 5).
Pendant ce court laps de temps, l'utilisateur peut donner des directives à LILO, notamment pour démarrer le système suivant un autre niveau que le niveau par défaut. Ainsi, on peut entrer :
- linux 1 (single), si on veut travailler exclusivement en mode mono-utilisateur
- linux 5, pour démarrer le serveur X, et un Window Manager, directement en niveau 5 graphique.
Compte-rendu de l'initialisation (chargements des pilotes de périphériques) : /var/log/dmesg
Messages générés pendant l'initialisation du système : commande dmesg
Le premier processus, init :
Noyau du système chargé, décompressé, s'exécute et s'initialise : réservation mémoire, prise en compte de la zone d'échange (swap), détection du matériel et chargement des pilotes des périphériques, montage du système de fichiers et enfin lance le 1er processus /sbin/init
Le paramétrage de ce processus fondamental est entièrement assuré par l'exécution de ce fichier script /etc/inittab.
Travailler sous le système LINUX, même en dehors de tout contexte réseau, implique une connexion au système. Une session monoposte n'est jamais anonyme.
Processus d'identification :
- Donner le nom d'utilisateur (login)
- puis le mot de passe (password)
- Si compte authentifié sur la machine, il y a rappel de la précédente connexion sous le même nom.
- Prompt modifiable (cf $PS1 dans /etc/profile).
Voici un exemple qui indique l'heure suivie du nom de l'utilisateur en rouge :
PS1='\t \[\033[0;31m]\u\033[0m]'
Lorsque nous sommes authentifiés, nous disposons des ressources du système selon les permissions que l'administrateur (le "root") a accordées.
Lors de la création de son compte, un utilisateur est associé à un type de shell (fichier /etc/passwd).
1. D'abord le script /etc/profile communs à tous les users y compris root
2. Celui-ci cherche à exécuter tous les scripts /etc/profile.d/*.sh (alias.sh et numlock.sh)
3. Puis il y a exécution de $HOME/.bash_profile (la variable $HOME contient le chemin vers le répertoire personnel). Il s'agit ainsi d'un fichier de démarrage personnel et paramétrable.
4. A son tour il exécute $HOME/.bashrc dans lequel il est recommandé de placer toutes les fonctions ou alias personnels (car .bashrc est exécuté dans tout shell)
5. Enfin le précédent exécute /etc/bashrc, dans lequel on place les alias globaux et la définition du prompt $PS1
6. Puis le prompt utilisateur s'affiche et le shell attend une commande ...
/etc/bashrc est le dernier script d'initialisation du shell bash.
Chaque utilisateur peut ajouter des commandes shell au fichier de profil personnel, ~/.bash_profile
- Interface utilisateur qui attend la saisie d'une ligne de commande et sa validation.
- Peut être choisi lors de la création de l'utilisateur (Linuxconf).
Certaines sont internes au noyau, comme ls, cp ...
D'autres peuvent être des alias, des pseudos d'autres commandes.
Le shell regarde si la commande que l'utilisateur lui lance est interne. Sinon, s'il s'agit d'un alias d'une autre commande.
Sinon, il recherche un programme sur le système de fichiers, portant le nom de la commande, en se servant des chemins listés dans la variable $PATH.
S'il trouve un tel programme, il l'exécute, en lui passant les arguments spécifiés sur la ligne de commande.
On peut se connecter plusieurs fois sur une même machine sous des identités différentes.
(ouvrir des terminaux ou consoles virtuelles avec Alt-Fx, x=1 à 6, puis passer de l'une à l'autre avec la même commande).
Processus = programme en cours d'exécution.
Le noyau Linux lance, gère les processus et contrôle leurs échanges avec les périphériques. Il tient à jour une table des processus en exécution.
Le premier processus, ancêtre de tous les autres est init. Tous les processus successifs sont créés par un processus parent et appartiennent à un utilisateur. Chacun est identifié par un numéro : PID
ps : liste des processus
ps aux : donne tous les processus, avec leur numéro PID
kill PID : met fin normalement à la tâche
kill -9 PID : action si nécessaire encore plus radicale !
Sous X-KDE, on peut utiliser TaskManager, qui montre l'arborescence des processus.
Le fichier /etc/passwd contient toutes les informations relatives aux utilisateurs (login, mots de passe, ...). Seul le superutilisateur (root) doit pouvoir le modifier.
Format :
nom_du_compte : mot_de_passe : numero_utilisateur : numero_de_groupe : commentaire : répertoire : programme_de_demarrage
Le fichier /etc/group contient la liste des utilisateurs appartenant aux différents groupes. En effet, lorsque de nombreux utilisateurs peuvent avoir accès au système, ceux-ci sont fréquemment rassemblés en différents groupes ayant chacun leurs propres droits d'accès aux fichiers et aux répertoires.
Format :
nom_de_groupe : champ_special : numero_de_groupe : membre1, membre2
Déconnexion et arrêt (volontaire)
- Pour se déconnecter, entrer exit ou logout dans la console.
- Il ne faut pas éteindre brutalement ou rebooter sauvagement ! Chaque processus actif doit recevoir du noyau du système la directive de s'arrêter proprement, les systèmes de fichiers doivent être démontés.
- En cas de coupure brutale, le système effectuera des réparations au prochain démarrage, à l'aide de l'utilitaire fsck, avant de procéder à l'initialisation du système.
Pour arrêter le système, l'administrateur root lance l'une des commandes suivantes :
- arrêt immédiat
halt (= shutdown -h now)
- arrêt différé
shutdown -h <nb mn> il s'écoule <nb min> minutes entre l'avertissement et l'arrêt. •reboot
shutdown -r [<nb mn> | now] ou reboot ou ctrl-alt-del
On peut éteindre à l'invite du message : The system is halted
Environnement graphique
Pour spécifier l'environnement graphique à démarrer lors du startx, mettre ça dans le fichier ~/.xinitrc :
#!/bin/sh
exec wmaker // pour Window Maker
Variables de substitution prédéfinies :
* $0 nom du script (pathname)