Bios boot partition что это
Помните те времена, когда 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 приятно выглядит и там есть поддержка мышки.
- Количество разделов: 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.
Разбивка будет выглядеть так (пардон за кривой снимок):
- Recovery (300Мб). Очевидно, что он используется для восстановления системы. Оставим как есть.
- EFI partition (100Мб). Помечается как system type (не любят в Майкрософте называть вещи своими техническими именами). Собственно сюда и пишутся загрузчики.
- MSR (128Мб, Microsoft Reserved Partition). Для меня остается загадкой, зачем он нужен. Данных там никаких нет, просто пустое место, зарезервированное для каких-то непонятных целей в будущем.
- Основной раздел. Мы его поделим на 3: 200 гигов под винду, 500 гигов для раздела под данные и остальное пространство пока оставим неразмеченным (отформатируем потом при установке Kubuntu).
Пропустим саму установку Windows, т.к. в ней все стандартно и понятно.
Теперь загрузимся с USB в Kubuntu Live.
Проверим EFI раздел:
Boot0000 — виндовый загрузчик
Boot0001 — дефолтный загрузчик
Boot0003 — флешка с Kubuntu Live
Обратите внимание, что список загрузчиков не привязан к одному физическому диску как в MBR. Он хранится в NVRAM.
Можем также сразу посмотреть, что же в этом разделе, подмонтировав его:
Там окажутся следующие файлы:
Убедились, что все хорошо. Теперь продолжаем разбивку диска (через KDE Partition Manager).
- 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 раздел, однако на результат эти ошибки не влияют.
Итак, финальная разбивка:
Теперь самое главное для правильного dual boot'а. При установке Kubuntu важно выбрать, куда установить загрузчик:
Указываем, конечно же на раздел EFI.
После завершения установки Kubuntu, заходим в систему и проверяем, какие файлы появились на efi разделе (монтировать уже не нужно):
Смотрим, как теперь выглядит список загрузчиков:
Вот как это выглядит при загрузке:
А еще эти загрузчики доступны сразу из UEFI (в старом BIOS'е такое было бы невозможно — там был выбор только диска, он просто не знал, что такое загрузчики):
Ну и напоследок: чтобы dual boot правильно работал, в Windows надо обязательно отключить fast boot. Это такая нехорошая фича, которая может привести к потере данных.
При выключении компьютера 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 - это то, что придумал ТС, откуда он это взял хз.
Deleted ( 26.12.17 18:53:06 )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
Последнее исправление: 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 он сам придумал в качестве метки
Последнее исправление: 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 немного ругнулся и установил.
Deleted ( 27.12.17 07:26:33 )и parted ругнулся, покосившись на тупого юзера, решил, что тупачку виднее, и нехотя установил.
Последнее исправление: 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Мб.
Читайте также: