Cette section décrit comment j'ai pu utiliser la même partition de swap pour Linux et FreeBSD. Il peut y avoir d'autres façons d'obtenir le même résultat. Vous pouvez, si vous voulez, installer FreeBSD avant Linux mais faites attention à l'ordre des partitions dans la tranche FreeBSD.
La première étape est d'installer Linux normalement. Il faut laisser de la place pour la tranche FreeBSD sur le disque dur. Il n'est pas nécessaire de créer une partition de swap Linux, mais si vous en voulez une, placez-la dans l'espace que vous voulez allouer à FreeBSD. De cette façon, vous pourrez plus tard effacer la partition de swap de Linux et récupérer l'espace pour FreeBSD.
Quand Linux est installé, il faut compiler un nouveau noyau. Lisez le HOWTO du noyau Linux si vous ne savez pas faire. Il faut inclure UFS filesystem support (read only) et BSD disklabel (FreeBSD partition tables) support:
UFS filesystem support (read only) (CONFIG_UFS_FS) [N/y/m/?] y
BSD disklabel (FreeBSD partition tables) support (CONFIG_BSD_DISKLABEL) [N/y/?]
(NEW) y
Installez le nouveau noyau et redémarrez. Enlevez toutes les lignes
contenant le mot swap dans votre fichier /etc/fstab
si vous
avez créé une partition de swap pour Linux. Soyez bien sûr d'avoir une
disquette de démarrage Linux en état de marche avec le nouveau noyau. Vous
voilà prêts à installer FreeBSD.
Installez FreeBSD comme cela est décrit dans sa documentation. Supprimez la
partition de swap Linux si vous en avez fait une (vous pouvez utiliser le
programme fdisk
de FreeBSD). Faites attention à l'ordre des partitions
dans la tranche FreeBSD. Si vous utilisez le nommage par défaut la seconde
partition sera le swap. Terminez l'installation de FreeBSD et redémarrez
sous Linux en utilisant la disquette de démarrage.
Après avoir redémarré Linux, lancez dmesg
, ce qui devrait donner
quelque chose comme ça :
Partition check:
hda: hda1 hda2 hda3 hda4 < hda5 hda6 hda7 hda8 >
Cela signifie que /dev/hda4
est votre tranche FreeBSD, alors que
/dev/hda5
, /dev/hda6
, /dev/hda7
et
/dev/hda8
sont les partitions FreeBSD. Si votre partition de swap
est la seconde partition de la tranche, c'est /dev/hda6
.
Il faut placer la ligne suivante dans votre fichier /etc/fstab
pour
valider la partition de swap :
/dev/hda6 none swap sw 0 0
Alors que FreeBSD peut utiliser n'importe quelle partition comme espace de
swap, Linux a besoin d'une signature spéciale dans cette partition. Cette
signature est créée par mkswap
. FreeBSD la détruit quand il utilise la
partition de swap partagée, il faudra donc lancer mkswap
à chaque fois
que vous démarrez sous Linux. Pour faire ceci automagiquement, il faut
trouver le script qui lance swapon
au démarrage. Dans Red Hat Linux
c'est /etc/rc.d/rc.sysinit
. Dans Debian GNU/Linux, c'est
/etc/init.d/boot
. Placez la ligne suivante dans ce fichier juste
avant swapon -a
:
awk -- '/swap/ && ($1 !~ /#/) { system("mkswap "$1"") }' /etc/fstab
Ceci lancera mkswap
sur toutes les partitions de swap définies dans
/etc/fstab
à chaque démarrage sauf si elles sont commentées (ont
``#'' comme premier caractère de la ligne).
Sous Linux, lancez free
pour vérifier la taille de l'espace de
swap. Vous devriez aussi redémarrer sous FreeBSD et vous assurer que tout
marche comme prévu. Si ce n'est pas le cas, vous avez probablement utilisé
la mauvaise partition pour le swap (depuis Linux). La seule solution est de
réinstaller FreeBSD et réessayer. On apprend beaucoup par l'expérience. :-)