Совместное использование области подкачки в Linux и FreeBSD.

В этом разделе содержится информация о том, как мне удалось добиться того, чтобы Linux и FreeBSD использовали общую область подкачки. Возможно, существует и другой путь добиться того же результата. Вы можете установить FreeBSD до установки Linux, только обратите внимание на порядок разделов внутри "slice"-раздела.

Установка и настройка Linux

Первый шаг описывает нормальную установку Linux. Вы должны на жестком диске оставить место для FreeBSD. Не создавайте в Linux раздел подкачки, но если Вы очень хотите сделать его, то разместите его туда, куда затем установите FreeBSD. Таким образом, потом Вы сможете удалить этот раздел и использовать место для установки FreeBSD.

Когда Вы установите Linux, необходимо пересобрать ядро. Прочитайте The Linux Kernel HOWTO, если еще никогда этого не делали. Вы должны ответить ``y'' на UFS filesystem support (read only) и 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

Установите новое ядро и перезагрузитесь. Уберите все строки, в которых есть слово swap из файла /etc/fstab, если у Вас есть раздел подкачки Linux. Удостоверьтесь в том, что теперь у Вас система работает с новым ядром. Теперь можно устанавливать FreeBSD.

Установка FreeBSD

Установите FreeBSD в соответствии с документацией. Удалите раздел подкачки Linux, если он у Вас есть (можете использовать для этого FreeBSD fdisk). Обратите внимание на порядок разделения ``slice''-раздела FreeBSD. Если Вы используете разбивку по умолчанию, то второй "partition"-раздел(подраздел) будет разделом подкачки. Завершите установку и загрузите Linux, используя загрузочную дискету с новым ядром.

Настройка области подкачки FreeBSD для использования в Linux

Запустите dmesg, когда загрузитесь в Linux. Вы должны увидеть следующее:
Partition check:
 hda: hda1 hda2 hda3 hda4 < hda5 hda6 hda7 hda8 >

Это значит, что /dev/hda4 - это "slice"-раздел FreeBSD, а /dev/hda5, /dev/hda6, /dev/hda7 и /dev/hda8 - "partitions"-разделы FreeBSD. Если у Вас разделом подкачки является второй "partition"-раздел на "slice"-разделе, то это будет /dev/hda6.

В Linux вы должны добавить строку в файл /etc/fstab, чтобы разрешить использование раздела подкачки:
/dev/hda6	none		swap		sw		0	0

FreeBSD сразу может использовать этот раздел подкачки, Linux же нуждается в специальном указании на него. Оно может быть сделано mkswap. mkswap необходимо запускать каждый раз при перезагрузке Linux, однако, при желании Вы можете автоматизировать эту процедуру. Для этого Вам надо найти файл, который запускает swapon при загрузке. В Red Hat Linux это /etc/rc.d/rc.sysinit. Добавьте в этот файл до строки swapon -a следующую строку:
awk -- '/swap/ && ($1 !~ /#/) { system("mkswap "$1"") }' /etc/fstab

Это обеспечит запуск, при загрузке системы, команды mkswap для всех разделов подкачки, заданных в файле /etc/fstab.

После перезагрузки запустите free для проверки размера раздела подкачки. Затем загрузитесь в FreeBSD, чтобы быть уверенным, что все работает. Если Вы не получили желаемого результата, то, скорее всего, Вы использовали не тот раздел. В этом случае, попробуйте переустановить FreeBSD. Повторение - мать учения ;-)