The Linux+FreeBSD mini-HOWTO : Sharing swap space between Linux and FreeBSD : Setting up the FreeBSD swap partition in Linux
Previous: Installing FreeBSD
Next: Booting FreeBSD using LILO

3.3. Setting up the FreeBSD swap partition in LinuxFreeBSD dualboot!FreeBSD swap partition configuration

Run dmesg when you have booted into Linux. In the output you should see something like this:

Partition check:
 hda: hda1 hda2 hda3 hda4 < hda5 hda6 hda7 hda8 >

This means that /dev/hda4 is your FreeBSD slice, while /dev/hda5, /dev/hda6, /dev/hda7 and /dev/hda8 are the FreeBSD partitions. If your swap partition is the second partition in the slice, it will be /dev/hda6.

You have to put the following line into your Linux /etc/fstab file to enable the swap partition:

/dev/hda6	none		swap		sw		0	0

While FreeBSD can use any type of partition as swap space, Linux needs a special signature in the swap partition. This signature is made by mkswap. FreeBSD ruins this signature when it uses the shared swap partition, so you will have to run mkswap each time you boot into Linux. To do this automagically you have to find the script that runs swapon at boot time. In Red Hat Linux it is /etc/rc.d/rc.sysinit. Put the following line into that file just before swapon -a:

awk -- '/swap/ && ($1 !~ /#/) { system("mkswap "$1"") }' /etc/fstab

This will run mkswap on any swap partitions in /etc/fstab every time you boot except if they are commented out (having ``#'' as the first character in the line.)

Run free to check out the size of the swap space when you have rebooted into Linux. You should also reboot into FreeBSD to make sure everything works as expected. If it does not, you have probably used the wrong partition as swap partition. The only solution to that problem is to reinstall FreeBSD and try again. Experience is a great teacher. :-)


The Linux+FreeBSD mini-HOWTO : Sharing swap space between Linux and FreeBSD : Setting up the FreeBSD swap partition in Linux
Previous: Installing FreeBSD
Next: Booting FreeBSD using LILO