Дано:

===MBR INFO===
MBR SECTOR NAME             BYTES
code area                   440(max. 446)
disk signature (optional)   4
Usually nulls; 0x0000       2
Table of primary partitions 64(Four 16-byte entries, IBM partition table scheme)
MBR signature;0xAA55        2

MBR, total size: 446 + 64 + 2 = 512

Я считаю , что дд команда для копирования JUST 64 байт таблицы разделов будет выглядеть так :

dd obs=2 seek=223 count=32 if=/path/to/some_mbr.bin of=/dev/sda

Это правильно,

и / или есть ли лучший способ?

2 ответа2

2

Если some_mbr.bin является полным mbr, вам также нужно пропустить код во входном файле.

dd bs=1 if=/path/to/some_mbr.bin of=/dev/sda skip=446 seek=446 count=64

Конечно, вы можете сделать это также с помощью vi -b /path/to/some_mbr.bin /dev/sda с помощью yank и put (если вы решитесь).

0

Вы пробовали это? Я только что сделал, и выходной файл был 16 КБ, а не 64 байта (попробуйте просмотреть справочную страницу, на которую вы ссылались, и значения obs и ibs).

Попробуйте установить для размера блока (как для чтения, так и для записи) значение 2 и пропустите чтение нежелательных входных данных, а не чтение всего этого и только запись того, что вы хотите.

Таким образом, вы бы получили что-то вроде:

дд бс = 2 пропустить = 223 кол = 32 если =/ путь / к / some_mbr.bin из =/ dev / sda

Также было бы легче читать, если бы у вас был размер блока 1, а не 2, и это означало бы, что в вашей голове не будет больше удваивающихся и делящихся пополам чисел.

Я попытался бы прочитать mbr и записать его в файл и проверить с помощью программы просмотра в шестнадцатеричном формате, прежде чем набраться смелости, чтобы написать в mbr.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .