darwin / OS Xで利用可能なboot-argsのリストはありますか


25

OS Xでは、ブートパラメータを設定できます

nvram boot-args=[options]

-v(冗長)-x(セーフモード)およびarch = x86_64(64ビット対応マシンで64ビットカーネルを起動)について知っているオプション。

他に何かありますか?ドキュメントはないようです。

回答:


23

公式のリストはありません。一般的なリストはカーネル自体にコンパイルされていますが、その他はカーネル拡張機能によって解析できます。ここに私が今まで見つけたリストがあります。

一般的な起動オプション:

  • -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.plistx86osx

  • 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

その他:

  • bluetoothHostControllerSwitchBehaviornever/ always

    プラグインしたドングルに切り替えるかどうかをBluetoothドライバーに指示しますalways。再起動後も外部ドングルをデフォルトにするには、を使用します。

  • smbios:詳細なSMBIOS(AppleSMBIOS.kext){1}

  • acpi:AppleACPIPlatform {1-8}のデバッグ
  • acpi_level:ACPIデバッグレベル
  • acpi_layer:ACPIデバッグレイヤー
  • acpi_sleep:ACPIスリープ
  • nvdebug:NVDAResmanデバッグ
  • nvrm:NVDAResman
  • ndrv_debug_level:NDRVデバッグレベル(NVDAResman)
  • pstep:パワーステップデバッグ(ACPI_SMC)
  • hpet:AppleHPET
  • busratio(例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


2
これは私の一番好きな答えの一つです!ありがとうございました!
クリス

10

グーグルのための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カーネルがフルコアをダンプするか(フラグがクリアされている場合)、または単にパニックログをダンプするか(フラグが設定されている場合)を制御します。  
    




8

ここにいくつかあります

-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)

単純なリンクだけではあまり役に立ちません。回答を展開して、他の投稿が行ったように、実際にいくつかのオプションのリストを含めてください。
ヒンクル

@nhinkle:完了。StackExchangeにはテーブルサポートがないため、最初はそうしませんでした。しかし、Iい情報は情報がないよりも良いと思います。:
パッチ

アップデートをありがとう、@ Patches。+1がさらに便利になりました!
ヒンクル

3

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 .


素晴らしいリンク-ありがとう!関連する関数がPE_parse_boot *であることを知ることは、静的でやむを得ない古いオプションのリストを逆流するよりもはるかに便利です。
テッドミドルトン

1

非常に便利なことを忘れないでください(Lionにアップデートして、ふたを開いた状態で「閉じたクラムシェルモード」でMacを使用したい場合)

sudo nvram boot-args="iog=0x0"

賛辞:chenga.8

しかし、私を悩ませているのは、それについての説明がないことです。なぜ0x0なのか?なぜ0x1ではないのですか?「iog」とはどういう意味ですか?

私のMacbookでは動作しないことを指摘する必要があります。


0x0は最初の16進数の10進数の期間です。
トレバールドルフ

10.7と10.8の両方で動作しましたが、再起動し、起動後にふたを閉じて開く必要があります。
Lri

0

Appleは包括的なリストを提供していないようです。いくつかの既知のオプションをグーグルで検索し、site:apple.com結果を生成しません。オプションのリストを減らすと、このような記事やこれらの引数を解析するソースコードが見つかりますが、包括的なものはありません。

PE_parse_boot_argまた、ブート引数を解析する関数であるを検索することもできます。


そうは言っても、ユーザーが私が見つけることができる最も包括的な情報を提供するサードパーティのページがウェブ上にいくつかありますが、それは時代遅れかもしれません:

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.