LINUX.ORG.RU

Распечатать MBR и GPT

 ,


0

1

Ищу программу, которая может просто распечатать (в читаемом виде, а не hexdump) все три таблицы разделов диска — MBR, GPT в начале и GPT в конце. И хорошо бы, чтобы её можно было просто «скармливать» на вход бинарный кусок (сектор), а программа печатала всё как есть, без анализа содержмого, типа перекрывающиеся разделы и т.д.

fdisk выдаёт какую-то компиляцию из MBR и GPT, нашёл sgdisk, который умеет отдельно MBR (опция -O) и GPT (опция -p), но он на интересующую флешку пишет только «invalid partition table», а ядро видит там два раздела. И нельзя задать какой GPT выводить.

★★★★★

распечатать

в читаемом виде

И чем оно тебе будет non-ASCII печатать?

Энкодь в base64, да печатай штатными средствами.

mord0d ★★★★★
()
[19:19] u@notebook:~> cat /boot/mbr | uuencode -
begin 644 -
M_#'`CL".V([0O`!\OAI\OQH&N>8!\Z3I`(HQ]KN^![$$."]T"']UA?9U<8G>
M@,,0XN^%]G4"S1B`^H!R"XHV=02`QH`X\G("BA2)YXIT`8M,`KL`?/8&O0>`
M="U14[NJ5;1!S1-R(('[5:IU&O;!`7056V9J`&;_=`@&4VH!:A")YK@`0NL%
M6UFX`0+-$XG\<@^!O_X!5:IU#/_COKD&ZQ&^T0;K#+[P!NL'NP<`M`[-$*R$
MP'7TZ_Y);G9A;&ED('!A<G1I=&EO;B!T86)L90!%<G)O<B!L;V%D:6YG(&]P
M97)A=&EN9R!S>7-T96T`36ES<VEN9R!O<&5R871I;F<@<WES=&5M`)"0D)"0
MD)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0
MD)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0
MD)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0
MD)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D(``````
M````````````````````````````````````````````````````````````
1````````````````````5:H`
`
end
IPR ★★★★★
()
Ответ на: комментарий от Dred

Посмотрю, но насколько я знаю, он точно не умеет искать в заданной области вторую GPT. То есть, допустим был один диск, мы его скопировали с помощью dd на другой, большего размера, первая GPT на месте, вторая где-то в середине. Там, есть анализ, но это testdisk будет лопатить весь объём диска — долго и неясно что найдёт, вдруг там где ещё похожие на GPT байты лежат.

mky ★★★★★
() автор топика

sfdisk
Можно сделать даже вот так

 sfdisk -d /dev/sda | sfdisk /dev/sdb 

чтобы таблицу разделов одного диска склонировать на другой. Очень помогает при замене дисков в raid.

adn ★★★★
()
Ответ на: комментарий от adn

Не актульано клонировать мусор. Мне нужно увидеть, что именно там записано, чтобы понять, где ошибочные данные, потом уже что-то править.

mky ★★★★★
() автор топика
Ответ на: комментарий от mky

Распечатать MBR

У тебя очень плохо с формулированием своих мыслей в текстовом представлении.

IPR ★★★★★
()
Ответ на: комментарий от Mike_RM

gdisk в MBR ничего не показывает, а в GPT показывает два раздела один около 400 байт, другой около 40 кбайт, а ядро в /proc/partition и fdisk показывают второй раздел около 200 Мбайт.

mky ★★★★★
() автор топика
Ответ на: комментарий от IPR

Мненее людей с клиповым мышлением мне не интерестно, научитесь читать хотя бы три слова подряд.

mky ★★★★★
() автор топика
Ответ на: комментарий от Mike_RM
# parted -ms /dev/sde print
Warning: The driver descriptor says the physical block size is 2048 bytes, but Linux says it is 512 bytes.
BYT;
/dev/sde:4033MB:scsi:512:512:unknown:Verbatim STORE N GO:;

Если запустить просто parted и ответить Ignore на вопрос про несоответствие 2048 и 512 байт, то получим:

Number  Start   End     Size   File system  Name   Flags
 1      2048B   6143B   4096B               Apple
 2      1931kB  2357kB  426kB               EFI

Откуда берётся:

The driver descriptor says the physical block size is 2048 bytes

я не понял, hdparm -I пишет про 512 байт, остальные утилиты аналогично.

sgdisk в режиме проверки ругается на перекрые разделов:

# sgdisk -v /dev/sde
Problem: MBR partitions 1 and 2 overlap!
Warning! Main partition table overlaps the first partition by 64 blocks!
You will need to delete this partition or resize it in another utility.

Вывод gdisk я вобще не понял:

# gdisk  /dev/sde
GPT fdisk (gdisk) version 1.0.3

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

Found valid MBR and GPT. Which do you want to use?
 1 - MBR
 2 - GPT
 3 - Create blank GPT

Your answer: 1


Command (? for help): p
Disk /dev/sde: 7876224 sectors, 3.8 GiB
Model: STORE N GO      
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 70F6F59A-04A4-4854-872B-1117D975C341
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 7876190
Partitions will be aligned on 4-sector boundaries
Total free space is 7875325 sectors (3.8 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   2            3772            4603   416.0 KiB   EF00  EFI System

Какие ″holds up to 128 entries″, если я ответил 1 (MBR)?

При этом

$ grep  ' sde' /proc/partitions
   8       64    3938112 sde
   8       65     299008 sde1
   8       66        416 sde2

Наверное, завтра пойду в направлении, указаном i-rinat'ом, на сегодя меня эта ерунда утомила.

mky ★★★★★
() автор топика
Ответ на: комментарий от mky

Ищу программу, которая может просто распечатать (в читаемом виде, а не hexdump)

Да.

просто «скармливать» на вход бинарный кусок (сектор), а программа печатала всё как есть

Да.

Какое клиповое мышление? Всё как в ОП.

IPR ★★★★★
()
Ответ на: комментарий от mky

# gdisk /dev/sde
GPT fdisk (gdisk) version 1.0.3

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

Это неправильно. На дисках с гибридной разметкой должно быть MBR: protective. Такая ситуация может возникнуть если через dd залить образ с поддержкой MBR. Тогда в начале диска останется только MBR, резервная копия GPT останется только в конце диска. В поддержку версии с dd также говорит и это:

Warning: The driver descriptor says the physical block size is 2048 bytes, but Linux says it is 512 bytes.

Так бывает когда пишут загрузочный образ например через usb-creator-gtk, там принудительно стоит запись через dd с bs=2048. Так как новые MBR разделы небольшие то шанс восстановить данные после такого dd хорошие. Начать нужно с копии GPT в конце диска (начинается с сектора 7876191).

Mike_RM
()
Последнее исправление: Mike_RM (всего исправлений: 1)
Ответ на: комментарий от IPR

Всё как в ОП.

MBR И GPT.

Вам это знакомо?

Обвалять - обвалял. Читаю дальше: в муке...

Когда это звучало со сцены с выражением, было смешно, а ваша клоунада как-то не задалась.

mky ★★★★★
() автор топика
Ответ на: комментарий от Mike_RM

Отвечал 2, вот такой вывод:

Your answer: 2
Using GPT and creating fresh protective MBR.
Warning! Main partition table overlaps the first partition by 64 blocks!
You will need to delete this partition or resize it in another utility.

Command (? for help): p
Disk /dev/sde: 7876224 sectors, 3.8 GiB
Model: STORE N GO      
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 222E42F2-5526-4869-84D1-DAC6A3E175FF
Partition table holds up to 208 entries
Main partition table begins at sector 12 and ends at sector 63
First usable sector is 64, last usable sector is 597962
Partitions will be aligned on 4-sector boundaries
Total free space is 3 sectors (1.5 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   2            3772            4603   416.0 KiB   0700  ISOHybrid1
Вывод, что касается разделов один в один совпадает, с тем, что если отвечать «1». Раздела в 300 Мбайт из /proc/partition нет.

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

mky ★★★★★
() автор топика
Ответ на: комментарий от mky

Main partition table begins at sector 12 and ends at sector 63

Эта GPT уже видимо подпорчена. Пробуйте резервную в конце диска.

Mike_RM
()
Ответ на: комментарий от mky

Попробуй fdisk с разными размерами сектора. Кто его знает, какой размер секторов был при создании таблицы разделов.

fdisk -l -b 512 /dev/sde
fdisk -l -b 1024 /dev/sde
fdisk -l -b 2048 /dev/sde
fdisk -l -b 4096 /dev/sde

Может при каком-то размере сектора покажет внятную таблицу.

iliyap ★★★★★
()
Ответ на: комментарий от iliyap

Да я уже почти всё накодил, и для MBR и для GPT, споткнулся на преобразовании utf-16 в utf-8 для вывода имён gpt-разделов — чего-то iconv() не срабатывет. Ну и crc32 для GPT ещё не проверяется.

В общем там MBR как-бы protectiv, только у раздела, который на весь объём, стоит тип (ID) равный 0x00. Это вроде как означает «Empty partition entry», но как-то утилиты в это не верят...

mky ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.