Как определить, есть ли на ПК комбинация диска GPT и устаревшей загрузки BIOS, где загрузочный код читается из MBR?

Это довольно новые возможности, документированные в magic(5):

use
Рекурсивный вызов именованной магии, начиная с текущего смещения. Если имя именуемой функции начинается с ^ то эндианальность магии переключается; если в магии упоминается leshort например, то она рассматривается как beshort и наоборот. Этот полезно для того, чтобы избежать дублирования правил для разной эниантности.

clear
Этот тест всегда истинен и снимает флаг соответствия для данного уровня продолжения. Он предназначен для использовать вместе с тестом по умолчанию.

По "довольно новым":

2014-11-27 18:40 Christos Zoulas

    * Allow setting more parameters from the command line.
    * Split name/use and indirect magic recursion limits.

2013-04-22 11: 20 Christos Zoulas

    * The way "default" was implemented was not very useful
      because the "if something was printed at that level"
      was not easily controlled by the user, and the format
      was bound to a string which is too restrictive. Add
      a "clear" for that level keyword and make "default"
      void. This way one can do:            

            >>13    clear   x
            >>13    lelong  1       foo
            >>13    lelong  2       bar
            >>13    default x
            >>>13   lelong  x       unknown %x 

2
05.06.2019, 22:17
2 ответа

Не знаю, редко ли это, но это один из разумных способов использовать большие диски на старых машинах. Или когда системная прошивка содержит ошибки и, например, не может правильно вернуться ко второму диску при загрузке программной настройки RAID.

Во-первых, вы должны убедиться, что машина не загружается с EFI. См. «Как узнать, загружаюсь ли я с использованием UEFI? », чтобы проверить.

В Linux:

В Linux вы должны увидеть несколько индикаторов при запускеgdisk -l /dev/DISK

  1. Таблица разделов — GPT («Найден допустимый GPT с защитной MBR; используется GPT».)
  2. Существует загрузочный раздел BIOS (, указанный как код EF02 ). Именно здесь живет большая часть GRUB (, он заменяет сектора, которые в традиционной MBR находятся между загрузочным сектором и первым разделом ).

Пример с одного из моих дисков:

# gdisk -l /dev/sdd
GPT fdisk (gdisk) version 1.0.3

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/sdd: 5860533168 sectors, 2.7 TiB
Model: ST3000VN000-1HJ1
Sector size (logical/physical): 512/4096 bytes
Disk identifier (GUID): 3F3F7901-A38A-42FF-A7BA-8FBD1C35FB11
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 5860533134
Partitions will be aligned on 8-sector boundaries
Total free space is 5582 sectors (2.7 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048          259024   125.5 MiB   8300  Linux filesystem
   2          260096          517135   125.5 MiB   0700  Microsoft basic data
   3          518144      1953524128   931.3 GiB   8300  Linux filesystem
   4      1953525760      3907033263   931.5 GiB   8300  Linux filesystem
   5      3907035136      5860533134   931.5 GiB   8300  Linux filesystem
 128              34            2047   1007.0 KiB  EF02  BIOS boot partition

В Windows:

Обратите внимание на другой диск, который я быстро настроил для виртуальной машины.

Команда

diskpart's list diskпоказывает *в столбце GPT, если диск использует GPT:

DISKPART> list disk

  Disk ###  Status         Size     Free     Dyn  Gpt
  --------  -------------  -------  -------  ---  ---
  Disk 0    Online           40 GB      0 B
  Disk 1    Online           20 GB      0 B        *

К сожалению,list partition(после выбора диска с помощьюselect disk 1)два раздела отображаются как «неизвестные»:

DISKPART> list partition

  Partition ###  Type              Size     Offset
  -------------  ----------------  -------  -------
  Partition 1    Unknown           4096 KB    17 KB
  Partition 2    Unknown             19 GB  5120 KB

, но если вы детализируете их (после select partition 1), вы получите GUID типа:

DISKPART> detail partition

Partition 1
Type    : 21686148-6449-6e6f-744e-656564454649
Hidden  : Yes
Required: No
Attrib  : 0000000000000000
Offset in Bytes: 17408

и 21686148-6449-6e6f-744e-656564454649означают загрузочный раздел BIOS. (0fc63daf-8483-4772-8e79-3d69d8477de4, кстати, это общий раздел Linux ).

Либо в разделе «Управление дисками» выберите диск, выберите «Свойства» и перейдите на вкладку «Тома». Это скажет вам, является ли «стиль раздела» MBR или GPT. К сожалению, нет способа получить типы разделов из управления дисками.

1
27.01.2020, 22:08

Если у вас есть работающая установка Linux на ПК, вы можете проверить, существует ли каталог /sys/firmware/efi. Если он существует, значит, на вашем компьютере установлена ​​прошивка EFI и он не находится в режиме совместимости с BIOS. Если каталог отсутствует, машина загружается с использованием устаревшего BIOS.

Схему разбиения можно проверить с помощью fdisk. Если командаfdiskp(«распечатать таблицу разделов» )сообщает «msdos» для типа метки диска, значит, на диске имеется старая -таблица разделов MBR. Если тип метки диска — «gpt», у вас есть диск GPT.

1
27.01.2020, 22:08

Теги

Похожие вопросы