カーネルをロードした後、syslinuxはプロテクトモードに切り替わりますか? syslinuxがカーネルを起動した後のマシンの状態は?カーネルをロードした後、syslinuxはプロテクトモードに切り替わりますか?
答えて
Linuxカーネルを読み込んでいるsyslinuxについて話していると仮定します。
Documentation/x86/boot.txtをご覧ください。
Linuxカーネルには小さなリアルモードセットアップコード(arch/x86/boot/にあります)があります。これはプロテクトモードに移行する前に行う必要があります(ほとんどの場合リアルモードBIOSにいくつかの情報)。ブートローダは、この部分をローメモリ(640k未満)にロードします。
古いカーネルは640k未満の連続した低メモリに収まるほど小さいので、ブートローダはカーネル全体を低メモリにロードし、すべてをリアルモードで実行できます。新しいカーネルはより大きい(通常約4M)ので、高いメモリ(1M以上)にロードする必要があります。これを行うには、ブートローダはカーネルをそこに置くためにプロテクトモードに変更しなければなりません。また、BIOSを呼び出してディスクからより多くのセクタを読み取るようにリアルモードに戻す必要があります。はカーネルセットアップコードにジャンプする前にリアルモード (保護モードにもう一度移行します)。
あなたの質問に答えるには、それは逆です:をから保護モードをリアルモードに切り替えます。
プロセッサの状態は、私が上記にリンクしているドキュメントに記載されているとおりです。リアルモードセットアップコード+ 0x20の開始を指すリアルモードCS(CS:IPは第2の512バイトリアルモードセットアップコードセクタ)、残りのセグメントレジスタは、リアルモードセットアップコード(第1のセクタ)の開始を指し示し、いくつかのパラメータは、リアルモードセットアップコードの最初の2つのセクタに見られるヘッダに埋められる。汎用レジスタの内容は重要ではありません。
Linuxカーネルの場合、マシンは保護モードにあり、Linuxブートプロトコルのようにプロセッサの状態がわかります。コンテキストは、一般的なカーネル、つまり家庭で作られたプロトタイプを対象としています。 GRUBの場合と同様に、マルチブート仕様に従います。 – phoxis
- 1. プロテクトモードに切り替えた後に「コール」する
- 2. 最後のリスト項目は切り替わりません
- 3. クラスはどのように切り替わりますか?
- 4. VS 2015は自動的にGITに切り替わります
- 5. java 8 DateTimeFormatterはzとZが切り替わりますか?
- 6. フルスクリーンモードで動作するUWP C#アプリケーションは、フルスクリーンビデオを表示した後ウィンドウモードに切り替わります
- 7. 別のタブに切り替えると、挿入モードから通常モードに切り替わりますか?
- 8. Primeface DefaultCommandボタンはゾーンに応じて切り替わります
- 9. ブランチに切り替えた後、特定のコミットを切り替えないのはなぜですか?
- 10. djangoはsqlite3からpostgresに切り替えた後に失敗します
- 11. ダイヤルプランでPAP2のモデムが切り替わりますか?
- 12. クリックするとXcodeがIBactionコードに切り替わります
- 13. 最初のタスクのコードはRTOSで切り替わります
- 14. ボタンが簡単なメールフォームに切り替わります
- 15. ページ間でngRouteがランダムに切り替わります
- 16. geiser-eval-bufferが別のフレームに切り替わります
- 17. React:ロード後の画像を切り替える
- 18. Rails 5サーバーは指定されたポートの代わりにデフォルトのポートに切り替わります
- 19. jQueryをクリックすると切り替わります
- 20. カラーボタンをクリックすると画像が切り替わります
- 21. ボタンをクリックすると画像が切り替わります
- 22. スパンをクリックするとチェックボックスが切り替わります
- 23. JavaScriptをクリックするとアニメーションが切り替わります
- 24. ボタンを押すと画像が切り替わります
- 25. テーブルをスクロールすると、セルが切り替わります。
- 26. JavaScriptを押したときに画像が切り替わる
- 27. Android - EditTextフィールド用のキーボードは、数字からフルキーボードに切り替わります
- 28. 電話がミュートに切り替わる
- 29. ログイン後にユーザーを切り替える
- 30. フラグメントを前後に切り替えた後のRecyclerviewのAndroid Nullpointerexception
Syslinuxは640KB以上のメモリにアクセスする必要があるため、カーネル(およびinitrd)をディスクからロードしているときにプロテクトモードに切り替える必要があります。 –
最終的にはマシンの状態になるでしょう – phoxis