                 Installer le pilote NTFS pour FreeBSD

   Copyright (c) 1999 Groupe de Documentation de FreeBSD. Tous droits
   reserves.

   La redistribution du code source (SGML), modifie ou non, et
   compile (HTML, PostScript, etc.) est soumise aux conditions
   suivantes :

    1. Le copyright ci-dessus, la presente liste de conditions et
       l'avertissement qui la suit doivent figurer dans le code
       source.

    2. Le code source distribue sous forme compilee doit faire
       apparaitre le copyright ci-dessus, la presente liste de
       conditions et l'avertissement qui la suit.

   CE DOCUMENT EST FOURNI ``TEL QU'EN L'ETAT'' PAR LE PROJET DE
   DOCUMENTATION FRANC,AISE DE FreeBSD ET IL N'EST DONNE AUCUNE
   GARANTIE, IMPLICITE OU EXPLICITE, QUANT A SON UTILISATION
   COMMERCIALE, PROFESSIONNELLE OU AUTRE. LES COLLABORATEURS DU
   PROJET DE DOCUMENTATION FRANC,AISE DE FreeBSD NE PEUVENT EN AUCUN
   CAS ETRE TENUS POUR RESPONSABLES DE QUELQUE DOMMAGE OU PREJUDICE
   DIRECT, INDIRECT, SECONDAIRE OU ACCESSOIRE (Y COMPRIS LES PERTES
   FINANCIeRES DUES AU MANQUE A GAGNER, A L'INTERRUPTION D'ACTIVITES,
   OU LA PERTE D'INFORMATIONS ET AUTRES) DECOULANT DE L'UTILISATION
   DE LA DOCUMENTATION OU DE L'IMPOSSIBILITE D'UTILISER CELLE-CI, ET
   DONT L'UTILISATEUR ACCEPTE L'ENTIERE RESPONSABILITE.

   Version franc,aise de Pierre-Franc,ois Laurand
   <pushf@club-internet.fr>.

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

1. Installer le pilote NTFS pour FreeBSD 3.x

   Pour installer ce pilote, vous aurez besoin de recompiler un noyau
   car les fichiers d'en-tete utilises seront mis `a niveau. Pour
   autant, aucun changement dans le fichier de configuration ne sera
   necessaire. Si vous n'avez pas installe les sources du noyau, vous
   pouvez soit recourir `a sysinstall, ou bien entrer successivement
   en tant que root :

 # mount -t cd9660 /dev/cd0c /mnt
 #  cd /mnt/src
 #  cat ssys.?? | tar --unlink -zxpvf - -C /usr/src

   Le pilote requiert egalement le fichier mntopt.h de l'archive
   source. Pour extraire son contenu :

 #  cd /mnt/src
 #  cat ssbin.?? | tar --unlink -zxpvf - -C /usr/src sbin/mount

   Ensuite, en tant que root, creez un repertoire pour y extraire le
   contenu de l'archive du pilote ntfs :

 #  cd /tmp
 #  mkdir ntfs

   Telechargez le fichier d'archive compresse contenant le code
   source du pilote ainsi que son fichier de mise `a
   niveau - patch - dans /tmp/ntfs. Les deux fichiers dont vous avez
   besoin sont ntfs-0.17beta.tgz et ntfs.0.17beta-0.18beta.diff.

   Extrayez le contenu du fichier d'archive :

 #  cd /tmp/ntfs
 #  tar xzvf ntfs-0.17beta.tgz

   Il se peut que le numero de version (0.17beta) soit different.

   Ensuite, appliquez la mise `a niveau de la version 0.17 `a la
   version 0.18.

 #  cd /tmp/ntfs/src/sys/ntfs
 #  patch < /tmp/ntfs/ntfs.0.17beta-0.18beta.diff

   Prenez garde `a ce qu'aucune partie ne fasse defaut. patch(1)
   genere des copies de sauvegarde des fichiers qu'il met `a jour
   (avec l'extension .orig), par consequent, si un probleme survient,
   recopiez les fichiers .orig, et recherchez-en la cause.

   Recopiez maintenant les fichiers sources l`a ou ils doivent
   normalement etre :

 # cd /tmp/ntfs
 # cp -p -R -i src /usr/

   Il faut ensuite mettre `a jour vnode.h :

 # cd /usr/src/sys/sys
 # patch < /tmp/ntfs/diff/vnode.h.diff

   Encore une fois, verifiez que la mise `a niveau s'est bien passee,
   vous devriez avoir :

 Hmm...  Looks like a new-style context diff to me...
 The text leading up to this was:
 --------------------------
 |*** ./sys/sys/vnode.h.orig      Fri Jan  1 06:12:51 1999
 |--- ./sys/sys/vnode.h  Wed Dec   2 12:31:31 1998
 --------------------------
 Patching file vnode.h using Plan A...
 Hunk #1 succeeded at 62.
 done
    

   Vous allez maintenant pouvoir maintenant compiler l'executable
   mount_ntfs :

 # cd /usr/src/sbin/mount_ntfs
 # make
 # make install

   ainsi que le module du noyau :

 # cd /usr/src/sys/modules/ntfs
 # make
 # make install

   Pour finir, il faudra aussi recompiler le noyau (parce que vnode.h
   a ete modifie). Si vous utilisez le noyau GENERIC, faites une
   copie du fichier de configuration du noyau GENERIC (ce n'est pas
   absolument necessaire, mais de cette maniere le nom du noyau sera
   mis `a jour, et il sera plus facile d'identifier celui avec lequel
   vous demarrez). J'ai pour habitude d'utiliser des noms assez
   representatifs, aussi GENERIC_NTFS me semble-t-il approprie :

 # cd /usr/src/sys/i386/conf
 # cp GENERIC GENERIC_NTFS
 # /usr/sbin/config GENERIC_NTFS
 # cd ../../compile/GENERIC_NTFS
 # make depend
 # make
 # make install

   Ok, parfait, mais avant de redemarrer avec votre nouveau noyau, il
   faut identifier la tranche - slice - NTFS. Le numero de cette
   tranche va dependre du format de votre disque. Pour l'instant, si
   vous avez une tranche FAT suivie d'une tranche NTFS et que votre
   tranche FreeBSD est la derniere, elles seront numerotees (``da''
   ou peut-etre ``sd'' pour les disques SCSI, si vous avez mis `a
   jour votre systeme 2.2.x pour passer en 3.1, et ce sera ``wd'' si
   vous avez des disques IDE) :

 FAT     - da0s1
 NTFS    - da0s2
 FreeBSD - da0s3
     

   Si votre tranche NTFS et votre tranche FreeBSD sont inversees et
   que vous avez installe NT avant FreeBSD, ce qui est d'ailleurs la
   methode recommandee, vos numeros de tranches seront les memes,
   mais pas dans le meme ordre :

 FAT     - da0s1
 FreeBSD - da0s3
 NTFS    - da0s2
    

   Vous pouvez jeter un coup d'oeil au fichier /etc/fstab pour etre
   sur du numero de la tranche de FreeBSD (et egalement de celui de
   la tranche FAT).

   Il y a cependant une exception `a tout cela, lorsque votre tranche
   NTFS est une ``partition logique'' dans une ``partition etendue''.
   Les ``partitions logiques'' sont toujours numerotees `a partir de
   5, peut importe le nombre de ``partitions'' sur le disque. Mon
   disque, par exemple, est agence comme ceci :

 FAT                - da0s1
 FreeBSD            - da0s3
 Extended partition - da0s2
               NTFS - da0s5
    

   Notez qu'une ``partition etendue;'' se voit attribuer une
   tranche - ``slice'', mais celle-ci ne peut pas etre utilisee en
   tant que telle, c'est-`a-dire que vous ne pouvez pas la monter.

   Apres avoir identifie la tranche NTFS, vous pouvez ajouter une
   entree dans le fichier /etc/fstab. Notez que l'option ro signifie
   que le montage se fera en lecture seule (souvenez-vous que le
   pilote est en lecture seule). Cette entree provoquera le montage
   automatique de la tranche NTFS lors du demarrage. Si vous voulez
   desactiver cette derniere option, modifiez ro en ro,noauto, sans
   aucun espace ni avant ni apres la virgule ! Vous aurez egalement
   besoin d'un point de montage, /ntfs dans cet exemple, ou si vous
   preferez, /mnt `a la place de /ntfs dans le fichier /etc/fstab :

 # Device            Mountpoint       FStype    Options          Dump     Pass#
 /dev/da0s5          /ntfs            ntfs      ro               0        0
    

   Si vous preferez ne pas monter la ``partition'' au demarrage,
   montez-la ensuite en tant que root avec la commande :

 # mount -t ntfs /dev/da0s5 /ntfs

   Bien entendu, ajustez le fichier de pilote de peripherique ainsi
   que le point de montage `a votre systeme.

   C'est fait ! Il ne reste plus qu'`a redemarrer.

   Bon courage !

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

2. Installation du pilote NTFS sous FreeBSD 2.2.X

   Pour installer ce pilote, vous aurez besoin de recompiler un noyau
   car les fichiers d'en-tete utilises seront mis `a niveau. Pour
   autant, aucun changement dans le fichier de configuration ne sera
   necessaire. Si vous n'avez pas installe les sources du noyau, vous
   pouvez soit recourir `a sysinstall, ou bien entrer successivement
   en tant que root :

 # mount -t cd9660 /dev/cd0c /mnt
 #  cd /mnt/src
 #  cat ssys.?? | tar --unlink -zxpvf - -C /usr/src

   Le pilote requiert egalement les fichiers mntopt.h de l'archive
   source. Pour extraire son contenu, tapez :

 #  cd /mnt/src
 #  cat ssbin.?? | tar --unlink -zxpvf - -C /usr/src sbin/mount

   Ensuite, en tant que root, creez un repertoire pour extraire le
   contenu de l'archive du pilote ntfs :

 #  cd /tmp
 #  mkdir ntfs

   Telechargez le fichier d'archive compresse contenant le code
   source du pilote ainsi que son fichier de mise `a jour dans
   /tmp/ntfs.

   Extrayez le contenu de l'archive :

 #  cd /tmp/ntfs
 #  tar xzvf ntfs-releng22-0.12beta.tgz

   Il se peut que le numero de version (0.12beta) soit different.

   Recopiez maintenant les fichiers sources `a l'endroit adequat :

 # cd src
 # cp -p -r * /usr/src

   Ensuite, vous devez mettre `a niveau les 3 fichiers d'en-tete du
   systeme. Utilisez l'option -l (L minuscule) qui permet d'ignorer
   la difference d'espacement, car j'ai remarque que l'utilisation
   des touches TAB et Espace rendait incompatible les fichiers
   originaux et les fichiers diff.

 # cd /usr/src/sys/sys
 # patch -l malloc.h /tmp/ntfs/diff/malloc.h.diff
 # patch -l mount.h /tmp/ntfs/diff/mount.h.diff
 # patch -l vnode.h /tmp/ntfs/diff/vnode.h.diff

   Si cette operation reussit, vous verrez s'afficher quelque chose
   de similaire `a :

 Hmm...  Looks like a new-style context diff to me...
 The text leading up to this was:
 --------------------------
 |*** ./sys/sys/vnode.h.orig      Fri Jan  1 00:17:30 1999
 |--- ./sys/sys/vnode.h  Fri Jan   1 00:17:35 1999
 --------------------------
 Patching file vnode.h using Plan A...
 Hunk #1 succeeded at 58.
 done
    

   Si malencontreusement, un (ou plusieurs) fichier de mise `a jour
   faisait defaut, sachez que patch fait toujours des copies des
   fichiers originaux avec le meme nom suivi de l'extension .orig.

   Maintenant, vous pouvez compiler le pilote. Il est necessaire
   d'ajouter BINDIR=/usr/sbin qui n'est pas defini dans le Makefile.

 # cd /usr/src/sbin/i386/mount_ntfs
 # make
 # make BINDIR=/usr/sbin install

   Compilez ensuite les modules du noyau :

 # cd /usr/src/lkm
 # make
 # make install

   Pour finir, vous devez recompiler le noyau. Si vous utilisez le
   noyau GENERIC, faites une copie du fichier de configuration du
   noyau GENERIC (ce n'est pas absolument necessaire, mais de cette
   maniere le nom du noyau sera mis `a jour, et ce sera plus facile
   pour identifier le noyau avec lequel vous demarrez). J'ai pour
   habitude d'utiliser des noms assez representatifs, aussi
   GENERIC_NTFS me semble approprie :

 # cd /usr/src/sys/i386/conf
 # cp GENERIC GENERIC_NTFS
 # /usr/sbin/config GENERIC_NTFS
 # cd ../../compile/GENERIC_NTFS
 # make depend
 # make
 # make install

   Ok, parfait, mais avant de redemarrer avec votre nouveau noyau, il
   faut identifier la tranche - slice - NTFS. Le numero de cette
   tranche va dependre du format de votre disque. Pour l'instant, si
   vous avez une tranche FAT suivie d'une tranche NTFS et que votre
   tranche FreeBSD est la derniere, elles seront numerotees
   (remplacez ``w'' par ``s'' pour les disques SCSI) :

 FAT     - wd0s1
 NTFS    - wd0s2
 FreeBSD - wd0s3
    

   Si votre tranche NTFS et votre tranche FreeBSD sont inversees et
   que vous avez installe NT avant FreeBSD, ce qui est d'ailleurs la
   methode recommandee, vos numeros de tranches seront les memes,
   mais pas dans le meme ordre :

 FAT     - wd0s1
 FreeBSD - wd0s3
 NTFS    - wd0s2
    

   Vous pouvez jeter un coup d'oeil au fichier /etc/fstab pour etre
   sur du numero de la tranche FreeBSD (et egalement de celui de la
   tranche FAT).

   Il y a cependant une exception `a tout cela, lorsque votre tranche
   NTFS est une ``partition logique'' dans une ``partition etendue''.
   Les ``partitions logiques'' sont toujours numerotees `a partir de
   5, peut importe le nombre de ``partitions'' sur le disque. Mon
   disque, par exemple, est agence comme ceci :

 FAT                - sd0s1
 FreeBSD            - sd0s3
 Extended partition - sd0s2
               NTFS - sd0s5
    

   Notez qu'une ``partition etendue'' se voit attribuer une
   tranche - ``slice'', mais celle-ci ne peut pas etre utilisee en
   tant que telle, c'est-`a-dire que vous ne pouvez pas la monter.

   Apres avoir identifie la tranche NTFS, vous pouvez ajouter une
   entree dans le fichier /etc/fstab. Notez que l'option ro signifie
   que le montage se fera en lecture seule (souvenez-vous que le
   pilote est en lecture seule). Cette entree provoquera le montage
   automatique de la tranche NTFS lors du demarrage. Si vous voulez
   desactiver cette derniere option, modifiez ro en ro,noauto, sans
   aucun espace ni avant ni apres la virgule ! Vous aurez egalement
   besoin d'un point de montage, /ntfs dans cet exemple, ou si vous
   preferez, /mnt `a la place de /ntfs dans le fichier /etc/fstab :

 # Device            Mountpoint       FStype    Options          Dump     Pass#
 /dev/sd0s5          /ntfs            ntfs      ro               0        0
    

   Si vous preferez ne pas monter la ``partition'' au demarrage,
   montez-la ensuite en tant que root avec la commande :

 # mount -t ntfs /dev/sd0s5 /ntfs

   Bien entendu, ajustez le fichier de pilote de peripherique ainsi
   que le point de montage `a votre systeme.

   C'est fait ! Il ne reste plus qu'`a redemarrer. Si vous avez
   choisi de monter la ``partition'' au demarrage, vous verrez
   s'afficher quelques messages de diagnostic tout `a fait
   inoffensifs :

 ntfs_init():
 ntfs_mountfs(): bps: 512, spc: 1, media: f8, mftrecsz: 2 (2 sects)
 ntfs_mountfs(): mftcn: 0x315e5|0x287245
 ntfs_mountfs(): case-sens., uid: 0, gid: 0, mode: 777
 ntfs_iget(): read $MFT ntnode
 ntfs_mountfs(): reading $UpCase....OK
    

   Bon courage !

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

        Ce document, ainsi que d'autres peut etre telecharge sur
                   ftp.FreeBSD.org/pub/FreeBSD/doc/.

Pour toutes questions `a propos de FreeBSD, lisez la documentation avant
                 de contacter <questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez <doc@FreeBSD.org>.
