Для работы с жестким диском его для начала необходимо как-то разметить, чтобы операционная система могла понять в какие области диска можно записывать информацию. Поскольку жесткие диски имеют большой объем, их пространство обычно разбивают на несколько частей — разделов диска. Каждому такому разделу может быть присвоена своя буква логического диска (для систем семейства Windows) и работать с ним можно, как будто это независимый диск в системе.

Способов разбиения дисков на разделы на сегодняшний день существует два. Первый способ — использовать MBR. Этот способ применялся еще чуть ли не с появления жестких дисков и работает с любыми операционными системами. Второй способ — использовать новую систему разметки — GPT. Этот способ поддерживается только современными операционными системами, поскольку он еще относительно молод.

Структура MBR


До недавнего времени структура MBR использовалась на всех персональных компьютерах для того, чтобы можно было разделить один большой физический жесткий диск (HDD) на несколько логических частей — разделы диска (partition). В настоящее время MBR активно вытесняется новой структурой разделения дисков на разделы — GPT (GUID Partition Table). Однако MBR используется еще довольно широко, так что посмотрим что она из себя представляет.

MBR всегда находится в первом секторе жесткого диска. При загрузке компьютера, BIOS считывает этот сектор с диска в память по адресу 0000:7C00h и передает ему управление.


Итак, первая секция структуры MBR — это секция с исполняемым кодом, который и будет руководить дальнейшей загрузкой. Размер этой секции может быть максимум 440 байт. Далее идут 4 байта, отведенные на идентификацию диска. В операционных системах, где идентификация не используется, это место может занимать исполняемый код. То же самое касается и последующих 2 байт.

Начиная со смещения 01BEh находится сама таблица разделов жесткого диска. Таблица состоит из 4 записей (по одной на каждый возможный раздел диска) размером 16 байт.

Структура записи для одного раздела:


Первым байтом в этой структуре является признак активности раздела. Этот признак определяет с какого раздела следует продолжить загрузку. Может быть только один активный раздел, иначе загрузка продолжена не будет.

Следующие три байта — это так называемые CHS-координаты первого сектора раздела.

По смещению 04h находится код типа раздела. Именно по этому типу можно определить что находится в данном разделе, какая файловая система на нем и т.п. Список зарезервированных типов разделов можно посмотреть, например, в википедии по ссылке Типы разделов.

После типа раздела идут 3 байта, определяющие CHS-координаты последнего сектора раздела.
CHS-координаты сектора расшифровываются как Cylinder Head Sector и соответственно обозначают номер цилиндра (дорожки), номер головки (поверхности) и номер сектора. Цилиндры и головки нумеруются с нуля, сектор нумеруется с единицы. Таким образом CHS=0/0/1 означает первый сектор на нулевом цилиндре на нулевой головке. Именно здесь находится сектор MBR.

Все разделы диска, за исключением первого, обычно начинаются с нулевой головки и первого сектора какого-либо цилиндра. То есть их адрес будет N/0/1. Первый раздел диска начинается с головки 1, то есть по адресу 0/1/1. Это все из-за того, что на нулевой головке место уже занято сектором MBR. Таким образом, между сектором MBR и началом первого раздела всегда есть дополнителььные неиспользуемые 62 сектора. Некоторые загрузчики ОС используют их для своих нужд.

Интересен формат хранения номера цилиндра и сектора в структуре записи раздела. Номер цилиндра и номер сектора делят между собой два байта, но не поровну, а как 10:6. То есть на номер сектора приходится младшие 6 бит младшего байта, что позволяет задавать номера секторов от 1 до 63. А на номер цилиндра отведено 10 бит — 8 бит старшего байта и оставшиеся 2 бита от младшего байта: «CCCCCCCC CCSSSSSS», причем в младшем байте находятся старшие биты номера цилиндра.
Проблема с CHS-координатами состоит в том, что с помощью такой записи можно адресовать максимум 8 Гб диска. В эпоху DOS это было приемлемо, однако довольно скоро этого перестало хватать. Для решения этой проблемы была разработана система адресации LBA (Logical Block Addressing), которая использовала плоскую 32-битную нумерацию секторов диска. Это позволило адресовать диски размером до 2Тб. Позже разрядность LBA увеличили до 48 бит, однако MBR эти изменения не затронули. В нем по-прежнему осталась 32-битная адресация секторов.

Итак, в настоящее время повсеместно используется LBA-адресация для секторов на диске и в структуре записи раздела адрес его первого сектора прописывается по смещению 08h, а размер раздела — по смещению 0Ch.

Для дисков размером до 8Гб (когда адресация по CHS еще возможна) поля структуры с CHS-координатами и LBA-адресации должны соответствовать друг другу по значению (корректно конвертироваться из одного формата в другой). У дисков размером более 8Гб значения всех трех байт CHS-координат должны быть равны FFh (для головки допускается также значение FEh).

В конце структуры MBR всегда находится сигнатура AA55h. Она в какой-то степени позволяет проверить, что сектор MBR не поврежден и содержит необходимые данные.

Расширенные разделы


Разделы, отмеченные в таблице типом 05h и 0Fh, это так называемые расширенные разделы. С их помощью можно создавать больше разделов на диске, чем это позволяет MBR. На самом деле расширенных разделов несколько больше, например есть разделы с типами C5h, 15h, 1Fh, 91h, 9Bh, 85h. В основном все эти типы разделов использовались в свое время различными операционными системами (такими как например OS/2, DR-DOS, FreeDOS) с одной и той же целью — увеличить количество разделов на диске. Однако со временем различные форматы отпали и остались только разделы с типами 05h и 0Fh. Единственное исключение — это тип 85h. Он до сих пор может использоваться в Linux для формирования второй цепочки логических дисков, скрытых от других операционных систем. Разделы с типом 05h используются для дисков менее 8Гб (где еще возможна адресация через CHS), а тип 0Fh используется для дисков больше 8Гб (и используется LBA-адресация).

В первом секторе расширенного раздела находится структура EBR (Extended Boot Record). Она во многом схожа со структурой MBR, но имеет следующие отличия:

  • В EBR нет исполняемого кода. Некоторые загрузчики могут его туда записывать, но обычно это место заполнено нулями
  • Сигнатуры диска и два неиспользуемых байта должны быть заполнены нулями
  • В таблице разделов могут быть заполнены только две первых записи. Остальные две записи должны быть заполнены нулями

В конце структуры EBR, также как и в MBR, должно находиться «магическое» значение AA55h.

В отличие от MBR, где позволяется создавать не более четырёх разделов, структура EBR позволяет организовать список логических разделов, ограниченный лишь размером раздела-контейнера (того самого, который с типом 05h или 0Fh). Для организации такого списка используется следующий формат записей: первая запись в таблице разделов EBR указывает на логический раздел, связанный с данным EBR, а вторая запись указывает на следующий в списке раздел EBR. Если данный логический раздел является последним в списке, то вторая запись в таблице разделов EBR должна быть заполнена нулями.


Формат записей разделов в EBR аналогичен формату записи в структуре MBR, однако логически немного отличается.

Признак активности раздела для разделов структуры EBR всегда будет 0, так как загрузка осуществлялась только с основных разделов диска. Координаты CHS, с которых начинается раздел используются, если не задействована LBA-адресация, также как и в структуре MBR.

А вот поля, где в режиме LBA-адресации должны находиться номер начального сектора и количество секторов раздела, в структуре EBR используются несколько иначе.


Для первой записи таблицы разделов EBR в поле начального сектора раздела (смещение 08h) записывается расстояние в секторах между текущим сектором EBR и началом логического раздела, на который ссылается запись. В поле количества секторов раздела (смещение 0Ch) в этом случае пишется размер этого логического раздела в секторах.

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

Таким образом, первая запись таблицы разделов описывает как найти, и какой размер занимает текущий логический раздел, а вторая запись описывает как найти, и какой размер занимает следующий EBR в списке, вместе со своим разделом.

Структура GPT


В современных компьютерах на смену BIOS пришла новая спецификация UEFI, а вместе с ней и новое устройство разделов на жестком диске — GUID Partition Table (GPT). В этой структуре были учтены все недостатки и ограничения, накладываемые MBR, и разработана она была с большим запасом на будущее.

В структуре GPT используется теперь только LBA-адресация, никаких CHS больше нет и никаких проблем с их конвертацией тоже. Причем под LBA-адреса отведено по 64 бита, что позволяет работать с ними без всяких ухищрений, как с 64-битными целыми числами, а также (если до этого дойдет) даст в будущем возможность без проблем расширить 48-битную LBA-адресацию до 64-битной.

Кроме того, в отличие от MBR, структура GPT хранит на диске две своих копии, одну в начале диска, а другую в конце. Таким образом, в случае повреждения основной структуры, будет возможность восстановить ее из сохраненной копии.

Рассмотрим теперь устройство структуры GPT подробнее. Вся структура GPT на жестком диске состоит из 6 частей:

LBA-адрес Размер (секторов) Назначение
LBA 0 1 Защитный MBR-сектор
LBA 1 1 Первичный GPT-заголовок
LBA 2 32 Таблица разделов диска
LBA 34 NN Содержимое разделов диска
LBA -34 32 Копия таблицы разделов диска
LBA -2 1 Копия GPT-заголовка

Защитный MBR-сектор


Первый сектор на диске (с адресом LBA 0) — это все тот же MBR-сектор. Он оставлен для совместимости со старым программным обеспечением и предназначен для защиты GPT-структуры от случайных повреждений при работе программ, которым про GPT ничего не известно. Для таких программ структура разделов будет выглядеть как один раздел, занимающий все место на жестком диске.

Структура этого сектора ничем не отличается от обычного сектора MBR. В его таблице разделов дожна быть создана единственная запись с типом раздела 0xEE. Раздел должен начинаться с адреса LBA 1 и иметь размер 0xFFFFFFFF. В полях для CHS-адресации раздел соответственно должен начинаться с адреса 0/0/2 (сектор 1 занят под саму MBR) и иметь конечный CHS-адрес FF/FF/FF. Признак активного раздела должен иметь значение 0 (неактивный).

При работе компьютера с UEFI, данный MBR-сектор просто игнорируется и никакой код в нем также не выполняется.

Первичный GPT-заголовок


Этот заголовочный сектор содержит в себе данные о всех LBA-адресах, использующихся для разметки диска на разделы.

Структура GPT-заголовка:
Смещение (байт) Размер поля (байт) Пример заполнения Название и описание поля
0x00 8 байт 45 46 49 20 50 41 52 54 Сигнатура заголовка. Используется для идентификации всех EFI-совместимых GPT-заголовков. Должно содержать значение 45 46 49 20 50 41 52 54, что в виде текста расшифровывается как "EFI PART".
0x08 4 байта 00 00 01 00 Версия формата заголовка (не спецификации UEFI). Сейчас используется версия заголовка 1.0
0x0C 4 байта 5C 00 00 00 Размер заголовка GPT в байтах. Имеет значение 0x5C (92 байта)
0x10 4 байта 27 6D 9F C9 Контрольная сумма GPT-заголовка (по адресам от 0x00 до 0x5C). Алгоритм контрольной суммы — CRC32. При подсчёте контрольной суммы начальное значение этого поля принимается равным нулю.
0x14 4 байта 00 00 00 00 Зарезервировано. Должно иметь значение 0
0x18 8 байт 01 00 00 00 00 00 00 00 Адрес сектора, содержащего первичный GPT-заголовок. Всегда имеет значение LBA 1.
0x20 8 байт 37 C8 11 01 00 00 00 00 Адрес сектора, содержащего копию GPT-заголовка. Всегда имеет значение адреса последнего сектора на диске.
0x28 8 байт 22 00 00 00 00 00 00 00 Адрес сектора с которого начинаются разделы на диске. Иными словами — адрес первого раздела диска
0x30 8 байт 17 C8 11 01 00 00 00 00 Адрес последнего сектора диска, отведенного под разделы
0x38 16 байт 00 A2 DA 98 9F 79 C0 01 A1 F4 04 62 2F D5 EC 6D GUID диска. Содержит уникальный идентификатор, выданный диску и GPT-заголовку при разметке
0x48 8 байт 02 00 00 00 00 00 00 00 Адрес начала таблицы разделов
0x50 4 байта 80 00 00 00 Максимальное число разделов, которое может содержать таблица
0x54 4 байта 80 00 00 00 Размер записи для раздела
0x58 4 байта 27 C3 F3 85 Контрольная сумма таблицы разделов. Алгоритм контрольной суммы — CRC32
0x5C 420 байт 0 Зарезервировано. Должно быть заполнено нулями

Система UEFI проверяет корректность GPT-заголовка, используя контрольный суммы, вычисляемые по алгоритму CRC32. Если первичный заголовок поврежден, то проверяется контрольная сумма копии заголовка. Если контрольная сумма копии заголовка правильная, то эта копия используется для восстановления информации в первичном заголовке. Восстановление также происходит и в обратную сторону — если первичный заголовок корректный, а копия неверна, то копия восстанавливается по данным из первичного заголовка. Если же обе копии заголовка повреждены, то диск становится недоступным для работы.

У таблицы разделов дополнительно существует своя контрольная сумма, которая записывается в заголовке по смещению 0x58. При изменении данных в таблице разделов, эта сумма рассчитывается заново и обновляется в первичном заголовке и в его копии, а затем рассчитывается и обновляется контрольная сумма самих GPT-заголовков.

Таблица разделов диска


Следующей частью структуры GPT является собственно таблица разделов. В настоящее время операционные системы Windows и Linux используют одинаковый формат таблицы разделов — максимум 128 разделов, на каждую запись раздела выделяется по 128 байт, соответственно вся таблица разделов займет 128*128=16384 байт, или 32 сектора диска.

Формат записи раздела:
Смещение (байт) Размер поля (байт) Пример заполнения Название и описание поля
0x00 16 байт 28 73 2A C1 1F F8 D2 11 BA 4B 00 A0 C9 3E C9 3B GUID типа раздела. В примере приведен тип раздела "EFI System partition". Список всех типов можно посмотреть здесь
0x10 16 байт C0 94 77 FC 43 86 C0 01 92 E0 3C 77 2E 43 AC 40 Уникальный GUID раздела. Генерируется при создании раздела
0x20 8 байт 3F 00 00 00 00 00 00 00 Начальный LBA-адрес раздела
0x28 8 байт CC 2F 03 00 00 00 00 00 Последний LBA-адрес раздела
0x30 8 байт 00 00 00 00 00 00 00 00 Атрибуты раздела в виде битовой маски
0x38 72 байта EFI system partition Название раздела. Unicode-строка длиной 36-символов

Атрибуты раздела, записываемые по смещению 0x30 могут иметь следующие значения битов:
бит 0 Указывает необходимость раздела для функционирования системы. OEM-разработчики могут таким образом защищать свои разделы от перезаписи дисковыми утилитами
бит 60 Помечает раздел как доступный только для чтения. Используется только для "Microsoft Basic Data Partition" с типом {EBD0A0A2-B9E5-4433-87C0-68B6B72699C7}
бит 62 Помечает раздел как скрытый. Используется только для "Microsoft Basic Data Partition" с типом {EBD0A0A2-B9E5-4433-87C0-68B6B72699C7}
бит 63 Предотвращает автоматическое назначение буквы диска данному разделу. Используется только для "Microsoft Basic Data Partition" с типом {EBD0A0A2-B9E5-4433-87C0-68B6B72699C7}

С оставшимися частями разметки все понятно и без подробного описания. Содержимое разделов — говорит само за себя. Копия таблицы разделов — тоже понятно, хранит копию таблицы разделов. Ну и последний сектор диска — это копия GPT-заголовка.

Комментарии (29)


  1. geher
    19.01.2018 09:13

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


    1. genew Автор
      19.01.2018 09:39

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


  1. iZENfire
    19.01.2018 12:56

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


    1. AntonAlekseevich
      19.01.2018 13:34

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


  1. vdem
    19.01.2018 13:49

    А как начинается собственно загрузка ОС из GPT? По-старинке первый сектор раздела загрузочный? Сомнительно. И какой раздел в GPT считается загрузочным?


    1. genew Автор
      19.01.2018 13:54

      В UEFI-системах загрузчики находятся в разделе с типом «EFI system partition». Программа UEFI может считывать с него файлы загрузчиков ОС и запускать их.


      1. vdem
        19.01.2018 14:01

        Т.е. она разбирается в разных файловых системах и названиях файлов загрузчиков различных ОС? Или все же есть какой-то стандарт, например N первых секторов, и куда они загружаются в память? Просто про MBR это написано в статье, но это я сам делал когда-то, а про загрузку из GPT толком непонятно, как и вообще UEFI — ИМХО слишком уж наворочено.


        1. genew Автор
          19.01.2018 14:35

          Тип файловой системы для раздела «EFI system partition» — только FAT. Насколько я понял, поддерживаются любые модификации, от FAT12 до FAT32. Названия файлов загрузчиков ОС тоже должны соответствовать определенному формату, тогда UEFI их распознает. Загрузка UEFI действительно выглядит наворочено, но на самом деле она стала более высокоуровневой. Не надо больше прописывать специальные загрузочные секторы на диск, достаточно положить файл загрузчика в корень диска.


          1. en1gma
            19.01.2018 15:02

            ну не совсем так…
            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.


          1. vdem
            19.01.2018 15:05

            Ясно, спасибо.


        1. mclion
          20.01.2018 11:47

          Все намного проще — старенький BIOS просто грузит первый сектор, проверяет 55AA в конце сектора и запускает полученный код. Все. BIOS больше ничего про диск не знает.
          Дальше уже код загрузчика должен разобатся во всех этих CHS/LBA/GPT и найти загрузочную партицию.
          Итого — максимум совместимости, минимум наворотов.


          1. vdem
            20.01.2018 11:57

            Я это всё прекрасно знаю, читайте внимательнее. Вопрос был про загрузку с UEFI из GPT.


    1. iZENfire
      19.01.2018 23:44

      Так как в классическом BIOS нет определения для GPT-структур в UEFI-варианте загрузки, то код из псевдо-MBR области GPT начинает работать первым. И, таким образом, передаёт управление коду из раздела GPT, имеющим тип «freebsd-boot». Размер gptboot — 60 килобайт, размер gptzfsboot — 85 килобайт. Один из этих интеллектуальных загрузчиков уже умеет читать данные из системного GPT-раздела — в нём уже есть более интеллектуальный загрузчик с интерпретатором команд.

      Что касается загрузки ОС с классических носителей (MBR) и с UEFI/GPT, то она во FreeBSD тоже поддерживается.


  1. en1gma
    19.01.2018 14:17

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

    Один и тот же диск с Windows to Go (в том числе и x86) как-то спокойно грузится, что с BIOS-системы (в том числе с CSM), что с UEFI-системы.


    1. mikhaylovns
      19.01.2018 18:38

      И, например, загрузочная флешка Clonezilla live, отформатированная в FAT32, грузится как BIOS-ом, так UEFI-ем.

      При работе компьютера с UEFI, данный MBR-сектор просто игнорируется и никакой код в нем также не выполняется.

      А при работе компьютера с BIOS как раз и выполняется записанный в нем код…


      1. en1gma
        19.01.2018 21:57

        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.


        1. behindyou
          20.01.2018 11:46

        1. Vitalley
          23.01.2018 00:45

          Мне вот тоже интересно, какие программы могут корректно работать с Hybrid MBR и как заставить винду ставится нормально на этоту таблицу разделов7


  1. legolegs
    20.01.2018 11:46

    Недавно видел любопытный вопрос — «как уменьшить GPT» — не какой-то раздел на GPT, а всю разметку, передвигая копию GPT ближе к началу. Это нужно, например, перед переездом на носитель меньшего размера или при скукоживании диска виртуалки.

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


    1. AntonAlekseevich
      21.01.2018 10:23

      Недавно видел любопытный вопрос — «как уменьшить 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.


      1. legolegs
        22.01.2018 00:02

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


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

        Что самое печальное, такие задачи людям-то трудно объяснить, а уж гуглить и вовсе нереально :(


  1. CaptainFlint
    20.01.2018 13:24

    Название раздела. Unicode-строка длиной 36-символов
    Не Unicode, а UTF-16LE. Unicode — это просто стандарт, а тут важна конкретная кодировка.


  1. gresolio
    20.01.2018 17:48

    Полезный документ по теме: MBR_GPT_cheatsheet.pdf от Michael Wilkinson
    Также у него есть про NTFS и FAT: www.writeblocked.org/resources/


  1. DRDOS
    21.01.2018 00:57

    Все хорошо! Но почему Windows 10не хочет ставиться на GPT?
    За год GPT падал, 7 раз!!! UEFI так же глючит, Вернулся, На MBR и все проблемы пропали!


    1. vdem
      21.01.2018 10:04

      Может прошивку BIOS обновить надо?


    1. lojcin
      21.01.2018 17:25

      Что значит не хочет ставиться(устанавливаться) и GTR падал раз 7?
      p.s. У меня установлена почти от начала появления десятой, переустанавливал только три раза: самый первый инсайдерский и самый последний Windows 10 Fall Creators Update (версия 1709) на сегодня версия 16299,192, так как Microsoft обновляет. Один раз из-за своих кривых рук, а так по поводу UFI(GRT) не жалуюсь.
      Может проблема в чём-то у вашего компьютера другом.


      1. DRDOS
        22.01.2018 04:02

        Ну во первых, стандартная ситуация. При установке любой версии как обычной так и инсайдерской! Появляется сообщение — Выбранный диск имеет стиль разделов GPT- и всё, дальше танцы с бубном. Через MBR… С UEFI постоянно сбивается загрузка. Особенно когда у меня на втором диске стояла инсайдерска версия. Практически после каждой установки что нибудь да накрывалось.
        Особенно бесит когда при включенном UEFI начинают в биосе плодится DVD ROM ы (иногда до 8 штук) и и загрузочные разделы — windows.
        При этом в ручную, (через выбор жесткого диска при загрузке по F8 :) ), тоже становиться невозможно загрузиться!
        Особенно бесит то, что если система стоит на С (один физ диск) а накрывается диск Н (другой физ. диск). То загрузка падает, так что и утилиты Winows не могут восстановить. А сторонние и подавно.


        1. lojcin
          22.01.2018 11:08

          При этом в ручную, (через выбор жесткого диска при загрузке по 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


  1. nehrung
    22.01.2018 12:01

    В комментариях перечислено немало проблем от UEFI и GPT. Кроме того, для работы с ними пока нет простых и понятных обычному пользователю инструментов — аналогов тех, которые были для MBR.
    По этой причине я пока продолжаю всеми правдами и неправдами применять MBR, и даже «десятку» устанавливаю на MBR, обходя сопротивление штатного инсталлятора. Знатоки, ответьте, делается ли что-нибудь для преодоления этих проблем, и появился ли инструментарий для UEFI и GPT, столь же удобный, какой во множестве был для MBR. Спрашиваю потому, что в известном, популярном и очень удобном инструментальном пакете утилит 2k10 для одного лишь ремонта загрузки есть с десяток разных программ, а для UEFI и GPT там нет ничего.