X86核心啟動分析二 從bootloader到核心

2021-08-04 11:05:46 字數 1113 閱讀 7617

uboot也起到相同的效果。對於x86來說,bootloader和kernel的互動引數是hdr和cmdline,因為x86的相容性較好,架構變化不大。但是對於arm和ppc,嵌入式場景很多,所以後續採用更好的裝置樹架構,擴充套件性更好一些。

uboot和kernel的交接點如下:

load_zimage  (uboot\lib_i386)	7320	2012/1/17

=>setup_base = (void*)default_setup_base; /* base address for real-mode segment */ //#define default_setup_base 0x90000

=>/* determine size of setup */

if (0 == *(u8*)(image + setup_sects_off)) else

=>load_address = (void*)(big_image ? bzimage_load_addr:zimage_load_addr);//前面說的,低裝載或者高裝載核心

=>build_command_line(setup_base + command_line_offset, auto_boot); /* build command line at command_line_offset */ //構建cmdline

載入核心使用如下函式

boot_zimage(void *setup_base)//setup_base 0x90000

=>enter_realmode(((u32)setup_base+setup_start_offset)>>4, 0, ®s, ®s);//setup_start_offset 是0x200,表示是第二個扇區,也就是第二個512位元組

x86核心啟動流程:如下一系列的核心啟動

核心啟動初步

e820是關鍵,關於e820可用參考如下文章:

從硬體獲得記憶體布局–e820, 這個人的部落格不錯,可用好好學習一下

e820與kernel物理記憶體對映

瘋狂核心系列

[置頂] linux核心啟動1-啟動引數(啟動引數的獲取和處理,分析setup_arch)

stosl指令

X86啟動過程分析

一直對計算機的啟動過程不甚清楚,總是一知半解。這幾天蒐集一些這方面的資料,通過學習對啟動過程有個更深入的了解。通常情況下,我們的系統裝在磁碟上。而cpu是不能夠直接訪問磁碟的,必須將磁碟上的內容讀入記憶體後才能被cpu訪問。那麼計算機是如何啟動並執行作業系統 的呢?這裡必定存在乙個將磁碟上的 載入到...

安裝啟動Sylix OS系統 X86

first grub引導啟動 開機長按delete bios介面 boot usb u盤啟動 showmount 命令檢視系統掛載硬碟情況,umount media hdd0 如果有硬碟,將硬碟解除安裝 ll dev blk 檢視 sylixos 識別的硬碟裝置名 fdsk f dev blk hd...

x86的啟動過程

1.上電,首先執行ljmp 0xf000,0xe05b 即位址0xffff0,調轉到bios,開始 執行bios bios負責pci,顯示卡之類裝置的初始化,並把可啟動裝置 軟盤,硬碟,光碟 的引導扇區boot loader 第乙個sector 拷貝到記憶體位址 0x7c00 0x7dff 之間,最...