回答:
公式のリストはありません。一般的なリストはカーネル自体にコンパイルされていますが、その他はカーネル拡張機能によって解析できます。ここに私が今まで見つけたリストがあります。
一般的な起動オプション:
-v
:起動時にCMD- 保持する必要なく、常にシステムを冗長モードVで起動します。-x
:起動時に保持する必要なく、常にシステムをセーフモードShiftで起動します。f
:古いセーフモード。-s
:ブート保留することなく、シングルユーザモードにシステムCMD- S起動時に。-F
-ブートファイルを無視します。iog
(例iog=0x0
)
これは、Appleのラップトップシステムの「クラムシェル」モードを逆にします。ディスプレイを閉じても、システムを外部モニタとキーボードに接続すると、システムは起動したままになります。このコマンドを実行した後、外部モニターを接続すると、内部ディスプレイが無効になります。これは、デスクトップをミラーリングしているがラップトップが実行できるよりも高い解像度で外部ディスプレイを実行したい場合など。CNET
arch
システムの起動方法を、32ビット(i386
)または64ビット(x86_64
)カーネルに変更します。サードパーティのカーネル拡張は32ビットまたは64ビットのみであることに注意してください。
Graphics Mode
:VESAグラフィックモードの寸法。
Text Mode
:VGAテキストモードのサイズ。Boot Graphics
:グラフィックスまたはテキストモード。Quiet Boot
:静かなブートモード。MKext Cache
:Mkextキャッシュファイル。Kernel Cache
:カーネルキャッシュファイル。rd
:ルートデバイス。boot-uuid
:ブートUUID。platform
:プラットフォームエキスパート{ACPI}。config
:代替構成plist config=foobar
をロードします(たとえば、/Library/Preferences/SystemConfiguration/foobar.plist
代わりにロードしますcom.apple.Boot.plist
)x86osx。
serverperfmode=1
OS X El Capitan 10.11以降では、これにより、パフォーマンスモードでサーバーアプリケーション専用の追加システムリソースを使用できるようになります。
DTrace:
dtrace_dof_mode
:DTrace DOFモードを設定します{0/1/2/3}。DisableFBT
:FBT {1}を無効にします。IgnoreFBTBlacklist
:特定の重要なモジュール{1}のブラックリストを無視します。BSD:
-b
:/etc/rc.bootを実行しないでください。-l
:メモリリークのロギング(osfmk/kern/startup.c
)。srv
:サーバー{1}として起動します。ncl
:クラスターの数。nbuf
:BSD用のバッファーの数。kmem
:カーネルメモリアクセス{1}。trace
:カーネルトレースバッファーサイズ。msgbuf
:メッセージバッファ。rp
:ルートパス。mcache_flags
:メモリキャッシュフラグ。mbuf_debug
:MBufデバッグ{1}。initmcl
:mbufクラスターを初期化します。socket_debug
:ソケットデバッグ(ネット)。net_affinity
:ネットアフィニティ(ネット)。rte_debug
:ルートデバッグ(ネット){フラグ}。-rwroot_hack
:ルートの読み取り/書き込みをマウントします。IOKit:
mseg
:最大セグメント。dart
:マッパーの存在を削除します。io
:IOキットのデバッグ。マッハ:
keepsyms
:KLD /アドレスシンボル変換{1}をアンロードしないでください。debug
:カーネルデバッグ{flags}(例debug=0x14e
)。
追加情報を表示するカーネルデバッグ機能を有効にします。例えば
0x01
-起動時に停止し、デバッガーが接続するのを待ちます0x02
-カーネルデバッグ出力をコンソールに送信します0x04
-マスク不能割り込みでデバッガーにドロップする0x08
-カーネルデバッグ情報をシリアルポートに送信する0x10
-ddbをデフォルトのデバッガーにします0x20
-診断情報をシステムログに出力する0x40
-デバッガーによるARPおよびルーティングを許可する0x80
-新しいシステムでgdbの古いバージョンをサポート0x100
-グラフィカルパニックダイアログ画面を無効にしますnvram_paniclog
:パニックログをNVRAM {1}にコミットします。
pmsafe_debug
:CPUを「安全な」電源モード{1}にします。preempt
:デフォルトのプリエンプションレートを設定します。unsafe
:最大の安全でない量子。poll
:最大ポーリング量。yield
:ポーリング利回りシフトをスケジュールします。idlehalt
:アイドルスレッドを停止してCPUを低電力モード{1}に許可します。panic_io_port
:このI / Oポート{0x0〜0xffff}からのパニック読み取り。_fpu
:起動時のCPU機能を制限{387 / mmx / sse}。disable high mem/2
:高メモリを好む}。immediate_NMI
:即時NMIデバッガー{1}を強制します。-legacy
:レガシー32ビットモードを強制します。lcks
:統計をロックします。novmx
:Rosetta {1}にはaltivecエミュレーションはありません。max_valid_dma_addr
:最大有効DMAアドレス。maxbouncepool
:最大バウンスプールサイズ。maxloreserve
:最大低リザーブ。npvhash
:物理から仮想へのマッピングハッシュ。wpkernel
:書き込み保護カーネル{1}。-no_shared_cr3
:64ビットユーザーの共有カーネルアドレス空間を無効にします。-pmap_trace
:pmapのカーネルトレースを有効にします。_panicd_ip
:パニックサーバーのIP。_router_ip
:ルーターのIP。panicd_port
:パニックサーバーのポート。-zc
:フリーゾーン要素のチェック。mtxspin
:ミューテックススピン(ppc)。vmmforce
:VMMフォース(ppc)。fn
:仮眠(ppc)(acpi){0/1/2}。pmsx
:実験的な電源管理ステッパーモード(ppc){1}。ctrc
:トレースを特定のCPU(ppc)に設定します。tb
:デフォルト以外のトレースバッファーサイズ(ppc)。wcte
:結合タイマーイネーブル(ppc)を書き込みます。mcklog
:マシンチェックフラグ(ppc)をクリアします。mcksoft
:マシンチェックソフトウェアリカバリ(ppc)。ht_shift
:デフォルト以外のハッシュテーブルサイズ(ppc){1}。zsize
:ターゲットゾーンサイズ。colors
:VMの色を設定します。fill
:ページを埋めます。serialbaud
:シリアルボーレートを設定します。起動オプションxnu/osfmk/i386/i386_init.c
:
diag
:診断出力。serial
:シリアル診断コンソール。シリアルキーボードやコンソールのサポート。
maxmem
使用する最大メモリ。アドレス可能なメモリを指定された量(例maxmem=32
)に制限します。
cpus=1
システム内のアクティブなプロセッサの数を設定レベルに制限します。これは電力を節約するのに役立つ可能性がありますが、テストとプログラミングを行わない限り、他の多くの人にとっては役に立たないでしょう。
himemory_mode
4GB以上のシステムの大規模な物理メモリ構成のデバッグに使用されます。モード:0-利用可能なすべてのページ、1-高メモリを無効にする、2-高メモリを優先する。
immediate_NMI
即時のNMIデバッガーを強制することにより、4GB以上のシステムのデバッグサポート。
urgency_notification_abstime
その他:
bluetoothHostControllerSwitchBehavior
(never
/ always
)
プラグインしたドングルに切り替えるかどうかをBluetoothドライバーに指示しますalways
。再起動後も外部ドングルをデフォルトにするには、を使用します。
smbios
:詳細なSMBIOS(AppleSMBIOS.kext){1}
acpi
:AppleACPIPlatform {1-8}のデバッグacpi_level
:ACPIデバッグレベルacpi_layer
:ACPIデバッグレイヤーacpi_sleep
:ACPIスリープnvdebug
:NVDAResmanデバッグnvrm
:NVDAResmanndrv_debug_level
:NDRVデバッグレベル(NVDAResman)pstep
:パワーステップデバッグ(ACPI_SMC)hpet
:AppleHPETbusratio
(例busratio=20
):10.5.6ではi7 cpuを使用し、10.5.7以降ではx86osxは必要ありません。ソース:xnu-1228 /ブート引数
(あなたがシングルモードにいるとき例えばCMD- S起動時の音の後に)、セーフモードで実行して、冗長に余分なカーネルとコンソールに出力をデバッグするために、試してみてください。
sudo nvram boot-args="-x -v debug=0x14e"
引数を既存の(オーバーライドせずに)追加するには、次を試してください:
sudo nvram boot-args="-v $(nvram boot-args 2>/dev/null | cut -f 2-)"
ブート引数を削除するには、次を実行します:
sudo nvram boot-args=""
sudo nvram -d boot-args
他の非公式パラメーターは、kernel
バイナリーit-selfで見つけることができます。例えば
$ strings /System/Library/Kernels/kernel | grep -C7 maxmem
kernel_early_bootstrap
diag
serial
Serial mode specified: %08X
PE_init_printf
version_variant = %s
version = %s
maxmem
himemory_mode
himemory_mode: %d
immediate_NMI
urgency_notification_abstime
i386_vm_init
power_management_init
machine_startup
または、(カーネルブート引数の解析に使用される)を検索して、AppleソースファイルまたはGitHub で確認しますPE_parse_boot_argn
。
グーグルのためのboot-args site:developer.apple.com
いくつかの良いリソースを提供します。例えば
cpus=1
システムが単一のCPUコアのみを使用するように強制します。 srv=1
は、Mac OS X ServerがインストールされているXserveおよびマシンで設定され、サーバーフレンドリーな操作のためにいくつかのカーネル調整パラメーターを変更すると思われます。 _panicd_ip=a.b.c.d
カーネルコアダンプを書き込むパニックデバッグサーバーのIPアドレスを指定できます。 debug=0xH
(Hは、1〜4桁の16進数です)このリストからカーネルデバッグフラグを設定できます。
DB_HALT 0x01ブート時に停止し、デバッガー接続(gdb)を待ちます。 DB_PRT 0x02カーネルデバッグのprintf出力をコンソールに送信します。 DB_NMI 0x04 NMIのデバッガーにドロップします(コマンド-電源、コマンド-オプション-コントロール-シフト-エスケープ、または割り込みスイッチ)。 DB_KPRT 0x08カーネルデバッグkprintf出力をシリアルポートに送信します。 DB_KDB 0x10 ddb(kdb)をデフォルトのデバッガーにします(カスタムカーネルが必要です)。 DB_SLOG 0x20特定の診断情報をシステムログに出力します。 DB_ARP 0x40デバッガーのARPおよびルーティングを許可します(ルーター全体のデバッグを許可し、永続的なARPエントリの必要性を取り除きますが、潜在的なセキュリティホールです)-すべてのカーネルで利用できません。 DB_KDP_BP_DIS 0x80新しいシステムでgdbの古いバージョンをサポートします。 DB_LOG_PI_SCRN 0x100グラフィカルパニックダイアログを無効にします。 DB_KERN_DUMP_ON_PANIC 0x0400は、システムがパニックしたときにカーネルがコアダンプするようにします。 DB_KERN_DUMP_ON_NMI 0x0800は、ユーザーがNMIをトリガーしたときにカーネルがコアダンプするようにします。 DB_DBG_POST_CORE 0x1000 NMI(DB_KERN_DUMP_ON_NMI)に応答してコアをダンプした後のカーネルの動作を制御します。ユーザーがNMIをトリガーし、このフラグがクリアされている場合、カーネルはコアをダンプしてから続行します。逆に、このフラグが設定されている場合、カーネルはコアをダンプし、デバッガー接続を待機します。 DB_PANICLOG_DUMP 0x2000カーネルがフルコアをダンプするか(フラグがクリアされている場合)、または単にパニックログをダンプするか(フラグが設定されている場合)を制御します。
static void parse_bsd_args(void)
opensource.apple.com/source/xnu/xnu-2782.1.97/bsd/kern/...
void i386_init(void)
opensource.apple.com/source/xnu/xnu-2782.1.97/osfmk/i386/...
void gzalloc_configure(void)
opensource.apple.com/source/xnu/xnu-2782.1.97/osfmk/kern/...
-f Force rebuild extensions cache
-v Verbose booting shows debug information
-s Boots into single user mode (means only terminal based mode)
-x Boots into safe mode
-legacy Boots into 32bit instead of 64bit mode
rd=disk0s1 Force to boot a specific partition on a specific drive (BSD drive notation, means disk0 = physical disk 1). Here disk1 partition 1 is forced to be booted.
Graphics Mode=1024x768x32@75 Forces to boot with a resolution of 1024 x 768 with 32bit colors at 75Hz
Kernel=mach_kernel Forces to load a specific kernel, helpful for testing of new kernels.
cpus=1 Force using only 1 CPU core, may help addressing issues
idlehalt=0 May solve stuttering and shuttering on dualcore CPUs
platform=X86PC Forces to not use powermanagement (disables ACPI)
platform=ACPI Forces to use powermanagement (enables ACPI, but may crash your system)
darwinカーネルは「xnu」と呼ばれ、探していたもののソースコードをgrepすることしかできませんでした。
例:OS X 10.8.5
https://gist.github.com/reklis/fa26d4e8db62d6eea9ea
手順:
ここ(またはOS Xバージョン)に移動します
http://www.opensource.apple.com/release/mac-os-x-1085/
「parse_boot」のXNU tarball、extract、grepをダウンロードします
cd xnu; grep -iRn parse_boot .
非常に便利なことを忘れないでください(Lionにアップデートして、ふたを開いた状態で「閉じたクラムシェルモード」でMacを使用したい場合)
sudo nvram boot-args="iog=0x0"
賛辞:chenga.8
しかし、私を悩ませているのは、それについての説明がないことです。なぜ0x0なのか?なぜ0x1ではないのですか?「iog」とはどういう意味ですか?
私のMacbookでは動作しないことを指摘する必要があります。
Appleは包括的なリストを提供していないようです。いくつかの既知のオプションをグーグルで検索し、site:apple.com
結果を生成しません。オプションのリストを減らすと、このような記事やこれらの引数を解析するソースコードが見つかりますが、包括的なものはありません。
PE_parse_boot_arg
また、ブート引数を解析する関数であるを検索することもできます。
そうは言っても、ユーザーが私が見つけることができる最も包括的な情報を提供するサードパーティのページがウェブ上にいくつかありますが、それは時代遅れかもしれません: