私のMBRコードにどのような手順があるかを確認する

私のMBRコードにどのような手順があるかを確認する

私はMacbook Proでパーティショニング/デュアルブートをたくさんしています。 Mac OS XとUbuntu 12.04がインストールされ、GrubがUbuntuパーティションにインストールされています。

知りたいです。私のMBRのコード(最初の446バイト)とは何ですか? MacはEFIとGUIDパーティションを使用しているため、MBRは保護/ハイブリッドMBRです(私の場合はハイブリッドMBRでした)。

Q:MBRでプログラムを識別する方法(16進ダンプ基準)?どのような署名がありますか?たわごとだと思います。しかし、私は一つ作りました。16進ダンプ私が見つけたコードと一致しません。この記事Grub MBR(「ステップ1」)コードについて詳しく説明しています。

編集:私はEFIブートマネージャプログラムrEFIndを実行しています。これはEFIアプリケーションなので、私のEFIシステムパーティションにあります。プログラムは起動後すぐに実行されますが、MBRの446バイトにコードを配置しないようです。

EDIT2:デュアルブート用にWindowsもインストールしたことを追加する必要があります。

答え1

答えを見つけたようです。 Windowsのスタートコードだと思います。 hexdump("Invalid partition table.Error loading operating system.Missing operating system.")で読むことができるASCIIに基づいてGoogle検索を実行し、Windowsブートローダーを議論するサイトを見つけることができました。私の16進ダンプはWindows 7ブートローダと一致します。詳しくはこちらをご覧ください。http://thestarman.pcministry.com/asm/mbr/W7MBR.htm#CODE。過去に私のコンピュータにWindows 7をインストールしていたので、これは意味があります。

答え2

ms-sys実用的な事項さまざまなMBRおよびPBRブートコードバリアントを認識できるだけでなく、必要に応じて作成することもできます。

Usage:
        ms-sys [options] [device]
Options:
    -1, --fat12     Write a FAT12 floppy boot record to device
    -2, --fat32nt5  Write a FAT32 partition NT5.0 boot record to device
    -8, --fat32nt6  Write a FAT32 partition NT6.0 boot record to device
    -x, --exfatnt6  Write a EXFAT partition NT6.0 boot record to device
    -e, --fat32pe   Write a FAT32 partition PE boot record to device
    -3, --fat32     Write a FAT32 partition DOS boot record to device
    -4, --fat32free Write a FAT32 partition FreeDOS boot record to device
    -5, --fat16free Write a FAT16 partition FreeDOS boot record to device
    -6, --fat16     Write a FAT16 partition DOS boot record to device
    -n, --ntfs      Write a NTFS partition Windows 7 boot record to device
    -o, --fat16ros  Write a FAT16 partition ReactOS boot record to device
    -c, --fat32ros  Write a FAT32 partition ReactOS boot record to device
    -q, --fat32kos  Write a FAT32 partition KolibriOS boot record to device
    -l, --wipelabel Reset partition disk label in boot record
    -p, --partition Write partition info (hidden sectors, heads and drive id)
                    to boot record
    -H, --heads <n> Manually set number of heads if partition info is written
    -B, --bps <n>   Manually set number of bytes per sector (default 512)
    -O, --writeoem <s>   Write OEM ID string <s> to file system
    -S, --writewds <x>   Write Windows Disk Signature hexadecimal <x> to MBR
    -7, --mbr7      Write a Windows 7 MBR to device
    -i, --mbrvista  Write a Windows Vista MBR to device
    -m, --mbr       Write a Windows 2000/XP/2003 MBR to device
    -9, --mbr95b    Write a Windows 95B/98/98SE/ME MBR to device
    -d, --mbrdos    Write a DOS/Windows NT MBR to device
    -s, --mbrsyslinux    Write a Syslinux MBR to device
    -t, --mbrgptsyslinux Write a Syslinux GPT MBR to device
    -a, --mbrreactos     Write a ReactOS MBR to device
    -k, --mbrkolibrios   Write a KolibriOS MBR to device
    -r, --mbrrufus  Write a Rufus MBR to device
    -g, --mbrgrub4dos    Write a Grub4Dos MBR to device
    -b, --mbrgrub2  Write a Grub 2 MBR to device
    -z, --mbrzero   Write an empty (zeroed) MBR to device
    -f, --force     Force writing of boot record
    -h, --help      Display this help and exit
    -v, --version   Show program version
    -w, --write     Write automatically selected boot record to device

    Default         Inspect current boot record

Warning: Writing the wrong kind of boot record to a device might
destroy partition information or file system!

確認モードの使用例(純粋なUEFIシステムの一般的な結果):

# ms-sys /dev/sda                # MBR of an UEFI-bootable disk
/dev/sda has an x86 boot sector,
it is a zeroed non-bootable master boot record, like the one this
program creates with the switch -z on a hard disk device.

# ms-sys /dev/sda1              # PBR of an UEFI ESP
/dev/sda1 has a FAT32 file system.
/dev/sda1 has an x86 boot sector,
it is an unknown boot record
The OEM ID is mkfs.fat

答え3

MBR技術について学ぶもう一つの方法は次のとおりです。情報スクリプトの起動元の公開日ソース鍛造

バイトを使用してMBRコードを識別0x80できるようです。0x81

  case ${Bytes80_to_81} in
    0069) BST='ISOhybrid (Syslinux 3.72-3.73)';;
    010f) BST='HP Recovery';;
    019d) BST='BSD4.4: FAT32';;
    0211) BST='Dell Utility: FAT16';;
    0488) BST="Grub2's core.img";;

起動メッセージスクリプト#L2595

次のコマンドはディスクからバイト合計を読み込みます0x800x81

sudo hexdump -v -s 0x80 -n 2 -e '2/1 "%x" "\n"' /dev/sdXY
#   hexdump - ASCII, decimal, hexadecimal, octal dump
#       -v               => Cause hexdump to display all input data.
#       -s offset        => Skip offset bytes from the beginning of the input.
#       -n length        => Interpret only length bytes of input.
#       -e format_string => Specify a format string to be used for displaying data:
#           2/1  => number of bytes substited by %x / iteration count for the whole format string.
#           "%x" => Will be substituted with bytes, number of bytes is specified by first number, here 2.
#           \n   => Append line break
#       /dev/sdXY        => Input file.

ソースとケースシートドイツのUbuntuユーザーウィキ

答え4

ディスク/パーティションの最初の数KiBをファイルにコピーしてから、strings(1)またはobjdump(1)がファイルをダンプして内部コンテンツを見つけることができます。

関連情報