Chinese (Traditional)

Warning

此文件的目的是爲讓中文讀者更容易閱讀和理解,而不是作爲一個分支。因此, 如果您對此文件有任何意見或改動,請先嘗試更新原始英文文件。如果要更改或 修正某處翻譯文件,請將意見或補丁發送給維護者(聯繫方式見下)。

Note

如果您發現本文檔與原始文件有任何不同或者有翻譯問題,請聯繫該文件的譯者, 或者發送電子郵件給胡皓文以獲取幫助:<2023002089@link.tyut.edu.cn>。

Original:

Booting Linux/LoongArch

翻譯:

司延騰 Yanteng Si <siyanteng@loongson.cn>

2. 啓動 Linux/LoongArch

作者:

司延騰 <siyanteng@loongson.cn>

日期:

2022年11月18日

2.1. BootLoader傳遞給內核的信息

LoongArch支持ACPI和FDT啓動,需要傳遞給內核的信息包括memmap、initrd、cmdline、可 選的ACPI/FDT表等。

內核在 kernel_entry 入口處被傳遞以下參數:

  • a0 = efi_boot: efi_boot 是一個標誌,表示這個啓動環境是否完全符合UEFI 的要求。

  • a1 = cmdline: cmdline 是一個指向內核命令行的指針。

  • a2 = systemtable: systemtable 指向EFI的系統表,在這個階段涉及的所有 指針都是物理地址。

2.2. Linux/LoongArch內核鏡像文件頭

內核鏡像是EFI鏡像。作爲PE文件,它們有一個64字節的頭部結構體,如下所示:

u32     MZ_MAGIC                /* "MZ", MS-DOS 頭 */
u32     res0 = 0                /* 保留 */
u64     kernel_entry            /* 內核入口點 */
u64     _end - _text            /* 內核鏡像有效大小 */
u64     load_offset             /* 加載內核鏡像相對內存起始地址的偏移量 */
u64     res1 = 0                /* 保留 */
u64     res2 = 0                /* 保留 */
u64     res3 = 0                /* 保留 */
u32     LINUX_PE_MAGIC          /* 魔術數 */
u32     pe_header - _head       /* 到PE頭的偏移量 */