
           Partage des fichiers d'change entre LINUX et Ms-Windows

H. Peter Anvin hpa@yggdrasil.com

   v 1.3, 19 Juin 1995
     _________________________________________________________________

   _Copyright (c) 1994, 1995 H. Peter Anvin. Toute remarque ou
   commentaire concernant la traduction de ce HOWTO peuvent tre envoyes
    la personne concerne. Traduction de Pierre Tane tanep@usa.net_
     _________________________________________________________________

1. Introduction

   Nombreux sont ceux qui utilisent conjointement Linux et Ms-Windows. La
   possibilit de le faire tient une place importante dans la "rvolution
   Linux". En effet, cela permet aux gens d'exprimenter (et d'en devenir
   accro) Linux tout en tant toujours capables d'excuter leurs
   programmes commerciaux. Comme Linux et Ms-Windows utilisent un systme
   de mmoire virtuelle sous la forme d'un fichier d'change sur le
   disque dur, une question frquemment poste  comp.os.linux.setup
   tait "Comment partager le fichier d'change de manire  minimiser
   l'espace disque ncessaire ?".

   Il y a diverses mthodes pour partager l'espace d'change, celle
   dcrite ici tant sans doute la plus complique tout en tant la seule
   parmi celles que j'ai rencontres qui autorise les performances
   maximales pour les deux environnements sans risque de planter une
   partition du disque.

   NOTE : si vous aviez une version prcdente de ce document et que vous
   ayez eu des problmes avec la rcupration de votre fichier d'change
   (Windows disant que celui-ci est corrompu), essayez la version
   lgrement modifie du script shutdown incluse dans cette version.

2. Ce dont vous avez besoin

   Il y a des prrequis avant d'entamer la procdure dcrite ci-dessous.
   Je vous recommande fortement de remplir strictement les conditions
   nonces sous peine de problmes srieux avec les anciennes versions.
     * MS-DOS 5.0 ou plus
     * MS-Windows 3.1 ou plus
     * Un fichier shutdown ou init qui sache lancer un programme au
       moment du shutdown (comme le paquetage SysVinit-2.50, qui
       peut-tre obtenu sur sunsite.unc.edu dans
       /pub/Linux/system/Daemons. Presque toutes les distributions
       utilisent ce paquetage pour init). NdT : la date de ce document
       tant ancienne, cela n'est peut-tre plus le cas.

3. La procdure

     * Lancez le DOS. Crez une partition DOS ( l'aide de FDISK) de
       taille gale  la taille que vous voulez pour votre fichier
       d'change. Il va lui tre assign une lettre par laquelle vous
       allez remplacer X  chaque fois que la procdure fait mention
       d'une commande telle que "LABEL X: " ou "COPY FOO X:DUMMY.DAT"
     * Formatez cette partition en utilisant la commande FORMAT du DOS :
       ______________________________________________________________

FORMAT X:
       ______________________________________________________________

     * Changez le nom de volume de cette partition pour "SWAP SPACE" 
       l'aide de la commande DOS LABEL. Vrifiez ensuite avec la commande
       DIR. Veillez  faire l'opration en deux temps car certaines
       versions de FORMAT n'crivent pas le nom de volume dans le secteur
       de dmarrage comme elles le devraient. (Note : certaines personnes
       m'ont crit pour me dire que le nom de voume est stock dans le
       rpertoire racine. Cela est vrai mais depuis DOS 5.0 au moins, il
       figure aussi dans le secteur de dmarrage.)
       ______________________________________________________________

LABEL X:
DIR X:
       ______________________________________________________________

     * Dmarrez Windows. Allez dans le Panneau de Configuration,
       slectionnez "386 Enhanced" et crez un fichier d'change
       permanent sur le lecteur X : de la taille maximale (Windows vous
       informera de la taille maximale). Window se plaindra peut-tre du
       fait qu'il ne va pas utiliser un fichier d'change aussi gros.
       Ignorez le message et crez tout de mme le fichier.
     * Sortez de Windows
     * Dmarrez Linux et loggez vous en tant que root
     * Utilisez la commande fdisk pour trouver le nom de la partition et
       sa taille en blocks. Crez un lien symbolique de /dev/winswap vers
       cette partition. Si la partition est /dev/hda7 alors vous taperez
       :
       ______________________________________________________________

ln -s /dev/hda7 /dev/winswap
       ______________________________________________________________

       (Note pour les puristes : Veuillez tablir un lien symbolique. Le
       nom de cette partition va se retrouver dans de nombreux fichiers
       de configuration et des incohrences seraient fatales.)
     * Ce qui suit est un fichier binaire encod par uuencode qui analyse
       la partition et en extrait des informations particulires. Dcodez
       le fichier par uudecode, gunzip-pez le et xcutez le par :
       ______________________________________________________________

msinfo /dev/winswap
       ______________________________________________________________

begin 755 msinfo.gz
M'XL(`$$YNRT"`Y557TQ;51@_MW]HZ0AM'"$U.28W([..>84%1%D2QH>',9*M2S&VC);
V=FV]T*;WWBD+1I)K'YH;DOJF#YH80GPR^J""D"R8K('MS2;#Q*SM%Y,EP&592A$V:[?.;?M"F
P/?DG/G^_[?7_Z_3G7PL313TT(?8P0<J"CI':8M$5H^#:=5<KT^MQ`^UAQ1O*QUH0<.]B
7S/FC[U!98Y;))]<*N^AG"^LB((J%EMAFIM[A9U0O`;%:*7N#[L%G!_IH34V(J,WUZ.CK%O6I#N
4DTE,E144Q7T)M>]_PX\M<3@!`'ZZ26[`I7A.F!%$;JK.;21`!#.\,5A/CK)\=B3FL:3F8PH
M<#$QDSO91Q%^>L%"Z@KW*"NR3;""5SN,A?'NI[0=P0Q=#[P&&$5@3UNZ3VWM=(V
`NYQ/)6CX)DC2F`KD!&C/!:R7"Q%]L6`8'D+=]8T*^$V8@RR\;5\P9(M^;\&T:F]E`Q`EI
,_6YHCZBT#BJ09M0VV9!:XVKLF]0NX%'Z4R];\W](3A%JMI:`_&12!>@33QC0S'V8]?O5+0
`;3UC23K)!"?@97N8R#:29MF/>R)PI>UJF)MK%/4QR39OSJE8,8MHZ)UC#`?1ZX'N!ZU`L'X
;@.?X["C<1DUT%,9QW32C''M"<98PQR#8#=(L'>96NQWR/4W1@>H3\'!OC3,MMN_"[
,=A1OVK^XEH($[$S^HMY@28=MB78$/`=8)(L=\P*$5*I_LS@)_G7!=\Z9V@F"``Y$XQM[T!T>(W
HNUM/T9CH)YIZI("&9ZK32AR=DTN/QNZ."&7?27H_<(=_^=Q"U1N3Y.>!E`$BY(M
;(4ZG)/[\_0F_54HY7\5[<!33)\2M%:Y(.THX_N%K?%2L9&(O=4>8F^@IV9(M,<HE
DU:17T'23M)GA#ANW<F'J5]>6!G2;BU+YN)@<RL.JBIFD4[:<###UGMO3Z77WO?L?O
+@@G\+(<"X&QT"&#_N7@_\2;JGAEF&U1`JR#ZCD/Z]7HJ'ZHM09_JNAZGJ^N?X5
.39_AXMY!!?3@6G>X2,9^)QG%\!IZ@5`SSJ>EWN!SN>HCKMLJ%F08R*J5B4YV=T0R
&J#UYJW>4#"7/#D,0/GG`0ZI@__`;6>]K!>C[<GDM31/IQP>:!B]D?DT,*
<;Y6=9Y]3:P][^W`?+>8F(1!*ZY7B1:BN=@D_XY9?0IM'?ZT0=V@BBWIIV$47#Y@7,9Q>
0<*=7;NMWNS2>9#_X3V)8()?A$;!`ALRWM#&\%RO_^@9F6TP<]'M8J@'AFA"[JM]0
(WCQ!`[.826!F&A@HG4JWU5R_KKL&M9GNQF$;J[?NZ\YUZ?B].C,OEWI*\94J`:6LB?U,R
K^2.([0QRQK(W!D2[K5MM,G>&0B7A'K03F"'17*&L#9XU@+U2L9K4GCIG(K(NE:SM,
>SM,?;X,T:&U6,MT./E%NAUTNE_$,^E(A0M!B7K[D'>X6'\FC25Q3W=+V3YLR^CXJW.S
0>#54*#M#ZE^AI+N35^_>![U4!?@VQ%ET<L!BC>MC5"\GH>"T6'4/2NS>((N
0,DT>_9K6^!S%65KRS`,`,UVB43\!]-BKG]B`<``#5"`
end
       Prenez en note le nombre aprs "Total special sectors" et vrifiez
       que le nom du volume est "SWAP SPACE". Si ce n'est pas le cas,
       rebootez DOS et renommez le par LABEL. Si a ne marche toujours
       pas, veuillez me communiquer la version de DOS que vous avez et
       j'essaierai de vous aider.
     * (tape optionnelle) Windows laissera peut-tre de la place sur la
       partition mme si on lui indique de ne pas le faire. N'essayez pas
       d'occuper cet espace car il sera effac  chaque lancement de
       Linux. Si vous voulez viter de l'utiliser accidentellement (et de
       perdre des donnes), vous pouvez crer un fichier qui remplira
       l'espace laiss vacant avec :
       ______________________________________________________________

mkdir /mnt
mount -t msdos /dev/winswap /mnt
dd if=/dev/zero of=/mnt/dummy.fil
umount /mnt
       ______________________________________________________________

       La commande dd renverra "No space left on device". C'est
       exactement ce que vous vouliez.
     * Vrifiez le nom du fichier shutdown. Pour SysVinit, c'est le
       fichier mentionn dans la ligne suivante de /etc/inittab ;
       veuillez la rajouter si elle n'y est pas.
       ______________________________________________________________

# Runlevel 0 means shut down the system
l0:0:wait:/etc/brc
       ______________________________________________________________

       Pour le reste de la procdure, je considrerai que le nom du
       fichier est /etc/brc.
     * Tapez :
       ______________________________________________________________

dd if=/dev/winswap bs=512 count=XXX | gzip -9 > /etc/winswap.gz
       ______________________________________________________________

       o XXX est remplac par le nombre "Total special sectors".
     * Ajoutez le code suivant  votre fichier /etc/rc (ou le nom que
       init lui donne), juste avant la commande "swapon -a" (s'il n'y a
       pas cette commande, ajoutez la  votre fichier /etc/rc avant les
       commandes mount).
       Si vous avez un rpertoire /etc/rc.d, le fichier dans lequel vous
       introduirez ce qui prcde devrait s'appeler "/etc/rc.d/rc.S" ou
       "/etc/rc.d/rc.boot".
       Si swapon est dans /etc, remplacez /sbin/swapon par /etc/swapon.
       S'il est dans /bin, remplacez-le par /bin/swapon. Faites la mme
       chose pour mkswap.
       Remplacez XXXXX par la taille de votre partition en blocs telle
       qu'elle vous fut donne par fdisk.
       ______________________________________________________________

---[BEGIN CODE SEGMENT]---
#
# Verify and initialize swap space
#
echo -n 'Verifying swap space... '
if [ "`/bin/dd 2>/dev/null if=/dev/winswap bs=1 count=10 skip=4086`" \
   = 'SWAP-SPACE' ]; then
  echo 'Linux signature found'
  /sbin/swapon /dev/winswap
elif [ "`/bin/dd 2>/dev/null if=/dev/winswap bs=1 count=11 skip=43`" \
   = 'SWAP SPACE ' ]; then
  echo 'DOS signature found'
  /sbin/mkswap /dev/winswap XXXXX
  /sbin/swapon /dev/winswap
else
  echo 'No signature found'
  echo 'ERROR: Will not swap'
fi
---[END CODE SEGMENT]---
       ______________________________________________________________

     * Ajoutez la section de code suivante  votre fichier /etc/brc
       (quelque soit son nom,  savoir /etc/rc.d/rc.0 ou
       /etc/rc.d/rc.halt si vous avez un rpertoire /etc/rc.d). Ajoutez
       le aprs toute commande qui ncessite que le swap soit en place.
       ______________________________________________________________

---[BEGIN CODE SEGMENT]---
#
# Terminate swapping and restore DOS/Windows swap info
#
/sbin/swapoff /dev/winswap
if [ "`/bin/dd 2>/dev/null if=/dev/winswap bs=1 count=10 skip=4086`" \
   = 'SWAP-SPACE' ]; then
  echo 'Restoring DOS/Windows swap info'
  /bin/zcat /etc/winswap.gz > /dev/winswap
else
  echo 'ERROR: /dev/winswap lacks swap signature, skipping restore'
fi
---[END CODE SEGMENT]---
       ______________________________________________________________

     * Relancez Linux. Vous devriez normalement utiliser la partition
       cre comme partition d'change.

4. Quelques remarques

     * Pas besoin de rajouter votre /dev/winswap dans le fichier
       /etc/fstab, il est d'ailleurs prfrable de ne pas le faire (sauf
       peut-tre en commentaire).
     * Si votre session Linux se plante ou fonctionne sans lancer
       /etc/brc, vous aurez  rebooter et  sortir de Linux avant que le
       swap ne marche sous Windows. Il est galement possible de faire
       FORMAT X : et de recrer le fichier d'change de Windows. La seule
       manire de contourner ce problme serait de mettre un quivalent
       des commandes de /etc/brc dans le fichier AUTOEXEC.BAT du DOS
       (malheureusement, je ne connais aucune manire de le faire sous
       DOS !).
     * Si le FDISK du DOS reconnat la partition comme tant "logical DOS
       drive", elle a un numro de 5 ou plus (comme dans /dev/hda5). Ce
       n'est pas la partition dnomme "extended" qui a un numro de 4 ou
       moins ! Si votre fdisk de Linux n'affiche pas les partitions
       logiques, votre fdisk Linux est endommag (Slackware 2.2, par
       exemple comprenait un fdisk endommag). Vous pouvez essayer cfdisk
       si vous l'avez dans votre distribution ou vous devrez rcuprer
       une version de fdisk qui fonctionne.
     * Si vous obtenez une exception float en lanant msinfo, vous l'avez
       srement excut sur la mauvaise partition. Voir la remarque
       ci-dessus.
     * Veuillez ne pas m'envoyer de mail  moins que vous n'ayez vrifi
       et revrifi que vous avez recopi vos scripts correctement. Plus
       de la moiti des problmes concernant ce Mini-HOWTO taient dus 
       des erreurs typographiques dans le recopiage des scripts.
       (utilisez le copier-coller si vous le pouvez !).
