macOS 启动参数列表
黑苹果约 1.8 千字
众所周知,在 Mac 设备启动时通过 Command + V 或者 Command +
在 macOS 中你可以通过 nvram
工具设置启动参数:
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 以上物理内存的机器上是必需的,但在所有机器上无论内存大小,默认情况下都会启用 DARTdiag
:启用内核的内置诊断接口及其特定功能。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 启动参数列表
转载或引用本文时请遵守许可协议,注明出处、不得用于商业用途!