Linux X86_64 物理メモリのレイアウト

Linux X86_64 物理メモリのレイアウト

Linuxカーネルのドキュメントによると、カーネルのカーネルhttps://www.kernel.org/doc/Documentation/x86/boot.txtモードコードがあります。 2つの質問があります。X+10000X+08000


For a modern bzImage kernel with boot protocol version >= 2.02, a
memory layout like the following is suggested:

    ~                        ~
        |  Protected-mode kernel |
100000  +------------------------+
    |  I/O memory hole   |
0A0000  +------------------------+
    |  Reserved for BIOS     |  Leave as much as possible unused
    ~                        ~
    |  Command line      |  (Can also be below the X+10000 mark)
X+10000 +------------------------+
    |  Stack/heap        |  For use by the kernel real-mode code.
X+08000 +------------------------+  
    |  Kernel setup      |  The kernel real-mode code.
    |  Kernel boot sector    |  The kernel legacy boot sector.
X       +------------------------+
    |  Boot loader       |  <- Boot sector entry point 0000:7C00
001000  +------------------------+
    |  Reserved for MBR/BIOS |
000800  +------------------------+
    |  Typically used by MBR |
000600  +------------------------+ 
    |  BIOS use only     |
000000  +------------------------+

1. GRUB のリアルモードコード部分または bzImage の一部です。 2.リアルモードコードが途中にある場合、X+10000モードカーネルコードX+08000の物理的な位置はどこにありますか?long mode/64 bit

ベストアンサー1

(最新バージョンを参考にします。プロトコル文書の開始、見ている文書は古いです。 )

リアルモードカーネルブートセクタと設定コードはカーネルの一部です。セクション1.2。彼らは生きているXそしてX+0x08000。

保護モードのカーネルは、上の表の最初のエントリ0x100000にロードされます。

おすすめ記事