起動可能なパーティションと起動不可能なパーティションの違いは何ですか?ユーザーは、起動不可とマークされたパーティションからシステムを起動できず、起動可能とマークされたパーティションからシステムを起動できることを知っています。
これらのパーティションフラグの根本的な違いについて知りたいです。
反対票が投じられましたが...おそらく誰かが質問に答えていないと思ったためです...私は @ Ronyの答え はboot
フラグが何であるかを説明する良いスタートだと思います。 (私は実際に、彼が提供したものと同様の例から答えを始めることを計画していました。)
私はすべて、boot
フラグがどのようになっているのかについての答えをぶち壊す準備ができていました。この時点で、ハードドライブが小さく、ブートローダーがはるかに洗練されていなかった時代の歴史的な名残がしばしば無視されます(@Ronyの例が示しています)。
しかし、それから私はこれがすでに この答え この質問に言われていることを発見しました: ディストリビューションをインストールするときの「ブート可能フラグ」オプションとは何ですか?
さらに、 ブートフラグに関する短い記事 へのリンクもありました。
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/sda1
のboot
フラグも設定しました。これを行うと、下の画像に示すウィンドウが表示されます。
<sigh/>
この経験から、MicrosoftがMS-DOSおよびWindows 3.0 /3.1で使用したものと同じMBRブートセクターローダーをまだ使用しているかどうか疑問に思います。
ユーザーは、起動不可とマークされたパーティションからシステムを起動できず、起動可能とマークされたパーティションからシステムを起動できることを知っています。
ノートパソコンのハードディスクから
# 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
それらはすべて起動可能ですが、単一の起動可能なパーティションはありません。
パーティションのテーブルの単なるフラグ。 MBRはパーティション内のフラグを検索し、「ブート」フラグのあるパーティションから実行します。
従来のMicrosoftMBRを使用する場合、MBRのコードは、ディスクI/Oの実行方法を識別し、パーティションを調べて、どのパーティションが起動可能フラグでマークされているかを確認します。 1つのパーティションのみをそのようにマークする必要があります。次に、そのパーティションの最初のセクターをチェックし、適切にマークされている場合は、そのセクターを読み取り、制御をそのセクターに移します。私の記憶が正しければ、そのチェックはセクターが0x550xaaで終わることです。
起動の残りの責任は、そのセクターのコードと、それがロードするコードにあります。
GRUB2は、このビットを無視して、独自のMBRとプロセスを使用することがよくあります。