build 中的内核

命令行选项

内核命令行选项可以间接(作为平台实现细节)添加到产品汇编中,也可以由开发者直接添加到产品汇编中,以便进行本地调试和测试。

在开发板或产品文件中指定选项

产品和开发板只能通过产品组装间接添加内核命令行选项: - 作为组装输入软件包的一部分。- 在汇编中的平台配置规则中。

在本地指定选项

对于本地开发,您可以在汇编开发者替换项中指定应附加到内核命令行的字符串列表。

此过程需要完成以下两个步骤:

1. 定义汇编替换目标

//local/* 下的 //local/BUILD.gn 或其他 BUILD.gn 文件中定义汇编替换目标。

import("//build/assembly/developer_overrides.gni")

assembly_developer_overrides("custom_kernel_args") {
  kernel = {
    command_line_args = [ "foo" ]
  }
}

每组替换项只需执行一次此操作,然后便可在 build 中的任何产品汇编或任何 outdir 中重复使用。

下一步是告知 GN 应为您的产品使用哪个开发者替换目标。

2a. 将该目标与“主要”商品组件搭配使用

对于“主要”产品组装(即 fx set 命令中命名的产品组装),您可以使用以下命令告知 GN 使用上面定义的产品组装目标:

fx set ... --assembly-override //local:custom_kernel_args

或者,您也可以通过运行 fx args 并添加或修改行来修改现有 args.gn 文件,如下所示:

product_assembly_overrides_label = "//local:custom_kernel_args"

2b. 除“main”汇编以外的产品汇编

对于“主要”产品汇编以外的汇编(例如 zedboot 或恢复汇编),需要使用稍微冗长的机制。这可以通过基于通配符的模式匹配来实现:

fx set ... --assembly-override '//build/images/zedboot/*=//local:custom_kernel_args'

或 ```posix-terminal fx set ... --assembly-override '//products/microfuchsia/*=//local:custom_kernel_args'

处理多个产品组件时,更容易直接在 args.gn 中指定:

product_assembly_overrides = [
  {
    # core products:
    assembly = "//build/images/fuchsia/*"
    overrides = "//local:custom_kernel_args"
  },
  {
    assembly = "//build/images/zedboot/*"
    overrides = "//local:zedboot_overrides"
  },
  {
    assembly = "//products/microfuchsia/*"
    overrides = "//local:zedboot_overrides"
  }
]

请注意,使用 //vendor/* 开发板时,产品组装目标也会位于 //vendor 代码库中(例如 //vendor/<foo>/products/minimal)。