Библиотека сайта rus-linux.net
Мини-HOWTO: "Linux+FreeBSD"
версия 1.11, 30 марта 2000 года
Этот документ содержит информацию о том, как использовать Linux и FreeBSD на одной машине.
Здесь обсуждается, как эти две системы могут разделять некоторые ресурсы,
например, область подкачки. Я предполагаю, что Вы имеете некоторые навыки в
работе с Linux или FreeBSD, а так же то, что Вы разбили на разделы свой
жесткий диск (программой fdisk
), прежде чем приступить к чтению данного
документа. Советы, данные ниже, были проверены на FreeBSD 2.2.2, но,
наверняка, все они будут справедливы и для более новых версий. Не
стесняйтесь писать мне, если у Вас есть вопросы, комментарии или
предложения относительно данного документа. Я также хотел бы получить
письма от людей, которые используют Linux вместе с NetBSD или OpenBSD.
- Содержание
- 1. Что такое FreeBSD? Двойная загрузка в FreeBSD! FreeBSD - краткий обзор
- 2. Разметка жесткого диска
- 3. Совместное использование области подкачки в Linux и FreeBSD.
- 4. Загрузка FreeBSD с использованием LILO
- 5. Подключение файловых систем
- 6. Запуск программ
- 7. Ссылки на информационные ресурсы
- 8. Благодарности и юридическая информация
- 8.1. Юридическая информация
- 8.2. Авторские права
1. Что такое FreeBSD? Двойная загрузка в FreeBSD! FreeBSD - краткий обзор
FreeBSD - это свободно распространяемая Unix-подобная операционная система, весьма похожая на Linux. Главное различие состоит в том, что ядро Linux было написано с нуля, а ядро FreeBSD было переработано из свободно распространяемых частей дистрибутива 4.4BSD (Berkeley Software Distribution), известных как 4.4BSD-lite. Этот факт заставляет многих людей считать, что FreeBSD более похож на "настоящий" UNIXR, чем Linux. FreeBSD работает только на Intel-платформах (i386 и выше); версии для платформ DEC Alpha и Sun Sparc в настоящий момент находятся в стадии разработки. Системы NetBSD и OpenBSD, подобны FreeBSD, и работают на нескольких платформах. Аппаратные требования для всех этих *BSD систем аналогичны Linux.
Развитие FreeBSD происходит несколько другим путем, чем Linux. Основная группа разработчиков задает путь развития проекта. Значительные изменения обсуждаются заранее через списки рассылок. FreeBSD имеет две версии (как и Linux): "-ТЕКУЩАЯ" и "-СТАБИЛЬНАЯ". "-ТЕКУЩАЯ" версия включает в себя последние версии программ и усовершенствований. "-СТАБИЛЬНАЯ" версия имеет только те усовершенствования, которые уже проверены на наличие серьезных ошибок.
FreeBSD может бесплатно использоваться и распространяться так же, как и Linux. Авторские права на большую часть системы принадлежат BSD; остальное распространятся под лицензией GNU GPL или ей подобной.
2. Разметка жесткого диска
В Linux и FreeBSD названия жестких дисков и разделов строятся по двум разным схемам. В этой главе описаны главные различия между ними. Фактически, в FreeBSD маркировка разделов взята из традиционного BSD; она адаптирована для fdisk. Таким образом, она очень похожа на ту, которая используется в BSD-подобных системах, таких как NetBSD, OpenBSD, Ultrix, Digital Unix, SunOS и Solaris.
2.1. FreeBSD: "slices" и "partitions".
disklabel
, можно создать до восьми подразделов . В FreeBSD эти
логические разделы называют ``partitions'' . Эта концепция подобна Linux (и
DOS) с разбивкой расширенного раздела на логические. FreeBSD нельзя
устанавливать в расширенный раздел, сделанный Linux (или DOS). Обратите
внимание, что Linux-программа fdisk
не показывает "partition"-разделы из
основного меню, но она может это делать при помощи команды "b". Это
выглядит примерно так (/dev/hda4
- это "slice"-раздел FreeBSD):
bash# fdisk /dev/hda Command (m for help): p Disk /dev/hda: 64 heads, 63 sectors, 621 cylinders Units = cylinders of 4032 * 512 bytes Device Boot Begin Start End Blocks Id System /dev/hda1 * 1 1 27 54400+ 83 Linux native /dev/hda2 28 28 55 56448 83 Linux native /dev/hda3 56 56 403 701568 83 Linux native /dev/hda4 404 404 621 439488 a5 BSD/386 Command (m for help): b Reading disklabel of /dev/hda4 at sector 1624897. BSD disklabel command (m for help): p 8 partitions: # size offset fstype [fsize bsize cpg] a: 64512 1624896 4.2BSD 0 0 0 # (Cyl. 404 - 419) b: 104832 1689408 swap # (Cyl. 420 - 445) c: 878976 1624896 unused 0 0 # (Cyl. 404 - 621) e: 64512 1794240 4.2BSD 0 0 0 # (Cyl. 446 - 461) f: 645120 1858752 4.2BSD 0 0 0 # (Cyl. 462 - 621) BSD disklabel command (m for help): q bash#
Буквы `a'...`f' в первой колонке соответствуют тому, что выводит программа disklabel FreeBSD (колонка Id). Первые три раздела - специальные. Буква `a' определяет корневой раздел, `b' определяет раздел подкачки в то время, как `c' определяет весь "slice"-раздел. Смотрите документацию к FreeBSD для получения большей информации об этих буквах и различных типах разделов.
2.2. Раздел Linux. Сравнение Linux и FreeBSD.
Linux FreeBSD Первичный IDE винчестер /dev/hda /dev/wd0 Вторичный IDE винчестер /dev/hdb /dev/wd1 Первичный SCSI винчестер /dev/sda /dev/sd0 Вторичный SCSI винчестер /dev/sdb /dev/sd1
/dev/hda
):
Linux FreeBSD Первый первичный раздел /dev/hda1 /dev/wd0s1 Второй первичный раздел /dev/hda2 /dev/wd0s2 Третий первичный раздел /dev/hda3 /dev/wd0s3 Четвертый первичный раздел /dev/hda4 /dev/wd0s4
/dev/hda4
- это FreeBSD "slice" раздел):
Linux наимен. FreeBSD наимен. FreeBSD точка монтирования /dev/hda5 /dev/wd0s4a / /dev/hda6 /dev/wd0s4b swap /dev/hda7 /dev/wd0s4e /var /dev/hda8 /dev/wd0s4f /usr
dmesg
в Linux, то вы увидите примерно следующее (Ядро
linux должно быть собранно с поддержкой файловой системы UFS. См. главу
Установка и настройка Linux):
hda: hda1 hda2 hda3 hda4 < hda5 hda6 hda7 hda8 >
/dev/sd1s3
(/dev/sdb3
в Linux), а /dev/sdb2
- это расширенный раздел Linux, содержащий два логических раздела (/dev/sdb5
и /dev/sdb6
), то предыдущий пример будет выглядеть так:
Linux наимен. FreeBSD наимен. FreeBSD точка монтирования /dev/sdb7 /dev/sd1s3a / /dev/sdb8 /dev/sd1s3b swap /dev/sdb9 /dev/sd1s3e /var /dev/sdb10 /dev/sd1s3f /usr
dmesg
как:
Partition check: sdb: sdb1 sdb2 < sdb5 sdb6 > sdb3 < sdb7 sdb8 sdb9 sdb10 >
/dev/hda3
"slice"-раздел FreeBSD, а /dev/hda4
- это расширенный раздел
Linux) с поддержкой UFS:
Partition check: hda: hda1 hda2 hda3 < hda5 hda6 hda7 hda8 > hda4 < hda9 hda10 >без нее:
Partition check: hda: hda1 hda2 hda3 hda4 < hda5 hda6 >
Из-за этого Вы можете получить неправильные названия устройств и даже потерять некоторую информацию. Мой совет: всегда располагайте ваш "slice"-раздел FreeBSD после расширенных разделов Linux и не изменяйте никакие логические разделы в расширенном разделе Linux, после установки FreeBSD!
3. Совместное использование области подкачки в Linux и FreeBSD.
В этом разделе содержится информация о том, как мне удалось добиться того, чтобы Linux и FreeBSD использовали общую область подкачки. Возможно, существует и другой путь добиться того же результата. Вы можете установить FreeBSD до установки Linux, только обратите внимание на порядок разделов внутри "slice"-раздела.
3.1. Установка и настройка Linux
Первый шаг описывает нормальную установку Linux. Вы должны на жестком диске оставить место для FreeBSD. Не создавайте в Linux раздел подкачки, но если Вы очень хотите сделать его, то разместите его туда, куда затем установите FreeBSD. Таким образом, потом Вы сможете удалить этот раздел и использовать место для установки FreeBSD.
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.
3.2. Установка FreeBSD
Установите FreeBSD в соответствии с документацией. Удалите раздел подкачки
Linux, если он у Вас есть (можете использовать для этого FreeBSD fdisk
).
Обратите внимание на порядок разделения ``slice''-раздела FreeBSD. Если Вы
используете разбивку по умолчанию, то второй "partition"-раздел(подраздел)
будет разделом подкачки. Завершите установку и загрузите Linux, используя
загрузочную дискету с новым ядром.
3.3. Настройка области подкачки 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
.
/etc/fstab
, чтобы разрешить
использование раздела подкачки:
/dev/hda6 none swap sw 0 0
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. Повторение -
мать учения ;-)
4. Загрузка FreeBSD с использованием LILO
Booteasy
), если хотите использовать LILO. Добавьте
следующие строки в файл /etc/lilo.conf
и запустите lilo
(я предполагаю, что
"slice"-раздел FreeBSD - это /dev/hda4):
other=/dev/hda4 table=/dev/hda label=FreeBSD
/dev/sdb2
):
other=/dev/sdb2 table=/dev/sdb loader=/boot/chain.b label=FreeBSD
5. Подключение файловых систем
5.1. Подключение файловой системы UFS под Linux
К сожалению, драйвер UFS не поддерживается ядром Linux 2.0.хх. Если Вы попробуете подключить файловую систему FreeBSD, то получите сообщение об ошибке (фактически файловая система подключается, но Вы ничего не можете с ней делать). Эта проблема решена в более поздних версиях ядра (2.1.87 и выше).
На metalab.unc.edu есть другой драйвер UFS для ядра Linux 2.0.xx (xx <= 30)
. Он называется U2FS. В настоящее время это файл u2fs-0.4.3.tar.gz
. Версию
U2FS (ufs-0.4.4.tar.gz
) для Linux 2.0.31 и выше (2.0.xx; не 2.1.xx) можно
найти на этом сайте. Там же есть дополнительная информация по U2FS (и UFS).
Теперь вы можете заново собрать ядро с поддержкой файловой системы U2FS. См. главу установка и настройка Linux для получения большей информации об этом. Также Вы можете убрать поддержку файловой системы UFS из ядра, т.к. теперь будете использовать U2FS.
mount -t u2fs /dev/hda8 /mnt
mount -t ufs /dev/hda8 /mntесли у Вас ядро версии 2.1.87 или выше. Начиная с ядра версии 2.1.112 Вы можете добавить -o ufstype=44bsd командой типа:
mount -t ufs -o ufstype=44bsd /dev/hda8 /mnt
UFS (и U2FS) драйвер позволяет подключать файловую систему только для чтения. Это значит, что Вы сможет прочитать информацию с подключенной файловой системы UFS, но не сможете ничего записать. Экспериментальная версия драйвера, поддерживающего чтение и запись UFS, работает с ядром 2.1.112 и выше; возможность записи в FreeBSD-раздел поддерживается ядром, начиная с версии 2.1.127.
5.2. Подключение файловой системы ext2fs под FreeBSD
options "EXT2FS"
Затем, когда Вы загрузитесь с только что собранным ядром, подключите файловую систему ext2fs командой: mount -t ext2fs /dev/wd0s3 /mnt
fsck
. Вы можете работать, не обращая
внимания на эту ошибку системы, если будете всегда отключать
ext2fs-разделы. Для автоматического отключения всех файловых систем ext2fs,
можно вставить строку:
umount -a -t ext2fsв файл
/etc/rc.shutdown
. Данная ошибка была исправлена в ядре FreeBSD версий 3.x. 6. Запуск программ
6.1. Запуск программ FreeBSD под Linux
Пакет iBCS
поддерживает запуск программ FreeBSD под Linux, но у меня не
получилось сделать это. Пожалуйста, сообщите мне, если у Вас получится.
6.2. Запуск программ Linux под FreeBSD
FreeBSD поддерживает программы Linux. Чтобы работать с ними, необходимо проделать следующее:
- Разрешите совместимость с Linux. Для этого нужно отредактировать файл
/etc/rc.conf
(в FreeBSD 2.2.2, в других версиях могут быть незначительные отличия). Исправьте строкуlinux_enable="NO"
наlinux_enable="YES"
и перезагрузитесь. Кроме того, можно разрешить FreeBSD поддержку бинарных файлов Linux, запустив/usr/bin/linux
. После этого не надо перезагружаться. Этот вариант хорош тем, что позволяет экономить память и запускать поддержку бинарных файлов Linux только тогда, когда это необходимо. Если Вы решите пересобрать ядро, то не забудьте добавить строкуoptions COMPAT_LINUX
в файл конфигурации ядра. - Если Ваши бинарные файлы Linux связаны динамически, то необходимо установить библиотеки, которые включены в FreeBSD 2.2.{2,5,6} в пакете
linux_lib-2.4.tgz
(версия может быть новее). Установите пакет следующей командой:pkg_add <path_to_package>/linux_lib-2.4.tgz
<путь_к_пакету> это каталог, где находится данный пакет. Также можно установить его из сети:pkg_add ftp://ftp.freebsd.org/pub/FreeBSD/packages-stable/All/linux_lib-2.4.tgz
или запустив/stand/sysinstall
. Войдите в пункт "Configure", затем "Packages". Если Ваши бинарные файлы Linux связаны статически , то выполните следующую команду:brandelf -t Linux <name_of_statically_linked_linux_binary>
Установите программу Linux, которую Вы хотите запустить. Программа может быть установлена на файловую систему UFS или ex2fs. См. раздел "Подключение файловой системы ext2fs под FreeBSD" для получения большей информации об использовании раздела с файловой системой ext2fs под FreeBSD.
Я успешно запускал Linux версии Applixware 4.3 и Netscape 3.01 (и то, и другое ELF формата) под FreeBSD 2.2.2, используя вышеизложенный метод (да, я знаю, что существует Netscape 4 под FreeBSD). Linux версии acroread и StarOffice 3 и 4 также хорошо работают под FreeBSD. StarOffice 5 в настоящее время не работает под FreeBSD. Читайте документацию по FreeBSD для получения большего количества информации по этой теме.
7. Ссылки на информационные ресурсы
Последнюю версию этого mini-HOWTO можно найти на этом сайте в нескольких форматах (включая sgml и PostScript). Документ был перведен на японский Mr. Teruyoshi Fujiwara в рамках проекта JF.
Здесь вы можете найти несколько статей о различиях между Linux и FreeBSD.
Вы можете найти достаточно информации по системе FreeBSD (включая и ее саму) на этом сайте. Также можно купить компакт-диски на Walnut Creek CDROM (их сервера работают под FreeBSD).
Linux Kernel HOWTO и этот mini-HOWTO реализованы в рамках проекта The Linux Documentation Project.
8. Благодарности и юридическая информация
Спасибо членам команды *BSD user group in Denmark за ответы на вопросы по FreeBSD, Mr. Takeshi Okazaki за то, что обратил мое внимание на U2FS, и Mr. David O'Brien за ценные предложения.
8.1. Юридическая информация
Все торговые знаки являются собственностью их владельцев.
Хотя, как мне кажется, информация в данном документе абсолютно правильна, автор не берет на себя ответственности за ошибки, возникшие в результате использования данного mini-HOWTO. Используйте его на свой собственный страх и риск.
Copyright © 1997-2000 by Niels Kristian Bech Jensen. This document may be distributed only subject to the terms and conditions set forth in the LDP License at http://www.linuxdoc.org/COPYRIGHT.html.
8.2. Авторские права
Авторские права на русский перевод этого текста принадлежат © 2000 SWSoft Pte Ltd. Все права зарезервированы.
Этот документ является частью проекта Linux HOWTO.
Авторские права на документы Linux HOWTO принадлежат их авторам, если явно не указано иное. Документы Linux HOWTO, а также их переводы, могут быть воспроизведены и распространены полностью или частично на любом носителе, физическом или электронном, при условии сохранения этой заметки об авторских правах на всех копиях. Коммерческое распространение разрешается и поощряется; но, так или иначе, автор текста и автор перевода желали бы знать о таких дистрибутивах.
Все переводы и производные работы, выполненные по документам Linux HOWTO, должны сопровождаться этой заметкой об авторских правах. Это делается в целях предотвращения случаев наложения дополнительных ограничений на распространение документов HOWTO. Исключения могут составить случаи получения специального разрешения у координатора Linux HOWTO, с которым можно связаться по адресу приведенному ниже.
Мы бы хотели распространить эту информацию по всем возможным каналам. Но
при этом сохранить авторские права и быть уведомленными о всех планах
распространения HOWTO. Если у вас возникли вопросы, пожалуйста, обратитесь
к координатору проекта Linux HOWTO по электронной почте:
<linux-howto@metalab.unc.edu>
или к координатору русского
перевода Linux HOWTO компании SWSoft Pte Ltd. по адресу
<linux-howto@asplinux.ru>