Pull to refresh

Comments 32

Еще можно заметить, что когда диски были маленькими, структура CHS точно отражала физическую геометрию диска.
Потом диски стали больше, но количество магнитных головок при этом практически менялось в очень маленьких пределах, редко достигая восьми и никогда не достигая предельных 256. В результате получилось, что под головки выделено слишком много, а для секторов и цилиндров не хватает. Потому геометоия диска стала виртуальной (головок показывали больше, чем их было физически). Потом подтянулись диски с переменным количеством секторов на дорожке, механизм релокации поврежденных секторов, и структурп CHS вообще утратила связь с физической реальностью.з
Не знаю, использовались ли когда либо CHS для SSD, для них эта структура вообще стала бессмысленной по причине отсутствия цилиндров и головок как класса.

Совершенно верно. Не стал про это упоминать, так как немного не по теме. Но в википедии про это есть статья, и там более подробно расписаны правила формирования CHS-адреса: en.wikipedia.org/wiki/Logical_block_addressing

Для загрузки операционной системы FreeBSD с GPT-раздела необходимо записать в область MBR специальный псевдо-MBR загрузчик (pMBR), который передаст управление на загрузчик gbtboot или gptzfsboot, находящийся на первом разделе GPT. Далее, более интеллектуальный загрузчик может загрузить операционную систему с раздела с файловой системой. И всё это работает без UEFI на классическом BIOS PC.

Вроде примерно тоже самое делает и GRUB2. Только для него придумали GRUB BIOS Boot партицию.

А как начинается собственно загрузка ОС из GPT? По-старинке первый сектор раздела загрузочный? Сомнительно. И какой раздел в GPT считается загрузочным?
В UEFI-системах загрузчики находятся в разделе с типом «EFI system partition». Программа UEFI может считывать с него файлы загрузчиков ОС и запускать их.
Т.е. она разбирается в разных файловых системах и названиях файлов загрузчиков различных ОС? Или все же есть какой-то стандарт, например N первых секторов, и куда они загружаются в память? Просто про MBR это написано в статье, но это я сам делал когда-то, а про загрузку из GPT толком непонятно, как и вообще UEFI — ИМХО слишком уж наворочено.
Тип файловой системы для раздела «EFI system partition» — только FAT. Насколько я понял, поддерживаются любые модификации, от FAT12 до FAT32. Названия файлов загрузчиков ОС тоже должны соответствовать определенному формату, тогда UEFI их распознает. Загрузка UEFI действительно выглядит наворочено, но на самом деле она стала более высокоуровневой. Не надо больше прописывать специальные загрузочные секторы на диск, достаточно положить файл загрузчика в корень диска.
ну не совсем так…
uefi будет искать загрузчики по всем разделам, для которых у неё есть драйвера, по всем накопителям, которые она распознала…
посмотреть на что есть драйвера можно с помощью команды «drivers» в EFI Shell

ну и базово uefi знает только efi file system (раздел 12.3 File System Format стандарта)
The file system supported by the Extensible Firmware Interface is based on the FAT file system. EFI defines a specific version of FAT that is explicitly documented and testable. Conformance to the EFI specification and its associate reference documents is the only definition of FAT that needs to be implemented to support EFI. To differentiate the EFI file system from pure FAT, a new partition file system type has been defined.

и, оттуда же:
EFI encompasses the use of FAT32 for a system partition, and FAT12 or FAT16 for removable media.
Все намного проще — старенький BIOS просто грузит первый сектор, проверяет 55AA в конце сектора и запускает полученный код. Все. BIOS больше ничего про диск не знает.
Дальше уже код загрузчика должен разобатся во всех этих CHS/LBA/GPT и найти загрузочную партицию.
Итого — максимум совместимости, минимум наворотов.
Я это всё прекрасно знаю, читайте внимательнее. Вопрос был про загрузку с UEFI из GPT.
Так как в классическом BIOS нет определения для GPT-структур в UEFI-варианте загрузки, то код из псевдо-MBR области GPT начинает работать первым. И, таким образом, передаёт управление коду из раздела GPT, имеющим тип «freebsd-boot». Размер gptboot — 60 килобайт, размер gptzfsboot — 85 килобайт. Один из этих интеллектуальных загрузчиков уже умеет читать данные из системного GPT-раздела — в нём уже есть более интеллектуальный загрузчик с интерпретатором команд.

Что касается загрузки ОС с классических носителей (MBR) и с UEFI/GPT, то она во FreeBSD тоже поддерживается.
А что нужно записать в Protective MBR, чтобы BIOS-система могла грузить windows x64 (nt6+)? В pbr каждого раздела bootmgr boot record.

Один и тот же диск с Windows to Go (в том числе и x86) как-то спокойно грузится, что с BIOS-системы (в том числе с CSM), что с UEFI-системы.
И, например, загрузочная флешка Clonezilla live, отформатированная в FAT32, грузится как BIOS-ом, так UEFI-ем.
При работе компьютера с UEFI, данный MBR-сектор просто игнорируется и никакой код в нем также не выполняется.

А при работе компьютера с BIOS как раз и выполняется записанный в нем код…
mikhaylovns, вы случайно не математик? А то,
И дал совершенно верный, но совершенно бесполезный ответ.


мой фактический вопрос: как при gpt подменить (желательно в «автоматическом» режиме и, если возможно, штатными средствами) в первом секторе на Protective MBR на Hybrid MBR, который укажет на «активность» esp так, чтобы bios это понял, а uefi не ругался.
а дальше всё просто: у esp в pbr под виндой и так по умолчанию bootmgr boot record. а загрузчики в esp спокойно «создаются» bcdboot с ключём /f ALL.

ну а Clonezilla вообще не пример: syslinux для bios, grub для uefi (а могли бы ядро c efi-stub собрать), всё файлы образа меньше 4gb, система в squashfs. всё банально для мира *nix.
UFO just landed and posted this here
Мне вот тоже интересно, какие программы могут корректно работать с Hybrid MBR и как заставить винду ставится нормально на этоту таблицу разделов7
Недавно видел любопытный вопрос — «как уменьшить GPT» — не какой-то раздел на GPT, а всю разметку, передвигая копию GPT ближе к началу. Это нужно, например, перед переездом на носитель меньшего размера или при скукоживании диска виртуалки.

Выяснилось, что никак нельзя, по крайней мере parted и fdisk отказывались верить, что на 500гб диске может быть GPT от терабайтного. Надо было попробовать gdisk, но я тогда запамятовал про неё. А вот с MBR такой проблемы бы не было вовсе, ей размер диска вообще до лампочки.
Недавно видел любопытный вопрос — «как уменьшить GPT» — не какой-то раздел на GPT, а всю разметку, передвигая копию GPT ближе к началу.

У тебя есть два варианта сжатия GPT и оба не трогают резервную область:


  1. Мигрирование


    • Сожми разделы на основном диске
    • Скопируй всю таблицу разделов без резервных областей
    • Fdisk'ом сделай бэкап разметки, он скопирует их в соответствующие позиции
    • Потом копируй разделы, раз уж мигрируешь на носитель меньшего объема

  2. Сжатие без резервной области
    • Сожми разделы
      Лучше после этого сделать Backup P/HMBR+GPT, но не в последние области
    • Затри нулями последние 34 блока по 512 байт диска
      Если вдруг убьешь разметку восстанавливай из резервной копии

А вот с MBR такой проблемы бы не было вовсе, ей размер диска вообще до лампочки.

У MBR нет резервных областей, но ничто не мешает тебе их сделать в конце диска.
А насчет размера диска, а точнее его максимальный размер составляет 4 TiB - 1 B если брать в расчет unsigned int, либо 2 TiB - 1 B если брать в расчет что используется signed int.

У тебя есть два варианта сжатия GPT и оба не трогают резервную область:


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

Что самое печальное, такие задачи людям-то трудно объяснить, а уж гуглить и вовсе нереально :(
Название раздела. Unicode-строка длиной 36-символов
Не Unicode, а UTF-16LE. Unicode — это просто стандарт, а тут важна конкретная кодировка.
Все хорошо! Но почему Windows 10не хочет ставиться на GPT?
За год GPT падал, 7 раз!!! UEFI так же глючит, Вернулся, На MBR и все проблемы пропали!
Может прошивку BIOS обновить надо?
Что значит не хочет ставиться(устанавливаться) и GTR падал раз 7?
p.s. У меня установлена почти от начала появления десятой, переустанавливал только три раза: самый первый инсайдерский и самый последний Windows 10 Fall Creators Update (версия 1709) на сегодня версия 16299,192, так как Microsoft обновляет. Один раз из-за своих кривых рук, а так по поводу UFI(GRT) не жалуюсь.
Может проблема в чём-то у вашего компьютера другом.
Ну во первых, стандартная ситуация. При установке любой версии как обычной так и инсайдерской! Появляется сообщение — Выбранный диск имеет стиль разделов GPT- и всё, дальше танцы с бубном. Через MBR… С UEFI постоянно сбивается загрузка. Особенно когда у меня на втором диске стояла инсайдерска версия. Практически после каждой установки что нибудь да накрывалось.
Особенно бесит когда при включенном UEFI начинают в биосе плодится DVD ROM ы (иногда до 8 штук) и и загрузочные разделы — windows.
При этом в ручную, (через выбор жесткого диска при загрузке по F8 :) ), тоже становиться невозможно загрузиться!
Особенно бесит то, что если система стоит на С (один физ диск) а накрывается диск Н (другой физ. диск). То загрузка падает, так что и утилиты Winows не могут восстановить. А сторонние и подавно.

При этом в ручную, (через выбор жесткого диска при загрузке по F8 :) ), тоже становиться невозможно загрузиться!

Как оказалось, в win10 убрали по-умолчанию возможность при старте винды зайти в безопасный режим ( safe-mode ). Теперь, чтобы получить эту возможность, надо на РАБОТАЮЩЕЙ винде, т.е заранее, выполнить от имени администратора команду
bcdedit /set {default} bootmenupolicy legacy
И только после таких манипуляций старый добрый F8 даст возможность попасть в меню выбора старта системы.

Лучше всего это сделать таким пакетным файлом запущенным от имени администратора (команда displaybootmenu из практики не очень нужна но ее рекомендуют тоже задать):
echo off
bcdedit /set {bootmgr} displaybootmenu yes
bcdedit /set {default} bootmenupolicy legacy
timeout 20
exit
В комментариях перечислено немало проблем от UEFI и GPT. Кроме того, для работы с ними пока нет простых и понятных обычному пользователю инструментов — аналогов тех, которые были для MBR.
По этой причине я пока продолжаю всеми правдами и неправдами применять MBR, и даже «десятку» устанавливаю на MBR, обходя сопротивление штатного инсталлятора. Знатоки, ответьте, делается ли что-нибудь для преодоления этих проблем, и появился ли инструментарий для UEFI и GPT, столь же удобный, какой во множестве был для MBR. Спрашиваю потому, что в известном, популярном и очень удобном инструментальном пакете утилит 2k10 для одного лишь ремонта загрузки есть с десяток разных программ, а для UEFI и GPT там нет ничего.
UFO just landed and posted this here

В ArchLinux'е ядро может быть запущено без вообще какого либо загрузчика, ибо определяется как MZ PE с сигнатурой субсистемы EFI Application.
У Debian-подобных и RHEL-подобных пока будет использоваться GRUB. (Ибо это Legacy)


P.S. Если я ошибаюсь поправьте пожалуйста.

UFO just landed and posted this here
Sign up to leave a comment.

Articles