Gibt es eine Liste der verfügbaren Boot-Argumente für Darwin / OS X?

25

In OS X können Sie Boot-Parameter mit einstellen

nvram boot-args=[options]

Wo sind die mir bekannten Optionen für -v (ausführlich) -x (abgesicherter Modus) und arch = x86_64 (64-Bit-Kernel auf 64-Bit-fähigen Computern starten)?

Gibt es noch andere? Es scheint keine Dokumentation zu geben.

stib
quelle

Antworten:

23

Es gibt keine offizielle Liste, die gebräuchlichen werden selbst in den Kernel kompiliert, andere können durch Kernel-Erweiterungen analysiert werden. Hier ist die Liste, die ich bisher gefunden habe.

Allgemeine Bootoptionen:

  • -v: Booten Sie das System immer im Verbose-Modus, ohne dass Sie es gedrückt halten müssen CMD- Vbeim Start.
  • -x: Starten Sie das System immer im abgesicherten Modus, ohne es Shiftbeim Start anhalten zu müssen .
  • f: Alter abgesicherter Modus.
  • -s: Starten Sie das System in den Einzelbenutzermodus ohne Halt zu benötigen CMD- Sbeim Start.
  • -F - Bootdatei ignorieren.
  • iog(zB iog=0x0)

    Dies kehrt den "Clamshell" -Modus für Apples Laptop-Systeme um. Wenn Sie das Display schließen, das System jedoch an einen externen Monitor und eine externe Tastatur anschließen, bleibt das System wach. Nach dem Ausführen dieses Befehls wird beim Anschließen eines externen Monitors die interne Anzeige deaktiviert. Dies kann in bestimmten Situationen hilfreich sein, z. B. wenn Sie Ihren Desktop spiegeln, die externe Anzeige jedoch mit einer höheren Auflösung ausführen möchten, als Ihr Laptop ausführen kann . CNET

  • arch

    Ändert den Systemstart entweder auf den 32-Bit- ( i386) oder den 64-Bit- ( x86_64) Kernel. Beachten Sie, dass es sich bei den Kernel-Erweiterungen von Drittanbietern möglicherweise nur um 32-Bit- oder 64-Bit-Erweiterungen handelt.

  • Graphics Mode: Abmessungen des VESA-Grafikmodus.

  • Text Mode: Abmessungen des VGA-Textmodus.
  • Boot Graphics: Grafik- oder Textmodus.
  • Quiet Boot: Leiser Bootmodus.
  • MKext Cache: Mkext-Cache-Datei.
  • Kernel Cache: Kernel-Cache-Datei.
  • rd: Root-Gerät.
  • boot-uuid: Boot-UUID.
  • platform: Plattformexperte {ACPI}.
  • config: Alternative Konfigurationsliste config=foobarladen (wird zB /Library/Preferences/SystemConfiguration/foobar.pliststatt geladencom.apple.Boot.plist ) x86osx .

  • serverperfmode=1

    Unter OS X El Capitan 10.11 und höher können im Leistungsmodus zusätzliche Systemressourcen für Serveranwendungen reserviert werden.

DTrace:

  • dtrace_dof_mode: DTrace DOF-Modi einstellen {0/1/2/3}.
  • DisableFBT: Deaktivieren Sie FBT {1}.
  • IgnoreFBTBlacklist: Ignoriere die Blacklist bestimmter kritischer Module {1}.

BSD:

  • -b: Führen Sie nicht /etc/rc.boot aus.
  • -l: Speicherverluste protokollieren ( osfmk/kern/startup.c).
  • srv: Booten Sie als Server {1}.
  • ncl: Anzahl der Cluster.
  • nbuf: Anzahl der Puffer für BSD.
  • kmem: Kernelspeicherzugriff {1}.
  • trace: Größe des Kernel-Trace-Puffers.
  • msgbuf: Nachrichtenpuffer.
  • rp: Root-Pfad.
  • mcache_flags: Speicher-Cache-Flags.
  • mbuf_debug: MBuf Debug {1}.
  • initmcl: Init mbuf Cluster.
  • socket_debug: Socket-Debug (netto).
  • net_affinity: Netzaffinität (netto).
  • rte_debug: Route Debug (net) {Flags}.
  • -rwroot_hack: Root lesen / schreiben.

IOKit:

  • mseg: Maximales Segment.
  • dart: Entfernen Sie den vorhandenen Mapper.
  • io: IO Kit Debug.

Mach:

  • keepsyms: KLD / Adressensymbol-Übersetzung {1} nicht entladen.
  • debug: Kernel Debug {Flags} (zB debug=0x14e).

    Aktiviert Kernel-Debugging-Funktionen, die zusätzliche Informationen anzeigen. Z.B

    • 0x01 - Halten Sie beim Booten an und warten Sie, bis der Debugger eine Verbindung hergestellt hat
    • 0x02 - Kernel-Debugging-Ausgabe an die Konsole senden
    • 0x04 - Wechseln Sie bei einem nicht maskierbaren Interrupt in den Debugger
    • 0x08 - Kernel-Debugging-Informationen an eine serielle Schnittstelle senden
    • 0x10 - Machen Sie ddb zum Standard-Debugger
    • 0x20 - Diagnoseinformationen in das Systemprotokoll ausgeben
    • 0x40 - Lassen Sie den Debugger ARP und Route
    • 0x80 - Unterstützt alte Versionen von GDB auf neueren Systemen
    • 0x100 - Deaktivieren Sie den grafischen Panikdialog
  • nvram_paniclog: Paniclog in NVRAM {1} übertragen.

  • pmsafe_debug: Versetzen Sie die CPUs in den "sicheren" Stromversorgungsmodus {1}.
  • preempt: Standardvorauszahlungsrate festlegen.
  • unsafe: Max unsichere Quanten.
  • poll: Max poll quanta.
  • yield: Umfrageergebnisverschiebung einplanen.
  • idlehalt: Halten Sie den inaktiven Thread an, damit die CPU in den Energiesparmodus {1} wechselt.
  • panic_io_port: In Panik wird von diesem E / A-Port {0x0 bis 0xffff} gelesen.
  • _fpu: Begrenzung der CPU-Funktionen für die Startzeit {387 / mmx / sse}.
  • disable high mem/2: lieber high mem}.
  • immediate_NMI: Sofortigen NMI-Debugger erzwingen {1}.
  • -legacy: Erzwinge den alten 32-Bit-Modus.
  • lcks: Statistiken sperren.
  • novmx: Keine Altivec-Emulation in Rosetta {1}.
  • max_valid_dma_addr: Max. Gültige DMA-Adresse.
  • maxbouncepool: Max. Größe des Bounce-Pools.
  • maxloreserve: Max niedrige Reserve.
  • npvhash: Physikalischer zu virtuellem Mapping-Hash.
  • wpkernel: Schreibschutzkernel {1}.
  • -no_shared_cr3: Deaktiviert den gemeinsam genutzten Kernel-Adressraum für 64-Bit-Benutzer.
  • -pmap_trace: Aktivieren Sie die Kernel-Traces für pmap.
  • _panicd_ip: IP des Panikservers.
  • _router_ip: IP des Routers.
  • panicd_port: Port des Panikservers.
  • -zc: Freizonenelementprüfung.
  • mtxspin: Mutex-Spin (ppc).
  • vmmforce: VMM-Kraft (ppc).
  • fn: Nickerchen erzwingen (ppc) (acpi) {0/1/2}.
  • pmsx: Experimenteller Power-Management-Stepper-Modus (ppc) {1}.
  • ctrc: Legen Sie die Ablaufverfolgung auf eine bestimmte CPU (ppc) fest.
  • tb: Nicht standardmäßige Ablaufverfolgungspuffergröße (ppc).
  • wcte: Schreibe Kombinations-Timer-Freigabe (ppc).
  • mcklog: Maschinenkontrollflag löschen (ppc).
  • mcksoft: Wiederherstellung der Software zur Maschinenüberprüfung (ppc).
  • ht_shift: Nicht standardmäßige Hash-Tabellengröße (ppc) {1}.
  • zsize: Größe der Zielzone.
  • colors: Legen Sie die VM-Farben fest.
  • fill: Seiten füllen.
  • serialbaud: Stellen Sie die serielle Baudrate ein.

Bootoptionen von xnu/osfmk/i386/i386_init.c:

  • diag: Diagnoseausgang.
  • serial: Serielle Diagnosekonsole. Unterstützung für eine serielle Tastatur und / oder Konsole.

  • maxmem

    Maximal zu verwendender Speicher. Es begrenzt den adressierbaren Speicher auf die angegebene Menge (zB maxmem=32).

  • cpus=1

    Beschränkt die Anzahl der aktiven Prozessoren im System auf die festgelegte Ebene. Dies kann helfen, Energie zu sparen, was für viele andere Anwendungen wahrscheinlich nicht sinnvoll ist, es sei denn, Sie testen und programmieren.

  • himemory_mode

    Es wird zum Debuggen großer physischer Speicherkonfigurationen für Systeme mit mehr als 4 GB verwendet. Modi: 0 - alle Seiten verfügbar, 1 - hohe Mem deaktivieren, 2 - hohe Mem bevorzugen.

  • immediate_NMI

    Debug-Unterstützung für über 4-GB-Systeme durch Erzwingen des sofortigen NMI-Debuggers.

  • urgency_notification_abstime

Andere:

  • bluetoothHostControllerSwitchBehavior( never/ always)

    Teilen Sie dem Bluetooth-Treiber mit, ob Sie zu dem Dongle wechseln möchten, den Sie angeschlossen haben. Verwenden Sie, um den externen Dongle auch nach dem Neustart als Standard zu verwenden always.

  • smbios: Ausführliches SMBIOS (AppleSMBIOS.kext) {1}

  • acpi: Debuggen der AppleACPIP-Plattform {1-8}
  • acpi_level: ACPI-Debug-Level
  • acpi_layer: ACPI Debug Layer
  • acpi_sleep: ACPI Schlaf
  • nvdebug: NVDAResman-Debug
  • nvrm: NVDAResman
  • ndrv_debug_level: NDRV-Debug-Level (NVDAResman)
  • pstep: Power Step Debug (ACPI_SMC)
  • hpet: AppleHPET
  • busratio(zB busratio=20): Es verwendete i7 CPU in 10.5.6, nach 10.5.7 benötigt es nicht x86osx .

Quelle: xnu-1228 / Boot-Argumente


Verwendung

Wenn Sie sich beispielsweise im Einzelmodus befinden ( CMD- Snach dem Sound beim Start), um im abgesicherten Modus und ausführlich mit zusätzlicher Kernel-Debugging-Ausgabe auf der Konsole zu arbeiten, versuchen Sie Folgendes:

sudo nvram boot-args="-x -v debug=0x14e"

Versuchen Sie Folgendes, um das Argument in das vorhandene Argument einzufügen (ohne es zu überschreiben):

sudo nvram boot-args="-v $(nvram boot-args 2>/dev/null | cut -f 2-)"

Führen Sie Folgendes aus, um Startargumente zu entfernen:

sudo nvram boot-args=""
sudo nvram -d boot-args

Andere inoffizielle Parameter können in kernelbinär selbst gefunden werden, z

$ 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

Oder suchen Sie entweder in Apple-Quelldateien oder in GitHub nach PE_parse_boot_argn(das zum Analysieren der Kernel-Boot-Argumente verwendet wird).

Kenorb
quelle
2
Dies ist eine meiner Lieblingsantworten aller Zeiten! Vielen Dank!
Chris
10

Googeln boot-args site:developer.apple.comgibt einige gute Ressourcen. Z.B

  • cpus=1 zwingt das System, nur einen einzigen CPU-Kern zu verwenden.
  • srv=1 wird auf Xserves und Computern eingerichtet, auf denen Mac OS X Server installiert ist, und ändert angeblich einige Kernel-Optimierungsparameter, um einen serverfreundlichen Betrieb zu gewährleisten.
  • _panicd_ip=a.b.c.d Hier können Sie die IP-Adresse eines Panic-Debug-Servers angeben, auf den Kernel-Core-Dumps geschrieben werden sollen.
  • debug=0xH (Wobei H eine 1-4-stellige Hexadezimalzahl ist) Ermöglicht das Festlegen von Kernel-Debugging-Flags aus dieser Liste:

    DB_HALT 0x01 Halte beim Booten an und warte auf das Anhängen des Debuggers (gdb).  
    DB_PRT 0x02 Sendet die Kernel-Debugging-PrintF-Ausgabe an die Konsole.  
    DB_NMI 0x04 Wechseln Sie unter NMI in den Debugger (Befehl-Ein / Aus, Befehl-Option-Steuerung-Umschalt-Escape oder Interrupt-Schalter).  
    DB_KPRT 0x08 Kernel-Debugging-Ausgabe von kprintf an serielle Schnittstelle senden.  
    DB_KDB 0x10 Machen Sie ddb (kdb) zum Standard-Debugger (erfordert einen benutzerdefinierten Kernel).  
    DB_SLOG 0x20 Gibt bestimmte Diagnoseinformationen in das Systemprotokoll aus.  
    DB_ARP 0x40 Debugger für ARP und Route zulassen (ermöglicht das Debuggen über Router hinweg und beseitigt die Notwendigkeit eines permanenten ARP-Eintrags, stellt jedoch eine potenzielle Sicherheitslücke dar) - nicht in allen Kerneln verfügbar.  
    DB_KDP_BP_DIS 0x80 Unterstützt alte Versionen von gdb auf neueren Systemen.  
    DB_LOG_PI_SCRN 0x100 Deaktiviert den grafischen Panikdialog.  
    DB_KERN_DUMP_ON_PANIC 0x0400 Bewirkt, dass der Kernel einen Core-Dump ausführt, wenn das System in Panik gerät.  
    DB_KERN_DUMP_ON_NMI 0x0800 Bewirkt, dass der Kernel einen Core-Dump ausführt, wenn der Benutzer ein NMI auslöst.  
    DB_DBG_POST_CORE 0x1000 Steuert das Verhalten des Kernels nach dem Dump des Kerns als Antwort auf ein NMI (DB_KERN_DUMP_ON_NMI). Wenn der Benutzer ein NMI auslöst und dieses Flag gelöscht ist, wird der Kernel den Kern sichern und dann fortfahren. Umgekehrt, wenn dieses Flag gesetzt ist, wird der Kernel den Kern sichern und dann auf eine Debugger-Verbindung warten.  
    DB_PANICLOG_DUMP 0x2000 Steuert, ob der Kernel einen vollständigen Core (wenn das Flag leer ist) oder einfach ein Panikprotokoll (wenn das Flag gesetzt ist) erstellt.  
    
Spiff
quelle
1
static void parse_bsd_args(void) opensource.apple.com/source/xnu/xnu-2782.1.97/bsd/kern/…
Denis Denisov
1
void gzalloc_configure(void) opensource.apple.com/source/xnu/xnu-2782.1.97/osfmk/kern/…
Denis Denisov
8

Hier sind noch ein paar mehr :

-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)
Aufnäher
quelle
Nur ein einfacher Link ist nicht sehr hilfreich. Bitte erweitern Sie Ihre Antwort, um tatsächlich eine Liste einiger der Optionen zu enthalten, wie dies auch andere Beiträge hier getan haben.
nhinkle
@nhinkle: Fertig. Das habe ich ursprünglich nicht getan, da StackExchange keine Unterstützung für Tabellen bietet, die es schwierig macht, sie auf eine Weise aufzulisten, die nicht schmerzhaft hässlich ist. Aber ich nehme an, hässliche Informationen sind besser als keine Informationen. :-)
Patches
Danke für das Update, @Patches. Das ist jetzt viel hilfreicher, +1!
nhinkle
3

Der Darwin-Kernel heißt "xnu", das Beste, was ich tun konnte, war, den Quellcode nach dem zu durchsuchen, wonach gesucht wurde.

Beispiel: OS X 10.8.5

https://gist.github.com/reklis/fa26d4e8db62d6eea9ea

Verfahren:

Gehen Sie hier (oder Ihre OS X-Version)

http://www.opensource.apple.com/release/mac-os-x-1085/

XNU-Tarball herunterladen, extrahieren, nach "parse_boot" suchen

cd xnu; grep -iRn parse_boot .

slf
quelle
Tolle Links - danke! Zu wissen, dass die relevante Funktion PE_parse_boot * ist, ist so viel nützlicher, als eine statische und unvermeidlich veraltete Liste von Optionen erneut zu erzwingen.
Ted Middleton
1

Nicht zu vergessen das immens Nützliche (wenn Sie auf Lion aktualisiert haben und Ihren Mac im geschlossenen Clamshell-Modus mit geöffnetem Deckel verwenden möchten)

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

Lob an: chenga.8

Was mich jedoch stört, ist, dass ich keine Erklärung dafür finde. Warum 0x0? Warum nicht 0x1? Wofür steht "iog" überhaupt?

Ich sollte darauf hinweisen, dass es auf meinem MacBook nicht funktioniert.

Lorenzog
quelle
0x0 ist die erste hexadezimale Periode.
Trevor Rudolph
Es hat bei mir sowohl bei 10.7 als auch bei 10.8 funktioniert, aber Sie müssen neu starten und dann den Deckel nach dem Start schließen und öffnen.
Lri
0

Apple scheint keine umfassende Liste zur Verfügung zu stellen. Nach einigen bekannten Optionen googeln und site:apple.comkeine Ergebnisse erzielen. Durch Reduzieren der Liste der Optionen werden Artikel wie dieser und einige Quellcodes gefunden, in denen diese Argumente analysiert werden, die jedoch nicht vollständig sind.

Sie könnten auch nach PE_parse_boot_argeiner Funktion suchen , die Boot-Argumente analysiert.


Davon abgesehen gibt es im Web einige Seiten von Drittanbietern, auf denen die Benutzer die umfassendsten Informationen bereitstellen, die ich finden konnte, die jedoch möglicherweise veraltet sind:

Daniel Beck
quelle