Wu XiangCheng <bobwxc@xxxxxxxx> 于2021年6月20日周日 下午6:41写道: > > Add a new translation > Documentation/translations/zh_CN/admin-guide/efi-stub.rst > and link it to zh_CN/admin-guide/index.rst > > Signed-off-by: Wu XiangCheng <bobwxc@xxxxxxxx> > --- > .../zh_CN/admin-guide/efi-stub.rst | 86 +++++++++++++++++++ > .../translations/zh_CN/admin-guide/index.rst | 2 +- > 2 files changed, 87 insertions(+), 1 deletion(-) > create mode 100644 Documentation/translations/zh_CN/admin-guide/efi-stub.rst > > diff --git a/Documentation/translations/zh_CN/admin-guide/efi-stub.rst b/Documentation/translations/zh_CN/admin-guide/efi-stub.rst > new file mode 100644 > index 000000000000..b6a4cedec8eb > --- /dev/null > +++ b/Documentation/translations/zh_CN/admin-guide/efi-stub.rst > @@ -0,0 +1,86 @@ > +.. include:: ../disclaimer-zh_CN.rst > + > +:Original: Documentation/admin-guide/efi-stub.rst > + > +:译者: > + > + 吴想成 Wu XiangCheng <bobwxc@xxxxxxxx> > + > +========= > +EFI引导桩 > +========= > + > +在x86和ARM平台上,内核zImage/bzImage可以伪装成PE/COFF映像,从而使EFI固件加载 > +程序加载其作为EFI可执行文件。修改bzImage头以及固件加载程序跳转特定入口点的 how about: 将其作为EFI可执行文件加载? Thanks, Yanteng > +代码被统称为“EFI引导桩(EFI Boot Stub)”,分布在arch/x86/boot/header.S和 > +arch/x86/boot/compressed/eboot.c中。对于ARM,EFI桩在arch/arm/boot/compressed/efi-header.S > +和arch/arm/boot/compressed/efi-stub.c中实现。体系结构之间共享的EFI桩代码 > +位于drivers/firmware/efi/libstub中。 > + > +而arm64没有压缩内核支持,因此映像本身伪装成PE/COFF映像,EFI桩链接到内核。 > +arm64 EFI桩位于arch/arm64/kernel/EFI entry.S和drivers/firmware/efi/libstub/arm64-stub.c > +中。 > + > +通过使用EFI引导桩,可以在不使用传统EFI引导加载程序的情况下引导Linux内核, > +如grub或elilo。由于EFI引导桩执行了引导加载程序的工作,因此某种意义上来说 > +它 *就是* 引导加载程序。 > + > +EFI引导桩通过CONFIG_EFI_STUB内核选项启用。 > + > + > +如何安装bzImage.efi > +------------------- > + > +位于arch/x86/boot/bzImage中的bzImage必须复制到EFI系统分区(ESP)并修改扩展名 > +为“.efi”。没有扩展名的话EFI固件加载程序将拒绝执行它。尚无法从普通的Linux文件 > +系统中执行bzImage.efi,因为EFI固件不支持这些文件系统。ARM平台需要将arch/arm/boot/zImage > +复制到系统分区,并可能无需重命名;arm64也类似,需要复制arch/arm64/boot/Image, > +但不一定要重命名。 > + > + > +从EFI shell传递内核参数 > +----------------------- > + > +内核参数可于bzImage.efi之后传递,例如:: > + > + fs0:> bzImage.efi console=ttyS0 root=/dev/sda4 > + > + > +“initrd=”选项 > +------------- > + > +与大多数引导加载程序一样,EFI桩允许用户使用“initrd=”选项指定多个initrd文件。 > +这是唯一的EFI桩特殊特命令行参数,其他所有内容都在将内核启动时传递给内核。 > + > +initrd文件的路径必须为从ESP开始的绝对路径,相对路径无法使用。同时此路径为EFI > +风格,目录元素必须用反斜杠(\)分隔。例如给定以下目录布局:: > + > + fs0:> > + Kernels\ > + bzImage.efi > + initrd-large.img > + > + Ramdisks\ > + initrd-small.img > + initrd-medium.img > + > +现工作目录为fs0:\Kernels,要使用initrd-large.img文件引导,则须使用以下命令:: > + > + fs0:\Kernels> bzImage.efi initrd=\Kernels\initrd-large.img > + > +请注意bzImage.efi是怎样可用相对路径指定的。那是因为我们执行的映像是由EFI shell > +解释的,它可解析相对路径,而命令行的其余部分则传递给bzImage.efi。 > + > + > +“dtb=”选项 > +---------- > + > +对于ARM和arm64体系结构,必须为内核提供一个设备树。通常固件应通过EFI CONFIGURATION > +TABLE(EFI配置表)来支持设备树。但是“dtb=”命令行选项可以用于覆盖固件提供的设备 > +树,或在固件无法提供时来提供一个设备树。 > + > +请注意:固件将在启动内核之前将运行时配置信息添加到设备树。如果 ``dtb=`` 被用来 > +覆盖设备树,则固件提供的任何运行时数据都将丢失。 ``dtb=`` 选项应只用作调试工具, > +或者在EFI CONFIGURATION TABLE中未提供设备树时作为最后的手段。 > + > +“dtb=”的处理方式与上述“initrd=”选项相同。 > diff --git a/Documentation/translations/zh_CN/admin-guide/index.rst b/Documentation/translations/zh_CN/admin-guide/index.rst > index 460034cbc2ab..d74f5e864898 100644 > --- a/Documentation/translations/zh_CN/admin-guide/index.rst > +++ b/Documentation/translations/zh_CN/admin-guide/index.rst > @@ -65,6 +65,7 @@ Todolist: > > clearing-warn-once > cpu-load > + efi-stub > lockup-watchdogs > unicode > > @@ -87,7 +88,6 @@ Todolist: > dell_rbu > device-mapper/index > edid > - efi-stub > ext4 > nfs/index > gpio/index > -- > 2.20.1 >