                        Introduction `a NanoBSD

  Daniel Gerzo

   Copyright (c) 2006 The FreeBSD Documentation Project

   $FreeBSD: doc/fr_FR.ISO8859-1/articles/nanobsd/article.sgml,v 1.1
   2007/12/12 18:34:23 blackend Exp $

   FreeBSD est une marque deposee de la fondation FreeBSD.

   Plusieurs designations utilisees par les constructeurs et vendeurs
   pour distinguer leurs produits sont mentionnees comme des marques
   deposees. Lorsqu'elles apparaissent dans ce document et que le
   projet FreeBSD est au courant de cette mention, la designation est
   suivie du symbole "(TM)" ou du symbole "(R)".

   Ce document fournit des informations `a propos des outils NanoBSD,
   qui peuvent etre utilises pour creer des images du systeme FreeBSD
   pour des applications embarquees, adaptees pour utiliser comme
   support une carte Compact Flash (ou tout autre support de
   stockage).

   Version franc,aise de Jean-Loic Tignon <loic@vigilan.net>.

     --------------------------------------------------------------

1. Introduction `a NanoBSD

   NanoBSD est un outil actuellement developpe par Poul-Henning Kamp
   <phk@FreeBSD.org>. Il permet de creer une image du systeme FreeBSD
   pour des applications embarquees, pouvant utiliser une carte
   Compact Flash comme support (ou un autre support de stockage)

   Il peut etre utilise pour creer des images d'installation
   specialisees, conc,ues pour une installation et une maintenance
   aisees de systemes communement appeles "appliances". Les
   appliances ont leur materiel et leur logiciel integres dans le
   produit, ce qui signifie que toutes les applications sont
   pre-installees. L'appliance est connectee `a un reseau existant et
   peut entrer en fonction (presque) immediatement.

   Les fonctionnalites de NanoBSD incluent:

     * Les logiciels portes et les paquetages fonctionnent comme sous
       FreeBSD -- Chaque application peut etre installee et utilisee
       dans une image NanoBSD, de la meme fac,on que sous FreeBSD.

     * Aucune fonctionnalite ne manque -- S'il est possible de faire
       quelque chose avec FreeBSD, il sera possible de faire la meme
       chose avec NanoBSD, sauf si la fonctionnalite specifique ou
       des fonctionnalites ont ete explicitement supprimees de
       l'image NanoBSD lors de sa creation.

     * Tout est en lecture seule pendant l'execution -- Debrancher le
       cordon d'alimentation est sans danger. Il n'est pas necessaire
       d'executer fsck(8) apres un arret inopine du systeme.

     * Facile `a creer et `a personnaliser -- A l'aide d'une seule
       procedure et d'un fichier de configuration il est possible de
       creer des images personnalisees et de taille reduite repondant
       `a n'importe quel type de besoin.

     --------------------------------------------------------------

2. Comment utiliser NanoBSD

  2.1. L'organisation de NanoBSD

   Une fois que l'image est presente sur le support, il est possible
   de demarrer NanoBSD. Le peripherique de stockage est divise en
   trois parties par defaut:

     * Deux partitions image: code#1 et code#2.

     * La partition de configuration, qui peut etre montee sur le
       repertoire /cfg `a l'execution.

   Ces partitions sont normalement montees en lecture seule.

   Les repertoires /etc et /var sont des disques md(4) (malloc).

   La partition de configuration est montee sur le repertoire /cfg.
   Elle contient les fichiers du repertoire /etc et est brievement
   montee en lecture seule juste apres le demarrage du systeme, par
   consequent il est necessaire de recopier les fichiers modifies de
   /etc vers le repertoire /cfg si l'on souhaite que les changements
   soient encore effectifs apres le redemarrage du systeme.

   Exemple 1. Apporter des changements permanents `a /etc/resolv.conf

 # vi /etc/resolv.conf
 [...]
 # mount /cfg
 # cp /etc/resolv.conf /cfg
 # umount /cfg

     Note : La partition qui abrite /cfg doit etre montee uniquement
     au demarrage et lors de la copie des fichiers de configuration.

     Garder /cfg monte en permanence n'est pas une bonne idee, en
     particulier si le systeme NanoBSD tourne sur un peripherique de
     stockage qui peut etre endommage par un grand nombre d'ecritures
     sur la partition (c'est `a dire quand le contenu des tampons de
     donnees est transfere sur les disques).

     --------------------------------------------------------------

  2.2. Creer une image NanoBSD

   Une image NanoBSD est creee `a l'aide d'une simple procedure
   nanobsd.sh, qui peut etre trouvee dans le repertoire
   /usr/src/tools/tools/nanobsd. Ce programme cree une image, qui
   peut etre copiee sur le support de stockage `a l'aide de dd(1).

   Les commandes necessaires `a la creation d'une image NanoBSD sont:

 # cd /usr/src/tools/tools/nanobsd (1)
 # sh nanobsd.sh (2)
 # cd /usr/obj/nanobsd.full (3)
 # dd if=_.disk.full of=/dev/da0 bs=64k (4)

   (1)
           Se placer dans le repertoire de base du programme de
           creation de NanoBSD.
   (2)
           Demarrer le processus de creation.
   (3)
           Se placer dans le repertoire ou les images ont ete creees.
   (4)
           Installer NanoBSD sur le support de stockage.

     --------------------------------------------------------------

  2.3. Personnaliser une image NanoBSD

   C'est probablement la fonctionnalite la plus importante et la plus
   interessante de NanoBSD. C'est aussi l`a ou vous passerez le plus
   de temps lors de vos developpements avec NanoBSD.

   L'invocation de la commande suivante va obliger nanobsd.sh `a lire
   sa configuration dans le fichier myconf.nano situe dans le
   repertoire courant:

 # sh nanobsd.sh -c myconf.nano

   La personnalisation est effectuee de 2 fac,ons:

     * `a l'aide d'options de configuration

     * `a l'aide de fonctions de personnalisation

     --------------------------------------------------------------

    2.3.1. Les options de configuration

   Grace aux parametres de configuration, il est possible de
   configurer des options qui sont passees aux etapes buildworld et
   installworld du processus de compilation de NanoBSD, ainsi que des
   options internes qui sont passees au processus principal de
   compilation de NanoBSD. A l'aide de ces options, il est possible
   de diminuer la taille du systeme, de fac,on `a ce qu'il tienne
   dans 64Mo. Vous pouvez utiliser les options de configuration pour
   reduire encore plus FreeBSD, jusqu'`a ce qu'il ne consiste plus
   qu'en un noyau et 2 ou 3 fichiers dans le systeme de base.

   Le fichier de configuration consiste en une serie d'options de
   configuration, qui surchargent les valeurs par defaut. Les
   directives les plus importantes sont:

     * NANO_NAME -- Nom de compilation (utilise pour creer le nom des
       repertoires de travail).

     * NANO_SRC -- Chemin de l'arbre des sources utilise pour
       construire l'image.

     * NANO_KERNEL -- Nom du fichier de configuration utilise pour
       compiler le noyau.

     * CONF_BUILD -- Options passees `a la phase buildworld de la
       compilation.

     * CONF_INSTALL -- Options passees `a la phase installworld de la
       compilation.

     * CONF_WORLD -- Options passees aux etapes buildworld et
       installworld.

     * FlashDevice -- Definit le type de support `a utiliser.
       Consulter le fichier FlashDevice.sub pour plus de details.

     --------------------------------------------------------------

    2.3.2. Les fonctions de personnalisation

   Il est possible d'optimiser NanoBSD en utilisant des fonctions
   d'interpreteur de commandes dans le fichier de configuration.
   L'exemple suivant presente la trame de base des fonctions de
   personnalisation:

 cust_foo () (
         echo "bar=topless" > \
                 ${NANO_WORLDDIR}/etc/foo
 )
 customize_cmd cust_foo

   Un exemple plus utile de fonction de personnalisation est le
   suivant, qui change la taille par defaut du repertoire /etc de 5Mo
   `a 30Mo:

 cust_etc_size () (
         cd ${NANO_WORLDDIR}/conf
         echo 30000 > default/etc/md_size
 )
 customize_cmd cust_etc_size

   Il existe par defaut quelques fonctions de personnalisation
   predefinies et pretes `a etre utilisees:

     * cust_comconsole -- Desactive getty(8) sur les consoles VGA
       (les peripheriques /dev/ttyv*) et parametre la console systeme
       sur le port serie COM1.

     * cust_allow_ssh_root -- Autorise l'ouverture de sessions root
       via sshd(8).

     * cust_install_files -- Installe les fichiers du repertoire
       nanobsd/Files, qui contient des programmes utiles pour
       l'administration systeme.

     --------------------------------------------------------------

    2.3.3. Exemple de fichier de configuration

   Un exemple complet de fichier de configuration pour creer une
   image NanoBSD personnalisee peut etre:

 NANO_NAME=custom
 NANO_SRC=/usr/src
 NANO_KERNEL=MYKERNEL
 NANO_IMAGES=2

 CONF_BUILD='
 NO_KLDLOAD=YES
 NO_NETGRAPH=YES
 NO_PAM=YES
 '

 CONF_INSTALL='
 NO_ACPI=YES
 NO_BLUETOOTH=YES
 NO_CVS=YES
 NO_FORTRAN=YES
 NO_HTML=YES
 NO_LPR=YES
 NO_MAN=YES
 NO_SENDMAIL=YES
 NO_SHAREDOCS=YES
 NO_EXAMPLES=YES
 NO_INSTALLLIB=YES
 NO_CALENDAR=YES
 NO_MISC=YES
 NO_SHARE=YES
 '

 CONF_WORLD='
 NO_BIND=YES
 NO_MODULES=YES
 NO_KERBEROS=YES
 NO_GAMES=YES
 NO_RESCUE=YES
 NO_LOCALES=YES
 NO_SYSCONS=YES
 NO_INFO=YES
 '

 FlashDevice SanDisk 1G

 cust_nobeastie() (
         touch ${NANO_WORLDDIR}/boot/loader.conf
         echo "beastie_disable=\"YES\"" >> ${NANO_WORLDDIR}/boot/loader.conf
 )

 customize_cmd cust_comconsole
 customize_cmd cust_install_files
 customize_cmd cust_allow_ssh_root
 customize_cmd cust_nobeastie

     --------------------------------------------------------------

  2.4. Mettre `a jour NanoBSD

   Le processus de mise `a jour de NanoBSD est relativement simple:

    1. Creer une nouvelle image NanoBSD, comme d'habitude.

    2. Telecharger la nouvelle image dans une partition inutilisee
       d'une appliance NanoBSD operationnelle.

       La difference la plus importante de cette etape par rapport `a
       l'installation initiale de NanoBSD est que maintenant au lieu
       d'utiliser le fichier _.disk.full (qui contient une image de
       la totalite du disque), l'image _.disk.image est installee
       (qui contient seulement l'image d'une seule partition
       systeme).

    3. Redemarrer le systeme sur la nouvelle partition.

    4. Si tout s'est bien passe, la mise `a jour est terminee.

    5. Si quelque chose s'est mal passe, redemarrez de nouveau sur la
       partition precedente (qui contient l'ancienne image,
       fonctionnelle celle-ci), pour remettre le systeme en etat de
       marche le plus rapidement possible. Corriger les problemes de
       la nouvelle image, et repeter le processus.

   Pour installer la nouvelle image sur le systeme NanoBSD
   operationnel, il est possible d'utiliser la procedure updatep1 ou
   updatep2 situee dans le repertoire /root, en fonction de la
   partition qui est en cours d'utilisation sur le systeme.

   En fonction des services disponibles sur la machine qui dispose de
   la nouvelle image NanoBSD et du type de transfert qui est prefere,
   il est possible d'utiliser une de ces trois methodes:

     --------------------------------------------------------------

    2.4.1. Utiliser ftp(1)

   Si la vitesse de transfert est la priorite, utiliser cet exemple:

 # ftp myhost
 get _.disk.image "| sh updatep1"

     --------------------------------------------------------------

    2.4.2. Utiliser ssh(1)

   Si un transfert securise est preferable, considerer l'utilisation
   de cet exemple:

 # ssh myhost cat _.disk.image.gz | zcat | sh updatep1

     --------------------------------------------------------------

    2.4.3. Utiliser nc(1)

   Utiliser cet exemple si la machine distante n'utilise ni ftp(1) ni
   sshd(8):

    1. Tout d'abord, ouvrez un ecouteur TCP sur la machine qui
       dispose de l'image et faites-lui envoyer l'image au client:

 myhost# nc -l 2222 < _.disk.image

         Note : Assurez vous que le port utilise n'est pas bloque par
         un pare-feu afin de recevoir les connexions entrantes de la
         machine NanoBSD.

    2. Se connecter `a la machine qui dispose de la nouvelle image et
       executer la procedure updatep1:

 # nc myhost 2222 | sh updatep1

     --------------------------------------------------------------

        Ce document, ainsi que d'autres peut etre telecharge sur
                   ftp.FreeBSD.org/pub/FreeBSD/doc/.

Pour toutes questions `a propos de FreeBSD, lisez la documentation avant
                 de contacter <questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez <doc@FreeBSD.org>.
