web-dev-qa-db-ja.com

起動可能なパーティションと起動不可能なパーティションの違い

起動可能なパーティションと起動不可能なパーティションの違いは何ですか?ユーザーは、起動不可とマークされたパーティションからシステムを起動できず、起動可能とマークされたパーティションからシステムを起動できることを知っています。

これらのパーティションフラグの根本的な違いについて知りたいです。

8
Sam

反対票が投じられましたが...おそらく誰かが質問に答えていないと思ったためです...私は @ Ronyの答えbootフラグが何であるかを説明する良いスタートだと思います。 (私は実際に、彼が提供したものと同様の例から答えを始めることを計画していました。)

私はすべて、bootフラグがどのようになっているのかについての答えをぶち壊す準備ができていました。この時点で、ハードドライブが小さく、ブートローダーがはるかに洗練されていなかった時代の歴史的な名残がしばしば無視されます(@Ronyの例が示しています)。

しかし、それから私はこれがすでに この答え この質問に言われていることを発見しました: ディストリビューションをインストールするときの「ブート可能フラグ」オプションとは何ですか?

さらに、 ブートフラグに関する短い記事 へのリンクもありました。

  • その主な機能は、MS-DOS/MS Windowsタイプのブートローダーにどのパーティションを起動するかを示すことです。場合によっては、Windows XP/2000がアクティブなパーティションに文字を割り当てるために使用します。」 C: "。"

さて、thisは恥ずかしいです...

bootフラグが "historical remnant"であると主張したとき、明らかにGRUBは使用する必要がなかったので、これが当てはまると思いました。 。確かに、Microsoftは「movedon」も持っているでしょう。

通常、オスカーワイルドに起因するよく知られた引用は、この場合は真実すぎることが判明しました。

Windowsオペレーティングシステム[〜#〜] do [〜#〜]で使用されるMBRおよびPBR(パーティションブートレコード)ローダーは、 bootフラグが正しく設定されます。

これをテストするために、Windows 8VMのすべてのパーティションからブートフラグをクリアしました。 (以下を参照してください。興味がある場合は、 完全なBootInfoスクリプトの結果 のペーストビンへのリンクがあります。

Drive: sda     
Disk /dev/sda: 26.8 GB, 26843545600 bytes
255 heads, 63 sectors/track, 3263 cylinders, total 52428800 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes

Partition  Boot  Start Sector    End Sector  # of Sectors  Id System

/dev/sda1               2,048       718,847       716,800   7 NTFS / exFAT / HPFS
/dev/sda2             718,848    52,426,751    51,707,904   7 NTFS / exFAT / HPFS

両方のパーティションからフラグをクリアすると、起動しようとしたときにエラーメッセージFATAL: INT18: BOOT FAILUREが表示されました。 (それがWindows MBRブートローダーからのものなのかVMのBIOSに相当するものなのかはわかりません。)

何が起こるかを確認するために、「間違った」パーティションに/dev/sda2ではなく/dev/sda1bootフラグも設定しました。これを行うと、下の画像に示すウィンドウが表示されます。

Windows failed to start error window

<sigh/>

この経験から、MicrosoftがMS-DOSおよびWindows 3.0 /3.1で使用したものと同じMBRブートセクターローダーをまだ使用しているかどうか疑問に思います。

6
irrational John

ユーザーは、起動不可とマークされたパーティションからシステムを起動できず、起動可能とマークされたパーティションからシステムを起動できることを知っています。

ノートパソコンのハードディスクから

# fdisk  -l /dev/sda

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x47b94fbe

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048     1999999      998976   83  Linux
/dev/sda2         2000000     9999999     4000000   82  Linux swap / Solaris
/dev/sda3        10000000    89999999    40000000   83  Linux
/dev/sda4        90000000   976773167   443386584   83  Linux

起動可能なUSBLinuxから

# fdisk  -l /dev/sdb

Disk /dev/sdb: 8004 MB, 8004304896 bytes
247 heads, 62 sectors/track, 1020 cylinders, total 15633408 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000a5395

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2097151     1047552   83  Linux
/dev/sdb2         2097152    15632383     6767616   83  Linux

それらはすべて起動可能ですが、単一の起動可能なパーティションはありません。

3
Rony

パーティションのテーブルの単なるフラグ。 MBRはパーティション内のフラグを検索し、「ブート」フラグのあるパーティションから実行します。

2
Rufo El Magufo

従来のMicrosoftMBRを使用する場合、MBRのコードは、ディスクI/Oの実行方法を識別し、パーティションを調べて、どのパーティションが起動可能フラグでマークされているかを確認します。 1つのパーティションのみをそのようにマークする必要があります。次に、そのパーティションの最初のセクターをチェックし、適切にマークされている場合は、そのセクターを読み取り、制御をそのセクターに移します。私の記憶が正しければ、そのチェックはセクターが0x550xaaで終わることです。

起動の残りの責任は、そのセクターのコードと、それがロードするコードにあります。

GRUB2は、このビットを無視して、独自のMBRとプロセスを使用することがよくあります。

0
John S Gruber