Top News Search Software X Window System Documentation Support Home

Установка и использование FreeBSD совместно с прочими операционными системами

Или как выбрать себе жену, загружая по очереди невест

Джей Ричмонд

jayrich@sysc.com

6 августа 1996 года

В этом документе мы расскажем, как сконфигурировать FreeBSD для работы с другими популярными операционными системами, такими как Linux, MS-DOS, OS/2, Windows 95 и Windows NT. Автор выражает особую признательность Аннелис Андерсон (Annelise Anderson) andersn@stanford.edu, Рэндаллу Хопперу (Randall Hopper) rhh@ct.picker.com и Джордану К. Хаббарду (Jordan K. Hubbard) jkh@time.cdrom.com

Содержание

1.  Введение
2.  Обзоp менеджеров загрузки
3.  Типичная инсталляция
4.  Cпециальные замечания
5.  Примеры
6.  Другие источники информации
7.  Технические детали

1.   Введение

Некоторые люди не могут правильно разместить операционные системы на одном большом жестком диске, поэтому в этот документ включена информация о больших EIDE дисках. Так как существует очень много возможных комбинаций операционных систем и конфигураций жесткого диска, вам может быть полезен раздел Примеры. Он содержит некоторые описания "рабочих" специальных установок, для использования нескольких операционных систем.

Этот документ подразумевает, что вы уже выделили на вашем жестком диске место для еще одной операционной системы. Каждый раз, когда вы заново разбиваете ваш жесткий диск на разделы, вы рискуете потерять данные в оригинальных разделах. Однако, если ваш жесткий диск полностью занят под DOS, вы можете воспользоваться утилитой FIPS, которая находится на FreeBSD CD-ROM в директории \TOOLS или доступна через ftp. Это позволит вам "перекроить" ваш жесткий диск, не разрушая уже имеющиеся на нем данные. Существует также коммерческая программа Partition Magic, которая позволяет изменять размер разделов и удалять их без разрушительных последствий.

2.   Обзор менеджеров загрузки

Здесь приведены описания различных менеджеров загрузки, которые могут вам встретиться. В зависимости от вашей установки, вы можете найти и использовать одну из них для вашей системы.

Boot Easy

Это менеджер, который используется с FreeBSD по умолчанию. Он может загружать больше всего, включая BSD, OS/2(HPFS), Windows 95(FAT и FAT32) и Linux. Разделы выбираются при помощи функциональных клавиш.

OS/2 Boot Manager

Этот менеджер загружает FAT, HPFS, FFS(FreeBSD) и EXT2(Linux), а также FAT32 разделы. Разделы выбираются клавишами со стрелками. В отличие от других менеджеров, использующих master boot record (MBR), OS/2 Boot Manager использует свой собственный раздел. Для того чтобы избежать проблем при загрузке, необходимо расположить его на диске до 1024-го цилиндра. OS/2 Boot Manаger может загружать Linux, используя LILO, когда он является частью загрузочного сектора, а не MBR. Обратитесь к Linux HOWTO в Интернете для загрузки Linux, используя OS/2 boot manager.

OS-BS

Этот менеджер - альтернатива Boot Easy. Он обеспечивает больше возможностей управления и дает возможность установить время загрузки. Beta версия этой программы позволяет выбирать загружаемую операционную систему клавишами со стрелками. OS-BS менеджер содержится на FreeBSD CD в директории /TOOLS или доступен по ftp.

LILO или LInux LOader.

Это ограниченный менеджер загрузки. Он загружает FreeBSD, хотя требует настройки в файле конфигурации LILO.

O FAT32:

FAT32 - это замена файловой системы FAT, которая включена в Microsoft OEM SR2 Beta release. Он преобразует нормальную файловую систему FAT и позволяет использовать меньший размер кластера для больших жестких дисков. FAT32 также модифицирует традиционный загрузочный сектор FAT и таблицу размещения, что делает его несовместимым с некоторыми менеджерами загрузки.

3.   Типичная инсталляция.

Допустим у меня есть два EIDE жестких диска, и я хочу инсталлировать FreeBSD, Linux, и Windows 95.

Как можно использовать эти диски:

Оба диска имеют по 1416 цилиндров.

  1. Я загружаюсь с загрузочного дискеты MS-DOS или Windows 95, который содержит утилиту FDISK.EXE, и создаю небольшой 50 MB раздел (35-40 для Windows 95 плюс немного места для дыхания) на первом диске. Также я создаю раздел побольше для данных и приложений Windows 95.

  2. Я перезагружаю машину и устанавливаю Windows 95 на C: (легче сказать, чем сделать).

  3. Далее следует установить Linux. Я не уверен насчет всех дистрибутивов Linux, но slackware включает LILO(cмотри "Обзор Менеджеров Загрузки"). Разбивая мой жесткий диск на разделы с помощью Linux fdisk, я собираюсь устанавливать все, что касается Linux на первый диск(300 MB для корневого раздела и немного пространства для свопинга).

  4. После того как я инсталлировал Linux и получил приглашение инсталлировать LILO нужно убедиться, что я установил его в загрузочный сектор корневого раздела Linux, а не в MBR (master boot record).

  5. Оставшаяся часть дискового пространства потребуется для FreeBSD. Стоит убедиться, что корневой раздел FreeBSD находится до 1024-го цилиндра (1024-й цилиндр - это 528 MB на диске с нашими гипотетическими дисками на 720 MB). Если я захочу, то буду использовать остатки дискового пространства (около 270 МВ) для /usr и / разделов. Остаток места на втором жестком диске (размер зависит от раздела для приложений и данных Windows, который я сделал на шаге 1 может пойти на /usr/src раздел и пространство для свопинга.

  6. Посмотрев на мои жесткие диски с помощью утилиты fdisk для Windows 95 можно увидеть следующее:

    ----------------------------------------------------------------------------
                       Display Partition Information
    
    Current fixed disk drive: 1
    
    Partition   Status   Type    Volume_Label    Mbytes    System      Usage
    C:  1         A     PRI DOS                    50       FAT**        7%
        2         A     Non-DOS  (Linux)          300                    43%
    
    Total disk space is 696 Mbytes (1 Mbyte=1048576 bytes)
    
    Press Esc to continue
    
    ----------------------------------------------------------------------------
    
                      Display Partition Information
    
    Current fixed disk drive: 2
    
    Partition   Status   Type    Volume_Label    Mbytes    System      Usage
    D:  1         A     PRI DOS                    420       FAT**        60%
    
    Total disk space is 696 Mbytes (1 Mbyte=1048576 bytes)
    
    Press Esc to continue
    
    ----------------------------------------------------------------------------

    ** Здесь может быть FAT16 или FAT32, если вы используете обновленную версию OEM SR2. (Смотрите "Обзор менеджеров загрузки".)

  7. Инсталляция FreeBSD. Следует убедиться, что мой первый жесткий диск установлен в BIOS с ключом ``NORMAL''. Если это не так, придется вводить дисковую геометрию во время загрузки (загрузите Windows 95 и проконсультируйтесь с Microsoft Diagnostics (MSD.EXE) или проверьте BIOS) c параметром hd0=1416,16,63, где 1416 - число цилиндров на жестком диске, 16 - число головок, 63 - число секторов на дорожку.

  8. Разбивая жесткий диск на разделы, я устанавливаю BootEasy на первый диск. Второй диск меня совершенно не беспокоит, так как с него ничего не загружается.

  9. Когда я перезагружаюсь, Boot Easy должен видеть 3 моих загрузочных раздела, как DOS(Windows 95), Linux и BSD (FreeBSD).

4.   Специальные замечания

Большинство операционных систем требуют особого расположения на жестком диске. Windows 95 и DOS необходимо устанавливать в первый primary раздел на первом жестком диске. OS/2 является исключением: ее можно устанавливать на первый или второй диск в primary или extended раздел.Если вы не уверены, оставляйте начало загрузочных разделов до 1024-го цилиндра.

Если вы устанавливаете Windows 95 на уже существующую BSD систему, она ``разрушит'' MBR, и вам придется переустанавливать предыдущий менеджер загрузки. Boot Easy может быть переустановлен, используя утилиту BOOTINST.EXE (в директории \TOOLS на СD-ROM или доступна через ftp). Вы также можете перезапустить процесс инсталляции и обратиться к редактору разделов. Отметьте раздел FreeBSD как загрузочный, выберите менеджер загрузки и нажмите W, чтобы записать информацию в MBR. Теперь вы можете перезапуститься, а Boot Easy должен распознать Windows 95 как DOS.

Пожалуйста, помните, что OS/2 читает разделы FAT и HPFS, но не FFS (FreeBSD) или EXT2 (Linux). Windows 95 может читать и записывать только в разделы FAT или FAT32 (смотрите Обзор менеджеров загрузки). FreeBSD читает большинство файловых систем, но в настоящее время не может читать HPFS. Linux читает HPFS разделы, но не может записывать в них. Linux может читать и записывать в большинство файловых систем. Последние версии ядра Linux (2.x) могут читать а также записывать в разделы VFAT Windows 95.

5.   Примеры

(раздел требует доработки, пожалуйста присылайте свои примеры jayrich@in.net).

FreeBSD+Win95: если вы установили FreeBSD после Windows 95, в меню Boot Easy вы должны увидеть DOS. Это Windows 95. Если вы установили Windows 95 после FreeBSD, прочтите Cпециальные замечания. Если на вашем диске меньше, чем 1024 цилиндра, у вас не должно возникнуть проблем с загрузкой. Однако, если один из ваших разделов расположен за 1024 цилиндром,и вы получаете сообщение: invalid system disk при загрузке DOS (Windows 95) и при этом FreeBSD не загружается, попробуйте найти в BIOS установку ``> 1024 cylinder support'' или режим ``Normal/LBA''. Возможно для правильной загрузки DOS требуется LBA (Logical Block Adressing). Если вам не нравится каждый раз при загрузке переключать установки BIOS, вы можете загружать FreeBSD через DOS, используя утиллиту FBSDBOOT.EXE на CD (Она должна найти и загрузить ваш FreeBSD раздел.)

FreeBSD+OS/2+Win95: Ничего особенного. Менеджер загрузки OS/2 без проблем загрузит все эти операционные системы.

FreeBSD+Linux: Вы можете использовать Boot Easy для загрузки обеих операционных систем.

FreeBSD+Linux+Win95 (смотрите Типичная инсталляция.)

6.   Другие источники информации

Существует множество Linux HOW-TOs, в которых рассказывается о том, как Linux взаимодействует с несколькими системами на жестком диске.

Linux+DOS+Win95+OS/2 mini-HOWTO помогает конфигурировать менеджер загрузки OS/2. Здесь также может помочь Linux HOW-TO.

В NT Loader Hacking Guide много полезной информации о том как загружать Windows NT, '95 и DOS с другими операционными системами.

Пакет документов "How it works" Хейла Лэндиса (Hale Landis) содержит информацию о различных видах геометрии диска и сопутствующую информацию о загрузке. Вот также несколько ссылок, которые могут вам помочь:

ftp://fission.dt.wdc.com/pub/otherdocs/pc_systems/how_it_works/allhiw.zip, http://www.cs.yorku.ca/People/frank/docs/.

Не забывайте об описании процесса загрузки в документации ядра FreeBSD, доступной в исходных текстах ядра (распаковано в file:/usr/src/sys/i386/boot/biosboot/README.386BSD.)

7.   Технические детали

7.1.  Начальные сведения о дисках
7.2.  Процесс загрузки
7.3.  Загрузочные ограничения и предупреждения
(Составлено Рэндаллом Хоппером (Randall Hopper), rhh@ct.picker.com)

В этом разделе я попытаюсь сообщить вам основные сведения о жестких дисках и процессе загрузки, чтобы вы могли справиться самостоятельно с большинством проблем, которые возникают при использовании нескольких операционных систем. Я начну с основных терминов, поэтому вы сможете пропустить этот раздел, пока не встретите что-нибудь, что кажется вам незнакомым.

7.1.   Начальные сведения о дисках

Существуют три основных термина для описания местоположения данных на жестком диске: цилиндры, головки и сектора. Необязательно знать, что конкретно обозначают эти термины, кроме того, что вместе они однозначно определяют физическое местоположение данных на диске.

Ваш диск имеет некоторое число головок, цилиндров и секторов на дорожку. В совокупности эта информация определяет "физическую геометрию" вашего диска. Обычно имеется 512 байт на сектор и 63 сектора на дорожку, число цилиндров и головок широко варьируется от диска к диску. Таким образом, вы можете легко сосчитать сколько данных умещается на вашем жестком диске:

(# число цилиндров) × (# число головок) × (63 число секторов на дорожку) × (# 512 число байт на сектор)

Например, мой Western Digital AC31600 EIDE вмещает:

(3148 цилиндров) × (16 головках) × (63 секторов на дорожку) × (512 байт на сектор)

1,624,670,208 байт или около 1.6 Гб.

Вы можете узнать физическую геометрию вашего диска (число цилиндров, головок и секторов на дорожку), используя ATAID или другие программы. Возможно, эту информацию вы получили вместе с вашим диском. Однако, будьте осторожны: если вы используете BIOS LBA (смотрите Замечания о загрузке), вы не можете использовать любую программу для получения физической геометрии диска. Это происходит потому, что многие программы (например, MSD.EXE или FreeBSD fdisk) не распознают физическую геометрию диска, а передают ее из LBA.

Из этих терминов можно извлечь пользу. По трем данным числам: номеру цилиндра, номеру дорожки и номеру сектора внутри дорожки вы можете идентифицировать абсолютный сектор (блок в 512 байт данных). Цилиндры и головки нумеруются с нуля, сектора нумеруются с единицы.

Те, кто заинтересовался техническими деталями, дисковой геометрией, загрузочными секторами, BIOS и т. д. могут найти любую информацию в сети. Запросите Lycos, Yahoo или что-нибудь ещё, по словам boot sector или master boot record. Среди полезной информации вы найдете пакет документов Хейла Лэндиса (Hale Landis) How it works. Cмотрите раздел "Другие источнники информации" для ссылок на этот пакет.

Достаточно терминологии, мы здесь обсуждаем загрузку.

7.2.   Процесс загрузки

В первом секторе вашего диска (цилиндр 0, головка 0, сектор 1) находится Master Boot Record (MBR). Там находится карта вашего диска. Она идентифицирует до четырех разделов, каждый из которых представляет собой цельный кусок диска. FreeBSD называет разделы (partition) slices, чтобы не путать их со своими собственными разделами, но мы здесь не будем этого делать. Каждый раздел может содержать свою собственную операционную систему.

Каждая запись раздела в MBR имеет идентификатор раздела Partition ID, Начальный цилиндр/Головку/Сектор (Start Cylinder/Head/Sector) и Конечный цилиндр/головку/сектор (End Cylinder/Head/Sector). Идентификатор раздела содержит информацию о типе этого раздела (о том, какая там операционная система), Start/End говорит о том где он находится. Список Partition ID может содержать нижеследующие Partition IDs.

Таблица 1: Partition IDs

ID (hex) Description
01 Primary DOS12 (12-bit FAT)
04 Primary DOS16 (16-bit FAT)
05 Extended DOS
06 Primary big DOS (> 32MB)
0A OS/2
83 Linux (EXT2FS)
A5 FreeBSD, NetBSD, 386BSD (UFS)

Заметим, что не все разделы загрузочные(например, Extended DOS). Загрузочным раздел делает конфигурация загрузочного сектора раздела Partition Boot Sector, который находится в начале каждого раздела.

Когда вы конфигурируете свой любимый менеджер загрузки, он просматривает записи в таблице разделов MBR всех ваших жестких дисков и разрешает вам давать имена записям в этом списке. Далее, когда вы загружаете систему, менеджер загрузки вызывается специальным кодом в Master Boot Record первого пробного жесткого диска. Он смотрит в таблице запись, соответствующую вашему выбору раздела, использует информацию о начальных цилиндре, головке и секторе для этого раздела, загружает загрузочный сектор раздела (Partition Boot Sector) и передает ему управление. Загрузочный сектор раздела содержит достаточно информации для начала загрузки операционной системы, соответствующей этому разделу.

Есть еще одна очень важная деталь. На всех ваших жестких дисках есть MBR. Однако важна только находящаяся на диске, который BIOS пробует первым. Если у вас есть только IDE диски, то это первый IDE диск(например, primary диск на первом контроллере). То же самое для SCSI. Если у вас и IDE, и SCSI диски, то IDE диск BIOS обычно пробует первым. Менеджер загрузки, который вы инсталлируете, будет записан в MBR, первого жесткого диска.

7.3.   Замечания о загрузке

7.3.1.  Страшный предел в 1024 цилиндра и как может помочь BIOS LBA
7.3.2.  Менеджер загрузки и размещение диска
7.3.3.  Что делать, если машина не загружается

Некоторые интересные вещи мы можете увидеть здесь.

7.3.1.   Страшный предел в 1024 цилиндра и как может помочь BIOS LBA

Вся начальная стадия загрузки происходит на уровне BIOS (если для вас это новый термин, то знайте, что BIOS - это микросхема на вашей материнской плате, которая обеспечивает код автозагрузки для вашего компьютера). Таким образои первая часть процесса - это предмет ограничений интерфейса BIOS.

Интерфейс BIOS, который производит считывание с жесткого диска(прерывание 13,функция 2), отводит 10 бит на номер цилиндра, 8 на номер головки и 6 на номер сектора. Пользователь этого интерфейса сталкивается со следующими ограничениями:

В наше время большие жесткие диски имеют много цилиндров, но не так много головок, поэтому число цилиндров на большом жестком диске больше 1024. Имея такой жесткий диск и такой интерфейс BIOS, вы не можете загружаться с любого места вашего диска. Код загрузчика должен находиться до 1024 цилиндра. Фактически, если ваш жесткий диск имеет 16 головок это приводит:

1024 cyl/disk × 16 heads/disk × 63 sect/(cyl-head) × 512 bytes/sector

к уже упомянутому барьеру в 528 MB.

Здесь вступает в действие BIOS LBA(Logical Block Adressing). BIOS LBA дает возможность доступа к цилиндрам, которые находятся после 1024-го, переопределяя цилиндры. BIOS LBA перенумерует цилиндры и головки так, что BIOS кажется, что диск имеет больше головок и меньше цилиндров, чем на самоим деле. Другими словами, он использует преимущество того факта, что жесткие диски имеют мало головок и много цилиндров, сдвигая баланс между числом цилиндров и числом головок так, что оба числа попадают в вышеупомянутые пределы(1024 цилиндра и 256 головок).

С использованием BIOS LBA ограничения на размер жесткого диска исчезли. Если у вас есть LBA BIOS вы можете установить FreeBSD или любую другую операционную систему куда захотите и не заботиться о барьере в 1024 цилиндра.

В качестве примера давайте рассмотрим мой Western Digital на 1.6 Гб. Его физическая геометрия такова:

(3148 цилиндров, 16 головок, 63 сектор/дорожку, 512 байт/сектор )

Однако BIOS LBA отображает эту информацию так:

( 787 цилиндров, 64 головоки, 63 сектор/дорожку, 512 байт/сектор )

сохраняя размер диска, но перемещая число головок и цилиндров в диапазон, разрешенный BIOS API. (Кстати, у меня и Linux, и FreeBSD установлены за 1024-ым цилиндром и обе системы загружаются прекрасно, благодаря BIOS LBA).

7.3.2.   Менеджер загрузки и размещение диска

Еще одна тонкость в установке менеджеров загрузки - это размещение для него дискового пространства. Лучше позаботиться об этом, чтобы уберечь себя от повторной установки одной или нескольких операционных систем.

Если вы читали раздел Процесс загрузки в котором обсуждались Master Boot Sector (сектор, где находится MBR), Загрузочные сектора разделов (Partition Boot Sectors), и процесс загрузки,вас возможно удивило, где же этот менеджер собирается разместиться. Действительно, некоторые менеджеры загрузки достаточно небольшие и целиком умещаются в Master Boot Sector (Цилиндр 0, головка 0, сектор 0), некоторым требуется несколько больше места, и они занимают несколько секторов после Master Boot Record.

Некоторые операционные системы (включая FreeBSD) разрешают размещать свои разделы сразу после Master Boot Sector, в цилиндре 0, головке 0, секторе 2 (если вы этого хотите). Действительно, если вы дадите программе sysinstall чистый диск или диск, у которого в начале будет пустое пространство, то раздел FreeBSD начнется там по умолчанию. Далее, вы установите свой менеджер загрузки. Если он займет несколько секторов после MBR, то он затрет начало данных этого раздела. В случае с FreeBSD это затрет метку диска и раздел перестанет быть загрузочным.

Самый простой способ избежать эту проблему(и оставить возможность использовать различные менеджеры загрузки) - при разбиении диска на разделы всегда оставлять первую дорожку незанятой. Таким образом, оставляя место от цилиндра 1, головки 0, сектора 2 до цилиндра 0, головки 0, сектора 63 незанятым и начиная ваш первый раздел цилиндр 0, головка 1, сектор 1. Например, когда вы создаете раздел DOS в начале вашего диска, DOS оставляет это пространство открытым по умолчанию (вот почему некоторые загрузчики считают его свободным). Таким образом, создание раздела DOS в начале диска помогает избежать эту проблему.

Следующие менеджеры загрузки используют Master Boot Sector для хранения своих данных и кода.

А эти менеджеры загрузки используют несколько дополнительных секторов после Master Boot Sector:

7.3.3.   Что делать, если ваш компьютер не загружается?

Возможно, при установке менеджеров загрузки вы оставили MBR в таком состоянии, что машина не загружается. Маловероятно, но возможно, что повторно запуская fdisk вы изменили дисковую геометрию.

Если у вас на диске есть загрузочный раздел DOS, то вы можете загрузить DOS с дискеты и запустить:

A:\> FDISK /MBR

чтобы записать в систему простой загрузочныый код DOS. Затем вы можете загрузить DOS (и только DOS) c жесткого диска. Другой способ заключается в запуске с дискеты программы инсталляции менеджера загрузки.