カーネルをロードした後、syslinux は保護モードに切り替わりますか? syslinux がカーネルを起動した後のマシンの状態は何ですか。
1 に答える
Linuxカーネルをロードするsyslinuxについて話していると思います。
Documentation/x86/boot.txtを見てください。
Linux カーネルには小さなリアル モード セットアップ コード ( arch/x86/boot/にあります) があり、プロテクト モードに移行する前に実行する必要があるいくつかのことを行います (ほとんどの場合、リアル モード BIOS にクエリを実行していくつかの要素を取得します)。情報)。ブートローダは、この部分を低メモリ (640k 以下) にロードします。
古いカーネルは、640k 未満の連続した低メモリに収まるほど小さかったため、ブートローダーはカーネル全体を低メモリにロードし、すべてをリアル モードで実行できました。新しいカーネルはより大きく (通常約 4M)、ハイ メモリ (1M 以上) にロードする必要があります。これを行うには、ブートローダーをプロテクト モードに変更してカーネルを配置し、リアル モードに戻して BIOS を呼び出してディスクからより多くのセクターを読み取り、リアル モードに戻してからカーネル セットアップ コードにジャンプする必要があります (これは、最後にもう一度保護モードに移行します)。
したがって、あなたの質問に答えるには、反対のことを行います。カーネルをロードした後、保護モードからリアルモードに切り替えます。
プロセッサの状態は、上記のリンク先のドキュメントに記載されているとおりです。 リアル モード CS は、リアル モード セットアップ コードの先頭に 0x20 を加えたものを指します (CS:IP は、2 番目の 512 バイトのリアル モード セットアップ コード セクタの先頭を指します)。 、リアル モード セットアップ コードの先頭 (最初のセクター) を指す残りのセグメント レジスタ、およびリアル モード セットアップ コードの最初の 2 つのセクターにあるヘッダーに入力されたいくつかのパラメーター。汎用レジスタの内容は問いません。