   Guide rapide pour debuter avec FreeBSD `a l'attention des utilisateurs de
                                    Linux(R)

  John Ferrell

   Version: 8def749c53

   Copyright (c) 2008 The FreeBSD Documentation Project

   FreeBSD is a registered trademark of the FreeBSD Foundation.

   Linux is a registered trademark of Linus Torvalds.

   Intel, Celeron, Centrino, Core, EtherExpress, i386, i486, Itanium,
   Pentium, and Xeon are trademarks or registered trademarks of Intel
   Corporation or its subsidiaries in the United States and other countries.

   Red Hat, RPM, are trademarks or registered trademarks of Red Hat, Inc. in
   the United States and other countries.

   UNIX is a registered trademark of The Open Group in the United States and
   other countries.

   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.

   Resume

   Ce document a pour but de familiariser rapidement les utilisateurs de
   Linux(R) de niveau intermediaire `a avance avec les fondamentaux de
   FreeBSD.

   Version franc,aise de Frederic Culot <culot@freebsd.org>.

   [ Multiples pages HTML / Page HTML unique ]

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

   Table des matieres

   1. Introduction

   2. Interpreteurs de commandes: Pas de Bash?

   3. Paquetages et logiciels portes: ajouter des logiciels sous FreeBSD

   4. Demarrage Systeme: ou sont les niveaux d'execution (run-levels)?

   5. Configuration Reseau

   6. Pare-feu

   7. Mettre `a jour FreeBSD

   8. procfs: disparu mais pas oublie

   9. Commandes Usuelles

   10. Conclusion

1. Introduction

   Ce document met en evidence les differences entre FreeBSD et Linux(R) de
   telle sorte que les utilisateurs de Linux(R) d'un niveau intermediaire
   jusqu'`a avance puissent se familiariser rapidement avec les fondamentaux
   de FreeBSD. Il s'agit ici simplement d'une courte introduction technique
   qui n'a pas pour objectif d'expliciter les differences
   << philosophiques >> entre les deux systemes d'exploitation.

   Ce document part du principe que vous avez dej`a installe FreeBSD. Si vous
   n'avez pas installe FreeBSD ou que vous avez besoin d'aide pour mener `a
   terme le processus d'installation, vous pouvez vous referer au chapitre
   Installer FreeBSD du Manuel de Reference FreeBSD.

2. Interpreteurs de commandes: Pas de Bash?

   Ceux qui ont l'habitude de Linux(R) sont souvent surpris de voir que Bash
   n'est pas l'interpreteur de commandes par defaut de FreeBSD. En fait, Bash
   n'est meme pas present dans l'installation par defaut. A la place, FreeBSD
   utilise tcsh(1) comme interpreteur par defaut. Cependant, Bash ainsi que
   vos autres interpreteurs de commandes favoris sont disponibles dans les
   Paquetages et logiciels portes de FreeBSD.

   Si vous installez d'autres interpreteurs de commandes vous pouvez utiliser
   chsh(1) pour definir un interpreteur par defaut pour un utilisateur. Il
   est cependant recommande de ne pas modifier l'interpreteur de commandes
   par defaut de root. La raison en est que les interpreteurs de commandes
   qui ne sont pas inclus dans la distribution de base sont normalement
   installes dans /usr/local/bin ou /usr/bin. Dans le cas d'un probleme les
   systemes de fichiers contenant /usr/local/bin et /usr/bin peuvent ne pas
   etre montes. Dans ce cas root n'aurait pas acces `a son interpreteur de
   commandes par defaut, ce qui empecherait root de pouvoir se connecter.
   Pour cette raison un second compte root, le compte toor, a ete cree pour
   l'utilisation avec des interpreteurs de commandes qui ne sont pas ceux par
   defaut. Vous pouvez consulter les questions frequemment posees sur la
   securite concernant le compte toor pour plus d'information.

3. Paquetages et logiciels portes: ajouter des logiciels sous FreeBSD

   En plus de la traditionnelle methode UNIX(R) d'installation de logiciels
   (telecharger les sources, extraire, editer le code source, et compiler),
   FreeBSD offre deux autres methodes pour installer des applications: les
   paquetages et les logiciels portes. Une liste complete de tous les
   logiciels portes et paquetages disponibles se trouve ici.

  3.1. Paquetages

   Les paquetages sont des applications pre-compilees, les equivalents
   FreeBSD des fichiers .deb pour les systemes bases sur Debian/Ubuntu et des
   fichiers .rpm pour les systemes bases sur Red Hat/Fedora. Par exemple, la
   commande suivante installe Apache 2.2:

 # pkg_add /tmp/apache-2.2.6_2.tbz

   Utiliser l'option -r indique `a pkg_add(1) de telecharger automatiquement
   le paquetage et de l'installer, ainsi que toutes ses dependances:

 # pkg_add -r apache22
 Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6.2-release/Latest/apache22.tbz... Done.
 Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6.2-release/All/expat-2.0.0_1.tbz... Done.
 Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6.2-release/All/perl-5.8.8_1.tbz... Done.
 [snip]

 To run apache www server from startup, add apache22_enable="YES"
 in your /etc/rc.conf. Extra options can be found in startup script.

  Note:

   Si vous utilisez une version RELEASE de FreeBSD (6.2, 6.3, 7.0, etc.,
   generalement installee depuis un CD-ROM) pkg_add -r telechargera les
   paquetages compiles specifiquement pour cette version. Ces paquetages
   peuvent ne pas etre la version la plus recente de l'application. Vous
   pouvez utiliser la variable PACKAGESITE pour surcharger ce comportement
   par defaut. Par exemple, assignez
   ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6-stable/Latest/ `a
   PACKAGESITE pour telecharger les paquetages les plus recents construits
   pour les versions 6.X.

   Pour plus d'information concernant les paquetages vous pouvez vous referer
   `a la section 4.4 du Manuel FreeBSD:Utiliser le systeme des logiciels
   pre-compiles.

  3.2. Les logiciels portes

   Le catalogue des logiciels portes est la seconde methode proposee par
   FreeBSD pour installer des applications. Le catalogue des logiciels portes
   a pour architecture un ensemble de Makefiles et de fichiers correctifs
   specifiquement adaptes pour pouvoir installer depuis les sources des
   applications diverses sur FreeBSD. Lors de l'installation d'un logiciel
   porte le systeme telechargera le code source, appliquera tous les
   correctifs necessaires, compilera le code, et installera l'application (et
   fera de meme pour toutes ses dependances).

   Le catalogue des logiciels portes, parfois appelee l'arbre des ports
   (ports tree en anglais), peut etre trouve dans /usr/ports. Nous partons
   ici du principe que le catalogue des logiciels portes a ete installe
   pendant le processus d'installation de FreeBSD. Si le catalogue des
   logiciels portes n'a pas ete installe, il peut etre ajoutee `a partir des
   disques d'installation en utilisant sysinstall(8), ou bien recupere depuis
   les serveurs FreeBSD en utilisant csup(1) ou portsnap(8). Des instructions
   detaillees concernant l'installation du catalogue des logiciels portes
   peuvent etre consultees dans la section 4.5.1 du Manuel.

   Installer un logiciel porte est aussi simple (en general) que de se
   deplacer dans le repertoire du logiciel porte et de lancer le processus de
   compilation. L'exemple suivant installe Apache 2.2 depuis le catalogue des
   logiciels portes:

 # cd /usr/ports/www/apache22
 # make install clean

   Un des avantages majeurs d'utiliser les logiciels portes pour installer
   des logiciels est de pouvoir adapter les options d'installation. Par
   exemple, lors de l'installation d' Apache 2.2 depuis une version portee,
   il vous est possible d'activer mod_ldap en fixant la variable WITH_LDAP de
   make(1):

 # cd /usr/ports/www/apache22
 # make WITH_LDAP="YES" install clean

   Vous pouvez vous referer `a la section 4.5 du Manuel FreeBSD, Utiliser le
   catalogue des logiciels portes, pour obtenir plus d'information concernant
   le catalogue des logiciels portes.

  3.3. Logiciel porte ou paquetage, lequel devrais-je utiliser?

   Les paquetages sont simplement des logiciels portes pre-compiles, donc il
   s'agit vraiment de choisir entre une installation depuis les sources
   (logiciels portes) ou une installation utilisant des binaires
   pre-compiles. Chaque methode presente ses avantages:

   Les paquetages (binaires)
     * Installation plus rapide (compiler de grosses applications peut
       prendre du temps).
     * Inutile de comprendre comment compiler un logiciel.
     * Inutile d'installer des compilateurs sur votre systeme.
   Les logiciels portes (sources)
     * Possibilite d'adapter les options d'installation (les paquetages sont
       normalement compiles avec les options standards alors qu'avec les
       logiciels portes vous pouvez adapter diverses options comme la
       compilation de modules additionnels ou le changement de l'emplacement
       par defaut).
     * Vous pouvez appliquer vos propres fichiers correctifs si vous le
       souhaitez.

   Si vous n'avez pas de besoins particuliers, les paquetages seront
   probablement tout `a fait adaptes `a votre situation. S'il vous arrivait
   d'avoir des besoins specifiques, les logiciels portes seraient plus
   appropries (et n'oubliez pas que si vous devez effectuer des adaptations
   mais que vous preferez les paquetages, vous pouvez toujours compiler un
   paquetage personnalise en utilisant make package et en copiant le
   paquetage sur d'autres serveurs).

4. Demarrage Systeme: ou sont les niveaux d'execution (run-levels)?

   Linux(R) utilise le systeme d'initialisation SysV alors que FreeBSD
   utilise le style traditionnel BSD avec init(8). Avec init(8) il n'existe
   pas de niveaux d'execution et pas de /etc/inittab, mais `a la place le
   demarrage est controle par l'utilitaire rc(8). Le script /etc/rc lit
   /etc/defaults/rc.conf et /etc/rc.conf pour determiner quels services
   doivent etre demarres. Les services declares sont alors demarres en
   lanc,ant les scripts d'initialisation du service considere que l'on trouve
   dans /etc/rc.d/ et /usr/local/etc/rc.d/. Ces scripts sont similaires aux
   scripts que l'on trouve dans /etc/init.d/ sur les systemes Linux(R).

   Pourquoi existe-t-il deux emplacements distincts pour les scripts
   d'initialisation de services ? Les scripts que l'on trouve dans /etc/rc.d/
   sont pour les applications qui font partie du systeme de base (cron(8),
   sshd(8), syslog(3), et d'autres). Les scripts dans /usr/local/etc/rc.d/
   sont pour les applications installees par les utilisateurs telles que
   Apache, Squid, etc.

   Quelle est la difference entre le systeme de << base >> et les
   applications installees par l'utilisateur? FreeBSD est developpe comme un
   systeme d'exploitation complet. En d'autres termes, le noyau, les
   bibliotheques systeme, et les utilitaires presents dans l'espace
   utilisateur (tels que ls(1), cat(1), cp(1), etc.) sont developpes et
   distribues conjointement. C'est `a cela que l'on fait reference en parlant
   de systeme de << base >>. Les applications installees par l'utilisateur
   sont des applications qui ne font pas partie du systeme de << base >>,
   telles que Apache, X11, Mozilla Firefox, etc. Ces applications sont
   generalement installees en utilisant le Catalogue des logiciels portes et
   les paquetages de FreeBSD. Afin de les conserver `a l'ecart du systeme de
   << base >>, les applications installees par l'utilisateur sont normalement
   placees dans /usr/local/. Ainsi les binaires installes par l'utilisateur
   se trouvent dans /usr/local/bin/, les fichiers de configuration dans
   /usr/local/etc/, et ainsi de suite.

   Les services sont actives en specifiant NomDuService_enable="YES" dans
   /etc/rc.conf (rc.conf(5)). Pour vous faire une idee, vous pouvez consulter
   les valeurs par defaut du systeme dans /etc/defaults/rc.conf, ces valeurs
   par defaut sont surchargees par celles trouvees dans /etc/rc.conf. De
   plus, lors de l'installation de logiciels additionnels, veillez `a
   consulter leur documentation pour determiner de quelle maniere sont
   actives les services associes, le cas echeant.

   Le bout de code suivant extrait de /etc/rc.conf active sshd(8) et Apache
   2.2. Il specifie egalement que Apache devrait etre lance avec SSL.

 # enable SSHD
 sshd_enable="YES"
 # enable Apache with SSL
 apache22_enable="YES"
 apache22_flags="-DSSL"

   Des lors qu'un service a ete active dans /etc/rc.conf, ce service peut
   etre demarre depuis la ligne de commande (sans avoir `a redemarrer le
   systeme):

 # /etc/rc.d/sshd start

   Si un service n'a pas ete active il peut etre demarre depuis la ligne de
   commande en utilisant forcestart:

 # /etc/rc.d/sshd forcestart

5. Configuration Reseau

  5.1. Interfaces Reseau

   A la place d'un identifiant generique ethX que Linux(R) utilise pour
   identifier une interface reseau, FreeBSD utilise le nom du pilote suivi
   d'un nombre en tant qu'identifiant. La sortie suivante de ifconfig(8)
   montre deux interfaces reseau Intel(R) Pro 1000 (em0 et em1):

 % ifconfig
 em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
         options=b<RXCSUM,TXCSUM,VLAN_MTU>
         inet 10.10.10.100 netmask 0xffffff00 broadcast 10.10.10.255
         ether 00:50:56:a7:70:b2
         media: Ethernet autoselect (1000baseTX <full-duplex>)
         status: active
 em1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
         options=b<RXCSUM,TXCSUM,VLAN_MTU>
         inet 192.168.10.222 netmask 0xffffff00 broadcast 192.168.10.255
         ether 00:50:56:a7:03:2b
         media: Ethernet autoselect (1000baseTX <full-duplex>)
         status: active

  5.2. Configuration IP

   Une adresse IP peut etre assignee `a une interface en utilisant
   ifconfig(8). Cependant, pour assurer la persistence meme apres un
   redemarrage, la configuration IP doit etre enregistree dans /etc/rc.conf.
   Dans l'exemple suivant sont specifies le nom de la machine, l'adresse IP,
   et la passerelle par defaut:

 hostname="server1.example.com"
 ifconfig_em0="inet 10.10.10.100  netmask 255.255.255.0"
 defaultrouter="10.10.10.1"

   Utilisez ceci pour configurer une interface pour DHCP:

 hostname="server1.example.com"
 ifconfig_em0="DHCP"

6. Pare-feu

   Tout comme IPTABLES pour Linux(R), FreeBSD offre egalement un pare-feu au
   niveau du noyau; en fait FreeBSD offre trois pare-feux distincts:

     * IPFIREWALL
     * IPFILTER
     * PF

   IPFIREWALL ou IPFW (la commande pour gerer un jeu de regles IPFW est
   ipfw(8)) est le pare-feu developpe et maintenu par les developpeurs
   FreeBSD. IPFW peut etre couple avec dummynet(4) pour fournir des
   possibilites de regulation du trafic et simuler differents types de
   connections reseau.

   Voici un exemple de regle IPFW pour autoriser SSH en entree:

 ipfw add allow tcp from any to me 22 in via $ext_if

   IPFILTER est le pare-feu applicatif developpe par Darren Reed. Celui-ci
   n'est pas specifique `a FreeBSD et a ete porte sur de nombreux systemes
   d'exploitation tels que NetBSD, OpenBSD, SunOS, HP/UX, et Solaris.

   Voici un exemple de regle IPFILTER pour autoriser SSH en entree:

 pass in on $ext_if proto tcp from any to any port = 22

   Le dernier pare-feu, PF, est developpe par le projet OpenBSD. PF a ete
   cree pour remplacer IPFILTER, ce qui fait que la syntaxe de PF est tres
   similaire `a celle de IPFILTER. PF peut etre couple avec altq(4) pour
   fournir des possibilites de QoS.

   Voici un exemple de regle PF pour autoriser SSH en entree:

 pass in on $ext_if inet proto tcp from any to ($ext_if) port 22

7. Mettre `a jour FreeBSD

   Il existe trois methodes differentes pour mettre `a jour un systeme
   FreeBSD: `a partir des sources, les mises `a jour binaires, et les disques
   d'installation.

   Mettre `a jour depuis les sources est la methode la plus compliquee mais
   elle offre la plus grande flexibilite. Le processus implique de
   synchroniser une copie locale du code source de FreeBSD avec les serveurs
   CVS (Concurrent Versioning System - Systeme de gestion de Versions
   Concurrentes) de FreeBSD. Une fois que le code source local est `a jour
   vous pouvez compiler les nouvelles versions du noyau et du systeme de
   base. Pour plus d'informations concernant les mises `a jour depuis les
   sources vous pouvez consulter le chapitre sur la mise `a jour du manuel
   FreeBSD.

   Les mises `a jour binaires ressemblent aux commandes yum ou apt-get
   utilisees pour mettre `a jour un systeme Linux(R). La commande
   freebsd-update(8) telechargera les nouvelles mises `a jour et les
   installera. Les mises `a jour peuvent etre programmees par l'intermediaire
   de cron(8).

  Note:

   Si vous utilisez cron(8) pour programmer vos mises `a jour, assurez-vous
   d'utiliser la commande freebsd-update cron dans votre crontab(1) pour
   reduire le nombre de machines recuperant les mises `a jour au meme moment.

 0 3 * * * root /usr/sbin/freebsd-update cron

   La derniere methode, qui permet de mettre `a jour en utilisant les disques
   d'installation, est simple: demarrez depuis les disques d'installation et
   selectionnez l'option de mise `a jour.

8. procfs: disparu mais pas oublie

   Avec Linux(R), il vous est peut-etre arrive de consulter
   /proc/sys/net/ipv4/ip_forward pour determiner si le routage IP etait
   active. Avec FreeBSD vous devriez utiliser sysctl(8) pour voir ce reglage
   ainsi que d'autres reglages systeme parce que procfs(5) a ete abandonne
   dans les versions actuelles de FreeBSD (notez que sysctl est disponible
   aussi sous Linux(R)).

   Dans l'exemple du routage IP voici ce que vous utiliseriez pour determiner
   si le routage IP est active sur votre systeme FreeBSD:

 % sysctl net.inet.ip.forwarding
 net.inet.ip.forwarding: 0

   L'option -a est utilisee pour lister tous les reglages du systeme:

 % sysctl -a
 kern.ostype: FreeBSD
 kern.osrelease: 6.2-RELEASE-p9
 kern.osrevision: 199506
 kern.version: FreeBSD 6.2-RELEASE-p9 #0: Thu Nov 29 04:07:33 UTC 2007
     root@i386-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC

 kern.maxvnodes: 17517
 kern.maxproc: 1988
 kern.maxfiles: 3976
 kern.argmax: 262144
 kern.securelevel: -1
 kern.hostname: server1
 kern.hostid: 0
 kern.clockrate: { hz = 1000, tick = 1000, profhz = 666, stathz = 133 }
 kern.posix1version: 200112
 ...

  Note:

   Certaines de ces valeurs sysctl sont uniquement accessibles en lecture.

   procfs est parfois necessaire comme pour faire fonctionner de vieux
   logiciels, pour examiner des appels systeme en utilisant truss(1), et pour
   la Compatibilite Binaire avec Linux(R) (celle-ci utilise cependant son
   propre procfs, linprocfs(5)). Si vous avez besoin de monter procfs vous
   pouvez ajouter la ligne suivante dans /etc/fstab:

 proc                /proc           procfs  rw,noauto       0       0

  Note:

   noauto fera en sorte que /proc ne soit pas monte automatiquement lors du
   demarrage.

   Et ensuite montez procfs avec:

 # mount /proc

9. Commandes Usuelles

  9.1. Gestion des Paquetages

    Commande Linux(R) (Red Hat/Debian)   Equivalent           Role            
                                          FreeBSD   
   yum install paquetage / apt-get       pkg_add -r Installation de paquetage 
   install paquetage                     paquetage  depuis un depot distant   
   rpm -ivh paquetage / dpkg -i          pkg_add -v Installation de paquetage 
   paquetage                             paquetage  
   rpm -qa / dpkg -l                     pkg_info   Lister les paquetages     
                                                    installes                 

  9.2. Gestion Systeme

   Commande Linux(R)  Equivalent FreeBSD                 Role                 
   lspci              pciconf             Lister les peripheriques PCI        
   lsmod              kldstat             Lister les modules noyau charges    
   modprobe           kldload / kldunload Charger/Decharger les modules noyau 
   strace             truss               Examiner les appels systeme         

10. Conclusion

   Nous esperons que ce document vous a fourni suffisamment d'informations
   pour que vous puissiez faire vos premiers pas avec FreeBSD. Vous pouvez
   consulter le Manuel FreeBSD pour une couverture plus complete des sujets
   abordes ici ainsi que de tous les autres sujets non abordes dans ce
   document.
