web-dev-qa-db-ja.com

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

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

nvram boot-args=[options]

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

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

26
stib

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

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

  • -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:カーネルデバッグ{フラグ}(例:debug=0x14e)。

    追加情報を表示するカーネルデバッグ機能を有効にします。例えば。

    • 0x01-ブート時に停止し、デバッガーが接続するのを待ちます
    • 0x02-カーネルデバッグ出力をコンソールに送信します
    • 0x04-マスク不可能な割り込みでデバッガーにドロップ
    • 0x08-カーネルデバッグ情報をシリアルポートに送信します
    • 0x10-ddbをデフォルトのデバッガーにします
    • 0x20-診断情報をシステムログに出力します
    • 0x40-デバッガーにARPとルーティングを許可します
    • 0x80-新しいシステムで古いバージョンのgdbをサポート
    • 0x100-グラフィカルパニックダイアログ画面を無効にする
  • nvram_paniclog: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:ロゼッタ{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 (カーネルブート引数の解析に使用)を検索して確認します。

28
kenorb

boot-args site:developer.Apple.com のグーグルは、いくつかの優れたリソースを提供します。例えば。

  • cpus=1は、システムに単一のCPUコアのみを使用するように強制します。
  • srv=1は、Mac OS X ServerがインストールされているXservesとマシンで設定され、サーバー向けの操作のためにいくつかのカーネル調整パラメータを変更すると思われます。
  • _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_LOG_PI_SCRN 0x100グラフィカルパニックダイアログを無効にします。 NMI 
     DB_DBG_POST_CORE 0x1000コアをrespoにダンプした後のカーネルの動作を制御しますNMI(DB_KERN_DUMP_ON_NMI)にnseします。ユーザーがNMI=をトリガーし、このフラグがクリアされている場合、カーネルはコアをダンプしてから続行します。逆に、このフラグが設定されている場合、カーネルはコアをダンプしてデバッガー接続を待機します。 
     DB_PANICLOG_DUMP 0x2000カーネルが完全なコア(フラグがクリアされている場合)をダンプするか、単にパニックログ(フラグが設定されている場合)をダンプするかを制御します。
    
10
Spiff

さらにいくつかあります

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

ダーウィンカーネルは「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/

XNU tarballのダウンロード、抽出、「parse_boot」のgrep

cd xnu; grep -iRn parse_boot .

3
slf

非常に便利なことを忘れないでください(Lionに更新し、Macを「閉じたクラムシェルモード」で蓋を開いて使用したい場合)

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

称賛: chenga.8

しかし、私が気になるのは、その説明が見つからないことです。なぜ0x0なのか?なぜ0x1ではないのですか?とにかく 'iog'は何を表していますか?

Macbookでは機能しないことを指摘しておきます。

1
lorenzog

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

また、PE_parse_boot_argを検索することもできます。これは、起動引数を解析する関数です。


そうは言っても、私が見つけた最も包括的な情報をユーザーが提供するWeb上のサードパーティのページがいくつかありますが、古くなっている可能性があります。

0
Daniel Beck