
                          Le mini-HOWTO Linux+FreeBSD

Niels Kristian Bech Jensen, nkbj@image.dk

   v1.11, 30 mars 2000
     _________________________________________________________________

   _Traduction ralise par Christophe Deleuze
   (Christophe.Deleuze@lip6.fr) 1er aot 2001. Ce document dcrit comment
   utiliser Linux et FreeBSD sur la mme machine. Il prsente FreeBSD et
   dcrit comment les deux systmes d'exploitation peuvent inter-agir,
   par exemple en partageant la zone de swap. Il faut probablement avoir
   une certaine exprience de Linux et du partitionnement de disque dur
   (fdisk) avant de lire ce document. Les trucs ont t tests avec
   FreeBSD 2.2.2 mais devraient tre valables pour les versions plus
   rcentes. N'hsitez pas  me mler si vous avez des commentaires,
   questions ou suggestions concernant ce document. J'aimerais aussi
   avoir des infos des gens ayant utilis Linux avec NetBSD ou OpenBSD._
     _________________________________________________________________

1. Qu'est-ce que FreeBSD ?

   FreeBSD est un systme d'exploitation libre de la famille Unix, tout
   comme Linux. La principale diffrence rside dans le fait que, au
   contraire de Linux qui a t crit  partir de rien, FreeBSD est bas
   sur 4.4BSD-lite, les parties librement distribuables de 4.4BSD
   (Berkeley Software Distribution). Ce fait amne certaines personnes 
   suggrer que FreeBSD est plus proche du ``vrai'' UNIX que Linux.
   FreeBSD tourne uniquement sur les plateformes PC Intel (i386 et
   suivants), des ports sur les plateformes DEC Alpha et Sun Sparc sont
   en cours. NetBSD et OpenBSD sont similaires  FreeBSD, et tournent
   tous deux sur plusieurs plateformes. Les exigences matrielles de tous
   ces systmes *BSD sont  peu prs les mmes que celles de Linux.

   Le dveloppement de FreeBSD est gr diffrement de celui de Linux.
   Une quipe (le noyau) de dveloppeurs sert d'arbitre et dirige le
   projet. Les gros changements sont d'abord discuts sur les listes de
   discussion (_mailing lists_). Le projet FreeBSD comprend deux arbres
   de dveloppement (comme Linux) : _``-current''_ (courant) et
   _``-stable''_. Le dveloppement des nouvelles fonctionnalits est fait
   dans ``-current'', alors que les volutions des versions ``-stable''
   sont limites  des corrections de bogues ou  de nouvelles
   fonctionnalits minitieusement testes.

   FreeBSD peut tre utilis et (re-)distribu librement comme Linux. La
   majorit du systme est place sous le copyright BSD, le reste est
   sous la licence GNU GPL ou d'autres licences open-source.

2. Nommage des disques durs sous FreeBSD

   Linux et FreeBSD nomment les disques durs et les partitions selon deux
   principes diffrents. Cette section dcrit les principales diffrences
   entre les deux systmes. En fait le principe de nommage de FreeBSD est
   une variation du style de nommage BSD traditionnel adapt aux
   partitions de PC. Il est donc trs proche sur ce point des autres
   systmes Unix bass sur BSD tels que NetBSD, OpenBSD, Ultrix, Digital
   Unix, SunOS et Solaris.

2.1 ``Partitions'' et ``tranches'' (slices) sous FreeBSD

   FreeBSD a besoin d'une entre dans la table de partition primaire de
   votre disque dur. Cette partition primaire est appele ``tranche''
   (_slice_ en anglais) dans la terminologie FreeBSD. Il utilise ensuite
   le programme disklabel pour crer plusieurs partitions logiques dans
   cette partition primaire. Ces partitions logiques sont appeles
   _``partitions''_ dans la terminologie FreeBSD. Ce concept est similaire
    la faon dont Linux (et DOS) manipule les partitions logiques dans
   une partition tendue. Vous ne pouvez pas installer FreeBSD dans une
   partition tendue cre par Linux (ou DOS). Notez que le programme
   fdisk de Linux n'affiche pas les partitions d'une tranche FreeBSD
   depuis le menu principal, mais il peut afficher l'information de
   nommage de disque (_disklabel_) BSD si on utilise la commande 'b'. Le
   rsultat sera quelque chose comme ceci (/dev/hda4 est la tranche
   FreeBSD) :

# fdisk /dev/hda

Command (m for help): p

Disk /dev/hda: 64 heads, 63 sectors, 621 cylinders
Units = cylinders of 4032 * 512 bytes

    Device Boot   Begin    Start      End   Blocks   Id  System
 /dev/hda1   *        1        1       27    54400+  83  Linux native
 /dev/hda2           28       28       55    56448   83  Linux native
 /dev/hda3           56       56      403   701568   83  Linux native
 /dev/hda4          404      404      621   439488   a5  BSD/386

 Command (m for help): b
 Reading disklabel of /dev/hda4 at sector 1624897.

 BSD disklabel command (m for help): p

 8 partitions:
 #        size   offset    fstype   [fsize bsize   cpg]
   a:    64512  1624896    4.2BSD        0     0     0   # (Cyl.  404 - 419)
   b:   104832  1689408      swap                        # (Cyl.  420 - 445)
   c:   878976  1624896    unused        0     0         # (Cyl.  404 - 621)
   e:    64512  1794240    4.2BSD        0     0     0   # (Cyl.  446 - 461)
   f:   645120  1858752    4.2BSD        0     0     0   # (Cyl.  462 - 621)

 BSD disklabel command (m for help): q
 #

   Les lettres `a'...`f' dans la premire colonne sont les mmes
   tiquettes (_labels_) que celles utilises plus bas dans l'exemple
   d'une tranche FreeBSD. Il y a trois partitions spciales dans le
   jargon FreeBSD. La lettre `a' dsigne la partition racine, `b' la
   partition de swap tandis que `c' dsigne la tranche en entier. Voyez
   la documentation pour plus d'information sur la faon ``standard''
   d'affecter ces lettres aux diffrents types de partitions.

2.2 Nommage des disques et des partitions sous Linux et FreeBSD

   Les disques durs sont nomms des faons suivantes sous Linux et
   FreeBSD :

                        Linux           FreeBSD
Premier disque  IDE     /dev/hda        /dev/wd0
Second disque   IDE     /dev/hdb        /dev/wd1
Premier disque SCSI     /dev/sda        /dev/sd0
Second disque  SCSI     /dev/sdb        /dev/sd1

   Les partitions (tranches FreeBSD) d'un disque IDE sont nommes de la
   faon suivante (/dev/hda est utilis comme exemple) :

                                Linux           FreeBSD
Premire partition primaire     /dev/hda1       /dev/wd0s1
Deuxime partition primaire     /dev/hda2       /dev/wd0s2
Troisime partition primaire    /dev/hda3       /dev/wd0s3
Quatrime partition primaire    /dev/hda4       /dev/wd0s4

   Les partitions de ma tranche FreeBSD sont nommes de la faon
   suivante. Ceci est le nommage par dfaut, qu'il est possible de
   changer en faisant une installation personnalise de FreeBSD
   (/dev/hda4 est la tranche FreeBSD) :

Nom Linux       Nom FreeBSD     Point de montage FreeBSD
/dev/hda5       /dev/wd0s4a     /
/dev/hda6       /dev/wd0s4b     swap
/dev/hda7       /dev/wd0s4e     /var
/dev/hda8       /dev/wd0s4f     /usr

   Si vous lancez dmesg sous Linux vous verrez (le noyau linux doit avoir
   t compil avec le support _UFS_. Voyez la section Installer et
   prparer Linux):

Partition check:
 hda: hda1 hda2 hda3 hda4 < hda5 hda6 hda7 hda8 >

   Si vous avez install FreeBSD dans la tranche /dev/sd1s3 (/dev/sdb3
   dans le jargon Linux), et que /dev/sdb2 est une partition Linux
   tendue contenant deux partitions logiques (/dev/sdb5 et /dev/sdb6),
   l'exemple prcdent ressemblera plutt  ceci :

Nom Linux       Nom FreeBSD     Point de montage FreeBSD
/dev/sdb7       /dev/sd1s3a     /
/dev/sdb8       /dev/sd1s3b     swap
/dev/sdb9       /dev/sd1s3e     /var
/dev/sdb10      /dev/sd1s3f     /usr

   La commande dmesg montrera ceci sous la forme

Partition check:
 sdb: sdb1 sdb2 < sdb5 sdb6 > sdb3 < sdb7 sdb8 sdb9 sdb10 >

   Si vous avez une partition tendue Linux _aprs_ votre tranche
   FreeBSD, vous allez avoir des problmes. La plupart des noyaux des
   disquettes d'installation Linux ne contiennent pas le support _UFS_,
   ils ne reconnatront donc pas les partitions FreeBSD  l'intrieur de
   la tranche. Ce qui qui aurait d tre vu comme (/dev/hda3 est la
   tranche FreeBSD et /dev/hda4 est la partition tendue Linux)

Partition check:
 hda: hda1 hda2 hda3 < hda5 hda6 hda7 hda8 > hda4 < hda9 hda10 >

   est vu comme:

Partition check:
 hda: hda1 hda2 hda3 hda4 < hda5 hda6 >

   Cela peut rsulter en un mauvais assignement de priphrique et
   provoquer des pertes de donnes. Je conseille de _toujours_ mettre
   votre tranche FreeBSD aprs toutes les partitions tendues Linux, et
   de ne changer aucune partition logique dans vos partitions tendues
   Linux une fois que FreeBSD est install !

3. Partage de l'espace de swap entre Linux et FreeBSD

   Cette section dcrit comment j'ai pu utiliser la mme partition de
   swap pour Linux et FreeBSD. Il peut y avoir d'autres faons d'obtenir
   le mme rsultat. Vous pouvez, si vous voulez, installer FreeBSD avant
   Linux mais faites attention  l'ordre des partitions dans la tranche
   FreeBSD.

3.1 Installer et prparer Linux

   La premire tape est d'installer Linux normalement. Il faut laisser
   de la place pour la tranche FreeBSD sur le disque dur. Il n'est pas
   ncessaire de crer une partition de swap Linux, mais si vous en
   voulez une, placez-la dans l'espace que vous voulez allouer  FreeBSD.
   De cette faon, vous pourrez plus tard effacer la partition de swap de
   Linux et rcuprer l'espace pour FreeBSD.

   Quand Linux est install, il faut compiler un nouveau noyau. Lisez le
   _HOWTO du noyau Linux_ si vous ne savez pas faire. Il _faut_ inclure
   _UFS filesystem support (read only)_ et _BSD disklabel (FreeBSD
   partition tables) support_:

UFS filesystem support (read only) (CONFIG_UFS_FS) [N/y/m/?] y
BSD disklabel (FreeBSD partition tables) support (CONFIG_BSD_DISKLABEL) [N/y/?]
(NEW) y

   Installez le nouveau noyau et redmarrez. Enlevez toutes les lignes
   contenant le mot _swap_ dans votre fichier /etc/fstab si vous avez
   cr une partition de swap pour Linux. _Soyez bien sr d'avoir une
   disquette de dmarrage Linux en tat de marche avec le nouveau noyau._
   Vous voil prts  installer FreeBSD.

3.2 Installer FreeBSD

   Installez FreeBSD comme cela est dcrit dans sa documentation.
   Supprimez la partition de swap Linux si vous en avez fait une (vous
   pouvez utiliser le programme fdisk de FreeBSD). Faites attention 
   l'ordre des partitions dans la tranche FreeBSD. Si vous utilisez le
   nommage par dfaut la seconde partition sera le swap. Terminez
   l'installation de FreeBSD et redmarrez sous Linux _en utilisant la
   disquette de dmarrage_.

3.3 Utiliser la partition de swap FreeBSD sous Linux

   Aprs avoir redmarr Linux, lancez dmesg, ce qui devrait donner
   quelque chose comme a :

Partition check:
 hda: hda1 hda2 hda3 hda4 < hda5 hda6 hda7 hda8 >

   Cela signifie que /dev/hda4 est votre tranche FreeBSD, alors que
   /dev/hda5, /dev/hda6, /dev/hda7 et /dev/hda8 sont les partitions
   FreeBSD. Si votre partition de swap est la seconde partition de la
   tranche, c'est /dev/hda6.

   Il faut placer la ligne suivante dans votre fichier /etc/fstab pour
   valider la partition de swap :

/dev/hda6       none            swap            sw              0       0

   Alors que FreeBSD peut utiliser n'importe quelle partition comme
   espace de swap, Linux a besoin d'une signature spciale dans cette
   partition. Cette signature est cre par mkswap. FreeBSD la dtruit
   quand il utilise la partition de swap partage, il faudra donc lancer
   mkswap  chaque fois que vous dmarrez sous Linux. Pour faire ceci
   automagiquement, il faut trouver le script qui lance swapon au
   dmarrage. Dans Red Hat Linux c'est /etc/rc.d/rc.sysinit. Dans Debian
   GNU/Linux, c'est /etc/init.d/boot. Placez la ligne suivante dans ce
   fichier juste _avant_ swapon -a :

awk -- '/swap/ && ($1 !~ /#/) { system("mkswap "$1"") }' /etc/fstab

   Ceci lancera mkswap sur toutes les partitions de swap dfinies dans
   /etc/fstab  chaque dmarrage sauf si elles sont commentes (ont ``#''
   comme premier caractre de la ligne).

   Sous Linux, lancez free pour vrifier la taille de l'espace de swap.
   Vous devriez aussi redmarrer sous FreeBSD et vous assurer que tout
   marche comme prvu. Si ce n'est pas le cas, vous avez probablement
   utilis la mauvaise partition pour le swap (depuis Linux). La seule
   solution est de rinstaller FreeBSD et ressayer. On apprend beaucoup
   par l'exprience. :-)

4. Dmarrer FreeBSD avec LILO

   Vous pouvez facilement dmarrer FreeBSD avec LILO. N'installez pas le
   chargeur de FreeBSD (Booteasy) si vous voulez utiliser LILO. Ajoutez
   les lignes suivantes  votre fichier /etc/lilo.conf et relancez lilo
   (la tranche FreeBSD tant /dev/hda4) :

other=/dev/hda4
        table=/dev/hda
        label=FreeBSD

   Si vous avez install FreeBSD sur le second disque SCSI, utilisez
   quelque chose du type (la tranche FreeBSD tant /dev/sdb2):

other=/dev/sdb2
        table=/dev/sdb
        loader=/boot/chain.b
        label=FreeBSD

5. Monter les systmes de fichiers

5.1 Monter des systmes de fichiers UFS sous Linux

   Malheureusement le support pour UFS dans les noyaux Linux 2.0.xx est
   bogu. Quand on essaye de monter un systme de fichiers UFS, on
   obtient juste des messages d'erreur (le systme de fichiers est mont,
   mais on ne peut rien y lire ou crire). Ce problme a t rsolu dans
   les versions rcentes du noyau (depuis 2.1.87).

   Il y a une autre version du support du systme de fichiers UFS pour
   les noyaux Linux 2.0.xx (xx <= 30)  SunSite. Son nom est _U2FS_ et la
   version actuelle est u2fs-0.4.3.tar.gz. Une version d'U2FS
   (ufs-0.4.4.tar.gz) pour Linux 2.0.31 et suivants (2.0.xx, pas 2.1.xx)
   se trouve sur ce site avec d'autres informations sur U2FS (et UFS.)

   Maintenant il faut construire un nouveau noyau avec le support pour
   _U2FS file system_ et _BSD disklabel_. Voyez la section Installer et
   prparer Linux pour plus d'informations. Vous pouvez laissez tomber le
   support pour _UFS file system_ quand vous utilisez _U2FS file system_.

   Quand vous avez install le nouveau noyau, vous pouvez monter les
   systmes de fichiers UFS (toutes les partitions dans la tranche
   FreeBSD sauf la partition de swap) avec une commande du type :

mount -t u2fs /dev/hda8 /mnt

   Il faudra utiliser une commande du type :

mount -t ufs /dev/hda8 /mnt

   si vous utilisez un noyau 2.1.87 ou suprieur.  partir de la version
   2.1.112 il faut ajouter  la commande l'option -o ufstype=44bsd :
mount -t ufs -o ufstype=44bsd /dev/hda8 /mnt

   Le support UFS (et U2FS) est en lecture seule. Donc, vous pouvez lire
   depuis les systmes de fichiers UFS mais pas y crire. Un pilote UFS
   exprimental en lecture/criture a remplac le pilote en lecture seule
    partir du noyau 2.1.112. L'criture dans des partitions FreeBSD est
   supporte depuis la version 2.1.127.

5.2 Monter des systmes de fichiers ext2fs sous FreeBSD

   Pour monter des systmes de fichiers ext2fs sous FreeBSD, il faut
   construire un nouveau noyau avec le support pour ext2fs. Lisez le
   manuel FreeBSD en anglais ou en franais si vous ne savez pas faire.
   Placez la ligne

options         "EXT2FS"

   dans votre fichier de configuration du noyau pour le nouveau noyau.

   Quand vous avez dmarr avec le nouveau noyau, vous pouvez monter un
   systme de fichiers ext2fs avec une commande comme :

mount -t ext2fs /dev/wd0s3 /mnt

    cause d'une bogue dans FreeBSD 2.2.8 et prcdents vous devrez
   dmonter tous les systmes de fichiers ext2fs _avant_ d'arrter
   (shutdown) FreeBSD. Si vous arrtez FreeBSD avec un systme de
   fichiers ext2fs mont, FreeBSD ne peut pas faire le sync sur les
   systmes de fichiers UFS. Cela rsultera en un fsck au prochain
   dmarrage de FreeBSD. Vous pouvez arranger a en plaant la ligne:
umount -a -t ext2fs

   dans le fichier /etc/rc.shutdown. Cette bogue a t corrige dans
   FreeBSD-3.x.

6. Excuter des binaires ``trangers''

6.1 Excuter des binaires FreeBSD sous Linux

   Le paquetage iBCS permet d'excuter des binaires FreeBSD sous Linux,
   mais il est vieux et non maintenu. Je n'arrive pas  le faire marcher.
   Si vous avez eu plus de russite que moi, merci de m'en informer.

6.2 Excuter des binaires Linux sous FreeBSD

   FreeBSD a la capacit d'excuter des binaires Linux, dans les deux
   formats a.out et ELF. Il faut procder en trois tapes :

    1. Il faut valider la compatibilit Linux. Pour ce faire, (pour
       FreeBSD 2.2.2 --- les dtails peuvent changer avec d'autres
       versions) il faut diter votre fichier /etc/rc.conf et changer

 linux_enable="NO"

       en

linux_enable="YES"

       et redmarrer. Une autre faon de charger le support des binaires
       Linux est d'excuter la commande /usr/bin/linux. Vous n'aurez pas
        redmarrer, et le support ne sera pas systmatiquement charg
       (gain de mmoire). N'oubliez pas d'ajouter la ligne
options         COMPAT_LINUX
       au fichier de configuration du noyau FreeBSD si vous compilez un
       nouveau noyau.
    2. Il faut installer les bibliothques partages de Linux si vos
       binaires Linux utilisent l'dition de lien dynamique. Ces
       bibliothques sont incluses pour FreeBSD 2.2.{2,5,6} dans le
       paquetage linux_lib-2.4.tgz (il y a peut tre des versions plus
       rcentes). Lancez la commande

 pkg_add <rep_paquetage>/linux_lib-2.4.tgz

       pour installer le paquetage. <rep_paquetage> est le rpertoire o
       se trouve le paquetage. Vous pouvez aussi le charger depuis le
       rseau par :
pkg_add ftp://ftp.freebsd.org/pub/FreeBSD/packages-stable/All/linux_lib-2.4.tgz
       ou en relanant /stand/sysinstall. Entrez ``Configure'',
       ``Packages'' et utilisez les menus. Si vous excutez des binaires
       Linux statiquement lis, excutez la commande suivante :
brandelf -t Linux <nom_du_binaire_linux_statiquement_li>
    3. Installez les programmes Linux que vous voulez excuter. Les
       programmes peuvent tre installs aussi bien sur un systme de
       fichiers UFS que ext2fs. Voir la section Monter des systmes de
       fichiers ext2fs sous FreeBSD pour plus d'informations sur la faon
       d'utiliser des systmes de fichiers ext2fs sous FreeBSD.

   J'ai excut avec succs les versions Linux d'Applixware 4.3 et de
   Netscape 3.01 (toutes deux en format ELF) sous FreeBSD 2.2.2 en
   utilisant cette mthode (oui, je sais qu'il existe une version FreeBSD
   de Netscape 4). Les versions Linux d'acroread et StarOffice 3 et 4
   marchent bien sous FreeBSD. StarOffice 5 dpend des _threads_ natives
   Linux et ne marche pas sous FreeBSD. Lisez la documentation de FreeBSD
   pour plus d'informations  ce sujet.

7. Sources d'informations

   La dernire version de ce mini-HOWTO peut tre trouve sur ma page web
   en plusieurs formats (y compris SGML et PostScript). La version
   franaise peut tre trouve sur celle du traducteur. Ce document a t
   traduit en Japonais par M. Teruyoshi Fujiwara comme partie du projet
   JF.

   Quelques articles sur la diffrence entre Linux et FreeBSD se trouvent
   ici.

   Vous pouvez trouver plus d'informations sur FreeBSD (et rapatrier tout
   le systme)  l'url FreeBSD Inc.. Vous pouvez aussi acheter le systme
   sur CDROM chez Walnut Creek CDROM (leurs serveurs sont sous FreeBSD).

   Le HOWTO du noyau Linux fait partie du Projet de Documentation Linux.

8. Remerciements et aspects lgaux

   Merci aux membres du groupe d'utilisateurs *BSD du Danemark pour avoir
   rpondu aux questions d'un nul en FreeBSD,  M. Takeshi Okazaki pour
   avoir port  ma connaissance l'existence de _U2FS_ et  M. David
   O'Brien pour ses prcieuses suggestions.

8.1 Aspects lgaux

   Les marques appartiennent  leurs propritaires.

   Bien qu'ils pensent que les informations donnes dans ce document sont
   correctes, les auteurs n'accepteront aucune responsabilit quant au
   contenu de ce document. Utilisez les trucs et exemples  vos risques
   et pril.

   Copyright  1997-2000 par Niels Kristian Bech Jensen. Ce document peut
   tre distribu uniquement sous les termes et conditions de la licence
   LDP tels que donns  http://www.linuxdoc.org/COPYRIGHT.html.

   La version franaise est opyright Christophe Deleuze et peut tre
   distribue selon les mmes termes.
