Copyright © 2008 The FreeBSD Documentation Project
FreeBSD est une marque déposée de la fondation FreeBSD.
Linux est une marque déposée de Linus Torvalds.
Intel, Celeron, EtherExpress, i386, i486, Itanium, Pentium, et Xeon sont des marques ou des marques déposées d'Intel Corporation ou de ses filiales aux Etats Unis et dans d'autres pays.
Red Hat, RPM, are trademarks or registered trademarks of Red Hat, Inc. in the United States and other countries.
UNIX est une marque déposée de l'Open Group aux Etats Unis et dans d'autres pays.
Plusieurs désignations utilisées par les constructeurs et vendeurs pour distinguer leurs produits sont mentionnées comme des marques déposées. Lorsqu'elles apparaissent dans ce document et que le projet FreeBSD est au courant de cette mention, la désignation est suivie du symbole “™” ou du symbole “®”.
Ce document met en évidence les différences entre FreeBSD et Linux de telle sorte que les utilisateurs de Linux d'un niveau intermédiaire jusqu'à avancé 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 différences “philosophiques” entre les deux systèmes d'exploitation.
Ce document part du principe que vous avez déjà installé FreeBSD. Si vous n'avez pas installé FreeBSD ou que vous avez besoin d'aide pour mener à terme le processus d'installation, vous pouvez vous référer au chapitre Installer FreeBSD du Manuel de Référence FreeBSD.
Ceux qui ont l'habitude de Linux sont souvent surpris de voir que Bash n'est pas l'interpréteur de commandes par défaut de FreeBSD. En fait, Bash n'est même pas présent dans l'installation par défaut. À la place, FreeBSD utilise tcsh(1) comme interpréteur par défaut. Cependant, Bash ainsi que vos autres interpréteurs de commandes favoris sont disponibles dans la Collection des Paquets et Portages de FreeBSD.
Si vous installez d'autres interpréteurs de commandes vous pouvez utiliser chsh(1) pour définir un interpréteur par défaut pour un utilisateur. Il est cependant recommandé de ne pas modifier l'interpréteur de commandes par défaut de root. La raison en est que les interpréteurs de commandes qui ne sont pas inclus dans la distribution de base sont normalement installés dans /usr/local/bin ou /usr/bin. Dans le cas d'un problème les systèmes de fichiers contenant /usr/local/bin et /usr/bin peuvent ne pas être montés. Dans ce cas root n'aurait pas accès à son interpréteur de commandes par défaut, ce qui empêcherait root de pouvoir se connecter. Pour cette raison un second compte root, le compte toor, a été créé pour l'utilisation avec des interpréteurs de commandes qui ne sont pas ceux par défaut. Vous pouvez consulter les questions fréquemment posées sur la sécurité concernant le compte toor pour plus d'informations.
En plus de la traditionnelle méthode UNIX® d'installation de logiciels (télécharger les sources, extraire, éditer le code source, et compiler), FreeBSD offre deux autres méthodes pour installer des applications: les paquets et les portages. Une liste complète de tous les portages et paquets disponibles se trouve ici.
Les paquets sont des applications pré-compilées, les équivalents FreeBSD des fichiers .deb pour les systèmes basés sur Debian/Ubuntu et des fichiers .rpm pour les systèmes basés 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 à pkg_add(1) de
télécharger automatiquement le paquet et de l'installer, ainsi que toutes
ses dépendances:
# 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..., générallement installée depuis un CD-ROM) pkg_add -r téléchargera les paquets construits spécifiquement pour cette version. Ces paquets peuvent ne pas être la version la plus récente de l'application. Vous pouvez utiliser la variable PACKAGESITE pour surcharger ce comportement par défaut. Par exemple, assignez ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6-stable/Latest/ à PACKAGESITE pour télécharger les paquets les plus récents construits pour les versions 6.X.
Vous pouvez en savoir plus sur les versions de FreeBSD dans l'article Choisir la version de FreeBSD qui vous convient le mieux.
Pour plus d'informations concernant les paquets vous pouvez vous référer à la section 4.4 du Manuel FreeBSD : Utiliser le Système des Paquets.
La Collection des Portages est la seconde méthode proposée par FreeBSD pour installer des applications. La Collection des Portages a pour architecture un ensemble de Makefiles et de fichiers correctifs spécifiquement adaptés pour pouvoir installer depuis les sources des applications diverses sur FreeBSD. Lors de l'installation d'un portage le système téléchargera le code source, appliquera tous les correctifs nécessaires, compilera le code, et installera l'application (et fera de même pour toutes ses dépendances).
La Collection des Portages, parfois appelée l'arbre des portages (ports tree en anglais), peut être trouvée dans /usr/ports. Nous partons ici du principe que la Collection des Portages a été installée pendant le processus d'installation de FreeBSD. Si la Collection des Portages n'a pas été installée, elle peut être ajoutée à partir des disques d'installation en utilisant sysinstall(8), ou bien récupérée depuis les serveurs FreeBSD en utilisant csup(1) ou portsnap(8). Des instructions détaillées concernant l'installation de la Collection des Portages peuvent être consultées dans la section 4.5.1 du Manuel.
Installer un portage est aussi simple (en général) que de se déplacer dans le répertoire du portage et de lancer le processus de construction. L'exemple suivant installe Apache 2.2 depuis la Collection des Portages:
# cd /usr/ports/www/apache22 # make install clean
Un des avantages majeurs d'utiliser les portages pour installer des logiciels est de pouvoir adapter les options d'installation. Par exemple, lors de l'installation d' Apache 2.2 depuis les portages, 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 référer à la section 4.5 du Manuel FreeBSD, Utiliser la Collection des Portages, pour obtenir plus d'informations concernant la Collection des Portages.
Les paquets sont simplement des portages pré-compilés, donc il s'agit vraiment de choisir entre une installation depuis les sources (portages) ou une installation utilisant des paquets binaires. Chaque méthode présente ses avantages:
Les Paquets (binaire)
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 système.
Les Portages (source)
Possibilité d'adapter les options d'installation (les Paquets sont normalement construits avec les options standards alors qu'avec les portages vous pouvez adapter diverses options comme la construction de modules additionnels ou le changement du chemin par défaut).
Vous pouvez appliquer vos propres fichiers correctifs si vous le souhaitez.
Si vous n'avez pas de besoins particuliers, les paquets seront probablement tout à fait adaptés à votre situation. S'il vous arrivait d'avoir des besoins spécifiques, les portages seraient plus appropriés (et n'oubliez pas que si vous devez effectuer des adaptations mais que vous préférez les paquets, vous pouvez toujours construire un paquet personalisé en utilisant make package et en copiant le paquet sur d'autres serveurs).
Linux utilise le système d'initialisation SysV alors que FreeBSD utilise le style traditionel BSD avec init(8). Avec init(8) il n'existe pas de niveaux de mise en marche et pas de /etc/inittab, mais à la place le démarrage est contrôlé par l'utilitaire rc(8). Le script /etc/rc lit /etc/defaults/rc.conf et /etc/rc.conf pour déterminer quels services doivent être démarrés. Les services déclarés sont alors démarrés en lançant les scripts d'initialisation du service considéré 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 systèmes Linux.
|
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 système de base (cron(8), sshd(8), syslog(3), et d'autres). Les scripts dans /usr/local/etc/rc.d/ sont pour les applications installées par les utilisateurs telles que Apache, Squid, etc. Quelle est la différence entre le système de “base” et les applications installées par l'utilisateur ? FreeBSD est développé comme un système d'exploitation complet. En d'autres termes, le noyau, les librairies système, et les utilitaires présents dans l'espace utilisateur (tels que ls(1), cat(1), cp(1), etc.) sont développés et distribués conjointement. C'est à cela que l'on fait référence en parlant de système de “base”. Les applications installées par l'utilisateur sont des applications qui ne font pas partie du système de “base”, tel que Apache, X11, Mozilla Firefox, etc. Ces applications sont généralement installées en utilisant la Collection des Paquets et Portages de FreeBSD. Afin de les conserver à l'écart du système de “base”, les applications installées par l'utilisateur sont normalement placées dans /usr/local/. Ainsi les binaires installés par l'utilisateur se trouvent dans /usr/local/bin/, les fichiers de configuration dans /usr/local/etc/, et ainsi de suite. |
Les services sont activés en spécifiant NomDuService_enable="YES" dans /etc/rc.conf (rc.conf(5)). Pour vous faire une idée, vous pouvez consulter les valeurs par défaut du système dans /etc/defaults/rc.conf, ces valeurs par défaut sont surchargées par celles trouvées dans /etc/rc.conf. De plus, lors de l'installation de logiciels additionels, veillez à consulter leur documentation pour déterminer de quelle manière sont activés les services associés, le cas échéant.
Le bout de code suivant extrait de /etc/rc.conf active sshd(8) et Apache 2.2. Il spécifie également que Apache devrait être lancé avec SSL.
# enable SSHD sshd_enable="YES" # enable Apache with SSL apache22_enable="YES" apache22_flags="-DSSL"
Dès lors qu'un service a été activé dans /etc/rc.conf, ce service peut être démarré depuis la ligne de commande (sans avoir à redémarrer le système):
# /etc/rc.d/sshd start
Si un service n'a pas été activé il peut être
démarré depuis la ligne de commande en utilisant forcestart:
# /etc/rc.d/sshd forcestart
À la place d'un identifiant générique ethX que Linux utilise pour identifier une interface réseau, FreeBSD utilise le nom du pilote suivi d'un nombre en tant qu'identifiant. La sortie suivante de ifconfig(8) montre deux interfaces réseau Intel® 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
Une adresse IP peut être assignée à une interface en utilisant ifconfig(8). Cependant, pour assurer la persistence même après un redémarrage, la configuration IP doit être enregistrée dans /etc/rc.conf. Dans l'exemple suivant sont spécifiés le nom de la machine, l'adresse IP, et la passerelle par défaut:
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"
Tout comme IPTABLES pour Linux, FreeBSD offre également un pare-feu au niveau du noyau; en fait FreeBSD offre trois pare-feux distincts:
IPFIREWALL ou IPFW (la commande pour gérer un jeu de règles IPFW est ipfw(8)) est le pare-feu développé et maintenu par les développeurs FreeBSD. IPFW peut être couplé avec dummynet(4) pour fournir des possibilités de formattage de trafic et simuler différents types de connections réseau.
Voici un exemple de règle IPFW pour autoriser SSH en entrée :
ipfw add allow tcp from any to me 22 in via $ext_if
IPFILTER est le pare-feu applicatif développé par Darren Reed. Celui-ce n'est pas spécifique à FreeBSD et a été porté sur de nombreux systèmes d'exploitation tels que NetBSD, OpenBSD, SunOS, HP/UX, et Solaris.
Voici un exemple de règle IPFILTER pour autoriser SSH en entrée :
pass in on $ext_if proto tcp from any to any port = 22
Le dernier pare-feu, PF, est développé par le projet OpenBSD. PF a été créé pour remplacer IPFILTER, ce qui fait que la syntaxe de PF est très similaire à celle de IPFILTER. PF peut être couplé avec altq(4) pour fournir des possibilités de QoS.
Voici un exemple de règle PF pour autoriser SSH en entrée :
pass in on $ext_if inet proto tcp from any to ($ext_if) port 22
Il existe trois méthodes différentes pour mettre à jour un système FreeBSD : à partir des sources, les mises à jour binaires, et les disques d'installation.
Mettre à jour depuis les sources est la méthode la plus compliquée mais elle offre la plus grande flexibilité. Le processus implique de synchroniser une copie locale du code source de FreeBSD avec les serveurs CVS (Concurrent Versioning System - Système de gestion de Versions Concurrentes) de FreeBSD. Une fois que le code source local est à jour vous pouvez construire les nouvelles versions du noyau et de l'espace utilisateur. Pour plus d'informations concernant les mises à jour depuis les sources vous pouvez consulter le chapitre sur la mise à jour du manuel FreeBSD.
Les mises à jour binaires ressemblent aux commandes yum ou apt-get utilisées pour mettre à jour un système Linux. La commande freebsd-update(8) téléchargera les nouvelles mises à jour et les installera. Les mises à jour peuvent être programmées par l'intermédiaire de cron(8).
Note : Si vous utilisez cron(8) pour programmer vos mises à jour, assurez-vous d'utiliser la commande freebsd-update cron dans votre crontab(1) pour réduire le nombre de machines récupérant les mises à jour au même moment.
0 3 * * * root /usr/sbin/freebsd-update cron
La dernière méthode, qui permet de mettre à jour en utilisant les disques d'installation, est simple : démarrez depuis les disques d'installation et sélectionnez l'option de mise à jour.
Avec Linux, il vous est peut-être arrivé de consulter /proc/sys/net/ipv4/ip_forward pour déterminer si le transfert IP était activé. Avec FreeBSD vous devriez utiliser sysctl(8) pour voir ce réglage ainsi que d'autres réglages système parce que procfs(5) a été abandonné dans la version courante de FreeBSD (notez que sysctl est disponible aussi sous Linux).
Dans l'exemple du transfert IP voici ce que vous utiliseriez pour déterminer si le transfert IP est activé sur votre système FreeBSD :
% sysctl net.inet.ip.forwarding net.inet.ip.forwarding: 0
L'option -a est utilisée pour lister tous les
réglages du système :
% 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 nécessaire comme pour faire fonctionner de vieux logiciels, pour examiner des appels système en utilisant truss(1), et pour la Compatilibité Binaire avec Linux (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 :
noautofera en sorte que /proc ne soit pas monté automatiquement lors du démarrage.
Et ensuite montez procfs avec :
# mount /proc
| commande Linux (Red Hat/Debian) | équivalent FreeBSD | Objectif |
|---|---|---|
| yum install paquet / apt-get install paquet | pkg_add -r paquet | Installation de paquet depuis un dépôt distant |
| rpm -ivh paquet / dpkg -i paquet | pkg_add -v paquet | Installation de paquet |
| rpm -qa / dpkg -l | pkg_info | Lister les paquets installés |
| commande Linux | équivalent FreeBSD | Objectif |
|---|---|---|
| lspci | pciconf | Lister les périphériques PCI |
| lsmod | kldstat | Lister les modules noyau chargés |
| modprobe | kldload / kldunload | Charger / Décharger les modules noyau |
| strace | truss | Examiner les appels système |
Nous ésperons que ce document vous a fourni suffisemment d'informations pour que vous puissiez faire vos premiers pas avec FreeBSD. Vous pouvez consulter le Manuel FreeBSD pour une couverture plus complète des sujets abordés ici ainsi que de tous les autres sujets non couverts dans ce document.
Ce document, ainsi que d'autres peut être téléchargé sur ftp.FreeBSD.org/pub/FreeBSD/doc/.
Pour toutes questions à propos de FreeBSD, lisez la documentation avant de contacter <questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez <doc@FreeBSD.org>.