  De la mise sous tension  la ligne de commande de Bash
  Greg O'Keefe, gcokeefe@postoffice.utas.edu.au
  v0.7, April 2000

  Voici une description rapide de ce qui se passe dans un systme 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 tche des gens qui veulent mettre en place un systme 
  partir du code source. Comprendre cela vous sera trs utile lorsque
  vous aurez besoin de rsoudre des problmes ou de configurer votre
  systme (version franaise par Dominique van den Broeck, Mai 2000,
  dvandenbroeck@free.fr <mailto:dvandenbroeck@free.fr>).
  ______________________________________________________________________

  Table des matires


















































  1. Introduction

  2. Partie matrielle (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 bibliothque 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 systme de fichiers (filesystem)

     7.1 Configuration
     7.2 Exercices
     7.3 Plus d'informations

  8. Dmons noyau

     8.1 Configuration
     8.2 Exercices
     8.3 Plus d'informations

  9. Le journal systme (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 systme Linux minimum  partir des sources.

     13.1 Ce qu'il vous faut
     13.2 Le systme 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 Rfrences 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)


  ______________________________________________________________________

  11..  IInnttrroodduuccttiioonn

  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 systme plutt que simplement savoir comment
  l'utiliser, ce document devrait tre un bon point de dpart. Ce genre
  de "connaissance de fond" est aussi requis si vous voulez devenir un
  as de la rsolution de problmes sous Linux.


  Je pars du principe que vous avez une machine Linux en tat de marche,
  et que vous matrisez les bases d'Unix et de l'architecture matrielle
  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
  franais 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 dbuter.  C'est un site
  concis, lisible, et qui couvre toutes les bases.


  Le sujet principal de ce document est la faon dont Linux dmarre.
  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  tlcharger, car j'espre
  que certains lecteurs s'attaqueront au meilleur exercice
  d'apprentissage de Linux que je connaisse : construire un systme 
  partir du code source.  Giambattista Vico, un philosophe italien
  (1668-1744) disait ``verum ipsum factum'' ce qui signifie "la
  comprhension dcoule de l'exprience" (NDT : Traduction libre). Merci
   Alex (voir ``Remerciements'') pour cette citation.
  Si vous souhaitez vous "la rouler vous-mme", je vous conseille
  d'aller voir Linux From Scratch HOWTO
  <http://www.linuxfromscratch.org> (LFS soit "Linux depuis zro").  LFS
  fournit des instructions dtailles pour btir un systme 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 systmes. Ce que j'ai inclus
  dans ce document, ce sont des instructions pour construire un systme
  "jouet", (voir ``Btir un systme Linux minimal  partir des
  sources'') purement pour l'exercice.


  Les lots (NDT : "packages" en anglais et repris ci-aprs) sont
  prsents dans l'ordre o ils apparaissent dans le processus de
  dmarrage du systme.  Cela signifie que si vous installez les
  packages dans cet ordre vous pouvez redmarrer aprs chaque
  installation, et voir  chaque fois le systme 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 rfrences, puis de dcider du
  point jusqu'auquel vous souhaitez comprendre votre systme. Reprenez
  alors depuis le dbut, en faisant les exercices et en relisant en
  dtail.




  22..  PPaarrttiiee mmaattrriieellllee ((HHaarrddwwaarree))

  Lorsque vous allumez votre ordinateur, celui-ci se teste lui-mme 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 systme
  d'exploitation. Les secteurs d'amorce sont marqus par un ``nombre
  magique'' (valeur fixe caractristique) 0xAA55 = 43603  l'octet 0x1FE
  = 510. Ce sont les deux derniers octets du secteur.  C'est de cette
  faon que l'lectronique peut dterminer 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
  amorable ("bootable"), il le charge en mmoire et passe ainsi le
  contrle au programme qui charge le systme d'exploitation en mmoire.
  Sur un systme Linux typique, ce programme sera la premire tape du
  chargeur de LILO. Il existe malgr tout plusieurs manires diffrentes
  de faire dmarrer ("booter") votre systme.  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 dtails.  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 matrielle du PC.




  22..11..  CCoonnffiigguurraattiioonn

  La machine stocke des informations sur son propre tat dans son CMOS.
  Cela inclut la RAM et les types de disques installs dans le systme.
  Le BIOS de la machine contient un programme, Setup, qui vous permet de
  modifier ces informations. Pour savoir comment y accder, 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 systme d'exploitation.


  22..22..  EExxeerrcciicceess

  Une bonne faon 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 cotera
  pas trs cher. Posez la question autour de vous, quelqu'un pourrait
  bien vous donner une partie des pices 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
  tlchargez, 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 intressant 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
  hexadcimal. Cette image fait 512 octets de long. Exactement la
  longueur d'un secteur. Trouvez-y le nombre magique 0xAA55. Faites la
  mme 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  paramtrer if
  (fichier source) et of (fichier destination) comme il faut !

  Essayez d'en extraire le code source du chargeur de LILO.


  22..33..  PPlluuss dd''iinnffoorrmmaattiioonnss..


    Les notions fondamentales d'Unix et d'Internet
     <http://www.linuxdoc.org/HOWTO/Unix-and-Internet-Fundamentals-
     HOWTO.html>, par Eric S. Raymond, miroirs franais 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 particulirement 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'amorage (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 manire de faire
     voluer (upgrader) son PC.


  33..  LLiilloo

  Lorsque l'ordinateur charge le secteur d'amorce d'un systme sous
  Linux normal, ce qu'il charge est en fait un partie de LILO, appele
  "first stage boot loader" (chargeur de boot de premier niveau). Il
  s'agit d'un mini programme dont la seule tche est de charger et
  d'excuter le ``second stage boot loader'' (chargeur de boot de
  deuxime niveau).


  Le "second stage loader" vous donne une invite de commande (s'il a t
  install de cette manire) et charge le systme d'exploitation de
  votre choix.


  Lorsque votre systme est mont et en tat de marche, et que vous
  excutez lilo, ce que vous excutez en ralit 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 systmes d'exploitation qu'il peut charger.


  Il y a de nombreuses manires de rendre votre systme bootable. Celle
  que je viens de dcrire est la manire la plus vidente et
  ``normale'', au moins pour une machine dont le systme 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.


  33..11..  CCoonnffiigguurraattiioonn

  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 caractristique de lilo.conf est
  qu'il existe une entre pour chaque chose que Lilo doit booter. Pour
  une entre Linux, cela inclut l'endroit o se trouve le kernel, et la
  partition  monter  la racine du systme de fichier (``filesystem'').
  Pour les autres systmes, la principale information est la partition
  sur laquelle booter.


  33..22..  EExxeerrcciicceess

  _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 systme
  inutilisable. Assurez-vous que vous avez une disquette de rparation
  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 rparation que j'utilise et recommande.  La meilleure des
  prcautions est d'utiliser une machine qui ne contienne pas de donnes
  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 prt 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 systme sur une disquette. C'est srement
  la deuxime 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 dfi supplmentaire, 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 !


  33..33..  PPlluuss dd''iinnffoorrmmaattiioonnss



    La page de man de Lilo

    Le package Lilo (voir ``downloads'') contient le ``LILO User's
     Guide'' lilo-u-21.ps.gz (ou plus rcent).  Il se peut que vous ayez
     quand mme dj 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 franais en VO
     <http://www.linuxfr.org/LDP/HOWTO/Bootdisk-HOWTO> et VF
     <http://www.freenix.org/unix/linux/HOWTO/Bootdisk-HOWTO.html>.





  44..  LLee nnooyyaauu LLiinnuuxx


  Le noyau (kernel) fait vraiment beaucoup de choses. Je pense qu'une
  bonne manire de rsumer tout cela est de dire qu'il fait faire au
  hardware ce que les programmes veulent, proprement et efficacement.


  Le processeur ne peut excuter qu'une seule instruction  la fois,
  mais Linux semble faire tourner beaucoup de choses simultanment. Le
  noyau accomplit cela en sautant de tche en tche trs rapidement. Il
  fait le meilleur usage possible du processeur en gardant trace des
  processus qui sont prts  tre excuts et de ceux qui attendent
  quelque chose comme un enregistrement en provenance d'un disque, ou
  une saisie clavier quelquonque. Cette tche du noyau est appele
  "scheduling" (planification).


  Si un programme ne fait rien, alors il n'a pas besoin d'tre en RAM.
  Mme 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 utilises. Les pages qui ne sont pas autant utilises peuvent
  tre dplaces dans la partition d'change (swap). Lorsqu'une page est
   nouveau sollicite, une autre page inutilise est retire de
  l'espace adressable pour lui faire de la place.  Cela s'appelle la
  gestion de la mmoire virtuelle.
  Si vous avez un jour compil votre propre noyau, vous avez remarqu
  qu'il y a un grand nombre d'options pour des priphriques
  spcifiques. Le noyau contient beaucoup de code spcifique pour
  converser avec l'lectronique de tout type, et les prsente d'une
  faon 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
  rseau.


  Une fois le noyau charg, la premire chose qu'il fait est de
  rechercher un programme appel init et l'excuter.


  44..11..  CCoonnffiigguurraattiioonn

  La majorit de la configuration du noyau est effectue quand vous le
  construisez, en utilisant make menuconfig, ou make xconfig dans le
  rpertoire /usr/src/linux/ (ou l ou se trouvent les sources de votre
  noyau Linux). Vous pouvez rinitialiser le mode vido par dfaut, la
  racine du systme de fichiers, le priphrique de swap et la taille du
  disque virtuel (RAM disk) en utilisant rdev. Ces paramtres ainsi que
  d'autres peuvent aussi tre passs au noyau depuis Lilo. Vous pouvez
  indiquer  Lilo les paramtres  passer au noyau soit dans lilo.conf,
  soit  l'invite (prompt) de Lilo.  Par exemple, si vous souhaitiez
  utiliser hda3 comme racine du systme de fichiers plutt que hda2,
  vous pourriez taper :


          LILO: linux root=/dev/hda3




  Si vous mettez en place un systme  partir de ses sources, vous
  pouvez vous simplifier la vie en crant un noyau "monolithique",
  c'est--dire sans module. Vous n'aurez donc pas  copier ceux-ci sur
  le systme cible.


  NOTE : Le fichier System.map est utilis par le logger (le journal
  systme, qui enregistre les messages de service) du noyau pour
  dterminer les noms des modules gnrant des messages. Le programme
  top utilise galement ces informations. Lorsque vous copiez le noyau
  vers un systme cible, copiez aussi System.map.


  44..22..  EExxeerrcciicceess

  Rflchissez  ceci : /dev/hda3 est un type de fichier spcial qui
  dcrit une partition d'un disque dur. Mais il vit sur le systme de
  fichiers comme tous les autres fichiers. Le noyau veut savoir quelle
  partition monter  la racine - donc il n'a pas encore de systme 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 rduire la taille de
  votre noyau avant qu'il ne cesse de fonctionner. Vous pouvez apprendre
  beaucoup en cartant les parties qui ne sont pas ncessaires.
  Lisez ``The Linux Kernel'' (URL plus bas) et ce faisant, trouvez les
  parties du source auxquelles il se rfre. Le livre (au moment o
  j'cris ces lignes) se rfre au noyau version 2.0.33, qui devient
  franchement dpass.  Il pourrait tre plus facile de suivre si vous
  tlchargiez cette ancienne version et y lisiez le source. Il est trs
  excitant de trouver des morceaux de code C appels ``process'' et
  ``page''.


  Programmez ! Faites des essais ! Voyez si vous pouvez faire cracher au
  noyau des messages supplmentaires ou quelque chose du mme genre.



  44..33..  PPlluuss dd''iinnffoorrmmaattiioonnss


    /usr/src/linux/README et le contenu de
     /usr/src/linux/Documentation/ (Ces emplacements peuvent varier sur
     votre systme)

    Le Kernel-HOWTO
     <http://mirror.aarnet.edu.au/linux/LDP/HOWTO/Kernel-HOWTO.html>
     (miroirs franais 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 franais en VO
     <http://www.linuxfr.org/LDP/LDP>)

    Tlchargement des sources voir ``tlchargements''



  55..  LLaa bbiibblliiootthhqquuee CC ddee GGNNUU

  L'tape suivante qui se produit au dmarrage de votre ordinateur est
  le chargement d'init et son excution. Cependant, init, comme la
  plupart des programmes, utilise des fonctions issues de bibliothques.


  Vous avez peut-tre dj vu un exemple de programme C comme celui-ci :



          main() {
                  printf("Hello World!\n");
          }



  Le programme ne dfinit nullement printf, alors d'o vient-il ?  Il
  provient des bibliothques C standard ("standard C libraries"), sur un
  systme GNU/Linux, glibc. Si vous les compilez sous Visual C++, alors
  il provient d'une implmentation Microsoft de ces mmes fonctions
  standard.  Il existe des milliers de ces fonctions standard, pour les
  mathmatiques (math), la gestion des chanes de caractres (string),
  l'heure et la date, l'allocation de mmoire 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 systme Linux, vous verrez
  un grand nombre de fichiers appels libquelquechose.so ou
  libquelquechose.a etc. Ce sont les bibliothques de ces fonctions.
  Glibc est simplement l'implmentation GNU de ces fonctions.


  Les programmes peuvent utiliser ces fonctions de deux manires. si
  vous "linkez" (NDT : "ditez les liens", opration qui consiste 
  tablir les relations avec les diffrents objets sollicits par le
  programme, puis  crer l'excutable) _s_t_a_t_i_q_u_e_m_e_n_t, ces fonctions
  seront copies  l'intrieur de l'excutable gnr. C'est  a que
  servent les bibliothques libquelquechose.a. Si vous linkez votre
  programme _d_y_n_a_m_i_q_u_e_m_e_n_t (effectu par dfaut), lorsque le programme
  aura besoin du code d'une bibliothque, il ira l'extraire directement
  du fichier libquelquechose.so


  La commande ldd vous apporte une aide prcieuse lorsque vous cherchez
   retrouver les bibliothques utilises par un programme particulier.
  Par exemple, voici les bibliothques utilises 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)




  55..11..  CCoonnffiigguurraattiioonn

  Certaines fonctions, dans leur bibliothque, dpendent du lieu o vous
  vous trouvez. Par exemple, en franais, on crit les dates sous la
  forme dd/mm/yy, mais les amricains les crivent mm/dd/yy. Il existe
  un programme livr avec glibc appel localdef qui vous donne la
  possibilit de dfinir cela.


  55..22..  EExxeerrcciicceess

  Utilisez ldd pour dterminer les bibliothques qu'utilise votre
  application prfre.


  Utilisez ldd pour dterminer les bibliothques utilises par init.


  Crez une bibliothque gadget, avec seulement une ou deux fonctions
  dedans.  On utilise le programme ar pour les crer. La page de manuel
  d'ar pourrait tre un bon point de dpart pour commencer  enquter
  sur la manire dont cette opration est effectue. Ecrivez, compilez,
  et linkez un programme utilisant cette bibliothque.



  55..33..  PPlluuss dd''iinnffoorrmmaattiioonnss


    Code source, voir la section ``tlchargements''





  66..  IInniitt

  Je ne parlerai que du style d'initialisation ``System V'' que les
  systmes Linux utilisent le plus souvent. Il existe des alternatives.
  En fait, vous pouvez mettre n'importe quel programme dans /sbin/init,
  que le noyau excutera lorsqu'il aura fini de se charger.


  Le travail d'init est de faire en sorte que tout se lance comme il
  faut. Il vrifie que les systmes de fichier sont en bon tat et les
  monte. Il dmarre les dmons (``daemons'') qui enregistrent les
  messages systme, grent le rseau, distribuent les pages web,
  coutent les signaux de la souris, etc. Init dmarre 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'excution ("run-levels"), mais je vais sauter tout a, et ne parler
  que du dmarrage du systme.


  Init lit le fichier /etc/inittab, qui lui dit quoi faire.
  Typiquement, la premire chose demande est l'excution d'un script
  d'initialisation. Le programme qui excute (ou interprte) ce script
  est bash, le mme programme qui vous donne la ligne de commande.  Sur
  les systmes Debian, le script d'initialisation est /etc/init.d/rcS,
  sur Red Hat, /etc/rc.d/rc.sysinit.  C'est l que les systmes de
  fichiers sont vrifis puis monts, l'horloge mise  l'heure, le
  fichier ou la partition d'change (swap) activs, les noms de machines
  dfinis, etc.



  Ensuite, un autre script est invoqu pour nous placer dans le niveau
  d'excution par dfaut. Cela implique simplement le dmarrage d'un
  ensemble de sous-systmes. Il existe un ensemble de sous-rpertoires
  /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'excution 3 sur un
  systme Debian, le script excute tous les scripts de /etc/rc3.d
  commenant par `S' (pour Start). Ces scripts sont en ralit des liens
  vers un autre rpertoire appel gnralement init.d.


  Donc, le script de notre niveau d'excution est appel par init, et
  recherche dans un rpertoire des scripts dont le nom dbute 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 commenant par S00 ... S09. Mais S10syslog est en fait
  un lien vers /etc/init.d/syslog qui est un script charg du dmarrage
  et de l'arrt du system logger (enregistreur de messages systmes).
  Parce que le lien commence par un `S', le script du run-level sait
  qu'il doit excuter le script syslog avec le paramtre "start". Il y a
  aussi des liens dont le nom dbute par `K' (pour Kill), qui spcifient
  ce qu'il faut arrter, et dans quel ordre, lorsque l'on entre dans le
  niveau d'excution.



  Pour changer ce que le sous-systme lance par dfaut, vous devez
  configurer ces liens dans le rpertoire rcN.d, ou N est le niveau
  d'excution par dfaut dfini dans votre fichier inittab.


  La dernire chose importante qu'effectue init est de dmarrer les
  gettys [NdRel :en pratique, souvent des mingettys)].  Ceux-ci sont
  ressuscits (``respawned''), ce qui signifie qu'ils sont
  automatiquement relancs 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 mmoire, 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.



  66..11..  CCoonnffiigguurraattiioonn

  /etc/inittab, qui est le fichier de configuration au sommet de la
  "hirarchie" des fichiers de configuration.


  Les rpertoires rcN.d, o N = 0, 1,..., 6 dtermine les sous-systmes
   lancer.


  Quelque part dans les scripts invoqus par init, se trouve la commande
  mount -a.  Cela signifie : "Monte tous les systmes de fichiers censs
  tre monts".  Le fichier /etc/fstab dfinit ce qui est cens tre
  mont. Si vous souhaitez changer ce qui est mont par dfaut au
  dmarrage, c'est le fichier que vous devez modifier. Il existe une
  page de manuel pour fstab.


  66..22..  EExxeerrcciicceess


  Trouvez le rpertoire rcN.d du niveau d'excution par dfaut de votre
  systme puis faites un ls -l pour voir les fichiers points par les
  liens.


  Changez le nombre de gettys tournant sur votre systme.


  Retirez tous les sous-systmes dont vous n'avez pas besoin de votre
  niveau d'excution par dfaut.


  Essayez de dterminer le minimum ncessaire pour dmarrer.


  Fabriquez une disquette avec Lilo, un noyau et un programme statique
  affichant "Bonjour tout le monde !" nomm /sbin/init, puis regardez-la
  dmarrer et dire bonjour.


  Regardez attentivement votre systme dmarrer, et notez les vnements
  signals. Ou imprimez une section de votre journal systme
  /var/log/messages  partir du moment o votre systme a dmarr.
  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 compliqus. Ayez un bon guide de
  bash  porte de main (NDT : "man bash" devrait suffire, faute de
  mieux).


  66..33..  PPlluuss dd''iinnffoorrmmaattiioonnss..


    Voir ``tlchargements'' pour tlcharger 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 Systme Linux contient une section
     <http://mirror.aarnet.edu.au/linux/LDP/LDP/> intressante
     concernant init (miroir franais en VO
     <http://www.linuxfr.org/LDP/LDP>).



  77..  LLee ssyyssttmmee ddee ffiicchhiieerrss ((ffiilleessyysstteemm))

  Dans cette section, j'emploierai l'expression ``systme de fichiers''
  pour deux notions diffrentes.  Il y a les systmes de fichiers
  installs sur des partitions de disque ou d'autres priphriques, et
  il y a le systme de fichier (NdRel : la hirarchie)  tel qu'il vous
  est prsent par un systme Linux en tat de marche. Sous Linux, vous
  "montez" le systme de fichiers d'un disque sur le systme de fichiers
  du systme.


  Dans la section prcdente, j'ai mentionn le fait que des scripts
  d'initialisation vrifiaient et montaient les systmes de fichiers.
  Les commandes qui effectuent ces oprations sont respectivement fsck
  et mount.


  Un disque dur n'est qu'un grand espace dans lequel vous pouvez crire
  des zros et des uns. Un systme de fichiers impose une structure 
  tout cela, et le prsente sous la forme de fichiers,  l'intrieur de
  sous-rpertoires,  l'intrieur de rpertoires... Chaque fichier est
  rpresent par un inode, indiquant le fichier dont il s'agit, la date
  de sa cration, et o trouver son contenu. Les rpertoires sont aussi
  reprsents par des inodes, mais ceux-ci indiquent o trouver les
  inodes des fichiers que les reprtoires contiennent. Si le systme
  veut lire /home/greg/bigboobs.jpeg, il commence par lire l'inode du
  rpertoire racine / dans le ``superblock'', puis trouve l'inode du
  rpertoire home dans le contenu de /, puis trouve l'inode du
  rpertoire 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 donnes  la fin d'un fichier, il peut arriver
  que les donnes soient crites avant que l'inode ne soit mis  jour
  (indiquant que le nouveau bloc appartient dsormais au fichier), ou
  vice-versa. Si le courant est coup  cet instant prcis, le systme
  de fichiers sera "cass".  C'est ce genre de chose que fsck essaie de
  dtecter et de rparer.


  La commande mount prend le systme de fichiers d'un priphrique, et
  l'ajoute  la hirarchie de fichiers de votre systme. En gnral le
  noyau monte son systme de fichiers racine en lecture seule (read-
  only).  La commande mount est ensuite utilise pour le remonter en
  lecture-criture (read-write) aprs que fsck ait vrifi que tout soit
  en ordre.


  Linux prend aussi en charge d'autres types de systmes de fichiers :
  msdos, vfat, minix, etc. Les dtails d'un systme de fichiers
  spcifique sont masqus par le Systme de Fichier Virtuel (Virtual
  File System ou VFS) qui est une couche d'abstraction. Je ne rentrerai
  pas dans ces dtails. Il existe une discussion sur ce sujet dans ``Le
  Kernel Linux'' (voir la section ``Le Noyau Linux'' pour l'URL)


  77..11..  CCoonnffiigguurraattiioonn

  Il existe des paramtres  la commande mke2fs, charge de la cration
  d'un systme de fichiers de type ext2. Ils contrlent la taille des
  blocs, le nombre d'inodes, etc. Voir la man page de mke2fs pour plus
  de dtails.


  Ce qui doit tre mont sur votre systme de fichiers est contrl par
  le fichier /etc/fstab, qui a lui aussi sa page de manuel.


  77..22..  EExxeerrcciicceess

  Fabriquez un tout petit systme de fichiers, et visualisez-le avec un
  diteur hexadcimal. 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 systme de fichiers. Trouvez-en un, essayez-le, et envoyez moi
  l'url par email avec vos apprciations !


  Explorez le code du systme de fichiers ext2 dans le noyau.


  77..33..  PPlluuss dd''iinnffoorrmmaattiioonnss


    Le chapitre 9 du livre ``Le noyau linux'' du LDP donne une
     excellente description des systmes de fichiers. Vous pouvez le
     trouver sur le site LDP : miroir franais
     <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 ``tlchargements''.

    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
     systmes de fichiers d'Unix.  Ce document dcrit o doit se trouver
     quoi, dans un systme Unix, et pourquoi. Il indique aussi le
     minimum ncessaire  placer dans /bin, /sbin, etc. C'est une bonne
     rfrence si votre objectif est un systme minimal mais complet.




  88..  DDmmoonnss nnooyyaauu

  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'excution sur le systme.
  Remarquez que init est le processus numro un. Les processus 2, 3,4 et
  5 sont kflushd, kupdate, kpiod et kswapd. Il y a quand mme quelque
  chose d'trange : dans les deux colonnes de la taille virtuelle de
  stockage (SIZE) et la taille relle de stockage (Real Storage Size,
  RSS), ces processus renvoient zro. Comment un processus peut-il ne
  pas utiliser de mmoire ?  En ralit, ces processus font partie du
  noyau. Le noyau, lui, n'apparat pas du tout sur la liste des
  processus, et vous ne pouvez dfinir la mmoire utilise qu'en
  soustrayant la mmoire disponible du total install sur votre systme.
  Les parenthses autour du nom de commande pourraient signifier qu'il
  s'agit d'un processus noyau (?)


  kswapd dplace des parties d'un programme non utilises  un instant
  donn de l'espace de stockage rel (c'est--dire la RAM) vers l'espace
  de swap (c'est--dire le disque dur). kflushd crit les donnes des
  buffers vers le disque. Ceci permet aux choses d'aller plus vite. Ce
  que les programmes crivent peut tre conserv en mmoire, dans un
  buffer, puis crit sur le disque par morceaux plus larges et de faon
  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
  dmons ? Pourquoi les dmons noyau ont-ils des numros de processus
  explicites plutt que d'tre simplement des bouts de code anonymes ?
  Est-ce qu'init les lance effectivement, ou tournent-ils dj lorsque
  init apparat ?


  J'ai mis dans /sbin/init un script pour monter /proc et faire un ps
  aux. Le processus 1 tait le script lui-mme, et les processus 2, 3, 4
  et 5 taient les dmons noyau, juste au dessous du vrai init. Le noyau
  les a forcment mis l, car ce n'est srement pas mon script qui l'a
  fait.


  Les hypothses suivantes viennent de David Leadbeater :


  Ces processus semblent s'occuper des accs disque, ils semblent tre
  lancs par le noyau, mais aprs avoir lanc le processus init. Il
  semble qu'en tant lancs comme des processus noyau plutt que comme
  des processus spars, ils soient protgs et ne peuvent tre tus
  (kill -9 ne les arrte pas), je ne sais pas vraiment pourquoi ils sont
  lancs en tant que threads spars. Il semble y avoir un rapport avec
  les accs disque.


  _k_f_l_u_s_h_d _e_t _k_u_p_d_a_t_e Ces deux processus sont dmarrs pour vider les
  buffers "sales" (c'est--dire modifis) vers le disque. kflushd est
  lanc quand les buffers sont pleins et kupdate se lance priodiquement
  (5 secondes ?) pour synchroniser les disques avec les buffers en
  mmoire.


  _k_p_i_o_d _e_t _k_s_w_a_p_d Ils ont pour tche l'exportation de pages (sections)
  de mmoire vers le fichier d'change de faon  ce que la mmoire
  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 priodiquement ( 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 dfaut de RedHat 6, kupdate a disparu mais
  udpate tourne en tant que dmon dans l'espace utilisateur, et il
  semble qu'il ait besoin d'tre lanc. Il y a galement un autre dmon,
  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 spars.


  Je ne connais toujours pas la signification des parenthses, mais
  elles semblent apparatre quand la RSS d'un processus est  zro, ce
  qui signifie qu'il n'utilise pas de mmoire (?).


  (fin de citation, merci David)



  88..11..  CCoonnffiigguurraattiioonn

  Je n'ai pas connaissance d'une configuration de ces dmons noyau.


  88..22..  EExxeerrcciicceess

  Trouvez  quoi servent ces processus, comment ils fonctionnent, et
  crivez une nouvelle section `Dmons Noyau'' pour ce document, et
  envoyez-la moi !





  88..33..  PPlluuss dd''iinnffoorrmmaattiioonnss

  ``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.



  99..  LLee jjoouurrnnaall ssyyssttmmee ((SSyysstteemm LLooggggeerr))

  Init dmarre les dmons syslogd et klogd. Ils crivent les messages 
  consigner dans le journal. Les messages du noyau sont pris en main par
  klogd, alors que syslogd gre 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 systme. Vous
  y trouverez souvent de prcieux indices.



  99..11..  CCoonnffiigguurraattiioonn

  Le fichier /etc/syslog.conf indique au logger o mettre quels
  messages. Les messages sont identifis 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 rserv pour faire
  de l'enregistrement de messages  distance, ou si mme
  l'enregistrement local se fait  travers un port, ou mme s'il se
  contente d'utiliser /etc/services pour convertir les noms de services
  indiqus dans /etc/syslog.conf en numros de port.


  99..22..  EExxeerrcciicceess

  Jetez un oeil  votre journal systme. 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).



  99..33..  PPlluuss dd''iinnffoorrmmaattiioonnss

  Le miroir
  <http://mirror.aarnet.edu.au/pub/linux/metalab/system/daemons/>
  australien de sysklogd.




  1100..  GGeettttyy eett LLooggiinn

  Getty est le programme qui vous permet de vous connecter  travers un
  priphrique srie, 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 vrifie, puis vous donne le shell.

  Il existe plusieurs getty disponibles. Certaines distributions, comme
  Red Hat, en utilisent un trs petit appel mingetty et qui ne gre 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.


  1100..11..  CCoonnffiigguurraattiioonn

  Le message qui apparat en haut de votre cran avec l'invite de login
  provient du fichier /etc/issue. Les getty sont en gnral dmarrs
  depuis /etc/inittab. Login recherche les dtails spcifiques 
  l'utilisateur dans /etc/passwd, et si vous avez le shadowing (une
  protection des mots de passe), dans /etc/shadow.


  1100..22..  EExxeerrcciicceess

  Crez un fichier /etc/passwd  la main. Les mots de passe peuvent tre
  nuls, puis changs 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 plutt que celle du programme.




  1111..  BBaasshh

  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 systme 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'interprteur d'un langage de programmation.


  Dans son rle d'interface, il lit vos commandes, et les excute lui-
  mme si ces commandes sont ``internes'', comme cd, ou bien trouve et
  excute 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 compltement automatique des
  noms de fichiers (avec la touche de tabulation).


  Nous avons dj vu bash  l'action dans son rle de langage de
  programmation. Les scripts qu'init lance pour dmarrer le systme sont
  gnralement des scripts shell, et sont excuts par bash.  Avoir un
  langage de programmation propre, paralllement aux utilitaires
  systmes disponibles depuis la ligne de commande forme une combinaison
  trs puissante, si vous savez ce que vous faites. Par exemple
  ("squence frime" !)  j'ai eu besoin l'autre jour d'appliquer une pile
  entire de correctifs (patches)  un rpertoire 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 rpertoire 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 excute les commandes
  invoques entre do et done. Il y avait en l'occurence 11 correctifs,
  mais il aurait pu aussi bien y en avoir 3000.


  1111..11..  CCoonnffiigguurraattiioonn

  Le fichier /etc/profile agit sur le comportement de bash au niveau du
  systme entier. Ce que vous mettez dans ce fichier affectera toute
  personne qui utilise bash sur votre systme. Cela sert par exemple 
  ajouter des rpertoires dans la variable PATH, ou  dfinir celui de
  la variable MAIL.


  Le comportement par dfaut du clavier laisse souvent  dsirer. En
  fait, c'est readline qui contrle cela. Readline est un package
  distinct qui prend en main les interfaces de ligne de commande, en
  fournissant l'historique des commandes, et le compltement automatique
  de noms de fichiers (NDT : Touche TAB sous Bash), tout comme les
  facilits volues d'dition de ligne. Il est compil dans bash. Par
  dfaut, Readline est configur  l'aide du fichier .inputrc, dans
  votre rpertoire personnel. La variable INPUTRC peut tre utilise
  pour outrepasser les rgles de ce fichier pour le bash. Par exemple,
  dans Red Hat 6, INPUTRC reoit la valeur /etc/inputrc dans le fichier
  /etc/profile. Cela signifie que les touches Retour Arrire
  (Backspace), Suppr (Delete), Dbut (Home) et Fin (End) fonctionnent
  correctement et pour tout le monde.


  Une fois que bash a lu le fichier de configuration gnral, commun au
  systme entier, il recherche votre fichier de configuration personnel.
  Il teste l'existence des fichiers .bash_profile, .bash_login et
  .profile dans votre rpertoire 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
  contrler 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.



  1111..22..  EExxeerrcciicceess

  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 faons de faire les choses.


  Lisez des scripts shell, analysez les choses que vous ne comprenez
  pas.


  1111..33..  PPlluuss dd''iinnffoorrmmaattiioonnss


    Tlchargement du code source, voir ``tlchargements''

    Il existe un ``Manuel de Rfrence 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.



  1122..  LLeess ccoommmmaannddeess

  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 intgres au
  shell.


  Les commandes viennent de packages, la plupart de la Free Software
  Foundation (projet GNU). Plutt que de dresser ici la liste des
  packages, je prfre vous renvoyer vers le Linux From Scratch HOWTO
  <http://www.linuxfromscratch.org>.  Il contient une liste complte et
   jour de tous les packages allant dans un systme Linux, aussi bien
  que des indications pour les construire.



  1133..  CCoonnssttrruuiirree uunn ssyyssttmmee LLiinnuuxx mmiinniimmuumm  ppaarrttiirr ddeess ssoouurrcceess..

  Nous nous sommes concentrs jusqu'ici sur ce que les packages font. Je
  vais vous donner ici tout les indices que je peux pour fabriquer un
  systme Linux de base  partir des sources. Si vous voulez monter un
  vrai systme 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 dcris est un systme de base,
  sans embche, qui peut tre mont facilement.



  1133..11..  CCee qquu''iill vvoouuss ffaauutt

  Nous installerons une distribution de Linux comme Red Hat sur une
  partition, et l'utiliserons pour construire un nouveau systme Linux
  sur une autre partition. Je nommerai par la suite ``cible'' le systme
  que nous construisons, et ``source'' le systme que nous utilisons
  pour construire le systme 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 systme Linux dj existant comme
  systme source, mais je le dconseille. Si vous oubliez un des
  paramtres des commandes que nous allons saisir, vous pourriez
  accidentellement rinstaller des choses sur votre systme source. Cela
  peut mener  des incompatibilits, 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 mgaoctets. Ce n'est pas vraiment
  un problme pour Linux, qui gre lui-mme les disques une fois lanc.
  Mais pour que Linux soit charg sur ces vieilles machines, le noyau
  doit rsider quelque part en dessous de 512 mgaoctets. Si vous
  utilisez une de ces machines, vous devez crer une partition distincte
  en dessous de 512 Mo,  monter sur /boot pour toute partition au
  dessus de la limite des 512 Mo.

  La dernire fois que je l'ai fait, j'ai utilis Red Hat 6.1 comme
  systme source. J'ai install le systme 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 ncessaire. A la
  fin de mon travail, cela avait pris environ 350M d'espace disque (Cela
  semble un peu lev, je me demande pourquoi).


  Le systme cible achev prenait 650M, mais comprenait tout le code
  source et les fichiers intermdiaires. Si l'espace est limit, je vous
  conseille de faire un make clean aprs la construction de chaque
  package. Cela dit, c'est une source d'ennuis et d'hsitation.


  Enfin, vous allez avoir besoin du code source du systme 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 amricains 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 lists sur home page
     <http://www.kernel.org> plutt 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 bibliothque elle-mme, 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
     amricaines sur l'exportation, vous pouvez la rcuprer sur
     libcrypt <ftp://ftp.gwdg.de/pub/linux/glibc> les add-ons
     linuxthreads sont au mme 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 rsumer, il vous faut :

    Une machine avec deux partitions distinctes d'environ 400M et 700M
     respectivement, bien que vous puissiez srement 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 concatns en un seul, puis compress ou non ensuite) du
     code source, listes ci-dessus.


  Je pars du principe que vous pouvez installer le systme source vous-
  mme, sans aide de ma part. A partir de maintenant, je considre que
  c'est fait.


  Les premiers pas de ce projet consistent  faire dmarrer 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 mme correctement,
  nous avons besoin d'installer les fichiers spciaux dans le /dev du
  systme cible.  Lilo en a besoin pour effectuer les accs bas niveau
  au disque, ncessaire pour crire le secteur d'amorce. MAKEDEV est le
  script qui cre ces fichiers spciaux (Vous pourriez bien sr les
  recopier depuis le systme source, mais ce serait tricher !). Mais
  d'abord, il nous faut un systme de fichiers pour les mettre dedans.



  1133..22..  LLee ssyyssttmmee ddee ffiicchhiieerr ((FFiilleessyysstteemm))

  Notre nouveau systme a besoin d'un systme de fichiers pour vivre.
  Donc, il nous faut tout d'abord crer ce systme de fichiers en
  utilisant mke2fs. Ensuite il faut le monter quelque part. Je vous
  suggre /mnt/target (comme `cible'). Dans ce qui va suivre, je
  considre que votre systme se trouve  cet endroit. Vous pouvez
  gagner un peu de temps en ajoutant une entre dans /etc/fstab de faon
   ce que le montage de votre systme destination soit automatique
  lorsque votre systme source dmarre.


  Lorsque nous dmarrerons le systme cible, ce qui se trouve dans
  /mnt/target se trouvera alors dans / ( la racine).

  Nous avons besoin d'une structure de sous-rpertoires sur la cible.
  Jetez un oeil au Standard de la Hirarchie des Fichiers (File
  Hierarchy Standard, voir section ``Systme de Fichiers'').  pour
  trouver vous mme ce qu'elle devrait tre, ou faites simplement un cd
  vers l'endroit o la cible est monte et tapez aveuglment :



          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




  1133..33..  MMAAKKEEDDEEVV

  Nous mettrons le code source dans le rpertoire /usr/src cible.  Aussi
  si votre systme 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 dcompresser ;-)


  En principe, lorsque vous installez un logiciel, vous l'installez sur
  le systme en fonctionnement. En l'occurence, ce n'est pas notre
  intention, nous souhaitons l'installer comme si /mnt/target tait le
  systme de fichiers racine.  Les diffrents packages ont diffrentes
  manires 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 dfinie dans cette commande. Ensuite
  jetez un oeil  la page de manuel en faisant un man ./MAKEDEV.man pour
  voir comment il fonctionne. Vous dcouvrirez que la mthode utilise
  pour ces fichiers spciaux consiste  faire un cd /mnt/target/dev puis
  un ./MAKEDEV generic. Faites un ls pour dcouvrir tous les merveilleux
  fichiers spciaux qu'il a crs pour vous !


  1133..44..  LLee nnooyyaauu ((kkeerrnneell))

  Ensuite, nous devons fabriquer un noyau. Je considre que vous l'avez
  dj fait, aussi serai-je bref. Il est plus facile d'installer Lilo si
  le noyau cens tre mont est dj l. Retournez dans le rpertoire
  /usr/src de la cible, et dcompressez-y les sources du noyau linux.
  Entrez dans l'arborescence des sources (cd linux) et configurez le
  noyau, en utilisant votre mthode prfre, 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 systme System.map vers le
  rpertoire de boot de la cible /mnt/target/boot, et nous seront prts
   installer Lilo.


  1133..55..  LLiilloo

  Lilo est livr avec un trs beau script nomm QuickInst.  Dcompressez
  les sources de Lilo dans le rpertoire des sources du systme cible,
  lancez ce script par la commande ROOT=/mnt/target ./QuickInst. Il vous
  posera plusieurs questions concernant la manire 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 dfaut, rpondez
  /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 mme.


  Comment doit-on s'y prendre pour expliquer  QuickInst o installer le
  secteur de boot ? Quand nous redmarrons, nous voulons avoir le choix
  de dmarrer le systme source ou le systme cible, ou encore n'importe
  quel autre systme prsent sur la machine. Et nous souhaitons que
  l'instance de Lilo que nous mettons en place maintenant lance le noyau
  de notre nouveau systme. Comment est-ce que l'on ralise ces deux
  choses ? Ecartons-nous un moment du sujet et tudions la faon dont
  Lilo dmarre DOS sur un systme Linux en dual-boot. Le fichier
  lilo.conf d'un tel systme doit srement 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 configure de cette faon, 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 mme chose, mis  part que
  le secteur d'amorce d'hda2 va tre un autre secteur d'amorce Lilo -
  celui-l mme 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 bti.  Vous verrez alors deux invites
  de commande Lilo au redmarrage.


  Pour raccourcir une longue histoire, lorsque QuickInst vous demande o
  placer le secteur de boot, indiquez-lui l'endroit o se trouve votre
  systme de fichiers cible, par exemple /dev/hda2.


  Maintenant modifiez le fichier lilo.conf de votre systme source, de
  faon  ce qu'il ait une ligne ressemblant :



  other = /dev/hda2
          label = target



  Lancez Lilo, et nous devrions tre capables de faire notre premier
  dmarrage sur le systme cible.


  1133..66..  GGlliibbcc

  L'tape suivante consiste  installer init, mais comme la plupart des
  programmes qui tournent sous Linux, init utilise des fonctions issues
  de la bibliothque C GNU, glibc. Aussi l'installerons-nous en premier.


  Glibc est un package trs gros et trs compliqu. Il faut 90 heures
  pour le btir 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 mmoire est le principal critre dans notre cas. Si vous n'avez que
  8Mo de RAM (ou - j'en tremble - encore moins !), prparez vous  une
  trs longue compilation.


  La documentation d'installation de glibc recommande une construction
  dans un rpertoire distinct. Cela vous permet de recommencer
  facilement, en supprimant simplement ce rpertoire. Cela vous permet
  aussi d'conomiser 265Mo d'espace disque.


  Dcompressez l'archive glibc-2.1.3.tar.gz (ou n'importe quelle autre
  version) dans /mnt/target/usr/src comme d'habitude. A prsent, nous
  devons dcompresser les ``add-on'' dans le rpertoire de la glibc.
  Donc, faites un cd glibc-2.1.3, puis dcompressez  cet endroit les
  archives glibc-crypt-2.1.3.tar.gz et glibc-linuxthreads-2.1.3.tar.gz.


  Maintenant, nous pouvons crer le rpertoire de construction,
  configurer, btir et installer glibc. Voici les commandes que j'ai
  utilises, mais relisez vous-mme 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 connatre
  l'espace disque qu'il vous reste par un df. Vous pouvez en faire un
  autre aprs avoir bti et install glibc pour en dduire 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 faon de dire au package
  l'endroit o s'installer.


  1133..77..  SSyyssVViinniitt

  Btir et installer les binaires de SysVinit est assez direct.  Je me
  contenterai d'tre paresseux et de vous donner les commandes, en
  considrant que vous avez dcompress son code source, et que vous
  tes entr dans son rpertoire.



   cd src
   make
   ROOT=/mnt/target make install




  Il existe aussi beaucoup de scripts associs  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 organiss dans une hirarchie sous debian/etc dans l'arborescence
  du code source de SysVinit. Vous pouvez recopier toute cette
  hirarchie dans le rpertoire etc du systme 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 dsormais en place pour permettre au noyau cible de lancer
  init au redmarrage. Le problme, cette fois, viendra des scripts qui
  ne pourront tre excuts car bash ne sera pas l pour les
  interprter. init tentera galement de lancer des getty, qui sont
  inexistants eux aussi. Rebootez maintenant, et assurez-vous que tout
  le reste fonctionne correctement.
  1133..88..  NNccuurrsseess

  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 manire de grer les crans texte, mais
  apporte galement une compatibilit ascendante en prenant en charge
  les appels termcap. Dans l'objectif d'avoir un systme moderne, simple
  et propre, je pense que le mieux est de dsactiver l'ancienne mthode
  termcap. Vous pourriez par la suite rencontrer des problmes avec des
  applications utilisant termcap, mais au moins vous connatrez les
  lments qui l'utilisent. Si vous en avez besoin, vous pouvez
  recompiler ncurses avec prise en charge de termcap.


  Les commandes que j'ai utilises sont :



          ./configure --prefix=/usr --with-install-prefix=/mnt/target --with-shared --disable-termcap
          make
          make install




  1133..99..  BBaasshh

  Il m'a fallu beaucoup de lecture, de rflexion, 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 utilises sont :



   ./configure --prefix=/mnt/target/usr/local --exec-prefix=/mnt/target --with-curses




  Une fois que vous avez bti et install Bash, vous devez crer un lien
  symbolique comme ceci : cd /mnt/target/bin; ln -s bash sh.  Cela est
  d au fait que les scripts dbutent gnralement 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 redmarrer  ce point si vous le souhaitez. Vous devriez
  remarquer que les scripts peuvent maintenant s'excuter, bien que vous
  ne puissiez vous loguer, car il n'y pas encore de programmes getty ou
  login.


  1133..1100..  UUttiill--lliinnuuxx ((ggeettttyy eett llooggiinn))

  Le package util-linux contient agetty et login. Nous avons besoin des
  deux pour nous loguer et obtenir la ligne de commande de bash.  Aprs
  l'avoir install, faites un lien symbolique depuis agetty vers getty
  de le rpertoire /sbin du systme cible.  getty est un des programmes
  censs se trouver sur tous les systmes de type Unix, donc faire un
  lien est une meilleure ide que de modifier inittab pour qu'il lance
  agetty.


  Il me reste un problme 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 bibliothque
  de ncurses 5 du systme cible, plutt que sur ncurses 4 du systme
  source. Je regarderai cela de plus prs.


  Vous aurez aussi besoin d'un fichier /etc/passwd sur le systme cible.
  C'est l'endroit o le programme login ira vrifier votre
  accrditation. Comme il ne s'agit que d'un systme gadget  ce niveau,
  vous pouvez vous permettre des choses scandaleuses, comme ne dfinir
  que l'utilisateur root, sans mot de passe ! Mettez le simplement dans
  le fichier /etc/passwd du systme cible.




  root::0:0:root:/root:/bin/bash




  Les champs sont spars par des deux-points, correspondent, de gauche
   droite,  l'user id (nom de login), au mot de passe (crypt), au
  numro d'utilisateur, au numro de groupe, au nom de l'utlisateur, 
  son rpertoire personnel, et  son shell par dfaut.


  1133..1111..  SShh--uuttiillss

  Le dernier package dont nous ayons besoin est sh-utils GNU.  Le seul
  programme ncessaire  ce niveau est stty, qui est utilis dans
  /etc/init.d/rc, lui-mme utilis pour changer de niveau d'excution et
  entrer dans le niveau initial. En fait, je possde 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 systme
  pour le rendre vraiment utilisable.


  Eh bien a y est. Vous devriez maintenant avoir un systme qui doit
  dmarrer 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 mme 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 intressante que j'ai trouve  faire avec.


  1133..1122..  VVeerrss ll''uuttiilliissaabbiilliitt

  Il semblerait que nous ayons l un systme plutt inutilisable. Mais
  en ralit, nous ne sommes pas trs loin de pouvoir commencer 
  travailler avec. L'une des premires choses  faire est de rendre le
  systme 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 spcifi dans le fichier /etc/fstab. Mettez un lien symbolique
  du genre S05mountall vers lui dans le rpertoire etc/rc2.d du systme
  cible.


  Il se peut que ce script utilise des commandes que vous n'avez pas
  encore installes. 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 systme srieux. Ajoutez-les un  un, et
  assurez-vous que tout se lance en douceur avant d'en ajouter d'autres.


  Lisez le Standard de la Hirarchie des Fichiers (voir section
  ``Systme de Fichiers'').  Il contient une liste de commandes qui
  devraient tre dans /bin et /sbin. Assurez-vous que toutes ces
  commandes sont installes sur votre systme.  Mieux encore, trouvez la
  documentation Posix qui spcifie 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 systme. Installez les outils de construction
  comme make et gcc le plus tt possible. Une fois que cela est fait,
  vous pouvez utiliser votre systme cible pour se construire lui-mme,
  ce qui est bien moins compliqu.


  1133..1133..  AAssttuucceess ddiivveerrsseess

  Si vous avez une commande appele thingy sur un systme 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.


  1133..1144..  PPlluuss dd''iinnffoorrmmaattiioonnss


    Il existe un mini-howto sur la manire de construire les logiciels
      partir de leurs sources, le Software Building mini-HOWTO
     <http://www.linuxdoc.org/HOWTO/Software-Building-HOWTO.html>
     (miroir franais en VO <http://linuxfr.org/LDP/HOWTO/Software-
     Building-HOWTO.html >).



    Il existe aussi un HOWTO sur la manire de construire un systme
     Linux depuis zro. Il met l'accent sur la construction d'un systme
     rellement utilisable, plutt que pour le simple exercice.  The
     Linux From Scratch HOWTO <http://www.linuxfromscratch.org>
  1144..  CCoonncclluussiioonn

  L'un des meilleurs cts de Linux,  mon humble avis, est que vous
  pouvez entrer dedans et voir rellement comment il fonctionne.
  J'espre que vous apprcierez cela autant que moi. Et j'espre que ces
  quelques notes vous y auront aid.


  1155..  SSeeccttiioonn aaddmmiinniissttrraattiivvee

  1155..11..  CCooppyyrriigghhtt

  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 Gnrale (GPL :
  GNU General Public Licence <http://www.gnu.org/copyleft/gpl.html>).
  Merci de conserver les rfrences  l'auteur si vous utilisez tout ou
  partie de ce document dans un autre.


  1155..22..  PPaaggee pprriinncciippaallee

  Les mises  jour de ce document voluent sur From Powerup To Bash
  Prompt <http://learning.taslug.org.au/power2bash>.




  1155..33..  RReettoouurrss

  J'aimerais recevoir vos commentaires, critiques et suggestions.
  Veuillez s'il vous plat me les envoyer  Greg O'Keefe
  <mailto:gcokeefe@postoffice.utas.edu.au>



  1155..44..  RRffrreenncceess eett rreemmeerrcciieemmeennttss..

  Les noms de produits cits sont marques dposes de leur propritaires
  respectifs, et considrs par cette note comme reconnus comme tels.


  Il y a quelques personnes que je voudrais remercier, pour m'avoir aid
   raliser tout ceci.



     TToouutt lleess aabboonnnnss ddee llaa lliissttee ddee ddiissccuussssiioonn lleeaarrnniinngg@@TTaassLLUUGG
        Merci pour avoir lu tous mes mails et pos des questions
        intressantes.  Vous pouvez rejoindre cette liste en envoyant un
        message  majordomo <mailto:majordomo@taslug.org.au> avec la
        phrase

                subscribe learning


     dans le corps du message.



     MMiicchhaaeell EEmmeerryy
        Pour m'avoir rappel Unios.

     TTiimm LLiittttllee
        Pour de bonnes indications concernant /etc/passwd

     ssPPaaKKrr ddaannss ##lliinnuuxx ssuurr eeffnneett
        Qui a souponn l'utilisation de /etc/services par syslog, et
        m'a fait connatre la phrase ``rolling your own'' ("roulez-la
        vous-mme") pour  dcrire la construction d'un systme  partir
        des sources.

     AAlleexx AAiittkkiinn
        Pour avoir port Vico et son ``verum ipsum factum'' (La
        comprhension dcoule de l'exprience)  mon attention.

     DDeennnniiss SSccootttt
        Pour avoir corrig mon arithmtique en hexadcimal.

     jjdddd
        Pour avoir mis en vidence quelques erreurs typographiques.

     DDaavviidd LLeeaaddbbeeaatteerr
        Pour avoir contribu aux ``prgrinations'' dans les dmons
        noyau.


  1155..55..  HHiissttoorriiqquuee ddeess cchhaannggeemmeennttss

  1155..55..11..  00..66 -->> 00..77


    L'accent est plus port sur l'explication, et moins sur la faon de
     monter un systme, ces informations ayant t regroupes dans une
     section distincte, et le systme une fois construit a t revu  la
     baisse, voir directement la documentation de Gerard Beekmans
     ``Linux From Scratch'' pour construire un systme srieux.

    Ajout de quelques hypothses de la part de David Leadbeater

    Correction de deux URL, ajout d'un lien vers le tlchargement
     d'unios sur learning.taslug.org.au/resources

    Test et correction d'url.

    Grand nettoyage et rcriture gnrale.


  1155..55..22..  00..55 -->> 00..66


    Ajout de l'historique des changements

    Ajout de quelques ``todos'' (``A faire'').


  1155..66..  AA ffaaiirree ((TTOODDOO))


    expliquer les modules noyau, depmod, modprobe, insmod et tout (il
     faut d'abord que je trouve moi-mme).

    mentionner le systme de fichiers /proc. Exercices potentiels.

    convertir en documentation sgml

    ajouter plus d'exercices, peut-tre une section entire d'exercices
     plus pousss, comme crer un systme de fichiers minimal fichier
     par fichier  partir de l'installation d'une distribution.



