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

6 августа 1996

FreeBSD это зарегистрированная торговая марка FreeBSD Foundation.

IBM, AIX, EtherJet, Netfinity, OS/2, PowerPC, PS/2, S/390 и ThinkPad это торговые марки International Business Machines Corporation в Соединенных Штатах, других странах, или по всему миру.

Linux это зарегистрированная торговая марка Linus Torvalds.

Microsoft, FrontPage, IntelliMouse, MS-DOS, Outlook, Windows, Windows Media и Windows NT это или зарегистрированные торговые марки или торговые марки Microsoft Corporation в Соединенных Штатах и/или других странах.

PowerQuest и PartitionMagic это зарегистрированные торговые марки PowerQuest Corporation в Соединенных Штатах и/или других странах.

Многие из обозначений, используемые производителями и продавцами для обозначения своих продуктов, заявляются в качестве торговых марок. Когда такие обозначения появляются в этом документе, и Проекту FreeBSD известно о торговой марке, к обозначению добавляется знак ''™'' или ''®''.

В этом документе описывается как заставить FreeBSD нормально сосуществовать с другими популярными операционными системами, такими как, Linux, MS-DOS®, OS/2®, и Windows® 95. Отдельное спасибо: Annelise Anderson , Randall Hopper , и Jordan K. Hubbard .


1. Введение

Большинство людей не в состоянии установить несколько операционных систем без применения дополнительного винчестера большего размера. По этой причине была добавлена информация по работе с EIDE дисками. Существует большое количество всевозможных комбинаций устанавливаемых операционных систем и конфигураций жёсткого диска, поэтому Разд. 5 может оказаться наиболее полезным. В нем содержатся описания специфичных рабочих конфигураций, использующих несколько операционных систем.

Чтение данного документа предполагает, что на вашем жёстком диске имеется выделенное пространство для размещения дополнительной операционной системы. Всякий раз, при изменении таблицы разделов, повышается риск порчи данных на уже существующих разделах. В случае, если раздел DOS единственный на вашем диске, вы можете использовать утилиту FIPS, находящуюся на компакт-диске с FreeBSD в каталоге TOOLS или на ftp. С её помощью вы можете изменять таблицу разделов без потери данных. Существует также коммерческая программа PartitionMagic®, которая даёт возможность изменять размер и удалять разделы без тяжёлых последствий.


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

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

Boot Easy

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

OS/2 Boot Manager

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

OS-BS

Данный менеджер - альтернатива Boot Easy. Он предоставляет больше контроля над процессом загрузки, с возможностью выбора раздела по умолчанию и booting timeout. Бета версии этих программ позволяют выбирать ОС с помощью стрелок. Данную программу можно найти на диске с FreeBSD в папке TOOLS или на ftp.

LILO, или LInux LOader

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

Несколько слов про FAT32: FAT32 - это замена файловой системы FAT, впервые появившаяся в Microsoft's OEM SR2 Beta release. Своим появлением к концу 1996 года, FAT32 начала вытеснять FAT с компьютеров с установленной Windows 95. FAT32 - это продолжение файловой системы FAT. Она позволяет использовать кластеры меньшего размера для больших жёстких дисков. Также были внесены изменения в структуру загрузочного сектора и в таблицу секторов, сделав её тем самым, несовместимой с некоторыми менеджерами загрузки.


3. Пример типичной установки

Предположим, что у меня есть 2 EIDE диска большого объёма. Мне надо установить FreeBSD, Linux и Windows 95.

Вот как бы я это сделал:

  • /dev/wd0 (первый жёсткий диск)

  • /dev/wd1 (второй жёсткий диск)

У обоих дисков 1416 цилиндра.

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

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

  3. Дальше устанавливаю Linux. Не уверен про все дистрибутивы Linux, но в Slackware LILO включен по умолчанию (смотрите Разд. 2). С помощью fdisk от Linux выделяю место на первом диске (примерно 300 MB под большой раздел root и немного под swap).

  4. LILO устанавливаю в загрузочный сектор Linux root раздела, а не в MBR (master boot record).

  5. Оставшееся на дисках место отдаю FreeBSD. Убеждаюсь, что мой FreeBSD root раздел не выходит за пределы 1024 цилиндра (на наших гипотетических 720 MB дисках 1024 цилиндр равен 528 MB). Пространство первого диска (примерно 270 MB) отдам под разделы /usr и /. Остаток второго жёсткого диска (его размер зависит от размера раздела под Windows приложения/данные, выделенного мною на первом шаге) можно выделить под /usr/src раздел и swap пространство.

  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 update. Подробнее в Разд. 2 .

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

  8. При разбивке диска устанавливаю Boot Easy на первый жёсткий диск. Не стоит беспокоиться о втором диске, т.к. там нечему загружаться.

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


4. Важные замечания

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

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

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


5. Примеры

(Глава нуждается в доработке, пожалуйста присылайте ваши примеры на адрес ).

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

FreeBSD + OS/2 + Windows 95: The OS/2 Boot Manager может загружать все эти системы. Думаю, что здесь не должно быть проблем.

FreeBSD + Linux: Можете использовать Boot Easy.

FreeBSD + Linux + Windows 95: (смотрите Разд. 3)


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

Существует большое количество Linux HOW-TOs, в которых рассматриваются вопросы использования нескольких операционных систем на одном диске.

В Linux+DOS+Win95+OS2 mini-HOWTO можно найти информацию по настройке OS/2 boot manager. Полезными могут быть следующие ссылки: Linux+FreeBSD mini-HOWTO, и Linux-HOWTO.

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

В архиве документации от Hale Landis ''How It Works'' содержится много интересной информации по всем видам геометрии диска и по процессу загрузки. Доступен по адресу: ftp://fission.dt.wdc.com/pub/otherdocs/pc_systems/how_it_works/allhiw.zip.

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


7. Технические подробности

(Главу написал Randall Hopper, )

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


7.1. Вводная информация по дискам

Существует три фундаментальных термина, определяющих расположение данных на жёстком диске: цилиндры, головки и сектора (Cylindres, Heads, Sectors). Совсем не обязательно знать, что означает в отдельности каждый из этих терминов, главное, что вместе они определяют физическое расположение данных на вашем винчестере.

На диске находится определенное количество цилиндров, головок и секторов на цилиндр-головку (другое название - дорожка (track) ). Вместе данная информация определяет ''физическую геометрию диска''. В одном секторе 512 байт, и 63 сектора на одной дорожке. Количество цилиндров и головок различно у каждого диска. Таким образом можно подсчитать размер вашего диска в байтах:

(# of cylinders) × (# heads) × (63 sectors/track) × (512 bytes/sect)

Возьмем, к примеру, мой жесткий диск 1.6Gb Western Digital AC31600 EIDE:

(3148 cyl) × (16 heads) × (63 sectors/track) × (512 bytes/sect)

Получаю 1,624,670,208 байт, что примерно равно 1.6 гигабайт.

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

Номер цилиндра, номер головки и номер сектора в пределах дорожки характеризуют сектор на диске (блок данных размером в 512B). Цилиндры и головки нумеруются начиная с нуля, а сектора с единицы.

Для тех кто заинтересовался дополнительной информацией, касающейся геометрии диска, загрузочных секторов, BIOS и т.д. могут найти все необходимое в сети. Проверьте Query Lycos, Yahoo и др. по ключевым словам boot sector или master boot record. Среди другой полезной информации, вы найдете архив документов от Hale Landis How It Works. В Разд. 6 находится ссылка на этот архив.

Достаточно терминологии. Давайте поговорим о загрузке.


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

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

Каждая запись в MBR состоит из полей Partition ID, Start Cylinder/Head/Sector и End Cylinder/Head/Sector. Partition ID сообщает нам к какому типу файловой системы (к какой ОС) относится данный раздел, а Start/End говорит о местонахождении данного раздела. В таблице Табл. 1 представлено несколько примеров 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). Некоторые могут--некоторые нет. Настройка загрузочного сектора раздела, присутствующего в начале, позволяет сделать раздел загружаемым.

Когда вы настраиваете ваш любимый загрузчик, он просматривает MBR каждого диска и дает вам возможность присвоить имена найденным разделам. При загрузке из MBR вашего первого диска запускается менеджер загрузки. Он просматривает информацию о выбранном вами разделе и использует значение поля Start Cylinder/Head/Sector для передачи управления загрузочному сектору вашего раздела. В свою очередь этот загрузочный сектор содержит достаточно информации для загрузки операционной системы.

Один немаловажный момент: на каждом диске есть свой MBR, но используется MBR того диска, который определяется BIOS первым. Если у вас только IDE диски, то основным будет первый диск на первом контролёре. Похожая схема и для SCSI дисков. Если у вас имеется и IDE, и SCSI диск, то BIOS первым определит IDE диск. Загрузочный менеджер будет установлен на первый определившийся диск.


7.3. Ограничения при загрузке и предупреждения

Интересная информация, которую стоит прочитать.


7.3.1. Ограничение в 1024 цилиндра и чем может помочь BIOS LBA

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

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

  • Максимально возможное количество цилиндров - 1024

  • Максимально возможное количество головок - 256

  • Максимально возможное количество секторов на дорожку - 64 (если точнее, то 63, 0 не используется)

В настоящее время у жёстких дисков большое количество цилиндров, но мало головок и, несомненно, что количество цилиндров в современных винчестерах превышает 1024. Учитывая данный факт и интерфейс BIOS мы теперь не можем грузиться с любого места диска. Загрузочный код (менеджеры загрузки и загрузчики ОС, находящиеся на всех загружаемых разделах) должен располагаться до 1024 цилиндра. Если у вас обычный жесткий диск с 16 головками, то он равен:

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

Это примерно равно часто упоминаемому лимиту в 528MB.

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

С BIOS LBA предел объёма жёсткого диска виртуально убирается (переносится на 8Гб). Если у вас поддерживается LBA BIOS, то вы можете установить FreeBSD или любую другую ОС в какое угодно место на диске, не боясь 1024 цилиндра.

Возьмем, к примеру, мой жёсткий диск 1.6 Gig Western Digital. Вот данные его физической геометрии:

(3148 cyl, 16 heads, 63 sectors/track, 512 bytes/sector)

BIOS LBA преобразует их к виду:

(787 cyl, 64 heads, 63 sectors/track, 512 bytes/sector)

В итоге получается тот же размер диска, но с количеством цилиндров и головок, лежащим в пределах значений BIOS API. На одном из моих дисков установленные Linux и FreeBSD находятся за 1024 физическим цилиндром. Благодаря BIOS LBA, обе операционные системы нормально загружаются.


7.3.2. Выделение дополнительного места для менеджерa загрузки

Другой момент, на который следует обратить внимание - выделение пространства для менеджера загрузки. Следует хорошо разбираться в данном вопросе, чтобы избавить себя от повторных переустановок одной или нескольких ОС.

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

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

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

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

  • OS-BS 1.35

  • Boot Easy

  • LILO

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

  • OS-BS 2.0 Beta 8 (сектора со 2 по 5)

  • The OS/2 boot manager


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

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

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

A:> FDISK /MBR

Это заново установит в MBR загрузочный код DOS. Теперь вы можете загружать DOS и только DOS. Аналогично, просто перезапустите установку вашего менеджера загрузки с загрузочной дискеты.


Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам, связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.

Обновлено: 12.03.2015