请参阅 //docs/gen/boot-options.md 现在是 真相。
Zircon 内核从引导加载程序接收文本命令行, 用于改变系统的某些行为。内核命令行参数 应采用 option 或 option=value 的形式,用空格分隔,并且不能 包含空格。
对于布尔值选项,option=0、option=false 或 option=off 将停用 选项。任何其他形式(option、option=true、option=wheee 等) 启用它。
内核命令行会从内核传递到 userboot 进程, 因此,下文介绍的部分选项适用于 用户空间进程,而非内核本身。
如果键重复,则以最后的值为准,即更晚的设置 覆盖之前的设置
组件管理器会读取文件 /boot/config/additional_boot_args
(如果
并将 name=value 行导入其环境中,从而增强
或从内核命令行替换值。开头的空格是
并忽略以 # 开头的行。不允许在
名称。
若要在 build 中指定选项,请参阅 本指南。
blobfs.cache-eviction-policy=<policy>
控制 blobfs针对没有打开句柄的分页器支持的 blob 的逐出策略 或 VMO 克隆如果未设置,则使用内部定义的系统默认值。
不受分页器支持的 Blob 不受此旋钮影响。
支持使用以下值:
NEVER_EVICT
:永不逐出节点。建议启用内核 页面逐出 (kernel.page-scanner.enable-eviction
),如下所示: 否则 blobfs 将无限期地保留内存中的所有数据页。EVICT_IMMEDIATELY
:一旦节点没有打开的句柄,系统就会将其逐出 或 VMO 克隆下次访问时,需要再次从磁盘加载这些文件。
blobfs.write-compression-algorithm=<algorithm>
blobfs 在运行时写入 blob 时应使用的压缩算法。 如果未设置,则使用内部定义的系统默认值。
支持使用以下值:
ZSTD_CHUNKED
UNCOMPRESSED
boot.usb=<bool>
如果为 true,则表示通过 USB 总线连接启动存储媒介。 //src/sys/live_usb 中的 live_usb 组件用它来确定 以及是否应运行该脚本
bootsvc.next=<bootfs 路径>
控制 bootsvc 为继续执行启动过程而执行的程序。如果 未指定,则使用默认的下一个程序。
可以选择使用逗号分隔符指定程序的参数 程序和各个参数之间的关联。例如: “bootsvc.next=bin/mybin,arg1,arg2”。
clock.backstop=<seconds>
设置 UTC 时钟的初始偏移量(从 Unix 纪元开始的时间,以秒为单位)。通过 时钟将由设备协调器在启动时设置,之后如果 如果存在 RTC,系统会至少在这个时间对 RTC 时钟进行清理。
console.shell=<bool>
如果此选项设置为 true,Driver_manager 会在发生以下情况时启动 shell: core.shell 尚未启动。默认设置为 false。
如果该值为 false,那么也会停用 zircon.autorun.boot 并 zircon.autorun.system 选项。
driver.<name>.tests.enable=<bool>
为单个驱动程序启用单元测试。单元测试将在
驱动程序绑定所有设备如果 driver.tests.enable
为 true,则
默认处于启用状态,否则默认处于停用状态。
再次注意,司机的名字是“Driver”参数 ZIRCON_DRIVER 宏。例如,不是设备的名称 有些驱动程序几乎完全相同,只是设备可能命名为“foo-bar” 而驱动程序名称必须使用下划线,例如“foo_bar”。
driver.sysmem.contiguous_memory_size=<num>
替换系统内存的连续内存的板驱动程序指定的大小 数据池。值以字节为单位。
driver.sysmem.protected_memory_size=<num>
替换系统内存的默认受保护内存的板驱动程序指定的大小 数据池。值以字节为单位。
driver.tests.enable=<bool>
为所有驱动程序启用单元测试。单元测试将在
驱动程序绑定所有设备也可以为个别用户启用测试
驱动程序,请参阅 driver.\<name>.enable_tests
。默认设置为“已停用”。
x64 特定值
在 x64 上,配置类似于 8250 的 UART 还支持一些其他值:
- 如果设为
legacy
,系统将使用旧版 COM1 接口。 - 如果设为
acpi
,则由系统中的DBG2
ACPI 条目指定的 UART (如果有)。 - 您可以使用
ioport,\<portno>,\<irq>
指定 port-io UART。 - 您可以使用
mmio,\<physaddr>,\<irq>
指定 MMIO UART。
例如,ioport,0x3f8,4
表示的是旧版 COM1 接口。
所有数字可以使用 strtoul() 接受的任何基数。
所有其他值目前均未定义。
ldso.trace
此选项(默认处于停用状态)会开启动态链接器跟踪记录输出。通过 输出采用 Intel Processor Trace 等客户端可以使用的形式 联系。
zircon.autorun.boot=<command>
此选项要求在启动时运行 command。
命令应该是从根“/”开始的绝对路径。
command 中的任何 +
字符都被视为参数分隔符,
将参数传递给可执行文件。
如果 console.shell 为 false,此选项将停用。
zircon.autorun.system=<command>
此选项会请求在系统分区装载后运行 command。 如果没有系统分区,则永远不会启动。
命令应该是从根“/”开始的绝对路径。
command 中的任何 +
字符都被视为参数分隔符,
将参数传递给可执行文件。
如果 console.shell 为 false,此选项将停用。
zircon.system.disable-automount=<bool>
此选项可防止 fshost 自动装载任何磁盘文件系统 (/system、/data 等),这对某些低级别的测试设置非常有用。它 默认值为 false。隐含于 netsvc.netboot=true
zircon.system.pkgfs.cmd=<command>
此选项会请求在装载 blob 分区后运行 command。
command 中的任何 +
字符都被视为参数分隔符,
将参数传递给可执行文件。
可执行文件及其依赖项(动态链接器和共享库)
。可执行 path 是 command,位于
前 +
。动态链接器 (PT_INTERP
) 和共享库 (DT_NEEDED
)
发送到加载器服务的名称字符串带有 lib/
前缀,以生成
path。每个这样的 path 都会解析为一个 blob ID(即 ASCII 十六进制格式的 Merkleroot)
使用 zircon.system.pkgfs.file.
path 命令行参数指定该路径。这样,
/boot/config/additional_boot_args
包含用于
启动该过程。
新进程在启动时收到 PA_USER0
通道句柄,该句柄将
用作在 /pkgfs
处装载的客户端文件系统句柄。/pkgfs/system
将会
也会作为 /system
装载。
zircon.system.pkgfs.file.path=<blobid>
与上面的 zircon.system.pkgfs.cmd
一起使用。
zircon.system.filesystem-check=<bool>
此选项会请求系统自动装载的文件系统 在装载之前使用文件系统一致性检查工具进行预验证
默认情况下,此选项设置为 false。
netsvc.netboot=<bool>
如果为 true,Zircon 将尝试通过 netboot 连接到另一个 Zircon 实例 启动。
更具体地说,Zircon 将在 并尝试通过 kexec 连接到新映像,从而将 当前正在运行的 Zircon 实例
此设置意味着 zircon.system.disable-automount=true
netsvc.disable=<bool>
如果设置为 true(默认值),则 netsvc
会停用。
netsvc.advertise=<bool>
如果为 true,netsvc 将通过发送 netboot 广告来寻找 bootserver。 默认值为 true。
netsvc.interface=<path>
此选项指示 netsvc 仅使用拓扑路径结束的设备
替换为选项的值,其中包含与任意零或*
拓扑路径的更多字符。所有其他设备都会被忽略
netsvc。设备的拓扑路径可以通过以下方式从 shell 确定:
在设备上运行 lsdev
命令,例如/dev/class/network/000
或
/dev/class/ethernet/000
)。
对于具有多个 以太网端口,可按非确定性顺序枚举。
netsvc.all-features=<bool>
此选项可让 netsvc
正常运行并支持所有功能。默认情况下
netsvc
以最低模式启动,在该模式下仅支持设备发现。
userboot.next=<path>
此选项指示用户启动过程(第一个用户空间进程) 在 bootfs 中执行指定的二进制文件,而不是遵循常规 用户空间启动过程(启动设备管理器等)。
它对于替代启动模式(例如出厂测试或系统单元)非常有用 测试)。
此处使用的路径名是相对于 userboot.root
(如下所示)的路径名(若已设置)或其他
相对于 BOOTFS 的根(之后通常在 /boot
中看到)。
而不应以 /
前缀开头。
如果此可执行文件使用 PT_INTERP
(即动态链接器),则 userboot
过程提供了
loader 服务
解析 PT_INTERP
(动态链接器)名称,并且任何共享库都会将其命名为
请求。该服务只会在 lib/
目录(位于
userboot.root
)。
可以选择使用“+”指定下一个程序的参数分隔符 程序和各个参数之间的关联。下一个计划名称将始终为 作为第一个参数提供。
示例:userboot.next=bin/core-tests+arg1+arg2=foo
userboot.root=<path>
这会设置一个“根”BOOTFS 中的路径前缀,其中 userboot.next
路径
并找到加载器服务的 lib/
目录。默认情况下
没有前缀,因此路径被视为从
BOOTFS。例如其中 userboot.root=pkg/foo
和 userboot.next=bin/app
是
将为 pkg/foo/bin/app
、pkg/foo/lib/ld.so.1
等。
userboot.shutdown
如果设置了此选项,则当出现以下情况时,userboot 会尝试关闭计算机:
退出进程请注意,如果设置了 userboot.reboot
,则
将忽略userboot.shutdown
。
virtcon.disable
如果存在此选项,则不启动虚拟控制台服务。
virtcon.hide-on-boot
如果存在此选项,虚拟控制台将失去任何 屏幕,直到用户使用设备控制键组合切换到该模式为止。
virtcon.keep-log-visible
如果存在此选项,虚拟控制台服务将保留调试日志 (vc0) 可见,而不是在启动时切换到第一个 shell (vc1)。
virtcon.keymap=<name>
指定虚拟控制台的按键映射。“qwerty”和“dvorak”。
virtcon.font=<name>
指定虚拟控制台的字体。“9x16”和“18x32”。
zircon.nodename=<name>
设置供 bootserver
、loglistener
和
net{addr,cp,ls,runcmd}
工具。如果省略,系统将生成节点名称
从其 MAC 地址发送此 cmdline 获得 GigaBoot 和 Zircon 的支持。
zircon.namegen=<num>
设置系统节点名称生成样式。如果省略或未知,系统会使用
样式 1。如果设置了 zircon.nodename
,则不会产生任何影响。生成旧名称
未来可能删除某些样式此 cmdline 由 GigaBoot 支持,并且
锆石。
Styles: - 0:使用 4 个字词的名称样式,基于 MAC 地址。- 1: fuchsia-0123-4567-89ab。
zvb.current_slot=<_a|_b|_r>
让 Fuchsia 知道引导加载程序启动的槽位。同时设置 告知 paver 支持 ABR,并告知其应更新 ABR 元数据。
zvb.boot-partition-uuid=<UUID>
zvb.current_slot 的替代方法 - 用于指示 Fuchsia 知道由 通过传递包含 Zircon 内核的分区的 UUID 来启动引导加载程序 启动设置此参数还会通知 paver 支持 ABR, 应更新 ABR 元数据。
console.device_topological_suffix=<path>
如果已设置,控制台启动器将会连接到控制台设备,
与此后缀匹配。如果未指定,则使用控制台启动器
将连接到 /svc/console
。仅在 kernel.shell=false 时才有效。
其他 Gigaboot 命令行选项
bootloader.timeout=<num>
此选项用于在引导加载程序中设置启动超时,默认值为 3 。设为 0 即可跳过启动菜单。
bootloader.fbres=<w>x<h>
此选项设置帧缓冲区分辨率。使用引导加载程序菜单来 设备的可用分辨率。
示例:bootloader.fbres=640x480
bootloader.default=<network|local|zedboot>
此选项会将默认启动设备设置为 netboot,使用本地 zircon.bin 或 通过 zedboot 切换到 netboot。
如何将命令行传递给内核
在模拟器或 Qemu 中,使用 ffx emu 或 fx qemu
使用 -c 传递每个选项,例如:
ffx emu start -c gfxconsole.font=18x32 -c gfxconsole.early=false
在 GigaBoot20x6 中,在进行 netboot 时
传递内核命令行末尾的 -- 分隔符,例如:
bootserver zircon.bin bootfs.bin -- gfxconsole.font=18x32 gfxconsole.early=false
在 GigaBoot20x6 中,从 USB 闪存启动时
创建名为“cmdline”的文本文件在 U 盘的根目录下 或包含命令行的文件系统