Partage des fichiers d'echange entre LINUX et Ms-Windows
H. Peter Anvin
[email protected]
v 1.3, 19 Juin 1995
Copyright (c) 1994, 1995 H. Peter Anvin. Toute remarque ou commen-
taire concernant la traduction de ce HOWTO peuvent etre envoyees a la
personne concernee. Traduction de Pierre Tane
[email protected]
11.. IInnttrroodduuccttiioonn
Nombreux sont ceux qui utilisent conjointement Linux et Ms-Windows. La
possibilite de le faire tient une place importante dans la 'revolution
Linux'. En effet, cela permet aux gens d'experimenter (et d'en devenir
accro) Linux tout en etant toujours capables d'executer leurs
programmes commerciaux. Comme Linux et Ms-Windows utilisent un systeme
de memoire virtuelle sous la forme d'un fichier d'echange sur le
disque dur, une question frequemment postee a comp.os.linux.setup
etait 'Comment partager le fichier d'echange de maniere a minimiser
l'espace disque necessaire ?'.
Il y a diverses methodes pour partager l'espace d'echange, celle
decrite ici etant sans doute la plus compliquee tout en etant la seule
parmi celles que j'ai rencontrees qui autorise les performances
maximales pour les deux environnements sans risque de planter une
partition du disque.
NOTE : si vous aviez une version precedente de ce document et que vous
ayez eu des problemes avec la recuperation de votre fichier d'echange
(Windows disant que celui-ci est corrompu), essayez la version
legerement modifiee du script shutdown incluse dans cette version.
22.. CCee ddoonntt vvoouuss aavveezz bbeessooiinn
Il y a des prerequis avant d'entamer la procedure decrite ci-dessous.
Je vous recommande fortement de remplir strictement les conditions
enoncees sous peine de problemes serieux avec les anciennes versions.
+o MS-DOS 5.0 ou plus
+o MS-Windows 3.1 ou plus
+o Un fichier shutdown ou init qui sache lancer un programme au moment
du shutdown (comme le paquetage SysVinit-2.50, qui peut-etre 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 etant ancienne, cela n'est peut-etre plus le cas.
33.. LLaa pprroocceedduurree
+o Lancez le DOS. Creez une partition DOS (a l'aide de FDISK) de
taille egale a la taille que vous voulez pour votre fichier
d'echange. Il va lui etre assigne une lettre par laquelle vous
allez remplacer X a chaque fois que la procedure fait mention d'une
commande telle que 'LABEL X: ' ou 'COPY FOO X:DUMMY.DAT'
+o Formatez cette partition en utilisant la commande FORMAT du DOS :
______________________________________________________________________
FORMAT X:
______________________________________________________________________
+o Changez le nom de volume de cette partition pour 'SWAP SPACE' a
l'aide de la commande DOS LABEL. Verifiez ensuite avec la commande
DIR. Veillez a faire l'operation en deux temps car certaines
versions de FORMAT n'ecrivent pas le nom de volume dans le secteur
de demarrage comme elles le devraient. (Note : certaines personnes
m'ont ecrit pour me dire que le nom de voume est stocke dans le
repertoire racine. Cela est vrai mais depuis DOS 5.0 au moins, il
figure aussi dans le secteur de demarrage.)
______________________________________________________________________
LABEL X:
DIR X:
______________________________________________________________________
+o Demarrez Windows. Allez dans le Panneau de Configuration,
selectionnez '386 Enhanced' et creez un fichier d'echange permanent
sur le lecteur X : de la taille maximale (Windows vous informera de
la taille maximale). Window se plaindra peut-etre du fait qu'il ne
va pas utiliser un fichier d'echange aussi gros. Ignorez le message
et creez tout de meme le fichier.
+o Sortez de Windows
+o Demarrez Linux et loggez vous en tant que root
+o Utilisez la commande fdisk pour trouver le nom de la partition et
sa taille en blocks. Creez 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 etablir un lien symbolique. Le nom
de cette partition va se retrouver dans de nombreux fichiers de con-
figuration et des incoherences seraient fatales.)
+o Ce qui suit est un fichier binaire encode par uuencode qui analyse
la partition et en extrait des informations particulieres. Decodez
le fichier par uudecode, gunzip-pez le et executez 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
&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 apres 'Total special sectors' et verifiez que
le nom du volume est 'SWAP SPACE'. Si ce n'est pas le cas, rebootez
DOS et renommez le par LABEL. Si ca ne marche toujours pas, veuillez
me communiquer la version de DOS que vous avez et j'essaierai de vous
aider.
+o (Etape optionnelle) Windows laissera peut-etre de la place sur la
partition meme si on lui indique de ne pas le faire. N'essayez pas
d'occuper cet espace car il sera efface a chaque lancement de
Linux. Si vous voulez eviter de l'utiliser accidentellement (et de
perdre des donnees), vous pouvez creer un fichier qui remplira
l'espace laisse 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.
+o Verifiez le nom du fichier shutdown. Pour SysVinit, c'est le
fichier mentionne 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 procedure, je considererai que le nom du fichier
est /etc/brc.
+o Tapez :
______________________________________________________________________
dd if=/dev/winswap bs=512 count=XXX | gzip -9 > /etc/winswap.gz
______________________________________________________________________
ou XXX est remplace par le nombre 'Total special sectors'.
+o Ajoutez le code suivant a 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 a votre fichier /etc/rc avant les
commandes mount).
Si vous avez un repertoire /etc/rc.d, le fichier dans lequel vous
introduirez ce qui precede 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 meme
chose pour mkswap.
Remplacez XXXXX par la taille de votre partition en blocs telle
qu'elle vous fut donnee 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]---
______________________________________________________________________
+o Ajoutez la section de code suivante a votre fichier /etc/brc
(quelque soit son nom, a savoir /etc/rc.d/rc.0 ou /etc/rc.d/rc.halt
si vous avez un repertoire /etc/rc.d). Ajoutez le apres toute
commande qui necessite 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]---
______________________________________________________________________
+o Relancez Linux. Vous devriez normalement utiliser la partition
creee comme partition d'echange.
44.. QQuueellqquueess rreemmaarrqquueess
+o Pas besoin de rajouter votre /dev/winswap dans le fichier
/etc/fstab, il est d'ailleurs preferable de ne pas le faire (sauf
peut-etre en commentaire).
+o Si votre session Linux se plante ou fonctionne sans lancer
/etc/brc, vous aurez a rebooter et a sortir de Linux avant que le
swap ne marche sous Windows. Il est egalement possible de faire
FORMAT X : et de recreer le fichier d'echange de Windows. La seule
maniere de contourner ce probleme serait de mettre un equivalent
des commandes de /etc/brc dans le fichier AUTOEXEC.BAT du DOS
(malheureusement, je ne connais aucune maniere de le faire sous DOS
!).
+o Si le FDISK du DOS reconnait la partition comme etant 'logical DOS
drive', elle a un numero de 5 ou plus (comme dans /dev/hda5). Ce
n'est pas la partition denommee 'extended' qui a un numero de 4 ou
moins ! Si votre fdisk de Linux n'affiche pas les partitions
logiques, votre fdisk Linux est endommage (Slackware 2.2, par
exemple comprenait un fdisk endommage). Vous pouvez essayer cfdisk
si vous l'avez dans votre distribution ou vous devrez recuperer une
version de fdisk qui fonctionne.
+o Si vous obtenez une exception float en lancant msinfo, vous l'avez
surement execute sur la mauvaise partition. Voir la remarque ci-
dessus.
+o Veuillez ne pas m'envoyer de mail a moins que vous n'ayez verifie
et reverifie que vous avez recopie vos scripts correctement. Plus
de la moitie des problemes concernant ce Mini-HOWTO etaient dus a
des erreurs typographiques dans le recopiage des scripts. (utilisez
le copier-coller si vous le pouvez !).