<!doctype linuxdoc system>

<article>

<title>Partage des fichiers d'&eacute;change entre LINUX et Ms-Windows
<author>H. Peter Anvin <tt/ hpa@yggdrasil.com/
<date>v 1.3, 19 Juin 1995
<abstract>Copyright (c) 1994, 1995 H. Peter Anvin.

Toute remarque ou commentaire concernant la traduction de ce HOWTO peuvent &ecirc;tre envoy&eacute;es &agrave; la personne concern&eacute;e. Traduction de Pierre Tane <tt/tanep@usa.net/
</abstract>

<toc>

<sect>Introduction
<p>
Nombreux sont ceux qui utilisent conjointement Linux et Ms-Windows. La possibilit&eacute; de le faire tient une place importante dans la &quot;r&eacute;volution Linux&quot;. En effet, cela permet aux gens d'exp&eacute;rimenter (et d'en devenir accro) Linux tout en &eacute;tant toujours capables d'ex&eacute;cuter leurs programmes commerciaux. Comme Linux et Ms-Windows utilisent un syst&egrave;me de m&eacute;moire virtuelle sous la forme d'un fichier d'&eacute;change sur le disque dur, une question fr&eacute;quemment post&eacute;e &agrave; comp.os.linux.setup &eacute;tait &quot;Comment partager le fichier d'&eacute;change de mani&egrave;re &agrave; minimiser l'espace disque n&eacute;cessaire ?&quot;.

Il y a diverses m&eacute;thodes pour partager l'espace d'&eacute;change, celle d&eacute;crite ici &eacute;tant sans doute la plus compliqu&eacute;e tout en &eacute;tant la seule parmi celles que j'ai rencontr&eacute;es qui autorise les performances maximales pour les deux environnements sans risque de planter une partition du disque.

NOTE : si vous aviez une version pr&eacute;c&eacute;dente de ce document et que vous ayez eu des probl&egrave;mes avec la r&eacute;cup&eacute;ration de votre fichier d'&eacute;change (Windows disant que celui-ci est corrompu), essayez la version l&eacute;g&egrave;rement modifi&eacute;e du script shutdown incluse dans cette version.

<sect>Ce dont vous avez besoin
<p>
Il y a des pr&eacute;requis avant d'entamer la proc&eacute;dure d&eacute;crite ci-dessous. Je vous recommande fortement de remplir strictement les conditions &eacute;nonc&eacute;es sous peine de probl&egrave;mes s&eacute;rieux avec les anciennes versions.
<itemize>
<item> MS-DOS 5.0 ou plus
<item> MS-Windows 3.1 ou plus
<item> Un fichier shutdown ou init qui sache lancer un programme au moment du shutdown (comme le paquetage SysVinit-2.50, qui peut-&ecirc;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 &eacute;tant ancienne, cela n'est peut-&ecirc;tre plus le cas.
</itemize>

<sect>La proc&eacute;dure
<p>
<itemize>
<item>Lancez le DOS. Cr&eacute;ez une partition DOS (&agrave; l'aide de FDISK) de taille &eacute;gale &agrave; la taille que vous voulez pour votre fichier d'&eacute;change. Il va lui &ecirc;tre assign&eacute; une lettre par laquelle vous allez remplacer X &agrave; chaque fois que la proc&eacute;dure fait mention d'une commande telle que &quot;LABEL X: &quot; ou &quot;COPY FOO X:DUMMY.DAT&quot;
<item>Formatez cette partition en utilisant la commande FORMAT du DOS :
<tscreen><code>
FORMAT X:
</code></tscreen>
<item>Changez le nom de volume de cette partition pour &quot;SWAP SPACE&quot; &agrave; l'aide de la commande DOS LABEL. V&eacute;rifiez ensuite avec la commande DIR. Veillez &agrave; faire l'op&eacute;ration en deux temps car certaines versions de FORMAT n'&eacute;crivent pas le nom de volume dans le secteur de d&eacute;marrage comme elles le devraient. (Note : certaines personnes m'ont &eacute;crit pour me dire que le nom de voume est stock&eacute; dans le r&eacute;pertoire racine. Cela est vrai mais depuis DOS 5.0 au moins, il figure aussi dans le secteur de d&eacute;marrage.)
<tscreen><code>
LABEL X:
DIR X:
</code></tscreen>
<item>D&eacute;marrez Windows. Allez dans le Panneau de Configuration, s&eacute;lectionnez &quot;386 Enhanced&quot; et cr&eacute;ez un fichier d'&eacute;change permanent sur le lecteur X : de la taille maximale (Windows vous informera de la taille maximale). Window se plaindra peut-&ecirc;tre du fait qu'il ne va pas utiliser un fichier d'&eacute;change aussi gros. Ignorez le message et cr&eacute;ez tout de m&ecirc;me le fichier.
<item>Sortez de Windows
<item>D&eacute;marrez Linux et loggez vous en tant que root
<item>Utilisez la commande fdisk pour trouver le nom de la partition et sa taille en blocks. Cr&eacute;ez un lien symbolique de /dev/winswap vers cette partition. Si la partition est /dev/hda7 alors vous taperez :
<tscreen><code>
ln -s /dev/hda7 /dev/winswap
</code></tscreen>
(Note pour les puristes : Veuillez &eacute;tablir un lien symbolique. Le nom de cette partition va se retrouver dans de nombreux fichiers de configuration et des incoh&eacute;rences seraient fatales.)
<item>Ce qui suit est un fichier binaire encod&eacute; par uuencode qui analyse la partition et en extrait des informations particuli&egrave;res. D&eacute;codez le fichier par uudecode, gunzip-pez le et &eacute;x&eacute;cutez le par :
<tscreen><code>
msinfo /dev/winswap
</code></tscreen>
<verb>
begin 755 msinfo.gz
M'XL(`$$YNRT"`Y557TQ;51@_MW]HZ0AM'"$U.28W([..&gt;84%1%D2QH&gt;',9*M2S&amp;VC);
V=FV]T*;WWBD+1I)K'YH;DOJF#YH80GPR^J""D"R8K('MS2;#Q*SM%Y,EP&amp;592A$V:[?.;?M"F
P/?DG/G^_[?7_Z_3G7PL313TT(?8P0&lt;J"CI':8M$5H^#:=5&lt;KT^MQ`^UAQ1O*QUH0&lt;.]B
7S/FC[U!98Y;))]&lt;*N^AG"^LB((J%EMAFIM[A9U0O`;%:*7N#[L%G!_IH34V(J,WUZ.CK%O6I#N
4DTE,E144Q7T)M&gt;]_PX\M&lt;3@!`'ZZ26[`I7A.F!%$;JK.;21`!#.\,5A/CK)\=B3FL:3F8PH
M&lt;#$QDSO91Q%^&gt;L%"Z@KW*"NR3;""5SN,A?'NI[0=P0Q=#[P&amp;&amp;$5@3UNZ3VWM=(V
`NYQ/)6CX)DC2F`KD!&amp;C/!:R7"Q%]L6`8'D+=]8T*^$V8@RR\;5\P9(M^;\&amp;T:F]E`Q`EI
,_6YHCZBT#BJ09M0VV9!:XVKLF]0NX%'Z4R];\W](3A%JMI:`_&amp;12!&gt;@33QC0S'V8]?O5+0
`;3UC23K)!"?@97N8R#:29MF/&gt;R)PI&gt;UJF)MK%/4QR39OSJE8,8MHZ)UC#`?1ZX'N!ZU`L'X
;@.?X["C&lt;1DUT%,9QW32C''M"&lt;98PQR#8#=(L'&gt;96NQWR/4W1@&gt;H3\'!OC3,MMN_"[
,=A1OVK^XEH($[$S^HMY@28=MB78$/`=8)(L=\P*$5*I_LS@)_G7!=\Z9V@F"``Y$XQM[T!T&gt;(W
HNUM/T9CH)YIZI("&amp;9ZK32AR=DTN/QNZ."&amp;7?27H_&lt;(=_^=Q"U1N3Y.&gt;!E`$BY(M
;(4ZG)/[\_0F_54HY7\5[&lt;!33)\2M%:Y(.THX_N%K?%2L9&amp;(O=4&gt;8F^@IV9(M,&lt;HE
DU:17T'23M)GA#ANW&lt;F'J5]&gt;6!G2;BU+YN)@&lt;RL.JBIFD4[:&lt;###UGMO3Z77WO?L?O
+@@G\+(&lt;"X&amp;QT"&amp;#_N7@_\2;JGAEF&amp;U1`JR#ZCD/Z]7HJ'ZHM09_JNAZGJ^N?X5
.39_AXMY!!?3@6G&gt;X2,9^)QG%\!IZ@5`SSJ&gt;EWN!SN&gt;HCKMLJ%F08R*J5B4YV=T0R
&amp;J#UYJW&gt;4#"7/#D,0/GG`0ZI@__`;6&gt;]K!&gt;C[&lt;GDM31/IQP&gt;:!B]D?DT,*
&lt;;Y6=9Y]3:P][^W`?+&gt;8F(1!*ZY7B1:BN=@D_XY9?0IM'?ZT0=V@BBWIIV$47#Y@7,9Q&gt;
0&lt;*=7;NMWNS2&gt;9#_X3V)8()?A$;!`ALRWM#&amp;\%RO_^@9F6TP&lt;]'M8J@'AFA"[JM]0
(WCQ!`[.826!F&amp;A@HG4JWU5R_KKL&amp;M9GNQF$;J[?NZ\YUZ?B].C,OEWI*\94J`:6LB?U,R
K^2.([0QRQK(W!D2[K5MM,G&gt;&amp;0B7A'K03F"'17*&amp;L#9XU@+U2L9K4GCIG(K(NE:SM,
&gt;SM,?;X,T:&amp;U6,MT./E%NAUTNE_$,^E(A0M!B7K[D'&gt;X6'\FC25Q3W=+V3YLR^CXJW.S
0&gt;#54*#M#ZE^AI+N35^_&gt;![U4!?@VQ%ET&lt;L!BC&gt;MC5"\GH&gt;"T6'4/2NS&gt;((N
0,DT&gt;_9K6^!S%65KRS`,`,UVB43\!]-BKG]B`&lt;``#5"`
end
</verb>
<p>Prenez en note le nombre apr&egrave;s &quot;Total special sectors&quot; et v&eacute;rifiez que le nom du volume est &quot;SWAP SPACE&quot;. Si ce n'est pas le cas, rebootez DOS et renommez le par LABEL. Si &ccedil;a ne marche toujours pas, veuillez me communiquer la version de DOS que vous avez et j'essaierai de vous aider.

<item>(&Eacute;tape optionnelle) Windows laissera peut-&ecirc;tre de la place sur la partition m&ecirc;me si on lui indique de ne pas le faire. N'essayez pas d'occuper cet espace car il sera effac&eacute; &agrave; chaque lancement de Linux. Si vous voulez &eacute;viter de l'utiliser accidentellement (et de perdre des donn&eacute;es), vous pouvez cr&eacute;er un fichier qui remplira l'espace laiss&eacute; vacant avec :
<tscreen><code>mkdir /mnt
mount -t msdos /dev/winswap /mnt
dd if=/dev/zero of=/mnt/dummy.fil
umount /mnt  
</code></tscreen>

La commande dd renverra &quot;No space left on device&quot;. C'est exactement ce que vous vouliez.
<item>V&eacute;rifiez le nom du fichier shutdown. Pour SysVinit, c'est le fichier mentionn&eacute; dans la ligne suivante de /etc/inittab ; veuillez la rajouter si elle n'y est pas.
<tscreen><code>
# Runlevel 0 means shut down the system
l0:0:wait:/etc/brc
</code></tscreen>
Pour le reste de la proc&eacute;dure, je consid&eacute;rerai que le nom du fichier est /etc/brc.
<item>Tapez :
<tscreen><code>
dd if=/dev/winswap bs=512 count=XXX | gzip -9 > /etc/winswap.gz
</code></tscreen>
o&ugrave; XXX est remplac&eacute; par le nombre &quot;Total special sectors&quot;.
<item>Ajoutez le code suivant &agrave; votre fichier /etc/rc (ou le nom que init lui donne), juste avant la commande &quot;swapon -a&quot; (s'il n'y a pas cette commande, ajoutez la &agrave; votre fichier /etc/rc avant les commandes mount).
<p>
Si vous avez un r&eacute;pertoire /etc/rc.d, le fichier dans lequel vous introduirez ce qui pr&eacute;c&egrave;de devrait s'appeler &quot;/etc/rc.d/rc.S&quot; ou &quot;/etc/rc.d/rc.boot&quot;.
<p>
Si swapon est dans /etc, remplacez /sbin/swapon par /etc/swapon. S'il est dans /bin, remplacez-le par /bin/swapon. Faites la m&ecirc;me chose pour mkswap.
<p>
Remplacez XXXXX par la taille de votre partition en blocs telle qu'elle vous fut donn&eacute;e par fdisk.
<tscreen><code>
---[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]---
</code></tscreen>
<item>Ajoutez la section de code suivante &agrave; votre fichier /etc/brc (quelque soit son nom, &agrave; savoir /etc/rc.d/rc.0 ou /etc/rc.d/rc.halt si vous avez un r&eacute;pertoire /etc/rc.d). Ajoutez le apr&egrave;s toute commande qui n&eacute;cessite que le swap soit en place.
<tscreen><code>
---[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]---
</code></tscreen>
<item>Relancez Linux. Vous devriez normalement utiliser la partition cr&eacute;&eacute;e comme partition d'&eacute;change.
</itemize>

<sect>Quelques remarques
<p>

<itemize>
<item>Pas besoin de rajouter votre /dev/winswap dans le fichier /etc/fstab, il est d'ailleurs pr&eacute;f&eacute;rable de ne pas le faire (sauf peut-&ecirc;tre en commentaire).
<item>Si votre session Linux se plante ou fonctionne sans lancer /etc/brc, vous aurez &agrave; rebooter et &agrave; sortir de Linux avant que le swap ne marche sous Windows. Il est &eacute;galement possible de faire FORMAT X : et de recr&eacute;er le fichier d'&eacute;change de Windows. La seule mani&egrave;re de contourner ce probl&egrave;me serait de mettre un &eacute;quivalent des commandes de /etc/brc dans le fichier AUTOEXEC.BAT du DOS (malheureusement, je ne connais aucune mani&egrave;re de le faire sous DOS !).
<item>Si le FDISK du DOS reconna&icirc;t la partition comme &eacute;tant &quot;logical DOS drive&quot;, elle a un num&eacute;ro de 5 ou plus (comme dans /dev/hda5). Ce n'est pas la partition d&eacute;nomm&eacute;e &quot;extended&quot; qui a un num&eacute;ro de 4 ou moins ! Si votre fdisk de Linux n'affiche pas les partitions logiques, votre fdisk Linux est endommag&eacute; (Slackware 2.2, par exemple comprenait un fdisk endommag&eacute;). Vous pouvez essayer cfdisk si vous l'avez dans votre distribution ou vous devrez r&eacute;cup&eacute;rer une version de fdisk qui fonctionne.
<item>Si vous obtenez une exception float en lan&ccedil;ant msinfo, vous l'avez s&ucirc;rement ex&eacute;cut&eacute; sur la mauvaise partition. Voir la remarque ci-dessus.
<item>Veuillez ne pas m'envoyer de mail &agrave; moins que vous n'ayez v&eacute;rifi&eacute; et rev&eacute;rifi&eacute; que vous avez recopi&eacute; vos scripts correctement. Plus de la moiti&eacute; des probl&egrave;mes concernant ce Mini-HOWTO &eacute;taient dus &agrave; des erreurs typographiques dans le recopiage des scripts. (utilisez le copier-coller si vous le pouvez !).
</itemize>
</article>
