Как написать защитную MBR в Windows?

506
Peter Westlake

У меня есть UEFI-машина с CentOS на одном диске и Windows 2016 на другом. Установщик Windows записывает защитную MBR GPT, но он точно не соответствует стандарту UEFI, как описано здесь . Он записывает MBR с одним разделом в соответствии со стандартом, но затем создает последний сектор 2 ^ 32-1 вместо фактического размера диска.

Это не проблема, пока я не попытаюсь использовать sgdisk для сохранения таблицы разделов и последующего восстановления. Плохая цифра для размера смущает вещи, и это заканчивается повреждением MBR. В CentOS я могу предотвратить это, используя gdisk для написания новой защитной MBR. Тем не менее, было бы удобно, если бы я мог сделать это из Windows. Есть ли способ?

3
Ваш диск больше 2,2 ТБ? harrymc 6 лет назад 1
Нет, это меньше. Я подозреваю, что это является причиной проблемы, хотя я не могу доказать это. Peter Westlake 6 лет назад 0
Это не может вызвать проблемы. Какой это диск? harrymc 6 лет назад 0
A Toshiba DT01ACA050, размер 1953525168 секторов, 931,5 ГБ. Если я использую gedit для написания новой защитной MBR, она использует 1953525167 для конечного сектора, а затем sgdisk для сохранения и восстановления. Peter Westlake 6 лет назад 0
Это хуже, чем вы думаете: DT01ACA050 получил свое название, потому что он имеет 500 ГБ. Если бы он имел 1 ТБ, он был бы назван DT01ACA100 ([ссылка] (https://toshiba.semicon-storage.com/us/product/storage-products/client-hdd/dt01acaxxx.html)). С этим диском что-то очень подозрительно - ему удается вводить операционные системы в заблуждение относительно его емкости. Это все еще на гарантии? harrymc 6 лет назад 0
Извините, я смотрел не на ту машину! Это HUS722T1TALA600, который я считаю 1 ТБ. Peter Westlake 6 лет назад 0
Теперь еще хуже - см. Мой ответ. harrymc 6 лет назад 0
Да, это была проблема, о которой я говорил в вопросе, подробно изложенном по ссылке. Итак, вопрос в том, существует ли Windows-эквивалент gdisk, который может написать корректную защитную MBR? Peter Westlake 6 лет назад 0
Смотрите дополнение к моему ответу. harrymc 6 лет назад 0

1 ответ на вопрос

2
harrymc

Поскольку диск автора всего 1 ТБ, мой ответ ниже не применим.

Я обнаружил очень удивительный факт в статье «Защитная MBR GPT и таблица разделов» :

Windows 7 всегда заполняет это поле значением 0xFFFFFFFF, хотя в спецификации UEFI указано, что для дисков объемом до 2,2 ТБ следует «установить размер диска минус один».

И это то, что отмечено в сноске:

Ссылка и полная цитата: Спецификация унифицированного расширяемого микропрограммного интерфейса, версия 2.3.1, исправления C, 27 июня 2012 г., которая изложена в главе 5 «Расположение дисков таблицы разделов (GPT) GUID», раздел 5.2.3, «Защитная MBR», таблица 15, «SizeInLBA», на стр. 100: «Установите размер диска минус один. Установите значение 0xFFFFFFFF, если размер диска слишком велик для представления в этом поле». Поскольку Microsoft использует ту же запись для дисков объемом менее 2,2 ТБ, что и для дисков объемом более 2,2 ТБ, они не соответствуют спецификации UEFI для SizeInLBA .

Так что это тот случай, когда Microsoft решила игнорировать стандарт, и с этим ничего нельзя поделать. Решением может быть выделение разделов в Linux.

Если вы ищете утилиту стороннего производителя под Windows, см. Статью Best Free Partition Management Software, в которой перечислены бесплатные сторонние утилиты, которые могут не игнорировать стандарт.


(Старый ответ)

Я думаю, что ваш диск должен быть больше, чем 2,2 ТБ, что является максимальным размером для MBR.

Защитный MBR (или любой MBR) ограничен этим размером. Это не может дать большее число, потому что поле в MBR, которое содержит размер раздела, имеет только 32 бита.

Это ограничение стало одной из причин, по которым GPT стал необходим, когда на рынок поступили диски размером более 2,2 ТБ.

Downvote. Зачем ? harrymc 6 лет назад 1
Да, это раздражает, не так ли ?! Первый раз я вижу, как один из «настоящих» суперпользователей жалуется на это. Я хотел бы, чтобы могла быть обязательная (анонимная) причина для понижения голосов ... вздох Может быть, я должен предложить это в мета ?! PS. Я не был downvoter ... Albin 6 лет назад 0
@Albin: Такие меры обсуждались на Meta, но никто никогда не соглашался ни с чем. harrymc 6 лет назад 0
@ Альбин - я предложил это пару лет назад, но в этом было отказано. Я уверен, что я не единственный, кто сделал это. AFH 6 лет назад 0
@AFH Спасибо, я сделаю небольшое исследование. Ребята, вас заинтересовало бы открытие чата, чтобы обсудить это дальше, или вы отказались от этого? Albin 6 лет назад 0
@Albin: я сдался очень давно. Во всяком случае, я думаю, что SU Meta не подходящее место для изменений сайта. Это делается на более высоком уровне в иерархии StackOverflow. Может быть, так мета, но шансы невелики. harrymc 6 лет назад 0
@Albin - [Это] (https://meta.superuser.com/questions/8706/penalty-for-unexplained-down-votes) было моим представлением, которое я впоследствии принял как дубликат, но я получил пару интересных комментарии до того, как дубликат был помечен, поэтому я не цитировал дубликат. AFH 6 лет назад 0
@AFH спасибо за указатель! Albin 6 лет назад 0
@AFH: Интересная и убедительная тщетность. harrymc 6 лет назад 0