Bios boot partition что это

Обновлено: 08.07.2024

Помните те времена, когда BIOS был 16-битным с адресным пространством в 1 Мб, а вся информация о загрузчиках писалась в MBR? На смену уже давно пришли более гибкие технологии: UEFI (замена BIOS), и GPT (замена MBR).

Предыстория: Понадобилось мне недавно на свой домашний десктоп поставить 2 системы, чтобы разграничить окружение. Kubuntu для разработки на Ruby on Rails (ибо работаю удаленно), и Windows для всяких игрушек в свободное время. Хочу заметить, что несколько лет назад это было достаточно просто: один раздел для винды и один раздел для линукса, загрузчик записывался в MBR. Однако, технологии не стоят на месте, и оказалось, что настройка dual boot'а теперь несколько изменилась.

Итак, начнем.

Терминология


UEFI (Unified Extensible Firmware Interface, Единый расширяемый интерфейс прошивки) разрабатывался компанией Intel как замена BIOS (Basic Input Output System). В отличие от 16-битного BIOS'а UEFI работает в 32- или 64-битном режиме, что позволяет использовать намного больше памяти для сложных процессов. Кроме того, UEFI приятно выглядит и там есть поддержка мышки.

image

  • Количество разделов: MBR поддерживает только 4 раздела. Можно и больше, но только через extended partition, что является просто хаком ограничений. GPT поддерживает до 128 разделов.
  • Размер диска: MBR поддерживает диски до 2Тб, в то время как GPT — до 9.4 Зеттабайт (=9.4 × 10^21 байт, или условно 1000 Тб)
  • Порядок загрузки: раньше BIOS загружал MBR, и в нем содержались адреса загрузчиков для каждого раздела диска. Теперь UEFI считывает GPT, находит в таблице все разделы типа efi (на них содержатся загрузчики), и подгружает их в память. Разберем это на примере немного позже.

Что делаем:

  • Windows 8.1 x64. Windows поддерживает загрузку с GPT начиная с Windows 8 для 32 битной архитектуры и с Windows Server 2003 и Windows Vista для 64 бит (Источник).
  • Kubuntu 15.04. По идее подойдет любой дистрибутив, который поддерживает Grub2, лично я предпочитаю Kubuntu.

Разбивка диска

Сначала устанавливаем Windows 8, т.к. она автоматически будет использовать GPT.
Разбивка будет выглядеть так (пардон за кривой снимок):

image

  1. Recovery (300Мб). Очевидно, что он используется для восстановления системы. Оставим как есть.
  2. EFI partition (100Мб). Помечается как system type (не любят в Майкрософте называть вещи своими техническими именами). Собственно сюда и пишутся загрузчики.
  3. MSR (128Мб, Microsoft Reserved Partition). Для меня остается загадкой, зачем он нужен. Данных там никаких нет, просто пустое место, зарезервированное для каких-то непонятных целей в будущем.
  4. Основной раздел. Мы его поделим на 3: 200 гигов под винду, 500 гигов для раздела под данные и остальное пространство пока оставим неразмеченным (отформатируем потом при установке Kubuntu).

Пропустим саму установку Windows, т.к. в ней все стандартно и понятно.

Теперь загрузимся с USB в Kubuntu Live.

Проверим EFI раздел:

Boot0000 — виндовый загрузчик
Boot0001 — дефолтный загрузчик
Boot0003 — флешка с Kubuntu Live
Обратите внимание, что список загрузчиков не привязан к одному физическому диску как в MBR. Он хранится в NVRAM.

Можем также сразу посмотреть, что же в этом разделе, подмонтировав его:

Там окажутся следующие файлы:

Убедились, что все хорошо. Теперь продолжаем разбивку диска (через KDE Partition Manager).

image

  • sda2 определился как FAT32. Это практически верно, т.к. файловая система типа EFI основана на FAT, только с жесткими спецификациями.
  • sda3 (MSR) не определился, т.к. файловой системы там так таковой нет.

Нам осталось только отформатировать раздел для Kubuntu в ext4, и выделить раздел под swap.

Несколько слов про swap. Рекомендуют на swap выделять от SQRT(RAM) до 2xRAM. Т.к. у меня 16 Гб RAM, то по минимуму мне надо 4 Гб свопа. Хотя я с трудом могу представить ситуации, при которых он будет использоваться: десктоп в hibernate я не перевожу, и сильно тяжелых программ, которые жрут больше 16 гигов, не использую.

P.S. При форматировании раздела в swap Partition Manager может выдать ошибки, которые связаны с тем, что Kubuntu автоматически монтирует в себя любой swap раздел, однако на результат эти ошибки не влияют.

Итак, финальная разбивка:

image

Теперь самое главное для правильного dual boot'а. При установке Kubuntu важно выбрать, куда установить загрузчик:

image

Указываем, конечно же на раздел EFI.

После завершения установки Kubuntu, заходим в систему и проверяем, какие файлы появились на efi разделе (монтировать уже не нужно):

Смотрим, как теперь выглядит список загрузчиков:

Вот как это выглядит при загрузке:

image

А еще эти загрузчики доступны сразу из UEFI (в старом BIOS'е такое было бы невозможно — там был выбор только диска, он просто не знал, что такое загрузчики):

image

Ну и напоследок: чтобы dual boot правильно работал, в Windows надо обязательно отключить fast boot. Это такая нехорошая фича, которая может привести к потере данных.

image

При выключении компьютера Windows сохраняет файловую структуру NTFS разделов в файл (видимо, потому что один файл прочитать быстрее, чем сканировать много разных файлов). Если записать файл на NTFS раздел через линукс, и потом загрузиться в Windows, то Windows просто не увидит файл. Источник

Если выключить комп через Windows, и потом попытаться загрузить Linux, то он просто не запустится из-за «ошибки» NTFS. Источник

Загрузочный раздел BIOS является разделом на устройстве хранения данных , что GNU GRUB использует устаревшее BIOS -Ы персональные компьютеры для того , чтобы загрузиться в операционной системе , когда фактическое загрузочное устройство содержит GUID Partition Table (GPT). Такой макет иногда называют загрузкой BIOS / GPT.

Загрузочный раздел BIOS необходим на устройствах хранения с разделами на GPT для хранения вторых этапов GRUB. На традиционных устройствах с разделами на MBR секторы диска, следующие сразу за первым, обычно не используются, поскольку схема разделения не назначает их для каких-либо специальных целей, а инструменты разделения избегают их для целей выравнивания. На устройствах на основе GPT секторы содержат фактическую таблицу разделов, что требует использования дополнительного раздела. На дисках с разделами на MBR обычно реализуются загрузчики, поэтому часть их кода, хранящаяся в MBR, которая не может содержать более 512 байт, работает как первая стадия, которая служит в первую очередь для загрузки более сложной второй стадии, которая для Например, способный читать и загружать ядро операционной системы из файловой системы .

СОДЕРЖАНИЕ

Обзор

В примере 2 выше GRUB 2 сохраняет свой core.img в загрузочном разделе BIOS.

При использовании загрузочный раздел BIOS содержит второй этап программы загрузчика , например GRUB 2; первый этап - это код, который содержится в основной загрузочной записи (MBR). Использование этого раздела - не единственный способ выполнить загрузку на основе BIOS при использовании жестких дисков с разделами GPT; однако сложные загрузчики, такие как GRUB 2, не могут полностью уместиться в пределах 398–446 байтов MBR, поэтому им необходимо дополнительное пространство для хранения. На дисках MBR такие загрузчики обычно используют секторы, следующие сразу за MBR для этого хранилища; это пространство обычно известно как «разрыв MBR». На дисках GPT нет эквивалентного неиспользуемого пространства, и загрузочный раздел BIOS - это способ официально выделить такое пространство для использования загрузчиком.

Требования к размеру загрузочного раздела BIOS довольно низкие, поэтому он может составлять всего около 30 КБ; однако, поскольку будущим загрузчикам может потребоваться больше места, 1 МиБ может быть разумным размером загрузочного раздела BIOS. Из-за политики выравнивания разделов размером 1 МБ , используемой большинством современных инструментов для разделения дисков для обеспечения оптимальной производительности с дисками расширенного формата , устройствами SSD и некоторыми конфигурациями RAID , остается некоторое пространство, позволяющее разместить загрузочный раздел BIOS между GPT и первым разделом выровнен таким образом. Если бы загрузочный раздел BIOS был создан с использованием этого свободного пространства, он бы не соответствовал спецификации выравнивания GPT, но это не очень важно, поскольку он записывается очень редко.

для тех у кого интернет дорогой, по их просьбам я написал суть вопроса прям в названии темы. а теперь сам вопрос. скажите пожалуйста, чем отличается bios_boot от bios_grub?

Там все про parted написано, надо просто прочитать внимательно, а не по диагонали.

bios_boot — метка, которая указывает на то, что это загрузочный раздел;

bios_grub — тип самого раздела.

то есть это не метка, она не выставляется?

Тип устанавливается иначе, чем метка (флаг).

bios_grub - это метка, флаг. а не тип раздела. а bios_boot - это хз что такое.

Я к тому, что bios_grub является основным.

Если говорить формально, то bios_grub — флаг, а bios_boot — метка (опция), как правило, при авторазметке для UEFI в GPT.

чтобы я правильно понял Вас, то скажите,что вы понимаете под меткой и опцией?

bios_boot - это то, что придумал ТС, откуда он это взял хз.

Create a mebibyte partition (+1M with fdisk or gdisk) on the disk with no file system and with partition type BIOS boot. Select BIOS boot and partition type number 4 for fdisk, ef02 for gdisk, and bios_grub for parted

Deleted ( 26.12.17 18:53:06 )
Последнее исправление: Lifun 26.12.17 18:54:06 (всего исправлений: 1)

bios_boot partition - это тип раздела, а не метка диска. её можно назвать и BIOS_Boot, и BIOS-Boot, и BIOS Boot, и BIOS boot, и BIOS-boot, и BIOS boot. это как XFS назвать xfs, и кричать, что xfs не правильно.
таки bios_boot он сам придумал в качестве метки

Deleted ( 26.12.17 19:04:09 )
Последнее исправление: Lifun 26.12.17 19:05:24 (всего исправлений: 1)

`bios_boot` option (default: TRUE)

что нет? метки bios_boot нет.
ты тоже, как ТТС, не можешь отличить метку/флаг раздела от типа раздела?

Это Вы не можете отличить флаг раздела от метки/опции.

Я же говорю нет на Ваше ложное утверждение:

По ссылкам пройдите. Поймете откуда это взял ТС.

В таблице разделов gpt у каждого раздела есть тип (guid), метка (строка) и атрибуты (битовое 64-разрядное). Команда mkpart задает тип создаваемого раздела. Команда name задает метку раздела. Команда set задает атрибуты раздела. Что такое атрибут bios_grub я не знаю. Атрибут legacy_boot (раньше в грубе он назывался bios_boot) описан в спецификациии uefi. Его должен использовать legacy загрузчик из нулевого сектора диска. Но таких загрузчиков вроде нет.

Метка может быть любой.

Название метки (label) можно задать любое. Это и отличает метку/опцию от флага. Учите матчасть, пожалуйста. И будьте внимательней.

ты решил пофлудить тут для скора? на моих винтах такого нет, т.к. bios_boot - это просто обозначение, имя, тип. никакого реального смысла, в отличие от bios_grub, не несёт. также вместо bios_boot можно написать хоть fuck_off.

Deleted ( 26.12.17 19:30:15 )
Последнее исправление: Lifun 26.12.17 19:30:39 (всего исправлений: 1)

охрененно мы поспорили об одном и том же.

Наконец-то Вы поняли!

нет, это Вы поняли наконец-то!

не можешь отличить метку/флаг раздела от типа раздела

охрененно мы поспорили об одном и том же.

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

Вы же утверждали, что флаг и метка — одно и то же:

не можешь отличить метку/флаг раздела от типа раздела

И говорили, что ТС это придумал сам:

А теперь говорите, что об одном и том же спорили.

забей ТТС всё равно пофиг, и он ничего не понял.

Вы же утверждали, что флаг и метка — одно и то же

мы с тобой потерялись в переводе: я писал метка=флаг; ты писал метка=опция. вот и заблудись.

а в общем, метка - это и не флаг, и не опция. в данном случае, это ближе к имени диска/раздела

Deleted ( 26.12.17 20:06:11 )
Последнее исправление: Lifun 26.12.17 20:07:39 (всего исправлений: 1)

В менеджерах разделов (диска): gparted, gdisk, fdisk и т. д. метка (label) имеет роль опции. Ее можно задать опционально как угодно.

Я об этом говорил. А у флага другая роль и опцией не является.

Наверно, Вы подразумевали, что установка флага — своего рода метка, т.к. помечает флагом, но я же говорил о метке как о label — отдельной опции.

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

Не могу удалить teamviewer Меня тут потёрли, убавили скор, на него мне больше всего насрать, но с каких пор жопа это нецензурное слово? Это даже по СМИ печатается, или пруф, что нет.

все бы ничего, но я bios_boot выставляю, как флаг. и parted немного ругнулся и установил.

и parted ругнулся, покосившись на тупого юзера, решил, что тупачку виднее, и нехотя установил.

Deleted ( 27.12.17 07:26:33 )
Последнее исправление: Lifun 27.12.17 07:28:38 (всего исправлений: 2)

В parted нет флага bios_boot, есть только флаг boot и есть тип раздела bios_grub для встраивания кода загрузчика на разметке GPT при загрузке на BIOS (legacy режиме).

Он применяется на разметке MBR (Master Boot Record), в терминологии parted она называется msdos.

В разметке MBR могло быть 4 записи о разделах, т.к. таблица разделов хранится в нулевом секторе размером 512 байт. Из этих 512 бай 446 байт занимает код первичного загрузчика, а оставшиеся 66 байт - таблица разделов, по 16 байт на запись о каждом из 4-х основных разделов и 2 байта сигнатура 55 AA для указания корректности главной загрузочной записи, т.е. данных в этом секторе.

Загрузчик MS-DOS, а потом и Windows, состоял из двух частей, первая часть в этих 446 байтах, которая только умела читать таблицу разделов, искать в ней активный раздел, который помечается в parted флагом

далее в начале этого активного раздела этот код считывал уже основной загрузчик, который туда прописывался при установке операционной системы. Во времена MS-DOS это был файл io.sys. Во если брать Windows NT, Windows 2000, Windows XP, то это ntldr, если брать Windows Vist, 7, 8, 10 - bootmgr.

В случае использования GPT разметки при установке загрузчика, который грузится в режиме legacy (BIOS) нужна область куда будет встраиваться код загрузчика.

bios_grub - тип раздела, для встраивания кода загрузчика, он просто так называется в parted. Для GPT это просто обычный раздел, который имеет тип ef02 BIOS boot partition.

Если использовать не parted, который не особо понятен, а классические утилиты для работы с таблицей разделов, в случае mbr (msdos) - это fdisk, а для gpt - gdisk, хотя fdisk умеет работать и с gpt, но мы это опустим.

В примере не реальный диск, а файл, в котором создана разметка.

Если говорить о разметке MBR (msdos), то там возможно только установить флаг активности раздела, вот вывод из утилиты fdisk:

Для загрузчика grub при разметке MBR (msdos) делать раздел активным не нужно, если прописывать код загрузчика в основную загрузочную запись, т.е. вызывать утилиту grub-setup /dev/sda, а не /dev/sda1.

Но есть один нюанс, некоторые BIOS устроены так, что они не будут пытаться грузиться с диска, если на нём нет ни одного активного раздела, даже если активный раздел в принципе не нужен, так что даже в случае использования grub, которому флаг активности не нужен, возможно, придётся этот флаг всё же выставить.

Интересует статистика по BIOS boot partition / EF02 кто какой размер делал? В разрезе минимально приемлемого и влезет ли в промежуток между MBR/33 sector и 2048?


Gentoo handbook пишет что 3 mb хватит 10 венда на автопилоте делает 16 mb

А он точно тебе нужен? Озвучь конфигурацию. 1-2 Мб хватит, это костыль для 1.5 стадии GRUB всего лишь.

я как-то делал 2048 - 1мб, сейчас рекомендуют 2.


Больше 512 килобайт смысла нет делать, ну можешь с запасом сделать 640 килобайт.

И да, не путай его с ESP, первый используется для Legacy Boot (совместимость с MBR).

// И куча комментов от анонов, которые уже попутали. ☺

mord0d ★★★★★ ( 18.12.20 20:02:38 )
Последнее исправление: mord0d 18.12.20 20:03:58 (всего исправлений: 1)

Больше 512 килобайт смысла нет делать, ну можешь с запасом сделать 640 килобайт.

GRUB может не влезть. Если ТС действительно имеет в виду конфигурацию BIOS+GPT.

И куча комментов от анонов, которые уже попутали.

Ни один ничего не попутал. Для ESP 1-2 Мб не хватит в большинстве случаев, а для bios_boot как раз разумно.


Для ESP 1-2 Мб не хватит в большинстве случаев

А для 0xEF02 это как-то… много. Учитывая что оно грузится в память и до выключения/перезагрузки остаётся там.

Фсмысле?! Это ж первая стадия… или они туда все 100500 модулей пихают? о_О // Не в теме, спрашиваю вполне серьёзно, ибо не использую GRUB2.


Разуй глаза, BIOS + GPT.

Лучше чуть больше, чем переразметка или размещение нового раздела в конце диска (некрасиво).

Фсмысле?! Это ж первая стадия… или они туда все 100500 модулей пихают?

Я точно не уверен, что только первая, но помню, что лучше не меньше мегабайта, да и документация намекает, хотя и не требует:

When creating a BIOS Boot Partition on a GPT system, you should make sure that it is at least 31 KiB in size. (GPT-formatted disks are not usually particularly small, so we recommend that you make it larger than the bare minimum, such as 1 MiB, to allow plenty of room for growth.)

Иногда образ действительно получался большим. Например, когда /boot был на LVM.


Лучше чуть больше, чем переразметка

Буквально на прошлой неделе пришлось переразмечать. Все диски! Благо, все были в RAID-1, потому с переносом возиться не пришлось: вывел диск из RAID, переразметил, ввёл обратно, дождался ресильвера, вывел второй и так далее… Потому да, лучше боль.

When creating a BIOS Boot Partition on a GPT system, you should make sure that it is at least 31 KiB in size. (GPT-formatted disks are not usually particularly small, so we recommend that you make it larger than the bare minimum, such as 1 MiB, to allow plenty of room for growth.)

This partition must be larger than the bootstrap code (either /boot/gptboot for UFS or /boot/gptzfsboot for ZFS), but smaller than 545 kB since the first-stage loader will load the entire partition into memory during boot, regardless of how much data it actually contains.

Я точно не уверен, что только первая

Вторая, это я попутал. Первая — это PMBR (которая ищет и загружает вторую). Вторая не обязательно должна быть the actual bootloader, но уже должна уметь читать файловые системы, что уже обязывает хранить там модули.

В разрезе минимально приемлемого и влезет ли в промежуток между MBR/33 sector и 2048?

Это почти аж 2 мегабайта, влезут чуть ли не все модули GRUB2.

Сам core.img у меня всего 84Кб

К нему надо добавить размер необходимого минимума: модули криптухи для расшифровки /boot раздела + модули криптухи для верификации подгружаемых модулей, ядра и инитрд + публичный ключ для верификации. Если /boot раздел на LVM (нерекомендую) то еще его модули. Все вместе точно будет меньше 512Кб. У GRUB2 всего 2.1Мб модулей и образов.

Помните, сам core.img в котором находятся все модули криптухи и публичный ключ для верификации должен обязательно верифицироватся SecureBOOT (libreboot/coreboot).

Сорян, это чуть меньше 1Мб, GRUB2 со всеми необходимыми модулями и ключами влезит в 512Кб, 0.5Мб.

Читайте также: