找回密码
 注册账号
搜索
查看: 2075|回复: 0

[求助] macOS 启动参数列表

[复制链接]

3087

主题

688

回帖

3万

积分

管理员

积分
31443

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

发表于 2020.4.28 12:43 | 显示全部楼层 |阅读模式
众所周知,在 Mac 设备启动时通过 Command + V 或者 Command +S 这类快捷键改变启动行为。但是除此以外,通过 NVRAM 或第三方引导程序(如 Clover)中也可以设置启动参数。macOS 内置了许多启动参数,可以用于专业用户调试或排除故障。

在 macOS 中你可以通过 nvram 工具设置启动参数:

  1. sudo nvram boot-args="-v"
复制代码

当然,对于使用第三方引导程序(如 Clover 等)的用户来说,可以在 config.plist 文件、或者在启动菜单中设置引导参数。

-v:以「啰嗦模式」启动,等价于 Mac 设备上的快捷键 Command + V。
-x:以「安全模式」启动,等价于 Mac 设备上的长按 Shift 键。在这一模式下 macOS 会加载尽可能少的内核扩展(kext)文件。
-s:以「单用户模式」启动,等价于 Mac 设备上的快捷键 Command + S。这一模式将会启动终端模式,你可以用这种方式修复你的系统。
f:旧版的「安全模式」。
-f:启动时强制重建内核扩展(kext)缓存。
config:指定用于代替 com.apple.Boot.plist 的配置文件。config=sukka 将会加载 /Library/Preferences/SystemConfiguration/sukka.plist
arch=x86_64:在 OS X Snow Leopard 中,即使已经内置了 64 位内核,系统也依然默认启动 32 位内核。这个启动参数可以使系统强制使用 64 位内核。如果要使系统总是以 32 位内核启动,请将 x86_64 部分替换为 i386。在某些情况下,第三方 kext 可能只有 32 位或 64 位,需要启动到相应的内核类型才能加载。
-legacy:启动到 32 位内核。
maxmem=32:将可寻址内存限制为指定的容量,本例中为 32 GB。如果没有这一启动参数,macOS 会将内存限制设置为硬件可以寻址的最大容量、亦或是安装的内存容量。
cpus=1:限制系统中活动 CPU 的数量。苹果的开发者工具有一个选项用于启用或禁用系统中的一些 CPU,但你也可以通过这个参数指定要使用的 CPU 数量。在某些情况下,这也许有助于省电、或者你正在调试 X86 电源驱动,否则这一选项真的没什么别的作用。
rd=disk0s1:强制指定启动分区。
rp:根目录位置。
trace:Kernel Trace 缓冲区大小。
iog=0x0:这一参数强制 macOS 在笔记本上 不使用 Clamshell 模式。此时当你外接了显示器和键盘,合盖后笔记本不会睡眠、但内置显示器将会关闭。
serverperfmode:为 macOS Server 开启 性能模式
_panicd_ip=11.4.5.14:设置一个 Kernel Panic 收集服务器的 IP 地址,日志将会通过 UDP 协议发送给这个 IP 的 1069 端口。
panicd_port:修改日志发送端口(默认为 1069)。
debug=0x144:这一参数结合了内核调试功能来显示内核进程的额外信息,这在 Kernel Panic 时很有用。可用的参数包括以下这些:
0x1:DB_HALT,在引导时暂停,直到外部调试串口已经连接并被识别
0x2:DB_PRT,将内核的 printf() 函数输出的信息打印到 Console.app
0x4:DB_NMI,启用内核调试功能,包括生成非屏蔽中断(NMI)。在 Power Mac 上,只需简单地按下电源键就能产生 NMI。在笔记本电脑上,在按下电源键时必须按住命令键。如果按住电源键超过五秒钟,系统将关闭电源。在「系统偏好设置」中更改启动盘时 DB_NMI 位将被清除。
0x8:DB_KPRT,将 kprintf() 产生的内核调试输出发送到远程输出设备,通常是一个调试串口(如果有的话)。注意, kprintf() 的输出是同步的。
0x10:DB_KDB,使用 KDB 代替 GDB 作为默认的内核调试器。与 GDB 不同,KDB 必须被显式编译到内核中。此外,基于 KDB 的调试需要原生的串口硬件(而不是基于 USB 的串口适配器)。
0x20:SB_SLOG,启用将杂项诊断记录到系统日志中。设置了这个位后,load_shared_file() 内核函数会记录额外的信息。
0x40:DB_ARP,允许跨局域网调试内核。
0x80:DB_KDP_BP_DIS,已经被弃用,用于支持旧版的 GDB。
0x100:DB_LOG_PI_SCRN,禁用五国、而把 Kernel Panic 的相关数据直接打印在屏幕上。这一参数还可以用于 Core Dump。
0x200:DB_KDP_GETC_ENA,在 Kernel Panic 后启用快捷键(c 继续,r 重启,k 进入 KDB)
0x400:DB_KERN_DUMP_ON_PANIC,当 Kernel Panic 时触发一次 Core Dump。
0x800:DB_KERN_DUMP_ON_NMI,当产生 NMI 时触发一次 Core Dump。
0x1000:DB_DBG_POST_CORE,等待调试器连接(如果使用 GDB)或在 NMI 触发的内核转储后等待调试器(如果使用 KDB)。如果没有设置 DB_DBG_POST_CORE,内核在 Core Dump 后继续运行。
0x2000:只生成并发送 Kernel Panic Log,不生成完整的 Core Dump。
artsize:指定要用于地址解析表(ART)的页数。
BootCacheOverride:BootCache 驱动程序被加载,但从网络启动时不会运行。设置 BootCacheOverride=1 可以覆盖此行为。
dart:设置 dart=0 会关闭 64 位硬件上的系统 PCI 地址映射器(DART)。DART 在拥有 2GB 以上物理内存的机器上是必需的,但在所有机器上无论内存大小,默认情况下都会启用 DART
diag:启用内核的内置诊断接口及其特定功能。
fill:指定一个整数值,在启动是将会用这个整数填充所有内存。
fn:改变处理器的强制休眠行为。设置 fn=1 将关闭强制休眠;设置 fn=2 将开启强制休眠。
_fpu:禁用x86上的FPU功能。_fpu=387 将禁用 FXSR/SSE/SSE2,而字符串值为 _fpu=se 的字符串值将禁用 SSE2。
hfile:休眠文件的名称(这一参数也会修改 sysctl 中的 kern.hibernatefile 变量)。
io:I/O Kit 驱动调试位。设置为 0x00200000 (即 kIOLogSynchronous)时会使 IOLog() 函数同步执行。
novmx=1:禁用 AltiVec。
pcata=0:禁用板载 PC ATA 驱动器。
pmsx=1:在 OS X 10.4.3 上启用实验性电源管理(PMS)。
_router_ip=11.4.5.14:使用跨局域网内核调试时指定网关 IP。
serial=1,启用串口调试。
smbios=1:在 SMBIOS 驱动中启用详细的日志信息,仅限于 32 位机器。
vmdx 和pmdx:内核启动时在内存中创建一个分区,参数格式为 base.size,其中 base 是对齐的内存地址、size 是内存页面大小的倍数。vmdx 指虚拟内存、pmdx 指物理内存。创建成功后将会被分别挂载在 dev/mdx 和 dev/emdx 下。
-b:不执行 /etc/rc.boot。
-l:日志中输出内存泄漏相关记录。
srv=1:如果你在 X Servers 或 macOS Server 系统中使用这一参数,macOS 会修改内核的电源和网络参数,提升作为服务器的性能。
nvram_paniclog:将 Kernel Panic 日志写入 NVRAM。
acpi:启用 AppleACPIPlatform 调试。
acpi_level:ACPI 调试等级。
idlehalt=1:无视所有空闲进程、使 CPU 进入低功率模式。
platform:platform=X86PC 强制禁用 ACPI 电源管理;platform=ACPI 强制启用 ACPI 电源管理。
keepsyms=1:保留 KLD/Address-Symbol 翻译。


来源:macOS 启动参数列表 | Sukka's Blog
链接:https://blog.skk.moe/post/macos-boot-args/

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

站点地图|童话镇

GMT+8, 2024.4.26 13:43 , Processed in 0.053289 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表