Page suivante - Page précédente - Table des matières

3. La procédure

  • Lancez le DOS. Créez 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 procédure 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. Vérifiez ensuite avec la commande DIR. Veillez à faire l'opération en deux temps car certaines versions de FORMAT n'écrivent pas le nom de volume dans le secteur de démarrage comme elles le devraient. (Note : certaines personnes m'ont écrit pour me dire que le nom de voume est stocké dans le répertoire racine. Cela est vrai mais depuis DOS 5.0 au moins, il figure aussi dans le secteur de démarrage.)

    LABEL X:
    DIR X:
    

  • Démarrez Windows. Allez dans le Panneau de Configuration, sélectionnez "386 Enhanced" et créez 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 créez tout de même le fichier.
  • Sortez de Windows
  • Démarrez Linux et loggez vous en tant que root
  • Utilisez la commande fdisk pour trouver le nom de la partition et sa taille en blocks. Créez 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 incohérences seraient fatales.)
  • Ce qui suit est un fichier binaire encodé par uuencode qui analyse la partition et en extrait des informations particulières. Décodez le fichier par uudecode, gunzip-pez le et éxécutez 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 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.

  • (Étape optionnelle) Windows laissera peut-être de la place sur la partition même 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 données), vous pouvez créer 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.
  • Vérifiez 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 procédure, je considérerai 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 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]---
    

  • 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 répertoire /etc/rc.d). Ajoutez le après toute commande qui nécessite 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 créée comme partition d'échange.


Page suivante - Page précédente - Table des matières