私は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";;
次のコマンドはディスクからバイト合計を読み込みます0x80
。0x81
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)がファイルをダンプして内部コンテンツを見つけることができます。