linux 啟動 過程 學習 (x86 64

2021-07-08 11:22:53 字數 602 閱讀 2720

1.   arch/x86/boot/header.s , kernel setup 從 _start開始。 設定 stack, bss, 最後跳轉到 arch/x86/boot/main.c。

2.  在main函式中,把kernel setup header 拷貝到 struct setup_header, 之後初console_init,  init_heap, validate_cpu, detect_memory(e820), keyboard_init, set_video, 最後go_to_protected_mode。

3. go_to_protected_mode 中開啟a20, setup_idt, setup_gdt, 最終跳轉到 arch/x86/boot/compressed/head_64.s 中的startup_32函式。

5. startup_64中,確定最終解壓縮位址,然後拷貝壓縮核心到該位址,清空bss,跳轉到decompress_kernel位址處,開始解壓核心。

6. 3.12核心以後, 在解壓核心之前會確定是否要隨機話核心載入位址,如果是的話,計算乙個可用的隨機位址,之後把核心解壓到該位址,然後跳轉到解壓後的核心處執行 arch/x86/kernel/head_64.s.

Linux啟動過程

1 開啟 pc電源 pc加電後,乙個特殊的硬體電路會觸發 cpu 的 reset 腳的邏輯值,然後一些 cpu 暫存器,如 cs eip 等被給定乙個值,接著 cpu 跳轉到乙個固定位址開始執行 bios 2 bios 自檢,按設定的裝置啟動 bios 對硬體進行一系列徹底的檢查,如 cpu 型別 ...

Linux 啟動過程

fae 將porting 好的linux 提供,幾乎都在寫應用 空閒時間整理一下 b1202 系統啟動的過程 通過 boot vm 進行啟動 vmlinuz init 程序會讀取 etc inittab etc inittab 先 etc rc.d rc.sysinit 再 etc rc.d rc3...

Linux啟動過程

1.加電時由硬體將bios載入到記憶體末尾.這時是實模式,定址空間為1m.2.由硬體將cs段暫存器強制設定為0xffff,ip指令暫存器設定為0x0000.這樣cs ip指向了oxffff0的位址位置.這個位置就是bios程式的入口位址.3.執行bios程式.在記憶體起始位址0x00000設定1k大...