linux内核__force,Linux kernel内核配置解析(5)_Boot options(基于ARM64架构)

Linux kernel内核配置解析(5)_Boot options(基于ARM64架构)

作者:wowo 发布于:2016-8-12 22:46

分类:Linux内核分析

1. 前言

本文将介绍ARM64架构下,Linux kernel和启动有关的配置项。

2. Kconfig文件

ARM64架构中和Boot有关的配置项,非常简单,主要包括ACPI、命令行参数和UEFI几种。这些配置项位于“ arch/arm64/Kconfig”中,具体如下: 1: menu "Boot options"2:3: config ARM64_ACPI_PARKING_PROTOCOL4: bool "Enable support for the ARM64 ACPI parking protocol"5: depends on ACPI6: help7: Enable support for the ARM64 ACPI parking protocol. If disabled8: the kernel will not allow booting through the ARM64 ACPI parking9: protocol even if the corresponding data is present in the ACPI10: MADT table.11:12: config CMDLINE13: string "Default kernel command string"14: default ""15: help16: Provide a set of default command-line options at build time by17: entering them here. As a minimum, you should specify the the18: root device (e.g. root=/dev/nfs).19:20: config CMDLINE_FORCE21: bool "Always use the default kernel command string"22: help23: Always use the default kernel command string, even if the boot24: loader passes other arguments to the kernel.25: This is useful if you cannot or don't want to change the26: command-line options your boot loader passes to the kernel.27:28: config EFI_STUB29: bool30:31: config EFI32: bool "UEFI runtime support"33: depends on OF && !CPU_BIG_ENDIAN34: select LIBFDT35: select UCS2_STRING36: select EFI_PARAMS_FROM_FDT37: select EFI_RUNTIME_WRAPPERS38: select EFI_STUB39: select EFI_ARMSTUB40: default y41: help42: This option provides support for runtime services provided43: by UEFI firmware (such as non-volatile variables, realtime44: clock, and platform reset). A UEFI stub is also provided to45: allow the kernel to be booted as an EFI application. This46: is only useful on systems that have UEFI firmware.47:48: config DMI49: bool "Enable support for SMBIOS (DMI) tables"50: depends on EFI51: default y52: help53: This enables SMBIOS/DMI feature for systems.54:55: This option is only useful on systems that have UEFI firmware.56: However, even with this option, the resultant kernel should57: continue to boot on existing non-UEFI platforms.58:59: endmenu

3. 配置项说明

注2:Linux kernel的配置项虽然众多,但大多使用默认值就可以。因此在kernel移植和开发的过程中,真正需要关心的并不是特别多。对于那些常用的、需要关心的配置项,我会在分析文章中用黄色背景标注。

3.1 ACPI有关的配置项

配置项

说明

默认值

CONFIG_ARM64_ACPI_

PARKING_PROTOCOL

是否支持“ARM64 ACPI parking protocol”。关于ACPI和parking protocol,有机会的话我们会在其它文章中分析,这里不需要过多关注。

依赖于CONFIG_ACPI

3.2 Kernel命令行参数有关的配置项

配置项

说明

默认值

CONFIG_CMDLINE

内核默认的命令行参数。设置该参数后,可以不需要bootloader传递(开始porting kernel的时候比较有用,因为不能保证bootloader可以正确传递^_^)

CONFIG_CMDLINE_FORCE

强制使用内核默认的命令行参数(可以忽略bootloader传递来的);

一般在kernel开发的过程中,用来测试某些新的命令行参数(先不修修改bootloader传递的内容)。

注3:如果Kconfig没有通过“default”关键字为某个配置项指定默认值,那么生成的.config文件中就不会出现该配置项,也就是变相的“禁止”了。后同。

3.3 UEFI有关的配置项

配置项

说明

默认值

CONFIG_EFI_STUB

用于支持EFI启动;

使能该配置项之后,会修改Kenrel bzImage header,把kernel Image变成一个可以被EFI运行的PE/COFF Image。

具体可参考Documentation/efi-stub.txt中的介绍。

CONFIG_EFI

支持一些由UEFI Firmware提供的、运行时的服务,如RTC、reset等;

该配置项依赖Open Firmware(device tree),并且有很多的关联项(可以参考Kconfig文件中的select关键字);

另外,有意思的是(参考第2章Kconfig文件中的“depends on OF && !CPU_BIG_ENDIAN”),该配置项只能在小端CPU中才能使用。有空可以研究一下为什么。

y

CONFIG_DMI

用于控制是否支持“SMBIOS/DMI feature”,依赖于CONFIG_EFI;

需要注意的是,就算使能了该配置项,kernel也需要能够在其它非UEFI环境下正常启动。

y

DMI

4. 参考文档

原创文章,转发请注明出处。蜗窝科技,www.wowotech.net。c6a6308114f401be7df747ae46f2b4db.png

评论:

amalgam-silver

2016-08-16 14:17

标题是不是手滑把2打成5了? :)

2016-08-16 18:18

@amalgam-silver:没有手滑,参考“http://www.wowotech.net/linux_kenrel/kernel_config_overview.html”中的计划,这个确实是第5篇,之所以先写,因为它比较简单:-)

发表评论:

昵称

邮件地址 (选填)

个人主页 (选填)

d4e3789769c8ad44c7e403863bfc3822.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值