Guide rapide pour débuter avec &os; à
l'attention des utilisateurs de &linux;JohnFerrell2008The &os; Documentation Project$FreeBSD$
&tm-attrib.freebsd;
&tm-attrib.linux;
&tm-attrib.intel;
&tm-attrib.redhat;
&tm-attrib.unix;
&tm-attrib.general;
Ce document a pour but de familiariser rapidement les
utilisateurs de &linux; de niveau intermédiaire à
avancé avec les fondamentaux de &os;.
&trans.a.culot;
IntroductionCe document met en évidence les différences
entre &os; 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 &os;. 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é &os;. Si vous n'avez pas installé &os;
ou que vous avez besoin d'aide pour mener à terme le
processus d'installation, vous pouvez vous référer
au chapitre
Installer &os; du Manuel de Référence
&os;.Interpréteurs de commandes: Pas de Bash?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 &os;. En
fait, Bash n'est même pas
présent dans l'installation par défaut. À
la place, &os; utilise &man.tcsh.1; comme interpréteur
par défaut. Cependant, Bash
ainsi que vos autres interpréteurs de commandes favoris
sont disponibles dans les Paquetages et logiciels
portés de &os;.Si vous installez d'autres interpréteurs de
commandes vous pouvez utiliser &man.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'information.Paquetages et logiciels portés: ajouter des logiciels sous
&os;En plus de la traditionnelle méthode &unix;
d'installation de logiciels (télécharger les
sources, extraire, éditer le code source, et compiler),
&os; offre deux autres méthodes pour installer des
applications: les paquetages et les logiciels portés.
Une liste complète de tous les logiciels portés et
paquetages disponibles se trouve ici.PaquetagesLes paquetages sont des applications
pré-compilées, les équivalents &os; 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:&prompt.root; pkg_add /tmp/apache-2.2.6_2.tbzUtiliser l'option indique à
&man.pkg.add.1; de télécharger automatiquement
le paquetage et de l'installer, ainsi que toutes ses
dépendances:&prompt.root; 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.Si vous utilisez une version
RELEASE de &os; (6.2, 6.3,
7.0, etc., généralement installée
depuis un CD-ROM) pkg_add -r
téléchargera les paquetages compilés
spécifiquement pour cette version. Ces paquetages
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 paquetages les plus
récents construits pour les versions 6.X.Pour plus d'information concernant les paquetages vous
pouvez vous référer à la section 4.4 du
Manuel &os;:Utiliser
le système des logiciels
pré-compilés.Les logiciels portésLe catalogue des logiciels portés est la seconde
méthode proposée par &os; pour installer des
applications. Le catalogue des logiciels portés 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 &os;. Lors de l'installation d'un logiciel
porté 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).Le catalogue des logiciels portés, parfois
appelée l'arbre des ports (ports
tree en anglais), peut être
trouvé dans /usr/ports. Nous partons ici du
principe que le catalogue des logiciels portés a
été installé pendant le processus
d'installation de &os;. Si le catalogue des logiciels
portés n'a pas été installé, il
peut être ajoutée à partir des disques
d'installation en utilisant &man.sysinstall.8;, ou bien
récupéré depuis les serveurs &os; en
utilisant &man.csup.1; ou &man.portsnap.8;. Des instructions
détaillées concernant l'installation du
catalogue des logiciels portés peuvent être
consultées dans la section
4.5.1 du Manuel.Installer un logiciel porté est aussi simple (en
général) que de se déplacer dans le
répertoire du logiciel porté et de lancer le
processus de compilation. L'exemple suivant installe
Apache 2.2 depuis le catalogue des
logiciels portés:&prompt.root; cd /usr/ports/www/apache22
&prompt.root; make install cleanUn des avantages majeurs d'utiliser les logiciels
portés 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 portée, il vous est possible d'activer
mod_ldap en fixant la variable
WITH_LDAP de &man.make.1;:&prompt.root; cd /usr/ports/www/apache22
&prompt.root; make WITH_LDAP="YES" install cleanVous pouvez vous référer à la section
4.5 du Manuel &os;,
Utiliser le catalogue des logiciels portés,
pour obtenir plus d'information concernant le catalogue des
logiciels portés.Logiciel porté ou paquetage, lequel devrais-je
utiliser?Les paquetages sont simplement des logiciels portés
pré-compilés, donc il s'agit vraiment de choisir
entre une installation depuis les sources (logiciels
portés) ou une installation utilisant des binaires
pré-compilés. Chaque méthode
présente 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 système.Les logiciels portés (sources)Possibilité d'adapter les options
d'installation (les paquetages sont normalement
compilés avec les options standards alors qu'avec
les logiciels portés vous pouvez adapter diverses
options comme la compilation de modules additionnels ou le
changement de l'emplacement par
défaut).Vous pouvez appliquer vos propres fichiers
correctifs si vous le souhaitez.Si vous n'avez pas de besoins particuliers, les paquetages
seront probablement tout à fait adaptés à
votre situation. S'il vous arrivait d'avoir des besoins
spécifiques, les logiciels portés seraient plus
appropriés (et n'oubliez pas que si vous devez
effectuer des adaptations mais que vous préférez
les paquetages, vous pouvez toujours compiler un paquetage
personnalisé en utilisant makepackage et en copiant le paquetage
sur d'autres serveurs).Démarrage Système: où sont les niveaux
d'exécution
(run-levels)?&linux; utilise le système d'initialisation SysV
alors que &os; utilise le style traditionnel BSD avec
&man.init.8;. Avec &man.init.8; il n'existe pas de niveaux
d'exécution et pas de /etc/inittab,
mais à la place le démarrage est
contrôlé par l'utilitaire &man.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
(&man.cron.8;, &man.sshd.8;, &man.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? &os; est développé comme un
système d'exploitation complet. En d'autres termes, le
noyau, les bibliothèques système, et les
utilitaires présents dans l'espace utilisateur (tels
que &man.ls.1;, &man.cat.1;, &man.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, telles que
Apache,
X11,
Mozilla Firefox, etc. Ces
applications sont généralement installées
en utilisant le Catalogue
des logiciels portés et les paquetages de &os;.
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 (&man.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 additionnels, 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 &man.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):&prompt.root; /etc/rc.d/sshd startSi un service n'a pas été activé il
peut être démarré depuis la ligne de
commande en utilisant :&prompt.root; /etc/rc.d/sshd forcestartConfiguration RéseauInterfaces RéseauÀ la place d'un identifiant générique
ethX que &linux; utilise pour identifier
une interface réseau, &os; utilise le nom du pilote
suivi d'un nombre en tant qu'identifiant. La sortie suivante
de &man.ifconfig.8; montre deux interfaces réseau
&intel; Pro 1000 (em0 et
em1):&prompt.user; 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: activeConfiguration IPUne adresse IP peut être assignée à
une interface en utilisant &man.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"Pare-feuTout comme IPTABLES pour &linux;,
&os; offre également un pare-feu au niveau du noyau; en
fait &os; offre trois pare-feux distincts:IPFIREWALLIPFILTERPFIPFIREWALL ou
IPFW (la commande pour gérer
un jeu de règles IPFW est
&man.ipfw.8;) est le pare-feu développé et
maintenu par les développeurs &os;.
IPFW peut être couplé
avec &man.dummynet.4; pour fournir des possibilités de
régulation du 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_ifIPFILTER est le pare-feu
applicatif développé par Darren Reed.
Celui-ci n'est pas spécifique à &os; 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 = 22Le 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
&man.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 22Mettre à jour &os;Il existe trois méthodes différentes pour
mettre à jour un système &os;: à 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 &os; avec les
serveurs CVS
(Concurrent Versioning System -
Système de gestion de Versions Concurrentes) de &os;.
Une fois que le code source local est à jour vous pouvez
compiler les nouvelles versions du noyau et du système de
base. Pour plus d'informations concernant les mises à
jour depuis les sources vous pouvez consulter
le chapitre sur la mise à jour du manuel
&os;.Les mises à jour binaires ressemblent aux commandes
yum ou apt-get
utilisées pour mettre à jour un système
&linux;. La commande &man.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
&man.cron.8;.Si vous utilisez &man.cron.8; pour programmer vos mises
à jour, assurez-vous d'utiliser la commande
freebsd-update cron dans votre
&man.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 cronLa 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.procfs: disparu mais pas oubliéAvec &linux;, il vous est peut-être arrivé de
consulter /proc/sys/net/ipv4/ip_forward
pour déterminer si le routage IP était
activé. Avec &os; vous devriez utiliser &man.sysctl.8;
pour voir ce réglage ainsi que d'autres réglages
système parce que &man.procfs.5; a été
abandonné dans les versions actuelles de &os; (notez que
sysctl est disponible aussi sous
&linux;).Dans l'exemple du routage IP voici ce que vous utiliseriez
pour déterminer si le routage IP est activé sur
votre système &os;:&prompt.user; sysctl net.inet.ip.forwarding
net.inet.ip.forwarding: 0L'option est utilisée pour lister
tous les réglages du système:&prompt.user; 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
...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 &man.truss.1;, et pour la
Compatibilité Binaire avec &linux; (celle-ci
utilise cependant son propre procfs, &man.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 fera en sorte que
/proc ne soit pas monté
automatiquement lors du démarrage.Et ensuite montez procfs avec:&prompt.root; mount /procCommandes UsuellesGestion des PaquetagesCommande &linux; (Red Hat/Debian)Equivalent &os;Rôleyum install paquetage / apt-get install paquetagepkg_add -r paquetageInstallation de
paquetage depuis un
dépôt distantrpm -ivh paquetage / dpkg -i paquetagepkg_add -v paquetageInstallation de paquetagerpm -qa / dpkg -lpkg_infoLister les paquetages installésGestion SystèmeCommande &linux;Equivalent &os;RôlelspcipciconfLister les périphériques PCIlsmodkldstatLister les modules noyau chargésmodprobekldload / kldunloadCharger/Décharger les modules noyaustracetrussExaminer les appels systèmeConclusionNous esperons que ce document vous a fourni
suffisamment d'informations pour que vous puissiez faire vos
premiers pas avec &os;. Vous pouvez consulter
le Manuel &os; pour une couverture plus complète
des sujets abordés ici ainsi que de tous les autres
sujets non abordés dans ce document.