Translate ../loongarch/booting.rst into Chinese. Suggested-by: Xiaotian Wu <wuxiaotian@xxxxxxxxxxx> Signed-off-by: Yanteng Si <siyanteng@xxxxxxxxxxx> --- .../translations/zh_CN/loongarch/booting.rst | 86 +++++++++++++++++++ .../translations/zh_CN/loongarch/index.rst | 1 + 2 files changed, 87 insertions(+) create mode 100644 Documentation/translations/zh_CN/loongarch/booting.rst diff --git a/Documentation/translations/zh_CN/loongarch/booting.rst b/Documentation/translations/zh_CN/loongarch/booting.rst new file mode 100644 index 000000000000..a78d5390f6d9 --- /dev/null +++ b/Documentation/translations/zh_CN/loongarch/booting.rst @@ -0,0 +1,86 @@ +.. SPDX-License-Identifier: GPL-2.0 + +.. include:: ../disclaimer-zh_CN.rst + +:Original: Documentation/loongarch/booting.rst + +:翻译: + + 司延腾 Yanteng Si <siyanteng@xxxxxxxxxxx> + +==================== +启动 LoongArch Linux +==================== + +:作者: 司延腾 <siyanteng@xxxxxxxxxxx> +:日期: 2022年11月18日 + +BootLoader传递给内核的信息 +========================== + +LoongArch兼容ACPI和FDT,需要传递给内核的信息有memmap、initrd、cmdline、fdt等。 +而在LoongArch机器上,BootLoader(EFISTUB/Grub)会给内核传递三个有效参数, +它们分别是:: + + a0 = efi_boot + a1 = cmdline + a2 = systemtable + +其中a1是指向cmdline的指针,a2则包含了需要传递给内核的memmap、initrd、fdt(可选的)…… + +LoongArch Linux启动镜像文件头 +============================= + +在非压缩的Linux内核镜像中存在以下64字节的文件头:: + + u32 MZ_MAGIC /* "MZ", MS-DOS 头 */ + u32 res0 = 0 /* 保留 */ + u64 kernel_entry /* 内核入口点 */ + u64 _end - _text /* 内核镜像有效大小 */ + u64 0 /* 从RAM开始的加载内核镜像的偏移量 */ + u64 res1 = 0 /* 保留 */ + u64 res2 = 0 /* 保留 */ + u64 res3 = 0 /* 保留 */ + u32 res4 = 0 /* 保留 */ + u32 pe_header - _head /* 到PE头的偏移量 */ + +镜像头注释 +========== + +目前LoongArch已经移除“magic”结构体成员。 + +按照EFI规范的规定,在内核镜像的开始需要PE/COFF镜像文件头。当前LoongArch内核支持 +EFI stub,故内核镜像头最开始两字节为“MZ”魔术字符,且0x3c处应指向PE/COFF文件头的 +其余部分,在此之间,内核的入口点、有效镜像大小、镜像加载偏移布局如下:: + + +-----------------------------------------------+ + | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | + +-----------------------------------------------+ + 0x00: | MZ_MAGIC | res0 | + +-----------------------------------------------+ + 0x08: | kernel_entry | + +-----------------------------------------------+ + 0x10: | _end - _text | + +-----------------------------------------------+ + 0x18: | 0 | + +-----------------------------------------------+ + 0x20: | res1 | + +-----------------------------------------------+ + 0x28: | res2 | + +-----------------------------------------------+ + 0x30: | res3 | + +-----------------------------------------------+ + 0x38: | res4 | PE header | + +-----------------------------------------------+ + +所有的位域都是小端序: + + - MZ:有效长度为2字节; + + - 内核入口点:前留空6个字节,自0x8开始,有效长度为8字节; + + - 内核镜像有效大小:紧接内核入口点,有效长度为8字节,该成员对于引导器来说是必须的; + + - 内核镜像加载偏移:紧接内核镜像有效大小,有效长度为8字节; + + - 到PE头的偏移量:前留空28字节,自0x3c开始,有效长度为4字节。 diff --git a/Documentation/translations/zh_CN/loongarch/index.rst b/Documentation/translations/zh_CN/loongarch/index.rst index 7d23eb78379d..8609ade41981 100644 --- a/Documentation/translations/zh_CN/loongarch/index.rst +++ b/Documentation/translations/zh_CN/loongarch/index.rst @@ -15,6 +15,7 @@ LoongArch体系结构 introduction irq-chip-model + booting features -- 2.31.1