Прошивка UEFI не рекгонизирует таблицу разделов GPT

прошивка UEFI моего ASRock FM2A75 Pro4 не распознает таблицы разделов GPT на моих жестких дисках SATA, как показано в map командной оболочки EFI:

Device mapping table
  fs0     :Removable HardDisk - Alias hd15f0b blk0 
           PciRoot(0x0)/Pci(0x13,0x2)/USB(0x5,0x0)/HD(1,MBR,0x599b0b48,0x800,0x771800)
  blk0    :Removable HardDisk - Alias hd15f0b fs0 
           PciRoot(0x0)/Pci(0x13,0x2)/USB(0x5,0x0)/HD(1,MBR,0x599b0b48,0x800,0x771800)
  blk1    :HardDisk - Alias (null)
           PciRoot(0x0)/Pci(0x11,0x0)/Sata(0x1,0x0)/HD(1,MBR,0x00000000,0x1,0xffffffff)
  blk2    :HardDisk - Alias (null)
           PciRoot(0x0)/Pci(0x11,0x0)/Sata(0x2,0x0)/HD(1,MBR,0x00000000,0x1,0xffffffff)
  blk3    :BlockDevice - Alias (null)
           PciRoot(0x0)/Pci(0x11,0x0)/Sata(0x0,0x0)
  blk4    :BlockDevice - Alias (null)
           PciRoot(0x0)/Pci(0x11,0x0)/Sata(0x1,0x0)
  blk5    :BlockDevice - Alias (null)
           PciRoot(0x0)/Pci(0x11,0x0)/Sata(0x2,0x0)
  blk6    :Removable BlockDevice - Alias (null)
           PciRoot(0x0)/Pci(0x13,0x2)/USB(0x5,0x0)
  hd15f0b :Removable HardDisk - Alias fs0 blk0 
           PciRoot(0x0)/Pci(0x13,0x2)/USB(0x5,0x0)/HD(1,MBR,0x599b0b48,0x800,0x771800)

дамп начала первого диска:

00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001c0  01 00 ee fe ff ff 01 00  00 00 ff ff ff ff 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
00000200  45 46 49 20 50 41 52 54  00 00 01 00 00 02 00 00  |EFI PART........|
00000210  fc 8c f5 67 00 00 00 00  01 00 00 00 00 00 00 00  |...g............|
00000220  af d9 30 46 02 00 00 00  00 08 00 00 00 00 00 00  |..0F............|
00000230  8e d9 30 46 02 00 00 00  4d a7 05 30 c3 6b 10 4a  |..0F....M..0.k.J|
00000240  b3 de d9 8b 01 7f bd 45  02 00 00 00 00 00 00 00  |.......E........|
00000250  80 00 00 00 80 00 00 00  e2 cd 84 66 00 00 00 00  |...........f....|
00000260  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000400  28 73 2a c1 1f f8 d2 11  ba 4b 00 a0 c9 3e c9 3b  |(s*......K...>.;|
00000410  f2 68 35 6f f8 53 5f 40  b4 91 e5 eb e1 76 6a f9  |.h5o.S_@.....vj.|
00000420  00 08 00 00 00 00 00 00  ff 27 03 00 00 00 00 00  |.........'......|
00000430  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000480  79 d3 d6 e6 07 f5 c2 44  a2 3c 23 8f 2a 3d f9 28  |y......D.<#.*=.(|
00000490  ea e7 0d a6 47 50 84 48  ab 8a 73 3e b3 99 e3 a8  |....GP.H..s>....|
000004a0  00 28 03 00 00 00 00 00  8e d9 30 46 02 00 00 00  |.(........0F....|
000004b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00100000  eb 3c 90 6d 6b 66 73 2e  66 61 74 00 02 04 01 00  |.<.mkfs.fat.....|

диски были разбиты на разделы с cfdisk из util-linux и отлично работают с Linux.

выход sgdisk -v /dev/sda is:

No problems found. 0 free sectors (0 bytes) available in 0
segments, the largest of which is 0 (0 bytes) in size.
19
задан Timothy Baldwin
27.04.2023 23:27 Количество просмотров материала 2964
Распечатать страницу

2 ответа

после сравнения поведения с тем, что с parted, который я использовал ранее, кажется, багги UEFI отвергает таблицы разделов с длиной заголовка 512, который стандарт позволяет:

размер заголовка GPT в байтах. Тот HeaderSize должно быть больше или равно 92 и должно быть меньше или равно размер логического блока.

после изменения util-linux, чтобы использовать размер заголовка 92 и воссоздать мои разделы с fdisk UEFI сейчас распознает мои разделы.

0
отвечен Timothy Baldwin 2023-04-29 07:15

это "исправлено" в недавнем util-linux (по состоянию на 2.26-rc1):

Kay сообщил, что Windows 8.1 установлена не распознает GPT создан libfdisk, но parted работает так, как ожидалось.

кажется (в соответствии с заголовком hexdump), что проблема Поле ОПС HeaderSize где libfdisk использует 512 (заголовок + зарезервированного района), но расставание использует 92. Оба довольно действительны в соответствии с текущим Стандартное ЭФИ, но 92 наверное обратно совместимый.

Я также нашел места в коде, где драйвер gpt libfdisk противоречив и использует иногда все сектора и simetimes sizeof (gpt_header) только. Правильным решением является считывание всего сектора (в обнуленную память) и позже снова запишите весь сектор в устройство.

libfdisk: (gpt) очистка использование размера заголовка

0
отвечен Tom Yan 2023-04-29 09:32

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх