Содержание.

  1. Коротко о MBR.
  2. Коротко о GPT (GUID Partition Table).
  3. Коротко о загрузке FreeBSD.
  4. Коротко о загрузке Windows 7,8,10.
  5. Выбор MBR схемы разметки диска для установки ОС.
  6. Вариант 1. Установка FreeBSD, затем Windows 7/8/10 на MBR.
  7. Вариант 2. Установка Windows 7/8/10, затем FreeBSD на MBR.
  8. Использование загрузчика GRUB2 для загрузки Windows 7/8/10 и FreeBSD.
  9. Возможные проблемы.
10. Аббревиатура и сокращения.
Очень Важно: Если Вы не владеете теорией и практикой по работе с MBR, GPT, предварительно, сделайте как минимум копию таблицы разделов, и как максимум, копию диска.
Особено, это касается владельцев ноутбуков с технологией автоматического восстановления, в дополнение к верхнему, сделайте отдельно копию резервной партиции, MBR и копию таблицы разделов с указанием секторов.

Коротко о MBR.

MBR - Master Boot Record, это специальная запись в начале диска. Она содержит код загрузчика, таблицу разделов и сигнатуру, все это данные, необходимые для последующей загрузки OS.

Для MBR нет стандарта, но традиционно считается, таблица разделов MBR может содержать описание только четырех основных разделов диска.

Поскольку, основная таблица разделов MBR может содержать не более 4 первичных разделов, поэтому был изобретён Расширенный раздел (англ. extended partition).
Это первичный раздел, который не содержит собственной файловой системы, а содержит другие логические разделы, позволяя увеличивать количество разделов на диске.

Ограничения и недостатки традиционной MBR (Master Boot Record):

Коротко о GPT (GUID Partition Table).

GPT - GUID Partition Table - новый стандарт размещения таблиц разделов на жестком диске.

GPT является частью расширенного стандарта EFI, предложенного компанией Intel.
EFI, впоследствии стандарт UEFI, используется для замены BIOS, используемого всеми PC-совместимыми компьютерами.

Некоторые из основные достижений GPT:

Коротко о загрузке FreeBSD.

В данной заметке будет рассказано как установить Операционные системы Windows 7,8,10 и FreeBSD на один жесткий диск размером не более 2TB, используя Boot Manager от FreeBSD настроить DualBoot установленных систем.

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

Операционная система FreeBSD поддерживает:
Операционная система FreeBSD не поддерживает:
В операционной системе FreeBSD не реализован:

Коротко о загрузке Windows 7,8,10.

В сравнении с версией ОС Windows XP, в указанных версиях ОС Windows, загрузчик полностью изменился.

При использовании схемы разметки диска MBR, по умолчанию в укзанных ОС Windows создается скрытый раздел:


для установки загрузчика.

Операционная система 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:

По-скольку, создаем разделы MBR или слайсы (slices) в терминах FreeBSD, Mountpoint не задается.

В результате, получим следующее:

где, ada0 - нулевой (первый) диск в компьютере
s1 - первый раздел (слайс в терминах xBSD) или партиция MBR (первая из 4'ех)
ada0s1 - первая партиция MBR под FreeBSD, размером 8GB

Теперь, можно создавать партиции самой FreeBSD, курсор должен быть наведен на ada0s1
затем, "Create":

партиции FreeBSD могут быть двух типов:



в примере создана только одна корневая FS "/" - freebsd-ufs , размером 8GB: но можно создать несколько файловых систем.

Важно: ниже показано как убрать ufs-журналирование для корневой FS,
пока с ним в FreeBSD есть проблемы, выбираем Options:

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

подтвеждаем изменение опций: OK
и еще раз подтверждаем создание файловой системы: OK

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

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

  1. первым создаете корневую FS: "/" - ada0s1a
  2. затем создаете swap - ada0s1b
  3. далее можете создавать остальные FS

Например, создание корня:

создание swap:

Итог:

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

1.2 Установка Windows

Перейдем сразу к окну партиций, не забывая что на первую, установлена OS FreeBSD:

Выделяем Незанятое место на диске 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

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

Где:

Примечание: Чтобы убрать из меню F3, необходимо снова воспользоваться boo0cfg для более тонкой настройки.

Вариант 2. Установка Windows 7/8/10, затем FreeBSD на MBR.

2.1 Установка Windows

Подразумевая что у нас чистый диск, размером 50GB, запускаем установку Windows:

Произведем разметку диска, создадим несколько партиций для логичских дисков Windows, нажимаем "Создать":

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

Получаем следуюшую картину, где Windows автоматически создал:


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

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

Выбираем Диск 0, Раздел 2 - 24.3GB Основной для установки на него Windows и нажимаем Далее:

Производим установку Windows, по завершению которой, запускаем установку FreeBSD с CD/DVD или Live-USB.

2.2 Установка FreeBSD


Снова выбираем ручной режим разметки Manual и получаем следующую картину:

Выбираем 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 может:

Я бы выделил еще один вариант загрузка собственного 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, необходимо изменить, в соответствии с Вашими условиями:

где:

меню для 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 - загрузка со второго диска.

  • задание маски -m в boot0cfg
    С помошью битовой маски можно задать используемые для загрузки слайсы. По умолчанию используется маска 0xf - загрузка со всех четырех слайсов.
    • 0001 / 0x1 - для загрузки доступен только 1'ый слайс
    • 0010 / 0x2 - для загрузки доступен только 2'ой слайс
    • 0011 / 0x3 - для загрузки доступны 1'ый и 2'ой слайс
    • 0100 / 0x4 - для загрузки доступен только 3'ий слайс
    • 0101 / 0x5 - для загрузки доступны 1'ый и 3'ий слайс
    • 0110 / 0x6 - для загрузки доступны 2'ой и 3'ий слайс
    • 0111 / 0x7 - для загрузки доступны 1'ый, 2'ой и 3'ий слайс
    • 1000 / 0x8 - для загрузки доступен только 4'ый слайс
    • и так далее
    • 1111 / 0xf - по умолчанию, загрузка со всех 4'ех слайсов

  • настройка 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 - командный интерпретатор

Примечание: Если у вас возникли вопросы, желание расширить, уточнить, исправить, дополнить, скачать или использовать данную заметку - пожалуйста, я буду только рад если кому-то она оказалась полезной.

Андрей Лаврентьев