560 lines
17 KiB
XML
560 lines
17 KiB
XML
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
|
|
"http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
|
|
<!--
|
|
The FreeBSD Documentation Project
|
|
The FreeBSD French Documentation Project
|
|
|
|
$FreeBSD$
|
|
Original revision: 1.2
|
|
-->
|
|
<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="fr">
|
|
|
|
<info><title>Introduction à NanoBSD</title>
|
|
|
|
|
|
<authorgroup>
|
|
<author><personname><firstname>Daniel</firstname><surname>Gerzo</surname></personname></author>
|
|
</authorgroup>
|
|
|
|
<copyright>
|
|
<year>2006</year>
|
|
<holder>The FreeBSD Documentation Project</holder>
|
|
</copyright>
|
|
|
|
<legalnotice xml: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>
|
|
</info>
|
|
|
|
<sect1 xml: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 xml:id="howto">
|
|
<title>Comment utiliser NanoBSD</title>
|
|
|
|
<sect2 xml: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>/cfg</filename> à
|
|
l'exécution.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Ces partitions sont normalement montées en lecture
|
|
seule.</para>
|
|
|
|
<para>Les répertoires <filename>/etc</filename> et <filename>/var</filename> sont des disques &man.md.4;
|
|
(malloc).</para>
|
|
|
|
<para>La partition de configuration est montée sur le
|
|
répertoire <filename>/cfg</filename>.
|
|
Elle contient les fichiers du répertoire <filename>/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>/etc</filename> vers le
|
|
répertoire <filename>/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>/cfg</filename> doit être
|
|
montée uniquement au démarrage et lors de la
|
|
copie des fichiers de configuration.</para>
|
|
|
|
<para>Garder <filename>/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>/usr/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 xml:id="nbsd-cd"/>
|
|
&prompt.root; <userinput>sh nanobsd.sh</userinput> <co xml:id="nbsd-sh"/>
|
|
&prompt.root; <userinput>cd /usr/obj/nanobsd.full</userinput> <co xml:id="nbsd-cd2"/>
|
|
&prompt.root; <userinput>dd if=_.disk.full of=/dev/da0 bs=64k</userinput> <co xml: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>/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
|
|
<systemitem class="username">root</systemitem> via &man.sshd.8;.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>cust_install_files</literal> —
|
|
Installe les fichiers du répertoire <filename>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>/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 2222 < _.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 2222 | sh updatep1</userinput></screen>
|
|
</step>
|
|
</procedure>
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<index/>
|
|
</article>
|