hpa@yggdrasil.com
tanep@usa.net
Nombreux sont ceux qui utilisent conjointement Linux et Ms-Windows. La possibilité de le faire tient une place importante dans la "révolution Linux". En effet, cela permet aux gens d'expérimenter (et d'en devenir accro) Linux tout en étant toujours capables d'exécuter leurs programmes commerciaux. Comme Linux et Ms-Windows utilisent un système de mémoire virtuelle sous la forme d'un fichier d'échange sur le disque dur, une question fréquemment postée à comp.os.linux.setup était "Comment partager le fichier d'échange de manière à minimiser l'espace disque nécessaire ?".
Il y a diverses méthodes pour partager l'espace d'échange, celle décrite ici étant sans doute la plus compliquée tout en étant la seule parmi celles que j'ai rencontré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écédente de ce document et que vous ayez eu des problèmes avec la récupération de votre fichier d'échange (Windows disant que celui-ci est corrompu), essayez la version légèrement modifiée du script shutdown incluse dans cette version.
Il y a des prérequis avant d'entamer la procédure décrite ci-dessous. Je vous recommande fortement de remplir strictement les conditions énoncées sous peine de problèmes sérieux avec les anciennes versions.
FORMAT X:
LABEL X:
DIR X:
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 incohérences seraient fatales.)
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 après "Total special sectors" et vérifiez 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.
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.
# Runlevel 0 means shut down the system
l0:0:wait:/etc/brc
Pour le reste de la procédure, je considérerai que le nom du fichier est /etc/brc.
dd if=/dev/winswap bs=512 count=XXX | gzip -9 > /etc/winswap.gz
où XXX est remplacé par le nombre "Total special sectors".Si vous avez un répertoire /etc/rc.d, le fichier dans lequel vous introduirez ce qui précède 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 même chose pour mkswap.
Remplacez XXXXX par la taille de votre partition en blocs telle qu'elle vous fut donnée 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]---
---[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]---