Извлечение MBR из Raspberry Pi

Я попытался извлечь MBR из моего raspberry pi (с raspbian, загруженным на SDCARD), как и на любой машине с Linux.

dd if=/dev/<devname> of=mbr.bin bs=512 count=1

Однако при выполнении file на mbr.bin я получаю следующее сообщение: -

mbr.bin: x86 boot sector; partition 1: ID=0xc, starthead 130, startsector 8192, 114688 sectors; partition 2: ID=0x83, starthead 0, startsector 122880, 15400960 sectors, code offset 0xb8

Почему написано, что это x86 boot sector?

[EDIT] Я также читал о последовательности загрузки здесь; Raspberry Pi вообще использует MBR?


person Community    schedule 06.06.2014    source источник


Ответы (1)


Почему написано, что это загрузочный сектор x86?

Потому что это. Технически даже x86 слишком широк, а совместимость с IBM PC-XT является более точной, но в наши дни MBR является одним из тех стандартов де-факто с наименьшим общим знаменателем благодаря повсеместному распространению IBM-совместимых систем на протяжении многих лет.

Raspberry Pi вообще использует MBR?

Да и нет. Поскольку MBR содержит как (16-разрядный) загрузочный код BIOS, и таблица разделов, все, что загружается не через IBM-совместимый BIOS*, заботится о последнем, но может игнорировать первое. Благодаря простоте как MBR, так и FAT форматов (учитывая 30-летнюю давность) прошивке довольно легко просто копаться в структурах данных, вытаскивать первый раздел и искать нужный файл, что и происходит многие системы, включая Pi do - цитата со страницы, на которую есть ссылка в вопросе:

Также обратите внимание, что нет раздела, помеченного как активный (загрузочный). Прошивка RPi закодирована для поиска файла bootcode.bin в первом разделе FAT32 — обычный процесс загрузки раздела MBR не выполняется.

Вся сложная настройка начальной загрузки BIOS является наследием 16-битной машины со 128 КБ ОЗУ. Теперь, благодаря EFI и GPT, наконец-то появились другие функции этой машины, такие как ROM BASIC и интерфейс аудиокассеты;)


* включая большинство ПК с архитектурой x86 в наши дни, потому что EFI избавляется от загрузки в 16-битном реальном режиме, притворяясь глупостью 8086

person Notlikethat    schedule 06.06.2014
comment
На самом деле, насколько мне известно, это просто защитная MBR, которая игнорируется любым современным загрузочным кодом и просто используется для предотвращения возни устаревшего программного обеспечения. - person Philippos; 02.02.2018