версия 1.11, 30 марта 2000 года
Этот документ содержит информацию о том, как использовать Linux и FreeBSD на одной машине. Здесь обсуждается, как эти две системы могут разделять некоторые ресурсы, например, область подкачки. Я предполагаю, что Вы имеете некоторые навыки в работе с Linux или FreeBSD, а так же то, что Вы разбили на разделы свой жесткий диск (программой fdisk), прежде чем приступить к чтению данного документа. Советы, данные ниже, были проверены на FreeBSD 2.2.2, но, наверняка, все они будут справедливы и для более новых версий. Не стесняйтесь писать мне, если у Вас есть вопросы, комментарии или предложения относительно данного документа. Я также хотел бы получить письма от людей, которые используют Linux вместе с NetBSD или OpenBSD.
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 или ей подобной.
В Linux и FreeBSD названия жестких дисков и разделов строятся по двум разным схемам. В этой главе описаны главные различия между ними. Фактически, в FreeBSD маркировка разделов взята из традиционного BSD; она адаптирована для fdisk. Таким образом, она очень похожа на ту, которая используется в BSD-подобных системах, таких как NetBSD, OpenBSD, Ultrix, Digital Unix, SunOS и Solaris.
FreeBSD необходим свой раздел на Вашем жестком диске. В FreeBSD этот первичный раздел называется "slice". На первичном разделе с помощью программы 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 для получения большей информации об этих буквах и различных типах разделов.
Названия жестких дисков в Linux и FreeBSD:
Linux FreeBSD Первичный IDE винчестер /dev/hda /dev/wd0 Вторичный IDE винчестер /dev/hdb /dev/wd1 Первичный SCSI винчестер /dev/sda /dev/sd0 Вторичный SCSI винчестер /dev/sdb /dev/sd1
Названия разделов (в FreeBSD "slices"-разделов) на IDE-винчестере (например, /dev/hda):
Linux FreeBSD Первый первичный раздел /dev/hda1 /dev/wd0s1 Второй первичный раздел /dev/hda2 /dev/wd0s2 Третий первичный раздел /dev/hda3 /dev/wd0s3 Четвертый первичный раздел /dev/hda4 /dev/wd0s4
Названия разделов "partitions" в моей системе FreeBSD. Эти наименования вы получите по умолчанию. Вы можете изменить их, если выберете выборочную установку FreeBSD (/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 >
Если система FreeBSD у Вас установлена в раздел /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 >
Если расширенный раздел Linux находится после "slice"-раздела FreeBSD, то у Вас могут возникнуть некоторые проблемы, т.к. обычно Linux инсталлируется без поддержки UFS. В этом случае, он не будет распознавать разделение внутри "slice"-раздела FreeBSD. Данная ситуация может выглядеть следующим образом (/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!
В этом разделе содержится информация о том, как мне удалось добиться того, чтобы Linux и FreeBSD использовали общую область подкачки. Возможно, существует и другой путь добиться того же результата. Вы можете установить FreeBSD до установки Linux, только обратите внимание на порядок разделов внутри "slice"-раздела.
Первый шаг описывает нормальную установку 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 в соответствии с документацией. Удалите раздел подкачки Linux, если он у Вас есть (можете использовать для этого FreeBSD fdisk). Обратите внимание на порядок разделения ``slice''-раздела FreeBSD. Если Вы используете разбивку по умолчанию, то второй "partition"-раздел(подраздел) будет разделом подкачки. Завершите установку и загрузите 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. Повторение - мать учения ;-)
Вы можете легко загрузить FreeBSD, используя LILO. Не устанавливайте загрузчик FreeBSD (Booteasy), если хотите использовать LILO. Добавьте следующие строки в файл /etc/lilo.conf и запустите lilo (я предполагаю, что "slice"-раздел FreeBSD - это /dev/hda4):
other=/dev/hda4 table=/dev/hda label=FreeBSD
Если Ваш FreeBSD установлен на второе SCSI-устройство, используйте что-нибудь типа ("slice"-раздел FreeBSD - это /dev/sdb2):
other=/dev/sdb2 table=/dev/sdb loader=/boot/chain.b label=FreeBSD
К сожалению, драйвер 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.
Когда Вы установите новое ядро, подключите файловую систему UFS (все "partition"-разделы, кроме раздела подкачки) командой вида:
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.
Чтобы подключить файловую систему ext2fs в FreeBSD, вы должны собрать новое ядро с поддержкой ext2fs. Прочитайте the FreeBSD handbook, чтобы узнать, как это делается. Вставьте строку
options "EXT2FS"
Затем, когда Вы загрузитесь с только что собранным ядром, подключите файловую систему ext2fs командой: mount -t ext2fs /dev/wd0s3 /mnt
Если Вы используете FreeBSD версии 2.2.8 и ранее, то отключайте все файловые системы ext2fs до перезагрузки FreeBSD. Если Вы перезагрузите FreeBSD с подключенной файловой системой ext2fs, FreeBSD не сможет синхронизировать файловые системы UFS. В результате этого, при последующей загрузке автоматически запустится fsck. Вы можете работать, не обращая внимания на эту ошибку системы, если будете всегда отключать ext2fs-разделы. Для автоматического отключения всех файловых систем ext2fs, можно вставить строку:
umount -a -t ext2fsв файл /etc/rc.shutdown. Данная ошибка была исправлена в ядре FreeBSD версий 3.x.
Пакет iBCS поддерживает запуск программ FreeBSD под Linux, но у меня не получилось сделать это. Пожалуйста, сообщите мне, если у Вас получится.
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 для получения большего количества информации по этой теме.
Последнюю версию этого mini-HOWTO можно найти на этом сайте в нескольких форматах (включая sgml и PostScript). Документ был перведен на японский Mr. Teruyoshi Fujiwara в рамках проекта JF.
Здесь вы можете найти несколько статей о различиях между Linux и FreeBSD.
Вы можете найти достаточно информации по системе FreeBSD (включая и ее саму) на этом сайте. Также можно купить компакт-диски на Walnut Creek CDROM (их сервера работают под FreeBSD).
Linux Kernel HOWTO и этот mini-HOWTO реализованы в рамках проекта The Linux Documentation Project.
Спасибо членам команды *BSD user group in Denmark за ответы на вопросы по FreeBSD, Mr. Takeshi Okazaki за то, что обратил мое внимание на U2FS, и Mr. David O'Brien за ценные предложения.
Все торговые знаки являются собственностью их владельцев.
Хотя, как мне кажется, информация в данном документе абсолютно правильна, автор не берет на себя ответственности за ошибки, возникшие в результате использования данного 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.
Авторские права на русский перевод этого текста принадлежат © 2000 SWSoft Pte Ltd. Все права зарезервированы.
Этот документ является частью проекта Linux HOWTO.
Авторские права на документы Linux HOWTO принадлежат их авторам, если явно не указано иное. Документы Linux HOWTO, а также их переводы, могут быть воспроизведены и распространены полностью или частично на любом носителе, физическом или электронном, при условии сохранения этой заметки об авторских правах на всех копиях. Коммерческое распространение разрешается и поощряется; но, так или иначе, автор текста и автор перевода желали бы знать о таких дистрибутивах.
Все переводы и производные работы, выполненные по документам Linux HOWTO, должны сопровождаться этой заметкой об авторских правах. Это делается в целях предотвращения случаев наложения дополнительных ограничений на распространение документов HOWTO. Исключения могут составить случаи получения специального разрешения у координатора Linux HOWTO, с которым можно связаться по адресу приведенному ниже.
Мы бы хотели распространить эту информацию по всем возможным каналам. Но при этом сохранить авторские права и быть уведомленными о всех планах распространения HOWTO. Если у вас возникли вопросы, пожалуйста, обратитесь к координатору проекта Linux HOWTO по электронной почте: <[email protected]> или к координатору русского перевода Linux HOWTO компании SWSoft Pte Ltd. по адресу <[email protected]>