De la mise sous tension � la ligne de commande de Bash
Greg O'Keefe,
[email protected]
v0.7, April 2000
Voici une description rapide de ce qui se passe dans un syst�me Linux,
depuis l'instant o� vous mettez celui-ci sous tension, jusqu'au moment
o� vous vous loguez et obtenez la ligne de commande de bash (NDT :
Bourne Again SHell). Ce document est organis� "par lots" pour
faciliter la t�che des gens qui veulent mettre en place un syst�me �
partir du code source. Comprendre cela vous sera tr�s utile lorsque
vous aurez besoin de r�soudre des probl�mes ou de configurer votre
syst�me (version fran�aise par Dominique van den Broeck, Mai 2000,
[email protected] <mailto:
[email protected]>).
______________________________________________________________________
Table des mati�res
1. Introduction
2. Partie mat�rielle (Hardware)
2.1 Configuration
2.2 Exercices
2.3 Plus d'informations.
3. Lilo
3.1 Configuration
3.2 Exercices
3.3 Plus d'informations
4. Le noyau Linux
4.1 Configuration
4.2 Exercices
4.3 Plus d'informations
5. La biblioth�que C de GNU
5.1 Configuration
5.2 Exercices
5.3 Plus d'informations
6. Init
6.1 Configuration
6.2 Exercices
6.3 Plus d'informations.
7. Le syst�me de fichiers (filesystem)
7.1 Configuration
7.2 Exercices
7.3 Plus d'informations
8. D�mons noyau
8.1 Configuration
8.2 Exercices
8.3 Plus d'informations
9. Le journal syst�me (System Logger)
9.1 Configuration
9.2 Exercices
9.3 Plus d'informations
10. Getty et Login
10.1 Configuration
10.2 Exercices
11. Bash
11.1 Configuration
11.2 Exercices
11.3 Plus d'informations
12. Les commandes
13. Construire un syst�me Linux minimum � partir des sources.
13.1 Ce qu'il vous faut
13.2 Le syst�me de fichier (Filesystem)
13.3 MAKEDEV
13.4 Le noyau (kernel)
13.5 Lilo
13.6 Glibc
13.7 SysVinit
13.8 Ncurses
13.9 Bash
13.10 Util-linux (getty et login)
13.11 Sh-utils
13.12 Vers l'utilisabilit�
13.13 Astuces diverses
13.14 Plus d'informations
14. Conclusion
15. Section administrative
15.1 Copyright
15.2 Page principale
15.3 Retours
15.4 R�f�rences et remerciements.
15.5 Historique des changements
15.5.1 0.6 -> 0.7
15.5.2 0.5 -> 0.6
15.6 A faire (TODO)
______________________________________________________________________
11.. IInnttrroodduuccttiioonn
Je trouve frustrant qu'il se passe dans ma machine Linux des choses
que je ne comprends pas. Si, comme moi, vous souhaitez vraiment
comprendre votre syst�me plut�t que simplement savoir comment
l'utiliser, ce document devrait �tre un bon point de d�part. Ce genre
de "connaissance de fond" est aussi requis si vous voulez devenir un
as de la r�solution de probl�mes sous Linux.
Je pars du principe que vous avez une machine Linux en �tat de marche,
et que vous ma�trisez les bases d'Unix et de l'architecture mat�rielle
des PC. Si ce n'est pas le cas, The Unix and Internet Fundamentals
HOWTO <
http://www.linuxdoc.org/HOWTO/Unix-and-Internet-Fundamentals-
HOWTO.html> ("Les notions fondamentales d'Unix et Internet", miroirs
fran�ais en VO <
http://www.linuxfr.org/LDP/HOWTO/Unix-and-Internet-
Fundamentals-HOWTO.html> et VF
<
http://www.freenix.org/unix/linux/HOWTO/Unix-Internet-Fundamentals-
HOWTO.html>) est un excellent endroit pour d�buter. C'est un site
concis, lisible, et qui couvre toutes les bases.
Le sujet principal de ce document est la fa�on dont Linux d�marre.
Mais il se veut �galement �tre une ressource d'apprentissage plus
large. J'ai inclus des exercices dans chaque section. Si vous en
faites vraiment quelques uns, vous apprendrez bien plus qu'en vous
contentant de lire ce document.
Il y a aussi des liens vers du code source � t�l�charger, car j'esp�re
que certains lecteurs s'attaqueront au meilleur exercice
d'apprentissage de Linux que je connaisse : construire un syst�me �
partir du code source. Giambattista Vico, un philosophe italien
(1668-1744) disait ``verum ipsum factum'' ce qui signifie "la
compr�hension d�coule de l'exp�rience" (NDT : Traduction libre). Merci
� Alex (voir ``Remerciements'') pour cette citation.
Si vous souhaitez vous "la rouler vous-m�me", je vous conseille
d'aller voir Linux From Scratch HOWTO
<
http://www.linuxfromscratch.org> (LFS soit "Linux depuis z�ro"). LFS
fournit des instructions d�taill�es pour b�tir un syst�me complet et
exploitable � partir du code source. Sur le site web de LFS, vous
trouverez aussi une mailing-list (liste de diffusion) � disposition
des personnes qui construisent de tels syst�mes. Ce que j'ai inclus
dans ce document, ce sont des instructions pour construire un syst�me
"jouet", (voir ``B�tir un syst�me Linux minimal � partir des
sources'') purement pour l'exercice.
Les lots (NDT : "packages" en anglais et repris ci-apr�s) sont
pr�sent�s dans l'ordre o� ils apparaissent dans le processus de
d�marrage du syst�me. Cela signifie que si vous installez les
packages dans cet ordre vous pouvez red�marrer apr�s chaque
installation, et voir � chaque fois le syst�me se rapprocher petit �
petit de l'�tat o� il vous donnera la ligne de commande. Il y a une
notion de progression rassurante dans cela.
Je vous recommande de commencer par lire le texte principal de chaque
section, en ignorant les exercices et r�f�rences, puis de d�cider du
point jusqu'auquel vous souhaitez comprendre votre syst�me. Reprenez
alors depuis le d�but, en faisant les exercices et en relisant en
d�tail.
22.. PPaarrttiiee mmaatt��rriieellllee ((HHaarrddwwaarree))
Lorsque vous allumez votre ordinateur, celui-ci se teste lui-m�me pour
s'assurer que tous ses composants sont en �tat de marche. Cela
s'appelle le ``Power On Self Test'' (POST ou Auto-Test � l'Allumage).
Ensuite, un programme nomm� Bootstrap loader (Chargeur de boot), situ�
dans le BIOS en ROM, recherche un secteur de boot, ou secteur
d'amorce. Un secteur d'amorce est le premier secteur d'un disque et
contient un petit programme capable de charger un syst�me
d'exploitation. Les secteurs d'amorce sont marqu�s par un ``nombre
magique'' (valeur fixe caract�ristique) 0xAA55 = 43603 � l'octet 0x1FE
= 510. Ce sont les deux derniers octets du secteur. C'est de cette
fa�on que l'�lectronique peut d�terminer s'il s'agit d'un secteur
d'amorce ou pas.
Le bootstrap loader a une liste d'endroits o� chercher un secteur
d'amorce. Ma vieille machine regarde d'abord sur le lecteur de
disquette, puis sur le disque dur. Les machines modernes peuvent aussi
rechercher un secteur d'amorce sur un CD-ROM. S'il trouve un secteur
amor�able ("bootable"), il le charge en m�moire et passe ainsi le
contr�le au programme qui charge le syst�me d'exploitation en m�moire.
Sur un syst�me Linux typique, ce programme sera la premi�re �tape du
chargeur de LILO. Il existe malgr� tout plusieurs mani�res diff�rentes
de faire d�marrer ("booter") votre syst�me. Voir le _G_u_i_d_e _d_e
_l_'_u_t_i_l_i_s_a_t_e_u_r _d_e _L_I_L_O pour plus de d�tails. Voir la section ``LILO''
pour l'URL.
Evidement, il y a bien plus � dire sur ce que fait le hardware du PC.
Mais ce n'est pas l'objet de ce document. Lisez un des nombreux livres
traitant de l'architecture mat�rielle du PC.
22..11.. CCoonnffiigguurraattiioonn
La machine stocke des informations sur son propre �tat dans son CMOS.
Cela inclut la RAM et les types de disques install�s dans le syst�me.
Le BIOS de la machine contient un programme, Setup, qui vous permet de
modifier ces informations. Pour savoir comment y acc�der, regardez
attentivement les messages qui apparaissent sur votre �cran lorsque
vous mettez votre machine sous tension. Sur ma machine, il faut
appuyer sur la touche DEL (Suppr) avant qu'elle ne commence � charger
le syst�me d'exploitation.
22..22.. EExxeerrcciicceess
Une bonne fa�on d'en apprendre plus sur le hardware d'un PC est de
monter une machine � partir de composants d'occasion. Prenez au moins
un 386 pour pouvoir y installer Linux facilement. Cela ne vous co�tera
pas tr�s cher. Posez la question autour de vous, quelqu'un pourrait
bien vous donner une partie des pi�ces qu'il vous faut.
Allez voir Unios <
http://learning.taslug.org.au/resources>, (Ils
avaient une page sur <
http://www.unios.org>, mais elle a disparu) et
t�l�chargez, compilez et fabriquez votre disquette bootable. Ce n'est
qu'un programme bootable affichant ``Hello World!'', contenant � peine
plus de 100 lignes d'assembleur. Il serait int�ressant de voir � le
convertir en un format exploitable par l'assembleur GNU as.
Ouvrez l'image de la disquette bootable pour unios avec un �diteur
hexad�cimal. Cette image fait 512 octets de long. Exactement la
longueur d'un secteur. Trouvez-y le nombre magique 0xAA55. Faites la
m�me chose pour une disquette bootable de votre propre ordinateur.
Vous pouvez utiliser la commande dd pour la copier dans un fichier :
dd if=/dev/fd0 of=boot.sector. Faites _t_r_�_s attention � param�trer if
(fichier source) et of (fichier destination) comme il faut !
Essayez d'en extraire le code source du chargeur de LILO.
22..33.. PPlluuss dd''iinnffoorrmmaattiioonnss..
� Les notions fondamentales d'Unix et d'Internet
<
http://www.linuxdoc.org/HOWTO/Unix-and-Internet-Fundamentals-
HOWTO.html>, par Eric S. Raymond, miroirs fran�ais en VO
<
http://www.linuxfr.org/LDP/HOWTO/Unix-and-Internet-Fundamentals-
HOWTO.html> et VF <
http://www.freenix.org/unix/linux/HOWTO/Unix-
Internet-Fundamentals-HOWTO.html>, et particuli�rement la section
3, _Q_u_e _s_e _p_a_s_s_e_-_t_-_i_l _l_o_r_s_q_u_e _v_o_u_s _a_l_l_u_m_e_z _u_n _o_r_d_i_n_a_t_e_u_r _?
� Le premier chapitre du _G_u_i_d_e _d_e _l_'_u_t_i_l_i_s_a_t_e_u_r _d_e _L_I_L_O donne une
excellente explication des partitions de disques sur PC et de
l'amor�age (booting). Voir la section ``LILO'' pour l'URL.
� Le NOUVEAU _P_e_t_e_r _N_o_r_t_o_n _P_r_o_g_r_a_m_m_e_r_'_s _G_u_i_d_e _t_o _t_h_e _I_B_M _P_C _& _P_S_/_2
(Guide Peter Norton du programmeur pour l'IBM PC et PS/2), par
Peter Norton et Richard Wilton, Microsoft Press, 1988. Il existe
un nouveau livre Norton, qui a l'air bien, mais que je ne peux
m'offrir pour le moment.
� Un des nombreux ouvrages disponibles sur la mani�re de faire
�voluer (upgrader) son PC.
33.. LLiilloo
Lorsque l'ordinateur charge le secteur d'amorce d'un syst�me sous
Linux normal, ce qu'il charge est en fait un partie de LILO, appel�e
"first stage boot loader" (chargeur de boot de premier niveau). Il
s'agit d'un mini programme dont la seule t�che est de charger et
d'ex�cuter le ``second stage boot loader'' (chargeur de boot de
deuxi�me niveau).
Le "second stage loader" vous donne une invite de commande (s'il a �t�
install� de cette mani�re) et charge le syst�me d'exploitation de
votre choix.
Lorsque votre syst�me est mont� et en �tat de marche, et que vous
ex�cutez lilo, ce que vous ex�cutez en r�alit� est le ``map
installer''. Celui-ci lit le fichier de configuration /etc/lilo.conf
et �crit le chargeur de boot sur le disque dur, avec les informations
concernant les syst�mes d'exploitation qu'il peut charger.
Il y a de nombreuses mani�res de rendre votre syst�me bootable. Celle
que je viens de d�crire est la mani�re la plus �vidente et
``normale'', au moins pour une machine dont le syst�me d'exploitation
principal est Linux. Le Guide de l'Utilisateur Lilo explique
plusieurs exemples de ``boot concepts''. Cela vaut la peine de les
lire, et d'en essayer quelques uns.
33..11.. CCoonnffiigguurraattiioonn
Le fichier de configuration de Lilo est /etc/lilo.conf. Il existe une
page de manuel (man page) � son sujet : tapez man lilo.conf dans un
shell pour l'afficher. La principale caract�ristique de lilo.conf est
qu'il existe une entr�e pour chaque chose que Lilo doit booter. Pour
une entr�e Linux, cela inclut l'endroit o� se trouve le kernel, et la
partition � monter � la racine du syst�me de fichier (``filesystem'').
Pour les autres syst�mes, la principale information est la partition
sur laquelle booter.
33..22.. EExxeerrcciicceess
_D_A_N_G_E_R : soyez prudent avec ces exercices. Il est assez facile de
faire une erreur quelque part et de bloquer votre "master boot record"
(NDT : ou MBR, premier secteur du disque dur, contient le bootloader
et la table des partitions) et de rendre ainsi votre syst�me
inutilisable. Assurez-vous que vous avez une disquette de r�paration
qui fonctionne, et que vous savez comment vous en servir pour remettre
les choses en �tat. Voir plus bas un lien vers tomsrtbt, la disquette
de r�paration que j'utilise et recommande. La meilleure des
pr�cautions est d'utiliser une machine qui ne contienne pas de donn�es
sensibles.
Installez Lilo sur une disquette. Peu importe s'il n'y a rien d'autre
sur la disquette que le kernel - vous obtiendrez un "kernel panic"
quand le kernel sera pr�t a charger init, mais au moins vous saurez
que Lilo fonctionne.
Si vous le souhaitez, vous pouvez essayer de voir jusqu'� quel point
vous pouvez faire tenir un syst�me sur une disquette. C'est s�rement
la deuxi�me meilleure activit� pour apprendre Linux. Voir le Bootdisk
HOWTO (url plus bas), et tomsrtbt (url plus bas) pour avoir des
pistes.
Configurez Lilo afin qu'il lance unios (voir section ``exercices
hardware'' pour une URL). Comme d�fi suppl�mentaire, voyez si vous
pouvez le faire sur une disquette.
Faites une boucle de boots. Configurez le Lilo du Master Boot Record
pour qu'il boote le Lilo du secteur de boot d'une des partitions
principales, puis configurez ce Lilo pour qu'il relance celui du MBR.
Ou alors utilisez le MBR et vos quatre partitions principales pour
faire une boucle en cinq points ! Marrant !
33..33.. PPlluuss dd''iinnffoorrmmaattiioonnss
� La page de man de Lilo
� Le package Lilo (voir ``downloads'') contient le ``LILO User's
Guide'' lilo-u-21.ps.gz (ou plus r�cent). Il se peut que vous ayez
quand m�me d�j� ce document. Regardez dans /usr/doc/lilo ou
approch�. La version postscript est meilleure que la version en
texte brut, car elle contient des diagrammes et des tables.
� tomsrtbt <
http://www.toms.net/rb> La disquette unique linux la plus
cool ! Constitue une excellente disquette de secours.
� Bootdisk-HOWTO <
http://www.linuxdoc.org/HOWTO/Bootdisk-HOWTO/>
("HOWTO Disquette-de-boot", miroirs fran�ais en VO
<
http://www.linuxfr.org/LDP/HOWTO/Bootdisk-HOWTO> et VF
<
http://www.freenix.org/unix/linux/HOWTO/Bootdisk-HOWTO.html>.
44.. LLee nnooyyaauu LLiinnuuxx
Le noyau (kernel) fait vraiment beaucoup de choses. Je pense qu'une
bonne mani�re de r�sumer tout cela est de dire qu'il fait faire au
hardware ce que les programmes veulent, proprement et efficacement.
Le processeur ne peut ex�cuter qu'une seule instruction � la fois,
mais Linux semble faire tourner beaucoup de choses simultan�ment. Le
noyau accomplit cela en sautant de t�che en t�che tr�s rapidement. Il
fait le meilleur usage possible du processeur en gardant trace des
processus qui sont pr�ts � �tre ex�cut�s et de ceux qui attendent
quelque chose comme un enregistrement en provenance d'un disque, ou
une saisie clavier quelquonque. Cette t�che du noyau est appel�e
"scheduling" (planification).
Si un programme ne fait rien, alors il n'a pas besoin d'�tre en RAM.
M�me un programme qui fait quelque chose peut avoir certaines parties
inactives, qui donc n'ont pas besoin d'�tre en RAM. L'espace
adressable est divis� en pages. Le noyau garde une trace des pages les
plus utilis�es. Les pages qui ne sont pas autant utilis�es peuvent
�tre d�plac�es dans la partition d'�change (swap). Lorsqu'une page est
� nouveau sollicit�e, une autre page inutilis�e est retir�e de
l'espace adressable pour lui faire de la place. Cela s'appelle la
gestion de la m�moire virtuelle.
Si vous avez un jour compil� votre propre noyau, vous avez remarqu�
qu'il y a un grand nombre d'options pour des p�riph�riques
sp�cifiques. Le noyau contient beaucoup de code sp�cifique pour
converser avec l'�lectronique de tout type, et les pr�sente d'une
fa�on propre et uniforme aux programmes applicatifs.
Le noyau prend aussi en charge la gestion des fichiers, les
communications interprocessus, et beaucoup du travail concernant le
r�seau.
Une fois le noyau charg�, la premi�re chose qu'il fait est de
rechercher un programme appel� init et l'ex�cuter.
44..11.. CCoonnffiigguurraattiioonn
La majorit� de la configuration du noyau est effectu�e quand vous le
construisez, en utilisant make menuconfig, ou make xconfig dans le
r�pertoire /usr/src/linux/ (ou l� ou se trouvent les sources de votre
noyau Linux). Vous pouvez r�initialiser le mode vid�o par d�faut, la
racine du syst�me de fichiers, le p�riph�rique de swap et la taille du
disque virtuel (RAM disk) en utilisant rdev. Ces param�tres ainsi que
d'autres peuvent aussi �tre pass�s au noyau depuis Lilo. Vous pouvez
indiquer � Lilo les param�tres � passer au noyau soit dans lilo.conf,
soit � l'invite (prompt) de Lilo. Par exemple, si vous souhaitiez
utiliser hda3 comme racine du syst�me de fichiers plut�t que hda2,
vous pourriez taper :
LILO: linux root=/dev/hda3
Si vous mettez en place un syst�me � partir de ses sources, vous
pouvez vous simplifier la vie en cr�ant un noyau "monolithique",
c'est-�-dire sans module. Vous n'aurez donc pas � copier ceux-ci sur
le syst�me cible.
NOTE : Le fichier System.map est utilis� par le logger (le journal
syst�me, qui enregistre les messages de service) du noyau pour
d�terminer les noms des modules g�n�rant des messages. Le programme
top utilise �galement ces informations. Lorsque vous copiez le noyau
vers un syst�me cible, copiez aussi System.map.
44..22.. EExxeerrcciicceess
R�fl�chissez � ceci : /dev/hda3 est un type de fichier sp�cial qui
d�crit une partition d'un disque dur. Mais il vit sur le syst�me de
fichiers comme tous les autres fichiers. Le noyau veut savoir quelle
partition monter � la racine - donc il n'a pas encore de syst�me de
fichiers. Alors comme peut-il lire /dev/hda3 pour trouver la
partition � monter ?
Si vous ne l'avez pas encore fait, compilez votre noyau. Lisez l'aide
(Help) pour chaque option.
Essayez de voir jusqu'� quel point vous pouvez r�duire la taille de
votre noyau avant qu'il ne cesse de fonctionner. Vous pouvez apprendre
beaucoup en �cartant les parties qui ne sont pas n�cessaires.
Lisez ``The Linux Kernel'' (URL plus bas) et ce faisant, trouvez les
parties du source auxquelles il se r�f�re. Le livre (au moment o�
j'�cris ces lignes) se r�f�re au noyau version 2.0.33, qui devient
franchement d�pass�. Il pourrait �tre plus facile de suivre si vous
t�l�chargiez cette ancienne version et y lisiez le source. Il est tr�s
excitant de trouver des morceaux de code C appel�s ``process'' et
``page''.
Programmez ! Faites des essais ! Voyez si vous pouvez faire cracher au
noyau des messages suppl�mentaires ou quelque chose du m�me genre.
44..33.. PPlluuss dd''iinnffoorrmmaattiioonnss
� /usr/src/linux/README et le contenu de
/usr/src/linux/Documentation/ (Ces emplacements peuvent varier sur
votre syst�me)
� Le Kernel-HOWTO
<
http://mirror.aarnet.edu.au/linux/LDP/HOWTO/Kernel-HOWTO.html>
(miroirs fran�ais en VO <
http://www.linuxfr.org/LDP/HOWTO/Kernel-
HOWTO.html> et VF <
http://www.freenix.org/unix/linux/HOWTO/Kernel-
HOWTO.html>).
� L'aide disponible quand vous configurez un noyau en utilisant make
menuconfig ou make xconfig
� The Linux Kernel (et autres guides du LDP)
<
http://mirror.aarnet.edu.au/linux/LDP/LDP/> (miroir fran�ais en VO
<
http://www.linuxfr.org/LDP/LDP>)
� T�l�chargement des sources voir ``t�l�chargements''
55.. LLaa bbiibblliiootthh��qquuee CC ddee GGNNUU
L'�tape suivante qui se produit au d�marrage de votre ordinateur est
le chargement d'init et son ex�cution. Cependant, init, comme la
plupart des programmes, utilise des fonctions issues de biblioth�ques.
Vous avez peut-�tre d�j� vu un exemple de programme C comme celui-ci :
main() {
printf("Hello World!\n");
}
Le programme ne d�finit nullement printf, alors d'o� vient-il ? Il
provient des biblioth�ques C standard ("standard C libraries"), sur un
syst�me GNU/Linux, glibc. Si vous les compilez sous Visual C++, alors
il provient d'une impl�mentation Microsoft de ces m�mes fonctions
standard. Il existe des milliers de ces fonctions standard, pour les
math�matiques (math), la gestion des cha�nes de caract�res (string),
l'heure et la date, l'allocation de m�moire et ainsi de suite. Tout,
dans Unix (y compris Linux) est soit �crit en C, soit tente de le
simuler, de sorte que tous les programmes utilisent ces fonctions.
Si vous jetez un oeil dans /lib sur votre syst�me Linux, vous verrez
un grand nombre de fichiers appel�s libquelquechose.so ou
libquelquechose.a etc. Ce sont les biblioth�ques de ces fonctions.
Glibc est simplement l'impl�mentation GNU de ces fonctions.
Les programmes peuvent utiliser ces fonctions de deux mani�res. si
vous "linkez" (NDT : "�ditez les liens", op�ration qui consiste �
�tablir les relations avec les diff�rents objets sollicit�s par le
programme, puis � cr�er l'ex�cutable) _s_t_a_t_i_q_u_e_m_e_n_t, ces fonctions
seront copi�es � l'int�rieur de l'ex�cutable g�n�r�. C'est � �a que
servent les biblioth�ques libquelquechose.a. Si vous linkez votre
programme _d_y_n_a_m_i_q_u_e_m_e_n_t (effectu� par d�faut), lorsque le programme
aura besoin du code d'une biblioth�que, il ira l'extraire directement
du fichier libquelquechose.so
La commande ldd vous apporte une aide pr�cieuse lorsque vous cherchez
� retrouver les biblioth�ques utilis�es par un programme particulier.
Par exemple, voici les biblioth�ques utilis�es par bash:
[greg@Curry power2bash]$ ldd /bin/bash
libtermcap.so.2 => /lib/libtermcap.so.2 (0x40019000)
libc.so.6 => /lib/libc.so.6 (0x4001d000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
55..11.. CCoonnffiigguurraattiioonn
Certaines fonctions, dans leur biblioth�que, d�pendent du lieu o� vous
vous trouvez. Par exemple, en fran�ais, on �crit les dates sous la
forme dd/mm/yy, mais les am�ricains les �crivent mm/dd/yy. Il existe
un programme livr� avec glibc appel� localdef qui vous donne la
possibilit� de d�finir cela.
55..22.. EExxeerrcciicceess
Utilisez ldd pour d�terminer les biblioth�ques qu'utilise votre
application pr�f�r�e.
Utilisez ldd pour d�terminer les biblioth�ques utilis�es par init.
Cr�ez une biblioth�que gadget, avec seulement une ou deux fonctions
dedans. On utilise le programme ar pour les cr�er. La page de manuel
d'ar pourrait �tre un bon point de d�part pour commencer � enqu�ter
sur la mani�re dont cette op�ration est effectu�e. Ecrivez, compilez,
et linkez un programme utilisant cette biblioth�que.
55..33.. PPlluuss dd''iinnffoorrmmaattiioonnss
� Code source, voir la section ``t�l�chargements''
66.. IInniitt
Je ne parlerai que du style d'initialisation ``System V'' que les
syst�mes Linux utilisent le plus souvent. Il existe des alternatives.
En fait, vous pouvez mettre n'importe quel programme dans /sbin/init,
que le noyau ex�cutera lorsqu'il aura fini de se charger.
Le travail d'init est de faire en sorte que tout se lance comme il
faut. Il v�rifie que les syst�mes de fichier sont en bon �tat et les
monte. Il d�marre les d�mons (``daemons'') qui enregistrent les
messages syst�me, g�rent le r�seau, distribuent les pages web,
�coutent les signaux de la souris, etc. Init d�marre aussi les
processus getty qui vous donnent l'invite de login sur vos terminaux
virtuels.
Il y a un processus compliqu� concernant le changement de niveau
d'ex�cution ("run-levels"), mais je vais sauter tout �a, et ne parler
que du d�marrage du syst�me.
Init lit le fichier /etc/inittab, qui lui dit quoi faire.
Typiquement, la premi�re chose demand�e est l'ex�cution d'un script
d'initialisation. Le programme qui ex�cute (ou interpr�te) ce script
est bash, le m�me programme qui vous donne la ligne de commande. Sur
les syst�mes Debian, le script d'initialisation est /etc/init.d/rcS,
sur Red Hat, /etc/rc.d/rc.sysinit. C'est l� que les syst�mes de
fichiers sont v�rifi�s puis mont�s, l'horloge mise � l'heure, le
fichier ou la partition d'�change (swap) activ�s, les noms de machines
d�finis, etc.
Ensuite, un autre script est invoqu� pour nous placer dans le niveau
d'ex�cution par d�faut. Cela implique simplement le d�marrage d'un
ensemble de sous-syst�mes. Il existe un ensemble de sous-r�pertoires
/etc/rc.d/rc0.d, /etc/rc.d/rc1.d, ..., /etc/rc.d/rc6.d sous Red Hat,
ou /etc/rc0.d, /etc/rc1.d, ..., /etc/rc6.d sous Debian, correspondant
aux run-levels. Si nous entrons dans le niveau d'ex�cution 3 sur un
syst�me Debian, le script ex�cute tous les scripts de /etc/rc3.d
commen�ant par `S' (pour Start). Ces scripts sont en r�alit� des liens
vers un autre r�pertoire appel� g�n�ralement init.d.
Donc, le script de notre niveau d'ex�cution est appel� par init, et
recherche dans un r�pertoire des scripts dont le nom d�bute par la
lettre `S'. Il se peut qu'il tombe sur S10syslog en premier. Les
chiffres indiquent au script du niveau l'ordre dans lequel il doit les
lancer. En l'occurence, S10syslog est lanc� en premier parce qu'il n'y
pas de script commen�ant par S00 ... S09. Mais S10syslog est en fait
un lien vers /etc/init.d/syslog qui est un script charg� du d�marrage
et de l'arr�t du system logger (enregistreur de messages syst�mes).
Parce que le lien commence par un `S', le script du run-level sait
qu'il doit ex�cuter le script syslog avec le param�tre "start". Il y a
aussi des liens dont le nom d�bute par `K' (pour Kill), qui sp�cifient
ce qu'il faut arr�ter, et dans quel ordre, lorsque l'on entre dans le
niveau d'ex�cution.
Pour changer ce que le sous-syst�me lance par d�faut, vous devez
configurer ces liens dans le r�pertoire rcN.d, ou N est le niveau
d'ex�cution par d�faut d�fini dans votre fichier inittab.
La derni�re chose importante qu'effectue init est de d�marrer les
gettys [NdRel :en pratique, souvent des mingettys)]. Ceux-ci sont
ressuscit�s (``respawned''), ce qui signifie qu'ils sont
automatiquement relanc�s par init s'ils viennent � se terminer. La
plupart des distributions fournissent six terminaux virtuels. Il se
peut que vous souhaitiez en enlever pour �conomiser de la m�moire, ou
en ajouter pour pouvoir lancer beaucoup de choses � la fois, et passer
rapidement de l'un � l'autre. Vous pourriez aussi avoir besoin de
lancer un getty vers un terminal texte ou vers un modem. Vous devez
alors �diter inittab.
66..11.. CCoonnffiigguurraattiioonn
/etc/inittab, qui est le fichier de configuration au sommet de la
"hi�rarchie" des fichiers de configuration.
Les r�pertoires rcN.d, o� N = 0, 1,..., 6 d�termine les sous-syst�mes
� lancer.
Quelque part dans les scripts invoqu�s par init, se trouve la commande
mount -a. Cela signifie : "Monte tous les syst�mes de fichiers cens�s
�tre mont�s". Le fichier /etc/fstab d�finit ce qui est cens� �tre
mont�. Si vous souhaitez changer ce qui est mont� par d�faut au
d�marrage, c'est le fichier que vous devez modifier. Il existe une
page de manuel pour fstab.
66..22.. EExxeerrcciicceess
Trouvez le r�pertoire rcN.d du niveau d'ex�cution par d�faut de votre
syst�me puis faites un ls -l pour voir les fichiers point�s par les
liens.
Changez le nombre de gettys tournant sur votre syst�me.
Retirez tous les sous-syst�mes dont vous n'avez pas besoin de votre
niveau d'ex�cution par d�faut.
Essayez de d�terminer le minimum n�cessaire pour d�marrer.
Fabriquez une disquette avec Lilo, un noyau et un programme statique
affichant "Bonjour tout le monde !" nomm� /sbin/init, puis regardez-la
d�marrer et dire bonjour.
Regardez attentivement votre syst�me d�marrer, et notez les �v�nements
signal�s. Ou imprimez une section de votre journal syst�me
/var/log/messages � partir du moment o� votre syst�me a d�marr�.
Ensuite, en partant d'inittab, explorez tous les scripts et essayez de
voir quel code fait quoi. Vous pouvez �galement ajouter des messages,
comme
echo "Hello, moi c'est rc.sysinit"
C'est aussi un bon exercice pour apprendre le langage de script de
Bash, certains scripts �tant assez compliqu�s. Ayez un bon guide de
bash � port�e de main (NDT : "man bash" devrait suffire, faute de
mieux).
66..33.. PPlluuss dd''iinnffoorrmmaattiioonnss..
� Voir ``t�l�chargements'' pour t�l�charger le code source.
� Il y a des pages de manuel pour les fichiers inittab et fstab.
Tapez (par exemple) man inittab dans un shell pour l'afficher.
� Le Guide de L'Administrateur Syst�me Linux contient une section
<
http://mirror.aarnet.edu.au/linux/LDP/LDP/> int�ressante
concernant init (miroir fran�ais en VO
<
http://www.linuxfr.org/LDP/LDP>).
77.. LLee ssyysstt��mmee ddee ffiicchhiieerrss ((ffiilleessyysstteemm))
Dans cette section, j'emploierai l'expression ``syst�me de fichiers''
pour deux notions diff�rentes. Il y a les syst�mes de fichiers
install�s sur des partitions de disque ou d'autres p�riph�riques, et
il y a le syst�me de fichier (NdRel : la hi�rarchie) tel qu'il vous
est pr�sent� par un syst�me Linux en �tat de marche. Sous Linux, vous
"montez" le syst�me de fichiers d'un disque sur le syst�me de fichiers
du syst�me.
Dans la section pr�c�dente, j'ai mentionn� le fait que des scripts
d'initialisation v�rifiaient et montaient les syst�mes de fichiers.
Les commandes qui effectuent ces op�rations sont respectivement fsck
et mount.
Un disque dur n'est qu'un grand espace dans lequel vous pouvez �crire
des z�ros et des uns. Un syst�me de fichiers impose une structure �
tout cela, et le pr�sente sous la forme de fichiers, � l'int�rieur de
sous-r�pertoires, � l'int�rieur de r�pertoires... Chaque fichier est
r�present� par un inode, indiquant le fichier dont il s'agit, la date
de sa cr�ation, et o� trouver son contenu. Les r�pertoires sont aussi
repr�sent�s par des inodes, mais ceux-ci indiquent o� trouver les
inodes des fichiers que les rep�rtoires contiennent. Si le syst�me
veut lire /home/greg/bigboobs.jpeg, il commence par lire l'inode du
r�pertoire racine / dans le ``superblock'', puis trouve l'inode du
r�pertoire home dans le contenu de /, puis trouve l'inode du
r�pertoire greg dans le contenu de home, et enfin l'inode de
bigboobs.jpeg qui lui dira quel bloc du disque il faut lire.
Si nous ajoutons des donn�es � la fin d'un fichier, il peut arriver
que les donn�es soient �crites avant que l'inode ne soit mis � jour
(indiquant que le nouveau bloc appartient d�sormais au fichier), ou
vice-versa. Si le courant est coup� � cet instant pr�cis, le syst�me
de fichiers sera "cass�". C'est ce genre de chose que fsck essaie de
d�tecter et de r�parer.
La commande mount prend le syst�me de fichiers d'un p�riph�rique, et
l'ajoute � la hi�rarchie de fichiers de votre syst�me. En g�n�ral le
noyau monte son syst�me de fichiers racine en lecture seule (read-
only). La commande mount est ensuite utilis�e pour le remonter en
lecture-�criture (read-write) apr�s que fsck ait v�rifi� que tout soit
en ordre.
Linux prend aussi en charge d'autres types de syst�mes de fichiers :
msdos, vfat, minix, etc. Les d�tails d'un syst�me de fichiers
sp�cifique sont masqu�s par le Syst�me de Fichier Virtuel (Virtual
File System ou VFS) qui est une couche d'abstraction. Je ne rentrerai
pas dans ces d�tails. Il existe une discussion sur ce sujet dans ``Le
Kernel Linux'' (voir la section ``Le Noyau Linux'' pour l'URL)
77..11.. CCoonnffiigguurraattiioonn
Il existe des param�tres � la commande mke2fs, charg�e de la cr�ation
d'un syst�me de fichiers de type ext2. Ils contr�lent la taille des
blocs, le nombre d'inodes, etc. Voir la man page de mke2fs pour plus
de d�tails.
Ce qui doit �tre mont� sur votre syst�me de fichiers est contr�l� par
le fichier /etc/fstab, qui a lui aussi sa page de manuel.
77..22.. EExxeerrcciicceess
Fabriquez un tout petit syst�me de fichiers, et visualisez-le avec un
�diteur hexad�cimal. Identifiez les inodes, les superblocs, et le
contenu des fichiers.
Je crois qu'il existe des outils qui vous donnent une vue graphique
d'un syst�me de fichiers. Trouvez-en un, essayez-le, et envoyez moi
l'url par email avec vos appr�ciations !
Explorez le code du syst�me de fichiers ext2 dans le noyau.
77..33.. PPlluuss dd''iinnffoorrmmaattiioonnss
� Le chapitre 9 du livre ``Le noyau linux'' du LDP donne une
excellente description des syst�mes de fichiers. Vous pouvez le
trouver sur le site LDP : miroir fran�ais
<
http://www.linuxfr.org/LDP/LDP/> ou australien
<
http://mirror.aarnet.edu.au/linux/LDP/LDP/>).
� La commande mount fait partie du package util-linux, il y a un lien
vers celui-ci dans ``t�l�chargements''.
� Les pages de manuel de mount, fstab, fsck et mke2fs
� La home page des EXT2 File System Utilities ext2fsprogs
<
http://web.mit.edu/tytso/www/linux/e2fsprogs.html> et son miroir
australien ext2fsprogs
<
ftp://mirror.aarnet.edu.au/pub/linux/metalab/system/filesystems/ext2/>.
On y trouve aussi une vue d'ensemble d'Ext2fs, bien qu'elle ne soit
plus � jour, et moins lisible que le chapitre 9 du ``Noyau Linux''
� Unix File System Standard
<
ftp://tsx-11.mit.edu/pub/linux/docs/linux-standards/fsstnd/> Un
autre lien <
http://www.pathname.com/fhs/> vers le standard des
syst�mes de fichiers d'Unix. Ce document d�crit o� doit se trouver
quoi, dans un syst�me Unix, et pourquoi. Il indique aussi le
minimum n�cessaire � placer dans /bin, /sbin, etc. C'est une bonne
r�f�rence si votre objectif est un syst�me minimal mais complet.
88.. DD��mmoonnss nnooyyaauu
Malheureusement, cette section contient plus de questions et de
conjectures que de faits. Peut-�tre pouvez-vous apporter votre
pierre ?
Si vous saisissez la commande ps aux, vous verrez quelque chose
ressemblant � ce qui suit :
USER PID %CPU %MEM SIZE RSS TTY STAT START TIME COMMAND
root 1 0.1 8.0 1284 536 ? S 07:37 0:04 init [2]
root 2 0.0 0.0 0 0 ? SW 07:37 0:00 (kflushd)
root 3 0.0 0.0 0 0 ? SW 07:37 0:00 (kupdate)
root 4 0.0 0.0 0 0 ? SW 07:37 0:00 (kpiod)
root 5 0.0 0.0 0 0 ? SW 07:37 0:00 (kswapd)
root 52 0.0 10.7 1552 716 ? S 07:38 0:01 syslogd -m 0
root 54 0.0 7.1 1276 480 ? S 07:38 0:00 klogd
root 56 0.3 17.3 2232 1156 1 S 07:38 0:13 -bash
root 57 0.0 7.1 1272 480 2 S 07:38 0:01 /sbin/agetty 38400 tt
root 64 0.1 7.2 1272 484 S1 S 08:16 0:01 /sbin/agetty -L ttyS1
root 70 0.0 10.6 1472 708 1 R Sep 11 0:01 ps aux
C'est une liste de processus en cours d'ex�cution sur le syst�me.
Remarquez que init est le processus num�ro un. Les processus 2, 3,4 et
5 sont kflushd, kupdate, kpiod et kswapd. Il y a quand m�me quelque
chose d'�trange : dans les deux colonnes de la taille virtuelle de
stockage (SIZE) et la taille r�elle de stockage (Real Storage Size,
RSS), ces processus renvoient z�ro. Comment un processus peut-il ne
pas utiliser de m�moire ? En r�alit�, ces processus font partie du
noyau. Le noyau, lui, n'appara�t pas du tout sur la liste des
processus, et vous ne pouvez d�finir la m�moire utilis�e qu'en
soustrayant la m�moire disponible du total install� sur votre syst�me.
Les parenth�ses autour du nom de commande pourraient signifier qu'il
s'agit d'un processus noyau (?)
kswapd d�place des parties d'un programme non utilis�es � un instant
donn� de l'espace de stockage r�el (c'est-�-dire la RAM) vers l'espace
de swap (c'est-�-dire le disque dur). kflushd �crit les donn�es des
buffers vers le disque. Ceci permet aux choses d'aller plus vite. Ce
que les programmes �crivent peut �tre conserv� en m�moire, dans un
buffer, puis �crit sur le disque par morceaux plus larges et de fa�on
plus efficace (NDT : principe du cache). Je ne sais pas � quoi servent
kupdate et kpiod.
C'est ici que finissent mes connaissances. Que font ces deux derniers
d�mons ? Pourquoi les d�mons noyau ont-ils des num�ros de processus
explicites plut�t que d'�tre simplement des bouts de code anonymes ?
Est-ce qu'init les lance effectivement, ou tournent-ils d�j� lorsque
init appara�t ?
J'ai mis dans /sbin/init un script pour monter /proc et faire un ps
aux. Le processus 1 �tait le script lui-m�me, et les processus 2, 3, 4
et 5 �taient les d�mons noyau, juste au dessous du vrai init. Le noyau
les a forc�ment mis l�, car ce n'est s�rement pas mon script qui l'a
fait.
Les hypoth�ses suivantes viennent de David Leadbeater :
Ces processus semblent s'occuper des acc�s disque, ils semblent �tre
lanc�s par le noyau, mais apr�s avoir lanc� le processus init. Il
semble qu'en �tant lanc�s comme des processus noyau plut�t que comme
des processus s�par�s, ils soient prot�g�s et ne peuvent �tre tu�s
(kill -9 ne les arr�te pas), je ne sais pas vraiment pourquoi ils sont
lanc�s en tant que threads s�par�s. Il semble y avoir un rapport avec
les acc�s disque.
_k_f_l_u_s_h_d _e_t _k_u_p_d_a_t_e Ces deux processus sont d�marr�s pour vider les
buffers "sales" (c'est-�-dire modifi�s) vers le disque. kflushd est
lanc� quand les buffers sont pleins et kupdate se lance p�riodiquement
(5 secondes ?) pour synchroniser les disques avec les buffers en
m�moire.
_k_p_i_o_d _e_t _k_s_w_a_p_d Ils ont pour t�che l'exportation de pages (sections)
de m�moire vers le fichier d'�change de fa�on � ce que la m�moire
principale ne soit jamais remplie, ils ressemblent � kflushd et
kupdate dans le sens o� l'un est lanc� en cas de besoin (kpiod) et
l'autre (kswapd) est lanc� p�riodiquement (� intervalles d'une
seconde).
_A_u_t_r_e_s _d_�_m_o_n_s _d_u _n_o_y_a_u
Sur une installation par d�faut de RedHat 6, kupdate a disparu mais
udpate tourne en tant que d�mon dans l'espace utilisateur, et il
semble qu'il ait besoin d'�tre lanc�. Il y a �galement un autre d�mon,
mdrecoveryd, qui lui semble d'occuper du RAID. En regardant dans les
sources du noyau, il semble que certains pilotes SCSI lancent eux
aussi des processus s�par�s.
Je ne connais toujours pas la signification des parenth�ses, mais
elles semblent appara�tre quand la RSS d'un processus est � z�ro, ce
qui signifie qu'il n'utilise pas de m�moire (?).
(fin de citation, merci David)
88..11.. CCoonnffiigguurraattiioonn
Je n'ai pas connaissance d'une configuration de ces d�mons noyau.
88..22.. EExxeerrcciicceess
Trouvez � quoi servent ces processus, comment ils fonctionnent, et
�crivez une nouvelle section `D�mons Noyau'' pour ce document, et
envoyez-la moi !
88..33.. PPlluuss dd''iinnffoorrmmaattiioonnss
``Le Kernel Linux'' du Projet de Documentation Linux (LDP). (voir
section ``Le noyau Linux'' pour l'url), et les sources du noyau, c'est
tout ce que je vois pour le moment.
99.. LLee jjoouurrnnaall ssyysstt��mmee ((SSyysstteemm LLooggggeerr))
Init d�marre les d�mons syslogd et klogd. Ils �crivent les messages �
consigner dans le journal. Les messages du noyau sont pris en main par
klogd, alors que syslogd g�re les messages des autres processus. Le
fichier journal principal est /var/log/messages. C'est un bon endroit
o� aller voir quand quelque chose tourne mal dans votre syst�me. Vous
y trouverez souvent de pr�cieux indices.
99..11.. CCoonnffiigguurraattiioonn
Le fichier /etc/syslog.conf indique au logger o� mettre quels
messages. Les messages sont identifi�s par le service dont ils
proviennent, et leur niveau de priorit�. Ce fichier de configuration
est constitu� de lignes indiquant que les messages du service x avec
une priorit� y vont vers z, o� z est un fichier, un terminal, une
imprimante, une machine distante, ou autre chose encore.
NOTE : Syslog a besoin que le fichier /etc/services existe. Ce
fichier alloue des ports (NDT : Ports des protocoles TCP et UDP). Je
ne sais pas vraiment si syslog a besoin d'un port r�serv� pour faire
de l'enregistrement de messages � distance, ou si m�me
l'enregistrement local se fait � travers un port, ou m�me s'il se
contente d'utiliser /etc/services pour convertir les noms de services
indiqu�s dans /etc/syslog.conf en num�ros de port.
99..22.. EExxeerrcciicceess
Jetez un oeil � votre journal syst�me. Prenez un message que vous ne
comprenez pas, et essayez de trouver ce qu'il signifie.
Redirigez tous les messages du journal vers un terminal. (Revenez �
la normale une fois que c'est fait).
99..33.. PPlluuss dd''iinnffoorrmmaattiioonnss
Le miroir
<
http://mirror.aarnet.edu.au/pub/linux/metalab/system/daemons/>
australien de sysklogd.
1100.. GGeettttyy eett LLooggiinn
Getty est le programme qui vous permet de vous connecter � travers un
p�riph�rique s�rie, comme une console virtuelle, un terminal en mode
texte, ou un modem. Il affiche l'invite de login. Une fois que vous
avez saisi votre nom d'utilisateur, getty le transmet � login, qui
vous demande un mot de passe, le v�rifie, puis vous donne le shell.
Il existe plusieurs getty disponibles. Certaines distributions, comme
Red Hat, en utilisent un tr�s petit appel� mingetty et qui ne g�re que
les terminaux virtuels.
Le programme login fait partie du package util-linux, qui contient
aussi un getty nomm� agetty, qui fonctionne bien. Ce package contient
�galement mkswap, fdisk, passwd, kill, setterm, mount, swapon, rdev,
renice, more et bien d'autres.
1100..11.. CCoonnffiigguurraattiioonn
Le message qui appara�t en haut de votre �cran avec l'invite de login
provient du fichier /etc/issue. Les getty sont en g�n�ral d�marr�s
depuis /etc/inittab. Login recherche les d�tails sp�cifiques �
l'utilisateur dans /etc/passwd, et si vous avez le shadowing (une
protection des mots de passe), dans /etc/shadow.
1100..22.. EExxeerrcciicceess
Cr�ez un fichier /etc/passwd � la main. Les mots de passe peuvent �tre
nuls, puis chang�s avec le programme passwd une fois connect�. Voir
la page de manuel de ce fichier. Utilisez man 5 passwd pour obtenir la
page de manuel du fichier plut�t que celle du programme.
1111.. BBaasshh
Si vous donnez � login une combinaison valide de nom d'utilisateur et
de mot de passe, il ira regarder dans /etc/passwd pour savoir quel
shell vous donner. La plupart du temps, dans un syst�me Linux, ce sera
bash. Le travail de bash consiste � lire vos commandes et voir ce sur
quoi elles agissent. C'est � la fois une interface utilisateur, et
l'interpr�teur d'un langage de programmation.
Dans son r�le d'interface, il lit vos commandes, et les ex�cute lui-
m�me si ces commandes sont ``internes'', comme cd, ou bien trouve et
ex�cute un programme s'il s'agit de commandes ``externes'' comme cp ou
startx. Bash propose �galement plusieurs options fort sympathiques
comme un historique des commandes, ou le compl�tement automatique des
noms de fichiers (avec la touche de tabulation).
Nous avons d�j� vu bash � l'action dans son r�le de langage de
programmation. Les scripts qu'init lance pour d�marrer le syst�me sont
g�n�ralement des scripts shell, et sont ex�cut�s par bash. Avoir un
langage de programmation propre, parall�lement aux utilitaires
syst�mes disponibles depuis la ligne de commande forme une combinaison
tr�s puissante, si vous savez ce que vous faites. Par exemple
("s�quence frime" !) j'ai eu besoin l'autre jour d'appliquer une pile
enti�re de correctifs (patches) � un r�pertoire de codes source. J'ai
�t� capable de le faire en une seule commande, la suivante :
for f in /home/greg/sh-utils-1.16*.patch; do patch -p0 < $f; done;
Ceci recherche tous les fichiers de mon r�pertoire personnel dont les
noms commencent par sh-utils-1.16 et finissent par .patch, puis
affecte un par un ces noms � la variable f et ex�cute les commandes
invoqu�es entre do et done. Il y avait en l'occurence 11 correctifs,
mais il aurait pu aussi bien y en avoir 3000.
1111..11.. CCoonnffiigguurraattiioonn
Le fichier /etc/profile agit sur le comportement de bash au niveau du
syst�me entier. Ce que vous mettez dans ce fichier affectera toute
personne qui utilise bash sur votre syst�me. Cela sert par exemple �
ajouter des r�pertoires dans la variable PATH, ou � d�finir celui de
la variable MAIL.
Le comportement par d�faut du clavier laisse souvent � d�sirer. En
fait, c'est readline qui contr�le cela. Readline est un package
distinct qui prend en main les interfaces de ligne de commande, en
fournissant l'historique des commandes, et le compl�tement automatique
de noms de fichiers (NDT : Touche TAB sous Bash), tout comme les
facilit�s �volu�es d'�dition de ligne. Il est compil� dans bash. Par
d�faut, Readline est configur� � l'aide du fichier .inputrc, dans
votre r�pertoire personnel. La variable INPUTRC peut �tre utilis�e
pour outrepasser les r�gles de ce fichier pour le bash. Par exemple,
dans Red Hat 6, INPUTRC re�oit la valeur /etc/inputrc dans le fichier
/etc/profile. Cela signifie que les touches Retour Arri�re
(Backspace), Suppr (Delete), D�but (Home) et Fin (End) fonctionnent
correctement et pour tout le monde.
Une fois que bash a lu le fichier de configuration g�n�ral, commun au
syst�me entier, il recherche votre fichier de configuration personnel.
Il teste l'existence des fichiers .bash_profile, .bash_login et
.profile dans votre r�pertoire personnel. Il lance le premier qu'il
trouve. Si vous voulez modifier le comportement de bash � votre �gard,
sans le changer pour les autres, faites-le ici. Par exemple, de
nombreuses applications utilisent les variables d'environnement pour
contr�ler leur fonctionnement. J'ai une variable EDITOR contenant la
valeur vi pour pouvoir utiliser vi sous Midnight Commander (un
excellent gestionnaire de fichier orient� console) au lieu de son
�diteur propre.
1111..22.. EExxeerrcciicceess
Les bases de bash sont faciles � apprendre. Mais ne vous y limitez
pas : on peut aller incroyablement loin avec. Prenez l'habitude de
rechercher de meilleures fa�ons de faire les choses.
Lisez des scripts shell, analysez les choses que vous ne comprenez
pas.
1111..33.. PPlluuss dd''iinnffoorrmmaattiioonnss
� T�l�chargement du code source, voir ``t�l�chargements''
� Il existe un ``Manuel de R�f�rence de Bash'' avec, clair, mais
assez lourd.
� Il existe un livre O'Reilly sur le Bash, je ne sais pas s'il est
vraiment bon.
� Je ne connais pas de tutoriel bash gratuit et � jour. Si vous en
connaissez un, merci de m'envoyer l'URL.
1122.. LLeess ccoommmmaannddeess
Vous effectuez la plupart des choses sous bash en saisissant des
commandes comme cp. La majorit� de ces commandes sont des petits
programmes, bien que quelques unes, comme cd soient int�gr�es au
shell.
Les commandes viennent de packages, la plupart de la Free Software
Foundation (projet GNU). Plut�t que de dresser ici la liste des
packages, je pr�f�re vous renvoyer vers le Linux From Scratch HOWTO
<
http://www.linuxfromscratch.org>. Il contient une liste compl�te et
� jour de tous les packages allant dans un syst�me Linux, aussi bien
que des indications pour les construire.
1133.. CCoonnssttrruuiirree uunn ssyysstt��mmee LLiinnuuxx mmiinniimmuumm �� ppaarrttiirr ddeess ssoouurrcceess..
Nous nous sommes concentr�s jusqu'ici sur ce que les packages font. Je
vais vous donner ici tout les indices que je peux pour fabriquer un
syst�me Linux de base � partir des sources. Si vous voulez monter un
vrai syst�me pour du vrai travail, lisez le Linux From Scratch HOWTO
<
http://www.linuxfromscratch.org>.
Il est possible d'obtenir une ligne de commande bash sans installer
tout ce que je mentionne ici. Ce que je d�cris est un syst�me de base,
sans emb�che, qui peut �tre mont� facilement.
1133..11.. CCee qquu''iill vvoouuss ffaauutt
Nous installerons une distribution de Linux comme Red Hat sur une
partition, et l'utiliserons pour construire un nouveau syst�me Linux
sur une autre partition. Je nommerai par la suite ``cible'' le syst�me
que nous construisons, et ``source'' le syst�me que nous utilisons
pour construire le syst�me cible (� ne pas confondre avec _c_o_d_e _s_o_u_r_c_e
que nous utiliserons aussi).
Vous allez donc avoir besoin d'une machine avec deux partitions libres
dessus. Si vous le pouvez, utilisez une machine qui ne contienne rien
d'important. Vous pouvez utiliser un syst�me Linux d�j� existant comme
syst�me source, mais je le d�conseille. Si vous oubliez un des
param�tres des commandes que nous allons saisir, vous pourriez
accidentellement r�installer des choses sur votre syst�me source. Cela
peut mener � des incompatibilit�s, et des conflits.
Les anciennes architectures PC, pour la plupart 486 et plus ancien,
ont une limitation ennuyeuse de leur Bios. Il ne peuvent lire les
disques durs pass� les 512 premiers m�gaoctets. Ce n'est pas vraiment
un probl�me pour Linux, qui g�re lui-m�me les disques une fois lanc�.
Mais pour que Linux soit charg� sur ces vieilles machines, le noyau
doit r�sider quelque part en dessous de 512 m�gaoctets. Si vous
utilisez une de ces machines, vous devez cr�er une partition distincte
en dessous de 512 Mo, � monter sur /boot pour toute partition au
dessus de la limite des 512 Mo.
La derni�re fois que je l'ai fait, j'ai utilis� Red Hat 6.1 comme
syst�me source. J'ai install� le syst�me de base plus
� cpp
� egcs
� egcs-c++
� patch
� make
� dev86
� ncurses-devel
� glibc-devel
� kernel-headers
J'ai aussi install� X-window et Mozilla (NDT : Netscape) pour pouvoir
lire les documentations facilement, mais ce n'est pas n�cessaire. A la
fin de mon travail, cela avait pris environ 350M d'espace disque (Cela
semble un peu �lev�, je me demande pourquoi).
Le syst�me cible achev� prenait 650M, mais comprenait tout le code
source et les fichiers interm�diaires. Si l'espace est limit�, je vous
conseille de faire un make clean apr�s la construction de chaque
package. Cela dit, c'est une source d'ennuis et d'h�sitation.
Enfin, vous allez avoir besoin du code source du syst�me que vous
allez construire. Il y a les ``packages'' dont nous avons parl� dans
ce document. On peut les obtenir depuis un CD, ou par l'Internet. Je
donnerai les URL pour les sites am�ricains et miroirs australiens.
� MAKEDEV USA <
ftp://tsx-11.mit.edu/pub/linux/sources/sbin> Autre
site aux USA <
ftp://sunsite.unc.edu/pub/Linux/system/admin>
� Lilo USA <
ftp://lrcftp.epfl.ch/pub/linux/local/lilo/>, Australie
<
ftp://mirror.aarnet.edu.au/pub/linux/metalab/system/boot/lilo/>.
� Noyau Linux Utilisez un des miroirs list�s sur home page
<
http://www.kernel.org> plut�t que USA
<
ftp://ftp.kernel.org/pub/linux/kernel> car ils sont toujours en
surcharge. Australie
<
ftp://kernel.mirror.aarnet.edu.au/pub/linux/kernel/>
� GNU libc La biblioth�que elle-m�me, ainsi que les add-on
linuxthreads sont sur USA <
ftp://ftp.gnu.org/pub/gnu/glibc>
Australie <
ftp://mirror.aarnet.edu.au/pub/gnu/glibc>
� Add-ons � la libc GNU Vous aurez aussi besoin des linuxthreads et
des add-on libcrypt. Si libcrypt est absente � cause des lois
am�ricaines sur l'exportation, vous pouvez la r�cup�rer sur
libcrypt <
ftp://ftp.gwdg.de/pub/linux/glibc> les add-ons
linuxthreads sont au m�me endroit que libc proprement dite.
� GNU ncurses USA <
ftp://ftp.gnu.org/gnu/ncurses> Australie
<
ftp://mirror.aarnet.edu.au/pub/gnu/ncurses>
� SysVinit USA <
ftp://sunsite.unc.edu/pub/Linux/system/daemons/init>
Australie
<
ftp://mirror.aarnet.edu.au/pub/linux/metalab/system/daemons/init>
� GNU Bash USA <
ftp://ftp.gnu.org/gnu/bash> Australie
<
ftp://mirror.aarnet.edu.au/pub/gnu/bash>
� GNU sh-utils USA <
ftp://ftp.gnu.org/gnu/sh-utils> Australie
<
ftp://mirror.aarnet.edu.au/pub/gnu/sh-utils>
� util-linux Ailleurs <
ftp://ftp.win.tue.nl/pub/linux/utils/util-
linux/> Australie
<
ftp://mirror.aarnet.edu.au/pub/linux/metalab/system/misc> Ce
package contient agetty et login.
Pour r�sumer, il vous faut :
� Une machine avec deux partitions distinctes d'environ 400M et 700M
respectivement, bien que vous puissiez s�rement vous en tirer avec
un espace plus restreint.
� Une distribution de Linux (un CD de Red Hat par exemple), et de
quoi l'installer (un lecteur de CD par exemple).
� Les archives (tarballs : fichier contenant plusieurs autres
fichiers concat�n�s en un seul, puis compress� ou non ensuite) du
code source, list�es ci-dessus.
Je pars du principe que vous pouvez installer le syst�me source vous-
m�me, sans aide de ma part. A partir de maintenant, je consid�re que
c'est fait.
Les premiers pas de ce projet consistent � faire d�marrer le noyau, et
le laisser `paniquer' (panic) car il ne peut trouver le programme
init. Cela signifie que nous allons devoir installer un noyau, et
installer Lilo. Pour que Lilo fonctionne quand m�me correctement,
nous avons besoin d'installer les fichiers sp�ciaux dans le /dev du
syst�me cible. Lilo en a besoin pour effectuer les acc�s bas niveau
au disque, n�cessaire pour �crire le secteur d'amorce. MAKEDEV est le
script qui cr�e ces fichiers sp�ciaux (Vous pourriez bien s�r les
recopier depuis le syst�me source, mais ce serait tricher !). Mais
d'abord, il nous faut un syst�me de fichiers pour les mettre dedans.
1133..22.. LLee ssyysstt��mmee ddee ffiicchhiieerr ((FFiilleessyysstteemm))
Notre nouveau syst�me a besoin d'un syst�me de fichiers pour vivre.
Donc, il nous faut tout d'abord cr�er ce syst�me de fichiers en
utilisant mke2fs. Ensuite il faut le monter quelque part. Je vous
sugg�re /mnt/target (comme `cible'). Dans ce qui va suivre, je
consid�re que votre syst�me se trouve � cet endroit. Vous pouvez
gagner un peu de temps en ajoutant une entr�e dans /etc/fstab de fa�on
� ce que le montage de votre syst�me destination soit automatique
lorsque votre syst�me source d�marre.
Lorsque nous d�marrerons le syst�me cible, ce qui se trouve dans
/mnt/target se trouvera alors dans / (� la racine).
Nous avons besoin d'une structure de sous-r�pertoires sur la cible.
Jetez un oeil au Standard de la Hi�rarchie des Fichiers (File
Hierarchy Standard, voir section ``Syst�me de Fichiers''). pour
trouver vous m�me ce qu'elle devrait �tre, ou faites simplement un cd
vers l'endroit o� la cible est mont�e et tapez aveugl�ment :
mkdir bin boot dev etc home lib mnt root sbin tmp usr var
cd var; mkdir lock log run spool
cd ../usr; mkdir bin include lib local sbin share src
cd share/; mkdir man; cd man
mkdir man1 man2 man3 ... man9
Comme le FHS et la plupart des packages se contredisent en ce qui
concerne l'endroit o� les man pages doivent se trouver, nous avons
besoin d'un lien symbolique :
cd ..; ln -s share/man man
1133..33.. MMAAKKEEDDEEVV
Nous mettrons le code source dans le r�pertoire /usr/src cible. Aussi
si votre syst�me de fichiers cible est mont� par exemple sur
/mnt/target, et que vos archives sont dans /root, il faudra faire :
cd /mnt/target/usr/src
tar -xzvf /root/MAKEDEV-2.5.tar.gz
Ne vous comportez pas en amateur fini et pensez � copier vos archives
� l'endroit o� vous allez les d�compresser ;-)
En principe, lorsque vous installez un logiciel, vous l'installez sur
le syst�me en fonctionnement. En l'occurence, ce n'est pas notre
intention, nous souhaitons l'installer comme si /mnt/target �tait le
syst�me de fichiers racine. Les diff�rents packages ont diff�rentes
mani�res de vous le laisser faire. Pour MAKEDEV, vous devez faire
ROOT=/mnt/target
make install
Vous devez rechercher ces options dans les fichiers README et INSTALL
ou faire un ./configure --help.
Explorez le Makefile de MAKEDEV pour voir l'usage qu'il fait de la
variable ROOT, que nous avons d�finie dans cette commande. Ensuite
jetez un oeil � la page de manuel en faisant un man ./MAKEDEV.man pour
voir comment il fonctionne. Vous d�couvrirez que la m�thode utilis�e
pour ces fichiers sp�ciaux consiste � faire un cd /mnt/target/dev puis
un ./MAKEDEV generic. Faites un ls pour d�couvrir tous les merveilleux
fichiers sp�ciaux qu'il a cr��s pour vous !
1133..44.. LLee nnooyyaauu ((kkeerrnneell))
Ensuite, nous devons fabriquer un noyau. Je consid�re que vous l'avez
d�j� fait, aussi serai-je bref. Il est plus facile d'installer Lilo si
le noyau cens� �tre mont� est d�j� l�. Retournez dans le r�pertoire
/usr/src de la cible, et d�compressez-y les sources du noyau linux.
Entrez dans l'arborescence des sources (cd linux) et configurez le
noyau, en utilisant votre m�thode pr�f�r�e, comme par exemple make
menuconfig. Vous vous faciliterez grandement la vie si vous
configurez un noyau sans module. Si vous configurez des modules, vous
devrez �diter Makefile, trouver INSTALL_MOD_PATH, et lui affecter la
valeur /mnt/target.
Vous pouvez maintenant taper make dep, make bzImage, et si vous avez
configur� des modules : make modules, make modules_install. Copiez le
noyau arch/i386/boot/bzImage et le plan syst�me System.map vers le
r�pertoire de boot de la cible /mnt/target/boot, et nous seront pr�ts
� installer Lilo.
1133..55.. LLiilloo
Lilo est livr� avec un tr�s beau script nomm� QuickInst. D�compressez
les sources de Lilo dans le r�pertoire des sources du syst�me cible,
lancez ce script par la commande ROOT=/mnt/target ./QuickInst. Il vous
posera plusieurs questions concernant la mani�re dont vous souhaitez
que Lilo soit install�.
Souvenez-vous, comme nous avons affect� � la variable ROOT la
partition cible, vos noms de fichiers s'y rapportent. Donc, lorsqu'il
vous demandera le nom du noyau � lancer par d�faut, r�pondez
/boot/bzImage, _p_a_s /mnt/target/boot/bzImage. J'ai trouv� un bug
mineur dans le script, qui lui fait dire :
./QuickInst: /boot/bzImage: no such file
Mais si vous vous contentez de l'ignorer, cela passe quand m�me.
Comment doit-on s'y prendre pour expliquer � QuickInst o� installer le
secteur de boot ? Quand nous red�marrons, nous voulons avoir le choix
de d�marrer le syst�me source ou le syst�me cible, ou encore n'importe
quel autre syst�me pr�sent sur la machine. Et nous souhaitons que
l'instance de Lilo que nous mettons en place maintenant lance le noyau
de notre nouveau syst�me. Comment est-ce que l'on r�alise ces deux
choses ? Ecartons-nous un moment du sujet et �tudions la fa�on dont
Lilo d�marre DOS sur un syst�me Linux en dual-boot. Le fichier
lilo.conf d'un tel syst�me doit s�rement ressembler � ��.
prompt
timeout = 50
default = linux
image = /boot/bzImage
label = linux
root = /dev/hda1
read-only
other = /dev/hda2
label = dos
Si la machine est configur�e de cette fa�on, alors le Master Boot
Record (MBR) est lu et charg� par le Bios, et lance le bootloader de
Lilo, qui affiche une invite de commande. Si vous tapez dos dans cette
invite, Lilo chargera le secteur de boot depuis hda2, qui lancera DOS.
Ce que nous allons faire est exactement la m�me chose, mis � part que
le secteur d'amorce d'hda2 va �tre un autre secteur d'amorce Lilo -
celui-l� m�me que QuickInst va installer. Donc le Lilo de la
distribution de linux chargera le Lilo que nous avons construit, qui
chargera le noyau que nous avons b�ti. Vous verrez alors deux invites
de commande Lilo au red�marrage.
Pour raccourcir une longue histoire, lorsque QuickInst vous demande o�
placer le secteur de boot, indiquez-lui l'endroit o� se trouve votre
syst�me de fichiers cible, par exemple /dev/hda2.
Maintenant modifiez le fichier lilo.conf de votre syst�me source, de
fa�on � ce qu'il ait une ligne ressemblant �:
other = /dev/hda2
label = target
Lancez Lilo, et nous devrions �tre capables de faire notre premier
d�marrage sur le syst�me cible.
1133..66.. GGlliibbcc
L'�tape suivante consiste � installer init, mais comme la plupart des
programmes qui tournent sous Linux, init utilise des fonctions issues
de la biblioth�que C GNU, glibc. Aussi l'installerons-nous en premier.
Glibc est un package tr�s gros et tr�s compliqu�. Il faut 90 heures
pour le b�tir sur mon vieux 386sx/16 avec 8M RAM. Mais cela ne prend
que 33 minutes sur mon Celeron 433 avec 64M. Je pense que la quantit�
de m�moire est le principal crit�re dans notre cas. Si vous n'avez que
8Mo de RAM (ou - j'en tremble - encore moins !), pr�parez vous � une
tr�s longue compilation.
La documentation d'installation de glibc recommande une construction
dans un r�pertoire distinct. Cela vous permet de recommencer
facilement, en supprimant simplement ce r�pertoire. Cela vous permet
aussi d'�conomiser 265Mo d'espace disque.
D�compressez l'archive glibc-2.1.3.tar.gz (ou n'importe quelle autre
version) dans /mnt/target/usr/src comme d'habitude. A pr�sent, nous
devons d�compresser les ``add-on'' dans le r�pertoire de la glibc.
Donc, faites un cd glibc-2.1.3, puis d�compressez � cet endroit les
archives glibc-crypt-2.1.3.tar.gz et glibc-linuxthreads-2.1.3.tar.gz.
Maintenant, nous pouvons cr�er le r�pertoire de construction,
configurer, b�tir et installer glibc. Voici les commandes que j'ai
utilis�es, mais relisez vous-m�me la documentation et assurez-vous de
faire ce qui est le plus appropri� dans votre environnement.
Toutefois, avant de faire tout cela, vous voudrez sans doute conna�tre
l'espace disque qu'il vous reste par un df. Vous pouvez en faire un
autre apr�s avoir b�ti et install� glibc pour en d�duire son volume.
cd ..
mkdir glibc-build
../glibc-2.1.3/configure --enable-add-ons --prefix=/usr
make
make install_root=/mnt/target install
Remarquez que nous avons ici encore une autre fa�on de dire au package
l'endroit o� s'installer.
1133..77.. SSyyssVViinniitt
B�tir et installer les binaires de SysVinit est assez direct. Je me
contenterai d'�tre paresseux et de vous donner les commandes, en
consid�rant que vous avez d�compress� son code source, et que vous
�tes entr� dans son r�pertoire.
cd src
make
ROOT=/mnt/target make install
Il existe aussi beaucoup de scripts associ�s � init. Il y a des
scripts d'exemple fournis dans le package de SysVinit, qui
fonctionnent bien. Mais vous devez les installer manuellement. Ils
sont organis�s dans une hi�rarchie sous debian/etc dans l'arborescence
du code source de SysVinit. Vous pouvez recopier toute cette
hi�rarchie dans le r�pertoire etc du syst�me cible, avec une commande
du style cd ../debian/etc; cp -r * /mnt/target/etc. Evidement, vous
explorerez ces scripts avant de tous les recopier.
Tout est d�sormais en place pour permettre au noyau cible de lancer
init au red�marrage. Le probl�me, cette fois, viendra des scripts qui
ne pourront �tre ex�cut�s car bash ne sera pas l� pour les
interpr�ter. init tentera �galement de lancer des getty, qui sont
inexistants eux aussi. Rebootez maintenant, et assurez-vous que tout
le reste fonctionne correctement.
1133..88.. NNccuurrsseess
L'�tape suivante consiste � mettre Bash en place, mais bash a besoin
de ncurses, aussi devons-nous installer celui-ci en premier. Ncurses
remplace termcap dans la mani�re de g�rer les �crans texte, mais
apporte �galement une compatibilit� ascendante en prenant en charge
les appels termcap. Dans l'objectif d'avoir un syst�me moderne, simple
et propre, je pense que le mieux est de d�sactiver l'ancienne m�thode
termcap. Vous pourriez par la suite rencontrer des probl�mes avec des
applications utilisant termcap, mais au moins vous conna�trez les
�l�ments qui l'utilisent. Si vous en avez besoin, vous pouvez
recompiler ncurses avec prise en charge de termcap.
Les commandes que j'ai utilis�es sont :
./configure --prefix=/usr --with-install-prefix=/mnt/target --with-shared --disable-termcap
make
make install
1133..99.. BBaasshh
Il m'a fallu beaucoup de lecture, de r�flexion, de tests, et d'erreurs
pour que Bash s'installe l� o� je pensais qu'il devait aller. Les
options de configuration que j'ai utilis�es sont :
./configure --prefix=/mnt/target/usr/local --exec-prefix=/mnt/target --with-curses
Une fois que vous avez b�ti et install� Bash, vous devez cr�er un lien
symbolique comme ceci : cd /mnt/target/bin; ln -s bash sh. Cela est
d� au fait que les scripts d�butent g�n�ralement par une ligne comme
celle-ci :
#!/bin/sh
Si vous n'avez ce lien symbolique, les scripts ne fonctionneront pas,
car ils chercheront /bin/sh et non /bin/bash.
Vous pouvez red�marrer � ce point si vous le souhaitez. Vous devriez
remarquer que les scripts peuvent maintenant s'ex�cuter, bien que vous
ne puissiez vous loguer, car il n'y pas encore de programmes getty ou
login.
1133..1100.. UUttiill--lliinnuuxx ((ggeettttyy eett llooggiinn))
Le package util-linux contient agetty et login. Nous avons besoin des
deux pour nous loguer et obtenir la ligne de commande de bash. Apr�s
l'avoir install�, faites un lien symbolique depuis agetty vers getty
de le r�pertoire /sbin du syst�me cible. getty est un des programmes
cens�s se trouver sur tous les syst�mes de type Unix, donc faire un
lien est une meilleure id�e que de modifier inittab pour qu'il lance
agetty.
Il me reste un probl�me avec la compilation d'util-linux. Le package
contient �galement le programme more, et je n'ai pas �t� capable de
persuader le processus make de placer le lien more sur la biblioth�que
de ncurses 5 du syst�me cible, plut�t que sur ncurses 4 du syst�me
source. Je regarderai cela de plus pr�s.
Vous aurez aussi besoin d'un fichier /etc/passwd sur le syst�me cible.
C'est l'endroit o� le programme login ira v�rifier votre
accr�ditation. Comme il ne s'agit que d'un syst�me gadget � ce niveau,
vous pouvez vous permettre des choses scandaleuses, comme ne d�finir
que l'utilisateur root, sans mot de passe ! Mettez le simplement dans
le fichier /etc/passwd du syst�me cible.
root::0:0:root:/root:/bin/bash
Les champs sont s�par�s par des deux-points, correspondent, de gauche
� droite, � l'user id (nom de login), au mot de passe (crypt�), au
num�ro d'utilisateur, au num�ro de groupe, au nom de l'utlisateur, �
son r�pertoire personnel, et � son shell par d�faut.
1133..1111.. SShh--uuttiillss
Le dernier package dont nous ayons besoin est sh-utils GNU. Le seul
programme n�cessaire � ce niveau est stty, qui est utilis� dans
/etc/init.d/rc, lui-m�me utilis� pour changer de niveau d'ex�cution et
entrer dans le niveau initial. En fait, je poss�de et ai utilis� un
package qui ne contient que stty mais je ne peux me souvenir d'o� il
vient. Il vaut mieux utiliser le package GNU, car il contient d'autres
choses dont vous aurez besoin si vous voulez les ajouter au syst�me
pour le rendre vraiment utilisable.
Eh bien �a y est. Vous devriez maintenant avoir un syst�me qui doit
d�marrer et vous donner l'invite de login. Saisissez-y ``root'', et
vous devriez avoir le shell. Vous ne pourrez pas faire grand chose
avec, il n'y a m�me pas de commande ls pour voir votre travail. Tapez
deux fois la touche tab pour voir les commandes disponibles. C'est la
chose la plus int�ressante que j'ai trouv�e � faire avec.
1133..1122.. VVeerrss ll''uuttiilliissaabbiilliitt��
Il semblerait que nous ayons l� un syst�me plut�t inutilisable. Mais
en r�alit�, nous ne sommes pas tr�s loin de pouvoir commencer �
travailler avec. L'une des premi�res choses � faire est de rendre le
syst�me de fichiers racine accessible et lecture et �criture. Il y a
un script issu du package, dans /etc/init.d/mountall.sh qui s'occupe
de cela, et effectue un mount -a pour monter automatiquement tout ce
qui est sp�cifi� dans le fichier /etc/fstab. Mettez un lien symbolique
du genre S05mountall vers lui dans le r�pertoire etc/rc2.d du syst�me
cible.
Il se peut que ce script utilise des commandes que vous n'avez pas
encore install�es. Si c'est le cas, trouvez le package qui contient
ces commandes et installez-le. Voyez la section ``Random Tips'' pour
avoir des indications sur la marche � suivre pour trouver ces
packages.
Regardez les autres scripts dans /etc/init.d. La plupart d'entre-eux
doit �tre incluse dans tout syst�me s�rieux. Ajoutez-les un � un, et
assurez-vous que tout se lance en douceur avant d'en ajouter d'autres.
Lisez le Standard de la Hi�rarchie des Fichiers (voir section
``Syst�me de Fichiers''). Il contient une liste de commandes qui
devraient �tre dans /bin et /sbin. Assurez-vous que toutes ces
commandes sont install�es sur votre syst�me. Mieux encore, trouvez la
documentation Posix qui sp�cifie tout cela.
A partir de maintenant, il n'est plus question que d'ajouter de plus
en plus de packages, jusqu'� ce que tout ce que vous souhaitez avoir
se trouve sur votre syst�me. Installez les outils de construction
comme make et gcc le plus t�t possible. Une fois que cela est fait,
vous pouvez utiliser votre syst�me cible pour se construire lui-m�me,
ce qui est bien moins compliqu�.
1133..1133.. AAssttuucceess ddiivveerrsseess
Si vous avez une commande appel�e thingy sur un syst�me Linux avec
RPM, et souhaitez avoir des indications sur l'endroit o� trouver les
sources, vous pouvez utiliser la commande :
rpm -qif `which thingy`
Et si vous avez un CD de sources Red Hat, vous pouvez installer le
code source avec
rpm -i /mnt/cdrom/SRPMS/ce.qu.il.vient.de.dire-1.2.srpm
Ceci mettra l'archive, avec les patches Redhats �ventuels dans
/usr/src/redhat/SOURCES.
1133..1144.. PPlluuss dd''iinnffoorrmmaattiioonnss
� Il existe un mini-howto sur la mani�re de construire les logiciels
� partir de leurs sources, le Software Building mini-HOWTO
<
http://www.linuxdoc.org/HOWTO/Software-Building-HOWTO.html>
(miroir fran�ais en VO <
http://linuxfr.org/LDP/HOWTO/Software-
Building-HOWTO.html >).
� Il existe aussi un HOWTO sur la mani�re de construire un syst�me
Linux depuis z�ro. Il met l'accent sur la construction d'un syst�me
r�ellement utilisable, plut�t que pour le simple exercice. The
Linux From Scratch HOWTO <
http://www.linuxfromscratch.org>
1144.. CCoonncclluussiioonn
L'un des meilleurs c�t�s de Linux, � mon humble avis, est que vous
pouvez entrer dedans et voir r�ellement comment il fonctionne.
J'esp�re que vous appr�cierez cela autant que moi. Et j'esp�re que ces
quelques notes vous y auront aid�.
1155.. SSeeccttiioonn aaddmmiinniissttrraattiivvee
1155..11.. CCooppyyrriigghhtt
Ce document est copyright (c) 1999, 2000 Greg O'Keefe. Vous �tes libre
de l'utiliser, le copier, le distribuer ou le modifier, sans
obligation, selon les termes de la Licence Publique G�n�rale (GPL :
GNU General Public Licence <
http://www.gnu.org/copyleft/gpl.html>).
Merci de conserver les r�f�rences � l'auteur si vous utilisez tout ou
partie de ce document dans un autre.
1155..22.. PPaaggee pprriinncciippaallee
Les mises � jour de ce document �voluent sur From Powerup To Bash
Prompt <
http://learning.taslug.org.au/power2bash>.
1155..33.. RReettoouurrss
J'aimerais recevoir vos commentaires, critiques et suggestions.
Veuillez s'il vous pla�t me les envoyer � Greg O'Keefe
<mailto:
[email protected]>
1155..44.. RR��ff��rreenncceess eett rreemmeerrcciieemmeennttss..
Les noms de produits cit�s sont marques d�pos�es de leur propri�taires
respectifs, et consid�r�s par cette note comme reconnus comme tels.
Il y a quelques personnes que je voudrais remercier, pour m'avoir aid�
� r�aliser tout ceci.
TToouutt lleess aabboonnnn��ss ddee llaa lliissttee ddee ddiissccuussssiioonn lleeaarrnniinngg@@TTaassLLUUGG
Merci pour avoir lu tous mes mails et pos� des questions
int�ressantes. Vous pouvez rejoindre cette liste en envoyant un
message � majordomo <mailto:
[email protected]> avec la
phrase
subscribe learning
dans le corps du message.
MMiicchhaaeell EEmmeerryy
Pour m'avoir rappel� Unios.
TTiimm LLiittttllee
Pour de bonnes indications concernant /etc/passwd
ssPPaaKKrr ddaannss ##lliinnuuxx ssuurr eeffnneett
Qui a soup�onn� l'utilisation de /etc/services par syslog, et
m'a fait conna�tre la phrase ``rolling your own'' ("roulez-la
vous-m�me") pour d�crire la construction d'un syst�me � partir
des sources.
AAlleexx AAiittkkiinn
Pour avoir port� Vico et son ``verum ipsum factum'' (La
compr�hension d�coule de l'exp�rience) � mon attention.
DDeennnniiss SSccootttt
Pour avoir corrig� mon arithm�tique en hexad�cimal.
jjdddd
Pour avoir mis en �vidence quelques erreurs typographiques.
DDaavviidd LLeeaaddbbeeaatteerr
Pour avoir contribu� aux ``p�r�grinations'' dans les d�mons
noyau.
1155..55.. HHiissttoorriiqquuee ddeess cchhaannggeemmeennttss
1155..55..11.. 00..66 -->> 00..77
� L'accent est plus port� sur l'explication, et moins sur la fa�on de
monter un syst�me, ces informations ayant �t� regroup�es dans une
section distincte, et le syst�me une fois construit a �t� revu � la
baisse, voir directement la documentation de Gerard Beekmans
``Linux From Scratch'' pour construire un syst�me s�rieux.
� Ajout de quelques hypoth�ses de la part de David Leadbeater
� Correction de deux URL, ajout d'un lien vers le t�l�chargement
d'unios sur learning.taslug.org.au/resources
� Test et correction d'url.
� Grand nettoyage et r��criture g�n�rale.
1155..55..22.. 00..55 -->> 00..66
� Ajout de l'historique des changements
� Ajout de quelques ``todos'' (``A faire'').
1155..66.. AA ffaaiirree ((TTOODDOO))
� expliquer les modules noyau, depmod, modprobe, insmod et tout (il
faut d'abord que je trouve moi-m�me).
� mentionner le syst�me de fichiers /proc. Exercices potentiels.
� convertir en documentation sgml
� ajouter plus d'exercices, peut-�tre une section enti�re d'exercices
plus pouss�s, comme cr�er un syst�me de fichiers minimal fichier
par fichier � partir de l'installation d'une distribution.