Содержание.
Коротко о MBR.
Для MBR нет стандарта, но традиционно считается, таблица разделов MBR может содержать описание только четырех основных разделов диска.
Поскольку, основная таблица разделов MBR может содержать не более 4 первичных разделов, поэтому был изобретён Расширенный раздел (англ. extended partition).
Это первичный раздел, который не содержит собственной файловой системы, а содержит другие логические разделы, позволяя увеличивать количество разделов на диске.
Ограничения и недостатки традиционной MBR (Master Boot Record):
- не более 4′ех первичных разделов
- использование Extended Partition
- разметка дисков не более 2TB из-за архитектурй и 32′bit’ной адресации
- небезопасная — отсутствие копии таблицы разделов
Коротко о GPT (GUID Partition Table).
GPT - GUID Partition Table - новый стандарт размещения таблиц разделов на жестком диске.
GPT является частью расширенного стандарта EFI, предложенного компанией Intel.
EFI, впоследствии стандарт UEFI, используется для замены BIOS, используемого всеми PC-совместимыми компьютерами.
Некоторые из основные достижений GPT:
- - современная система адресации блоков LBA
- - наличие альтернативной копии (в конце диска), безопасная
- - поддержка дисков и массивов более 2TB
- - возможность создания до 128′ми разделов (партиций)
- - поддержка MBR
Коротко о загрузке FreeBSD.
В данной заметке будет рассказано как установить Операционные системы Windows 7,8,10 и FreeBSD на один жесткий диск размером не более 2TB, используя Boot Manager от FreeBSD настроить DualBoot установленных систем.
Прежде чем приступить к практической реализации вопроса, необходимо рассмотреть возможности установки и загрузки ОС FreeBSD и выбрать наиболее простой метод размещения двух систем на диске.
Операционная система FreeBSD поддерживает:
- разметку диска по устаревшей схеме MBR
- загрузку ОС с MBR
- загрузку ОС с MBR посредством собственного Boot Manager’а
- разметку диска по современной схеме GUID Partition Table (GPT)
- загрузку ОС с GPT
- загрузку ОС из UEFI BIOS
Операционная система FreeBSD не поддерживает:
- Extended Partition (см.выше)
- загрузку с Extended Partition
- загрузку из UEFI BIOS в Secure Level режиме
В операционной системе FreeBSD не реализован:
- Boot Manager для загрузки с разных партиций GPT
Коротко о загрузке Windows 7,8,10.
В сравнении с версией ОС Windows XP, в указанных версиях ОС Windows, загрузчик полностью изменился.
При использовании схемы разметки диска MBR, по умолчанию в укзанных ОС Windows создается скрытый раздел:
- - размером 100MB в Windows 7
- - размером 350MB в Windows 8 и 10
Операционная система Windows поддерживает:
- - MBR
- - GPT только из UEFI BIOS (по стандарту Microsoft)
- - загрузку с MBR из BIOS
- - загрузку с GPT из UEFI BIOS
Выбор MBR схемы разметки диска для установки ОС.
Исходя из вышеизложенного, чтобы установить на один диск Windows 7,8 и FreeBSD и настроить DualBoot — самым простым способом, является использование MBR и boot manager от FreeBSD — boot0cfg.
Далее будет показано, как используя новый установщик FreeBSD, начиная с FreeBSD 9.3-RELEASE, разметить диск в MBR, установить и настроить Boot Manager.
Примечание:
Можно использовать сторонний Boot Manager, например Grub2. Grub2 — великолепный boot manager, который можно использовать для загрузки нескольких разных систем установленных на диск: FreeBSD, Linux, Windows. Но это, тема другой статьи.
Вариант 1. Установка FreeBSD, затем Windows 7/8/10 на MBR.
Для установки FreeBSD и Windows, в обычном BIOS настраиваем загрузку с CD/DVD или USB флешки.
В случае UEFI BIOS, переводим UEFI BIOS в режим Legacy.
1.1 Установка FreeBSD
Запускаем установку FreeBSD с CD/DVD или USB-Live, и доходим до разметки диска:

Выбираем режим Manual — ручная разметка.
Выбираем наш диск, куда будут установлены ОС FreeBSD и Windows 7/8/10:

Выбираем создать — «Create»:
Получаем картинку следующего вида:

Выбираем в меню «MBR — DOS Partition»:

Создаем первый раздел (партрицию MBR) под FreeBSD:
- Type: freebsd
- Size: 8GB
- Mountpoint:
По-скольку, создаем разделы MBR или слайсы (slices) в терминах FreeBSD, Mountpoint не задается.
В результате, получим следующее:

где, ada0 - нулевой (первый) диск в компьютере
s1 - первый раздел (слайс в терминах xBSD) или партиция MBR (первая из 4′ех)
ada0s1 - первая партиция MBR под FreeBSD, размером 8GB
Теперь, можно создавать партиции самой FreeBSD, курсор должен быть наведен на ada0s1
затем, «Create»:
партиции FreeBSD могут быть двух типов:
- Type: freebsd-ufs (партиция файловой системы)
- Type: freebsd-swap (партиция подкачки)

в примере создана только одна корневая FS «/» - freebsd-ufs , размером 8GB:
- Type: freebsd-ufs
- Size: 8192MB
- Mountpoint: /
но можно создать несколько файловых систем.Важно: ниже показано как убрать ufs-журналирование для корневой FS,
пока с ним в FreeBSD есть проблемы, выбираем Options:

Отменяем выбор SUJ:

подтвеждаем изменение опций: OK
и еще раз подтверждаем создание файловой системы: OK
Вот так будет выглядеть созданная файловая система для последующей установки на нее ОС FreeBSD:

Важно: Если Вы будете создавать несколько файловых систем FreeBSD и swap из меню установки, обязательно используйте следующий порядок создания:
- первым создаете корневую FS: «/» - ada0s1a
- затем создаете swap - ada0s1b
- далее можете создавать остальные FS
Например, создание корня:

создание swap:

Итог:

Создание файловых систем FreeBSD завершено -> Finish запустит установку ОС FreeBSD:

1.2 Установка Windows
Перейдем сразу к окну партиций, не забывая что на первую, установлена OS FreeBSD:
- - Диск 0, Раздел 1 — 8GB Система (FreeBSD)
- - Незанятое место на диске 0 — 42GB (отдаем под установку Windows)
Выделяем Незанятое место на диске 0 и нажимаем Далее, инициируем установку Windows на Незанятое место

После установки Windows, последняя, установит флаг активности — загрузки на свою партицию.
Загружаемся с CD/DVD или USB-Live FreeBSD и выходим в SHELL, для установки Boot Manager FreeBSD:

В данном режиме, выполняем следующие команды:
- посмотреть разметку диска ada0
# gpart show ada0
- дополнительно, можно посмотреть BSD разметку слайса ada0s1
# gpart show ada0s1
- смотрим, установлен ли Boot Manager FreeBSD
# boot0cfg -v ada0
- устанавливаем Boot Manager FreeBSD и перезагружаемся:
# boot0cfg -B ada0 # reboot

Получаем следующую картину:

Где:
- - Нажимаем F1 для загрузки FreeBSD
- - Нажимаем F2 для загрузки FreeBSD
Примечание: Чтобы убрать из меню F3, необходимо снова воспользоваться boo0cfg для более тонкой настройки.
Вариант 2. Установка Windows 7/8/10, затем FreeBSD на MBR.
2.1 Установка Windows
Подразумевая что у нас чистый диск, размером 50GB, запускаем установку Windows:
Произведем разметку диска, создадим несколько партиций для логичских дисков Windows, нажимаем «Создать»:

Создаем первый раздел, размером 25GB:

Получаем следуюшую картину, где Windows автоматически создал:
- Диск 0 Раздел 1: Зарезервировано системой 100MB (Boot Loader Windows)
- Диск 0 Раздел 2: 24.3GB (Основной раздел — логический диск C:)
- Незанятое место на диске 0: 25.6GB

Создаем еще один раздел MBR, для Windows логического диска D: размером 10GB

Получаем следующую разметку:
- - Диск 0, Раздел 1 — Зарезервировано системой 100MB
- - Диск 0, Раздел 2 — 24.3GB Основной
- - Диск 0, Раздел 3 — 9.8GB Основной
- - Незанятое место на диске 0: 15.8GB (Раздел 4 — зарезервирован под FreeBSD)
Выбираем Диск 0, Раздел 2 — 24.3GB Основной для установки на него Windows и нажимаем Далее:

Производим установку Windows, по завершению которой, запускаем установку FreeBSD с CD/DVD или Live-USB.
2.2 Установка FreeBSD
Снова выбираем ручной режим разметки Manual и получаем следующую картину:
- ada0s1 100MB ntfs (Boot Loader Windows) скрытый раздел
- ada0s2 24GB ntfs ( Windows C:)
- ada0s3 9.8GB fat16 (не форматированный раздел, будущий диск D:)

Выбираем Create для создания слайса FreeBSD:

Создаем 4′ый слайс MBR под FreeBSD размером 16GB:

Получаем последний 4′ый раздел MBR с FreeBSD, в котором создадим партиции FreeBSD, используя Create:

Создаем партицию FreeBSD 2GB для корневой FS (должна быть первой: ada0s4a):

В опциях, отключаем UFS журналирование SUJ

Вид после создания корневой FS:

Создаем партицию под swap:

Вид после создания SWAP:

Создаем партицию под FS /usr:

Вид после создания /usr:

Создаем партицию под FS /var:

Вид после создания /var:

Создаем последнюю партицию под FS /home:

Вид после создания /home:

Для установки FreeBSD Finish, по завершению установки, выходим в Shell
и производим установку Boot Manager FreeBSD:

Ранее уже описывались используемые команды, по завершению, производим Reboot и получаем
меню Boot Manager FreeBSD.
Важно: в данной статье не рассматривалось выравнивание партиций на границе партиций для сектора диска размером 4K.
Итог: Выше были рассмотрены два варианта установки систем FreeBSD и Windows на разделы MBR и настройка
Boot Manager FreeBSD для DualBoot.
Использование загрузчика GRUB2 для загрузки Windows 7/8/10 и FreeBSD.
Ниже будет показана установка и настройка загрузчика GRUB. Загрузчик grub2 будет установлен из ОС FreeBSD, в общем случае порядок установки ОС Windows и FreeBSD не важен.
Для установки загрузчика grub2, необходимо загрузиться в ОС FreeBSD:
- любым из способов с использованием BootManager OS FreeBSD описанным ранее;
- либо первой системой установить ОС Windows, а затем FreeBSD и из нее произвести установку и настройку grub2
В примере ниже, будет показана установка и настройка загрузчика grub2 из ОС FreeBSD:
Пусть мы загрузились в ОС FreeBSD, смотрим таблицу разделов:

Если не установлен пакетный менеджер pkg - устанавливаем:

Производим апдейт репозитория пакетов:

Устанавливаем grub2 из пакетов:



Устанавливаем boot manager grub2 на диск:

Можно задать модули по-умолчанию в grub-install:
# grub-install --modules="part_msdos part_gpt ntfs bsd ufs2" --no-floppy /dev/ada0
В документации grub2 не рекомендуют создавать файл конфигурации вручную, а рекомендуют выполнить:
# grub-mkconfig -o /boot/grub/grub.cfg
Однако во FreeBSD c генератором grub-mkconfig все время только проблемы, поэтому, советую создавать
/boot/grub/grub.cfg именно руками и не тратить время на отладку и правку grub-mkconfig.Прежде чем приступить к написанию меню загрузки /boot/grub/grub.cfg, вспомним конфигурацию нашей MBR таблицы разделов:
root@w8bsd:~ # gpart show ada0 => 63 104857537 ada0 MBR (50G) <-- таблица MBR из трех разделов 63 1985 - free - (993K) 2048 716800 1 ntfs (350M) <-- первая партиция(слайс) 718848 81201152 2 ntfs (39G) <-- вторая партиция(слайс 81920000 34 - free - (17K) 81920034 22937544 3 freebsd [active] (11G) <-- третий слайс 104857578 22 - free - (11K) root@w8bsd:~ # gpart show ada0s3 => 0 22937544 ada0s3 BSD (11G) <-- третий слайс BSD состоит из: 0 20971520 1 freebsd-ufs (10G) <-- первая партиция BSD 20971520 1966023 2 freebsd-swap (960M) <-- партиция под swap 22937543 1 - free - (512B) root@w8bsd:~ #
Мы создали на диске таблицу MBR, состоящую из трех основных разделов:
- первый раздел — ntfs 350MB, это скрытый раздел, загрузчик Windows 8
- второй раздел — ntfs 39GB, это собственно, Windows 8 — логический диск C:
- третий раздел — слайс FreeBSD, который в свою очередь разбит по схеме BSD на две партиции: ada0s3a — корень и ada0s3b — swap
В GRUB2, диски нумеруются с «0″, а разделы с «1″, с учетом этого создадим меню загрузки:

Получается следующая конфигурация:

Прежде чем комментировать конфигурацию, покажем общий шаблон для одного входа меню:
menuentry "Имя входа" { # <- this is comment # number of default menu for autoboot set default=2 # timeout for autoboot set timeout=10 # load modules insmod модуль1 insmod модуль2 # set root set root=(ДискНомер,ПартицияНомер) # load OS загрузка ядра напрямую (только для OS которые поддерживает GRUB2) загрузка ядра через Loader Операционной Системы загрузка по цепочке (chain/chainloader) }
В соответствии с документацией GRUB2 может:
- загружать напрямую (directly) системы поддерживающие Multiboot: Linux, FreeBSD, NetBSD и OpenBSD
- загружать по цепочке (chain loading), как системы не поддерживающие спецификацию Grub Multiboot: DOS и Windows, так и поддерживающие
Я бы выделил еще один вариант загрузка собственного Loader‘а Операционной системы, который самостоятельно загружает родную ОС, он относится к спецификации Grub Multiboot, в отличие от прямой загрузки Kernel, ядра ОС, с параметрами.
Вернемся к меню /boot/grub/grub.cfg, для Windows 7/8/10:
menuentry "Windows 8.1" { <-- строка отображения в меню загрузки insmod chain <-- подгружаем модуль для использования загрузки по-цепочке insmod ntfs <-- модуль поддержки файловой системы NTFS # set root=(hd0,msdos1) <-- идентична следующей строке set root=(hd0,1) <-- первый диск с MBR - hd0, первая, скрытая партиция Windows chainloader +1 <-- технология загрузки по-цепочке, загрузить ПЕРВЫЙ сектор заданного выше "root" }
В верхнем примере, для загрузки Вашего варианта расположения Windows, необходимо изменить, в соответствии с Вашими условиями:
- menuentry «Здесь Ваша строка меню»
- set root=(диск,номер скрытой партиции Windows 7/8/10)
где:
- «диск» может быть: hd0 — первый, hd1 — второй и так далее
- «номер скрытой партиции»: 1 — или msdos1 и так далее, 4 — msdos4 из условия трационной MBR, состоящей из 4′ех основных партиций
меню для FreeBSD:
menuentry "FreeBSD 10.1" { <-- строка отображения в меню загрузки # insmod bsd <-- подгружаем модуль схемы разметки BSD insmod ufs2 <-- модуль поддержки файловой системы UFS2 set root=(hd0,msdos3,bsd1) <-- первый диск с MBR - hd0, третий слайс MBR, первая партиция BSD1 = "a" [ada0][s3][a] kfreebsd /boot/loader <-- загружаем loader OS FreeBSD, остальное выполнит он сам }
Примечание: Самый простой и правильный путь, использовать ручную разметку дисков и настройку менеджеров загрузки из <Shell> или <LiveCD>, командами указанными в данном руководстве.
Возможные проблемы.
1. Осталась альтернативная копия GPT:
- по какой-то причине, не удалилась альтернативная копия GPT, если Вы использовали GPT или меню Auto при установке FreeBSD.
решение: удалить схему GPT или альтернаивную копию (каждая размером 34 LBA сектора):
- - полностью удалить разметку GPT (основную и копию):
# gpart destroy -F ada0
- - удалить основную таблицу GPT используя команду dd:
# dd if=/dev/zero of=/dev/ada0 count=34 bs=512
- удалить альтернативную таблицу GPT в конце диска командой dd:определяем количество секторов на диске и вычитаем 34:
# echo `diskinfo -v ada0 | grep "# mediasize in sectors" | cut -f1,1 -d"#"` - 34 | bc
пропускаем вычисленное количество секторов (задаем в seek=) и обнуляем последние 34:
# dd if=/dev/zero of=/dev/ada0 bs=512 seek=60030398
2. Если по какой-то причине слетел Boot Manager:
- - загрузитесь с LiveCD/USB и исправьте ошибку:
- - командой «gpart show ada0″ — посмотреть разметку;
- - командой «fdisk -p ada0″ — посмотреть слайсы и флаг активности, должен быть только один, исправить если больше;
- - командами «gpart show ada0sX» или «bsdlabel ada0sX» — посмотреть партиции FreeBSD и исправить при необходимости.
- - в grub-rescue выполнить (после чего исправить boot LiveCD/USB):
grub-resc>ls grub-resc>set root=(задать правильные данные) grub-resc>ls /boot/grub/
3. Загрузка при использовании двух дисков:
- - выделить первый диск под Windows, Linux с разметкой MBR
- - на второй установить FreeBSD с разметкой GPT.
Для загрузки FreeBSD/GPT со второго диска, необходимо установить Boot Manager от FreeBSD или GRUB2 на ПЕРВЫЙ ДИСК:
- настройка boot0cfg:
# boot0cfg -B ada0
F5 - загрузка со второго диска.
- настройка GRUB2, добавить в /boot/grub/grub.cfg для загрузки со второго диска:
menuentry "FreeBSD 10.1/Disk2 GPT" { insmod part_gpt insmod bsd insmod ufs2 set root=(hd1,gpt2) kfreebsd /boot/loader }
4. Если хотите использовать только GPT разметку, BIOS должен быть UEFI для Windows и boot manager GRUB2 с поддержкой EFI.
- BIOS — Basic Input Output System
- EFI — Extensible Firmware Interface
- UEFI — Unified Extensible Firmware Interface
- Boot Loader — загрузчик Операционной системы
- Boot Manager — специализированный загрузчик разных Операционных систем
- ОС или OS — Операционная система или Operating System
- MBR — Master Boot Record
- GPT — GUID Partiation Table
- EBR — Extended Partition
- LBA — Logical Block Addressing, механизм адресации и доступа к блоку данных диска
- Slice — тоже самое что и партиция(в стиле Microsoft) MBR
- Slice — состоит из партиций FreeBSD
- FS — сокращение Filesystem
- UFS — тип файловой системы FreeBSD
- SU — Soft update, одно из достижений файловой системы UFS2 от FreeBSD
- SUJ — Soft update journaling, журналирование файловой системы UFS2 от FreeBSD
- root-fs или root fs — корневая файловая система, обозначается как «/»
- swap — область подкачки
- mountpoint — точка монтирования файловой системы
- Shell — командный интерпретатор
Примечание: Если у вас возникли вопросы, желание расширить, уточнить, исправить, дополнить, скачать или использовать данную заметку — пожалуйста, я буду только рад если кому-то она оказалась полезной.