                            Introduction `a NanoBSD

  Daniel Gerzo

   Version: 8def749c53

   Copyright (c) 2006 The FreeBSD Documentation Project

   FreeBSD is a registered trademark of the FreeBSD Foundation.

   Many of the designations used by manufacturers and sellers to distinguish
   their products are claimed as trademarks. Where those designations appear
   in this document, and the FreeBSD Project was aware of the trademark
   claim, the designations have been followed by the << (TM) >> or the
   << (R) >> symbol.

   2013-11-13 07:52:45 +0000 par Hiroki Sato.
   Resume

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

   [ Multiples pages HTML / Page HTML unique ]

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

   Table des matieres

   1. Introduction `a NanoBSD

   2. Comment utiliser NanoBSD

   Index

1. Introduction `a NanoBSD

   NanoBSD est un outil actuellement developpe par Poul-Henning Kamp. 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

Index

  N

   NanoBSD, Introduction `a NanoBSD
