Deze sectie beschrijft hoe ik Linux en FreeBSD zover kreeg om een swap partitie te delen. Het kan zijn dat er andere manieren zijn om hetzelfde resultaat te verkrijgen. Je kunt FreeBSD vóór Linux installeren als je dat wilt, let alleen op de volgorde van de partities in de FreeBSD slice.
De eerste stap is om Linux net als anders te installeren. Je moet ruimte op je harddisk openlaten voor de FreeBSD slice. Je hoeft geen Linux swap partitie aan te maken, maar als je er een wilt, plaats deze dan in de ruimte die je wilt inruimen voor FreeBSD. Op die manier kun je de Linux swap partitie later verwijderen en de ruimte voor FreeBSD gebruiken.
Als je Linux hebt geïnstalleerd dan moet je een nieuwe kernel aanmaken. Lees de Linux Kernel HOWTO als dit nieuw voor je is. Je moet zowel de ondersteuning voor het UFS bestandssysteem (alleen lezen) als ondersteuning voor BSD disklabel (FreeBSD partitie tabellen) insluiten:
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
Installeer de nieuwe kernel en reboot.
Verwijder iedere regel uit je /etc/fstab
waarin het woord
swap voorkomt als je een Linux swap partitie hebt aangemaakt.
Zorg ervoor dat je een werkende Linux opstartdiskette hebt met de
nieuwe kernel. Nu ben je er klaar voor om FreeBSD te installeren.
Installeer FreeBSD zoals beschreven staat in de FreeBSD documentatie.
Verwijder de Linux swap partitie als je er één hebt
aangemaakt (je kunt hiervoor het programma fdisk
van FreeBSD
gebruiken). Let op de volgorde van de partities in de FreeBSD slice. Als je
de standaard labeling gebruikt dan zal de tweede partitie de swap partitie
zijn. Maak de installatie van FreeBSD af en start Linux weer op
met gebruik van de nieuwe Linux opstartdiskette.
Start dmesg
op als je Linux hebt geboot. In de uitvoer zal je iets
dergelijks als het volgende te zien moeten krijgen:
Partition check: hda: hda1 hda2 hda3 hda4 < hda5 hda6 hda7 hda8 >
Dit betekent dat /dev/hda4
je FreeBSD slice is, terwijl
/dev/hda5
, /dev/hda6
, /dev/hda7
en
/dev/hda8
de FreeBSD partities zijn. Als je swap partitie
de tweede partitie is in de slice, dan zal dit /dev/hda6
zijn.
Je moet de volgende regel in Linux /etc/fstab
bestand zetten
om de swap partitie te activeren:
/dev/hda6 none swap sw 0 0
Terwijl FreeBSD elk type partitie als swap space kan gebruiken, heeft Linux
een speciaal teken in de swap partitie nodig. Dit teken wordt aangemaakt
door mkswap
. FreeBSD vernielt dit teken zodra het gebruik maakt van de
gedeelde swap partitie, dus je moet iedere keer dat je Linux boot
mkswap
uitvoeren. Om dit automatisch te laten uitvoeren, zul je
uit moeten zoeken waar het script zich bevindt dat tijdens het booten
swapon
uitvoert. In Red Hat Linux is dit /etc/rc.d/rc.sysinit
.
Zet de volgende regel in dat bestand
net voor swapon -a
:
awk -- '/swap/ && ($1 !~ /#/) { system("mkswap "$1"") }' /etc/fstab
Hiermee zal iedere keer als je opnieuw opstart mkswap
voor iedere swap
partitie in /etc/fstab
worden uitgevoerd, behalve als de regels
als commentaar in het bestand staan geplaatst (``#'' staat als eerste
teken in de regel).
Start free
op om de grootte van de swap space te controleren als
je Linux opnieuw hebt opgestart. Je zal ook FreeBSD opnieuw op moeten starten
om er zeker van te zijn dat alles werkt zoals je mag verwachten.
Als het niet zo is, dan heb je waarschijnlijk de verkeerde partitie als
swap partitie aangegeven. De enige oplossing voor dat probleem is om FreeBSD
opnieuw te installeren en het nog eens te proberen.
Ervaring is een goede leermeester :-)