<?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V4.5-Based Extension//EN" "../../../share/xml/freebsd45.dtd"> <!-- The FreeBSD Documentation Project The FreeBSD French Documentation Project $FreeBSD$ Original revision: 1.2 --> <article lang="fr"> <articleinfo> <title>Introduction à NanoBSD</title> <authorgroup> <author> <firstname>Daniel</firstname> <surname>Gerzo</surname> <!-- 14 March 2006 --> </author> </authorgroup> <copyright> <year>2006</year> <holder>The FreeBSD Documentation Project</holder> </copyright> <legalnotice id="trademarks" role="trademarks"> &tm-attrib.freebsd; &tm-attrib.general; </legalnotice> <pubdate>$FreeBSD$</pubdate> <releaseinfo>$FreeBSD$</releaseinfo> <abstract> <para>Ce document fournit des informations à propos des outils <application>NanoBSD</application>, qui peuvent être utilisés pour créer des images du système &os; pour des applications embarquées, adaptées pour utiliser comme support une carte Compact Flash (ou tout autre support de stockage).</para> &trans.a.tignon; </abstract> </articleinfo> <sect1 id="intro"> <title>Introduction à NanoBSD</title> <indexterm><primary>NanoBSD</primary></indexterm> <para><application>NanoBSD</application> est un outil actuellement développé par &a.phk;. Il permet de créer une image du système &os; pour des applications embarquées, pouvant utiliser une carte Compact Flash comme support (ou un autre support de stockage)</para> <para>Il peut être utilisé pour créer des images d'installation spécialisées, conçues pour une installation et une maintenance aisées de systèmes communément appelés <quote>appliances</quote>. Les appliances ont leur matériel et leur logiciel intégrés dans le produit, ce qui signifie que toutes les applications sont pré-installées. L'appliance est connectée à un réseau existant et peut entrer en fonction (presque) immédiatement.</para> <para>Les fonctionnalités de <application>NanoBSD</application> incluent:</para> <itemizedlist> <listitem> <para>Les logiciels portés et les paquetages fonctionnent comme sous &os; — Chaque application peut être installée et utilisée dans une image <application>NanoBSD</application>, de la même façon que sous &os;.</para> </listitem> <listitem> <para>Aucune fonctionnalité ne manque — S'il est possible de faire quelque chose avec &os;, il sera possible de faire la même chose avec <application>NanoBSD</application>, sauf si la fonctionnalité spécifique ou des fonctionnalités ont été explicitement supprimées de l'image <application>NanoBSD</application> lors de sa création.</para> </listitem> <listitem> <para>Tout est en lecture seule pendant l'exécution — Débrancher le cordon d'alimentation est sans danger. Il n'est pas nécessaire d'exécuter &man.fsck.8; après un arrêt inopiné du système.</para> </listitem> <listitem> <para>Facile à créer et à personnaliser — A l'aide d'une seule procédure et d'un fichier de configuration il est possible de créer des images personnalisées et de taille réduite répondant à n'importe quel type de besoin.</para> </listitem> </itemizedlist> </sect1> <sect1 id="howto"> <title>Comment utiliser NanoBSD</title> <sect2 id="design"> <title>L'organisation de NanoBSD</title> <para>Une fois que l'image est présente sur le support, il est possible de démarrer <application>NanoBSD</application>. Le périphérique de stockage est divisé en trois parties par défaut:</para> <itemizedlist> <listitem> <para>Deux partitions image: <literal>code#1</literal> et <literal>code#2</literal>.</para> </listitem> <listitem> <para>La partition de configuration, qui peut être montée sur le répertoire <filename class="directory">/cfg</filename> à l'exécution.</para> </listitem> </itemizedlist> <para>Ces partitions sont normalement montées en lecture seule.</para> <para>Les répertoires <filename class="directory">/etc</filename> et <filename class="directory">/var</filename> sont des disques &man.md.4; (malloc).</para> <para>La partition de configuration est montée sur le répertoire <filename class="directory">/cfg</filename>. Elle contient les fichiers du répertoire <filename class="directory">/etc</filename> et est brièvement montée en lecture seule juste après le démarrage du système, par conséquent il est nécessaire de recopier les fichiers modifiés de <filename class="directory">/etc</filename> vers le répertoire <filename class="directory">/cfg</filename> si l'on souhaite que les changements soient encore effectifs après le redémarrage du système.</para> <example> <title>Apporter des changements permanents à <filename>/etc/resolv.conf</filename></title> <screen>&prompt.root; <userinput>vi /etc/resolv.conf</userinput> [...] &prompt.root; <userinput>mount /cfg</userinput> &prompt.root; <userinput>cp /etc/resolv.conf /cfg</userinput> &prompt.root; <userinput>umount /cfg</userinput></screen> </example> <note> <para>La partition qui abrite <filename class="directory">/cfg</filename> doit être montée uniquement au démarrage et lors de la copie des fichiers de configuration.</para> <para>Garder <filename class="directory">/cfg</filename> monté en permanence n'est pas une bonne idée, en particulier si le système <application>NanoBSD</application> tourne sur un périphérique de stockage qui peut être endommagé par un grand nombre d'écritures sur la partition (c'est à dire quand le contenu des tampons de données est transféré sur les disques).</para> </note> </sect2> <sect2> <title>Créer une image NanoBSD</title> <para>Une image <application>NanoBSD</application> est créée à l'aide d'une simple procédure <filename>nanobsd.sh</filename>, qui peut être trouvée dans le répertoire <filename class="directory"><replaceable>/usr</replaceable>/src/tools/tools/nanobsd</filename>. Ce programme crée une image, qui peut être copiée sur le support de stockage à l'aide de &man.dd.1;.</para> <para>Les commandes nécessaires à la création d'une image <application>NanoBSD</application> sont:</para> <screen>&prompt.root; <userinput>cd /usr/src/tools/tools/nanobsd</userinput> <co id="nbsd-cd"/> &prompt.root; <userinput>sh nanobsd.sh</userinput> <co id="nbsd-sh"/> &prompt.root; <userinput>cd /usr/obj/nanobsd.full</userinput> <co id="nbsd-cd2"/> &prompt.root; <userinput>dd if=_.disk.full of=/dev/da0 bs=64k</userinput> <co id="nbsd-dd"/></screen> <calloutlist> <callout arearefs="nbsd-cd"> <para>Se placer dans le répertoire de base du programme de création de <application>NanoBSD</application>.</para> </callout> <callout arearefs="nbsd-sh"> <para>Démarrer le processus de création.</para> </callout> <callout arearefs="nbsd-cd2"> <para>Se placer dans le répertoire où les images ont été créees.</para> </callout> <callout arearefs="nbsd-dd"> <para>Installer <application>NanoBSD</application> sur le support de stockage.</para> </callout> </calloutlist> </sect2> <sect2> <title>Personnaliser une image NanoBSD</title> <para>C'est probablement la fonctionnalité la plus importante et la plus intéressante de <application>NanoBSD</application>. C'est aussi là où vous passerez le plus de temps lors de vos développements avec <application>NanoBSD</application>.</para> <para>L'invocation de la commande suivante va obliger <filename>nanobsd.sh</filename> à lire sa configuration dans le fichier <filename>myconf.nano</filename> situé dans le répertoire courant:</para> <screen>&prompt.root; <userinput>sh nanobsd.sh -c myconf.nano</userinput></screen> <para>La personnalisation est effectuée de 2 façons:</para> <itemizedlist> <listitem> <para>à l'aide d'options de configuration</para> </listitem> <listitem> <para>à l'aide de fonctions de personnalisation</para> </listitem> </itemizedlist> <sect3> <title>Les options de configuration</title> <para>Grace aux paramètres de configuration, il est possible de configurer des options qui sont passées aux étapes <literal>buildworld</literal> et <literal>installworld</literal> du processus de compilation de <application>NanoBSD</application>, ainsi que des options internes qui sont passées au processus principal de compilation de <application>NanoBSD</application>. A l'aide de ces options, il est possible de diminuer la taille du système, de façon à ce qu'il tienne dans 64Mo. Vous pouvez utiliser les options de configuration pour réduire encore plus &os;, jusqu'à ce qu'il ne consiste plus qu'en un noyau et 2 ou 3 fichiers dans le système de base.</para> <para>Le fichier de configuration consiste en une série d'options de configuration, qui surchargent les valeurs par défaut. Les directives les plus importantes sont:</para> <itemizedlist> <listitem> <para><literal>NANO_NAME</literal> — Nom de compilation (utilisé pour créer le nom des répertoires de travail).</para> </listitem> <listitem> <para><literal>NANO_SRC</literal> — Chemin de l'arbre des sources utilisé pour construire l'image.</para> </listitem> <listitem> <para><literal>NANO_KERNEL</literal> — Nom du fichier de configuration utilisé pour compiler le noyau.</para> </listitem> <listitem> <para><literal>CONF_BUILD</literal> — Options passées à la phase <literal>buildworld</literal> de la compilation.</para> </listitem> <listitem> <para><literal>CONF_INSTALL</literal> — Options passées à la phase <literal>installworld</literal> de la compilation.</para> </listitem> <listitem> <para><literal>CONF_WORLD</literal> — Options passées aux étapes <literal>buildworld</literal> et <literal>installworld</literal>.</para> </listitem> <listitem> <para><literal>FlashDevice</literal> — Définit le type de support à utiliser. Consulter le fichier <filename>FlashDevice.sub</filename> pour plus de détails.</para> </listitem> </itemizedlist> </sect3> <sect3> <title>Les fonctions de personnalisation</title> <para>Il est possible d'optimiser <application>NanoBSD</application> en utilisant des fonctions d'interpréteur de commandes dans le fichier de configuration. L'exemple suivant présente la trame de base des fonctions de personnalisation:</para> <programlisting>cust_foo () ( echo "bar=topless" > \ ${NANO_WORLDDIR}/etc/foo ) customize_cmd cust_foo</programlisting> <para>Un exemple plus utile de fonction de personnalisation est le suivant, qui change la taille par défaut du répertoire <filename class="directory">/etc</filename> de 5Mo à 30Mo:</para> <programlisting>cust_etc_size () ( cd ${NANO_WORLDDIR}/conf echo 30000 > default/etc/md_size ) customize_cmd cust_etc_size</programlisting> <para>Il existe par défaut quelques fonctions de personnalisation prédéfinies et prêtes à être utilisées:</para> <itemizedlist> <listitem> <para><literal>cust_comconsole</literal> — Désactive &man.getty.8; sur les consoles VGA (les périphériques <filename>/dev/ttyv*</filename>) et paramètre la console système sur le port série COM1.</para> </listitem> <listitem> <para><literal>cust_allow_ssh_root</literal> — Autorise l'ouverture de sessions <username>root</username> via &man.sshd.8;.</para> </listitem> <listitem> <para><literal>cust_install_files</literal> — Installe les fichiers du répertoire <filename class="directory">nanobsd/Files</filename>, qui contient des programmes utiles pour l'administration système.</para> </listitem> </itemizedlist> </sect3> <sect3> <title>Exemple de fichier de configuration</title> <para>Un exemple complet de fichier de configuration pour créer une image <application>NanoBSD</application> personnalisée peut être:</para> <programlisting>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</programlisting> </sect3> </sect2> <sect2> <title>Mettre à jour NanoBSD</title> <para>Le processus de mise à jour de <application>NanoBSD</application> est relativement simple:</para> <procedure> <step> <para>Créer une nouvelle image <application>NanoBSD</application>, comme d'habitude.</para> </step> <step> <para>Télécharger la nouvelle image dans une partition inutilisée d'une appliance <application>NanoBSD</application> opérationnelle.</para> <para>La différence la plus importante de cette étape par rapport à l'installation initiale de <application>NanoBSD</application> est que maintenant au lieu d'utiliser le fichier <filename>_.disk.full</filename> (qui contient une image de la totalité du disque), l'image <filename>_.disk.image</filename> est installée (qui contient seulement l'image d'une seule partition système).</para> </step> <step> <para>Redémarrer le système sur la nouvelle partition.</para> </step> <step> <para>Si tout s'est bien passé, la mise à jour est terminée.</para> </step> <step> <para>Si quelque chose s'est mal passé, redémarrez de nouveau sur la partition précédente (qui contient l'ancienne image, fonctionnelle celle-ci), pour remettre le système en état de marche le plus rapidement possible. Corriger les problèmes de la nouvelle image, et répéter le processus.</para> </step> </procedure> <para>Pour installer la nouvelle image sur le système <application>NanoBSD</application> opérationnel, il est possible d'utiliser la procédure <filename>updatep1</filename> ou <filename>updatep2</filename> située dans le répertoire <filename class="directory">/root</filename>, en fonction de la partition qui est en cours d'utilisation sur le système.</para> <para>En fonction des services disponibles sur la machine qui dispose de la nouvelle image <application>NanoBSD</application> et du type de transfert qui est préféré, il est possible d'utiliser une de ces trois méthodes:</para> <sect3> <title>Utiliser &man.ftp.1;</title> <para>Si la vitesse de transfert est la priorité, utiliser cet exemple:</para> <screen>&prompt.root; <userinput>ftp myhost get _.disk.image "| sh updatep1"</userinput></screen> </sect3> <sect3> <title>Utiliser &man.ssh.1;</title> <para>Si un transfert sécurisé est préférable, considérer l'utilisation de cet exemple:</para> <screen>&prompt.root; <userinput>ssh myhost cat _.disk.image.gz | zcat | sh updatep1</userinput></screen> </sect3> <sect3> <title>Utiliser &man.nc.1;</title> <para>Utiliser cet exemple si la machine distante n'utilise ni &man.ftp.1; ni &man.sshd.8;:</para> <procedure> <step> <para>Tout d'abord, ouvrez un écouteur TCP sur la machine qui dispose de l'image et faites-lui envoyer l'image au client:</para> <screen>myhost&prompt.root; <userinput>nc -l <replaceable>2222</replaceable> < _.disk.image</userinput></screen> <note> <para>Assurez vous que le port utilisé n'est pas bloqué par un pare-feu afin de recevoir les connexions entrantes de la machine <application>NanoBSD</application>.</para> </note> </step> <step> <para>Se connecter à la machine qui dispose de la nouvelle image et exécuter la procédure <filename>updatep1</filename>:</para> <screen>&prompt.root; <userinput>nc myhost <replaceable>2222</replaceable> | sh updatep1</userinput></screen> </step> </procedure> </sect3> </sect2> </sect1> </article>