Esiste un elenco di boot-arg disponibili per darwin / OS X


25

In OS X è possibile impostare i parametri di avvio con

nvram boot-args=[options]

Dove le opzioni che conosco di -v (verbose) -x (modalità sicura) e arch = x86_64 (avvio in kernel a 64 bit su macchine a 64 bit).

Ce ne sono altri? Non sembra esserci alcuna documentazione.

Risposte:


23

Non esiste un elenco ufficiale, quello comune viene compilato nel kernel stesso, l'altro può essere analizzato dalle estensioni del kernel. Ecco l'elenco che ho trovato finora.

Opzioni di avvio generali:

  • -v: Avvia sempre il sistema in modalità dettagliata senza dover tenere premuto CMD- Vall'avvio.
  • -x: Avvia sempre il sistema in modalità provvisoria senza doverlo tenere premuto Shiftall'avvio.
  • f: Vecchia modalità provvisoria.
  • -s: Avvia il sistema in modalità utente singolo senza doverlo tenere premuto CMD- Sall'avvio.
  • -F - Ignora il file di avvio.
  • iog(ad es. iog=0x0)

    Ciò inverte la modalità "Clamshell" per i sistemi laptop Apple, in cui quando si chiude il display ma si collega il sistema a un monitor esterno e una tastiera, il sistema rimarrà attivo. Dopo aver eseguito questo comando, quando si collega un monitor esterno, lo schermo interno verrà disabilitato, il che può essere utile in alcune situazioni come quelle in cui si esegue il mirroring del desktop ma si desidera eseguire lo schermo esterno con una risoluzione superiore rispetto a quella del laptop . CNET

  • arch

    Modifica la modalità di avvio del sistema, nel kernel a 32 bit ( i386) o 64 bit ( x86_64). Si noti che le estensioni del kernel di terze parti potrebbero essere solo a 32 o 64 bit.

  • Graphics Mode: Dimensioni della modalità grafica VESA.

  • Text Mode: Dimensioni modalità testo VGA.
  • Boot Graphics: Modalità grafica o testo.
  • Quiet Boot: Modalità di avvio silenziosa.
  • MKext Cache: File cache Mkext.
  • Kernel Cache: File della cache del kernel.
  • rd: Dispositivo di root.
  • boot-uuid: UUID di avvio.
  • platform: Esperto della piattaforma {ACPI}.
  • config: Carica una configurazione alternativa (ad es. config=foobarCaricherà /Library/Preferences/SystemConfiguration/foobar.plistinvece di com.apple.Boot.plist) x86osx .

  • serverperfmode=1

    Su OS X El Capitan 10.11 e versioni successive, ciò consente alla modalità prestazioni di dedicare risorse di sistema aggiuntive per le applicazioni server.

DTrace:

  • dtrace_dof_mode: Imposta le modalità DTrace DOF {0/1/2/3}.
  • DisableFBT: Disabilita FBT {1}.
  • IgnoreFBTBlacklist: Ignora la lista nera di alcuni moduli critici {1}.

BSD:

  • -b: Non eseguire /etc/rc.boot.
  • -l: Registrazione perdite di memoria ( osfmk/kern/startup.c).
  • srv: Avvio come server {1}.
  • ncl: Numero di cluster.
  • nbuf: Numero di buffer per BSD.
  • kmem: Accesso alla memoria del kernel {1}.
  • trace: Dimensione del buffer di traccia del kernel.
  • msgbuf: Buffer messaggi.
  • rp: Percorso radice.
  • mcache_flags: Flag della cache di memoria.
  • mbuf_debug: Debug MBuf {1}.
  • initmcl: Cluster Init mbuf.
  • socket_debug: Debug socket (netto).
  • net_affinity: Affinità netta (netta).
  • rte_debug: Indirizza il debug (netto) {flags}.
  • -rwroot_hack: Monta root in lettura / scrittura.

IOKit:

  • mseg: Segmento massimo.
  • dart: Rimuove il mapper presente.
  • io: IO Kit Debug.

Mach:

  • keepsyms: Non scaricare la traduzione KLD / Indirizzo-simbolo {1}.
  • debug: Debug del kernel {flags} (ad es debug=0x14e.).

    Abilita le funzionalità di debug del kernel che ti mostreranno ulteriori informazioni. Per esempio

    • 0x01 - Arresta all'avvio e attendi che il debugger si colleghi
    • 0x02 - Invia l'output di debug del kernel alla console
    • 0x04 - Rilascia nel debugger in caso di interruzione non mascherabile
    • 0x08 - Invia le informazioni di debug del kernel a una porta seriale
    • 0x10 - Imposta ddb come debugger predefinito
    • 0x20 - Invia le informazioni di diagnostica al registro di sistema
    • 0x40 - Consentire al debugger di ARP e instradare
    • 0x80 - Supporta le vecchie versioni di gdb su sistemi più recenti
    • 0x100 - Disabilita la finestra di dialogo del panico grafico
  • nvram_paniclog: invia il paniclog a NVRAM {1}.

  • pmsafe_debug: Mette le CPU in modalità di alimentazione "sicura" {1}.
  • preempt: Imposta il tasso di prelazione predefinito.
  • unsafe: Max quanti non sicuri.
  • poll: Quanti massimo del sondaggio.
  • yield: Programma lo spostamento del rendimento del sondaggio.
  • idlehalt: Interrompe il thread inattivo per consentire alla CPU di entrare in modalità a bassa potenza {1}.
  • panic_io_port: In preda al panico, leggere da questa porta I / O {da 0x0 a 0xffff}.
  • _fpu: Limita le funzionalità della CPU del tempo di avvio {387 / mmx / sse}.
  • disable high mem/2: preferisce mem alto}.
  • immediate_NMI: Impone il debugger NMI immediato {1}.
  • -legacy: Forza la modalità a 32 bit legacy.
  • lcks: Blocca le statistiche.
  • novmx: Nessuna emulazione altivec in Rosetta {1}.
  • max_valid_dma_addr: Indirizzo DMA massimo valido.
  • maxbouncepool: Dimensione massima del pool di rimbalzo.
  • maxloreserve: Riserva bassa massima.
  • npvhash: Hash di mapping fisico-virtuale.
  • wpkernel: Scrive il kernel di protezione {1}.
  • -no_shared_cr3: Disabilita lo spazio degli indirizzi del kernel condiviso per gli utenti a 64 bit.
  • -pmap_trace: Abilita le tracce del kernel per pmap.
  • _panicd_ip: IP del server antipanico.
  • _router_ip: IP del router.
  • panicd_port: Porta del server di panico.
  • -zc: Controllo degli elementi della zona libera.
  • mtxspin: Mutex spin (ppc).
  • vmmforce: Forza VMM (ppc).
  • fn: Force nap (ppc) (acpi) {0/1/2}.
  • pmsx: Modalità stepper di gestione dell'alimentazione sperimentale (ppc) {1}.
  • ctrc: Imposta la traccia su cpu specifico (ppc).
  • tb: Dimensione buffer di traccia non predefinita (ppc).
  • wcte: Scrivi abilita timer di combinazione (ppc).
  • mcklog: Cancella flag di controllo macchina (ppc).
  • mcksoft: Ripristino software controllo macchina (ppc).
  • ht_shift: Dimensione tabella hash non predefinita (ppc) {1}.
  • zsize: Dimensione della zona target.
  • colors: Imposta i colori della VM.
  • fill: Riempire le pagine.
  • serialbaud: Imposta la velocità di trasmissione seriale.

Opzioni di avvio da xnu/osfmk/i386/i386_init.c:

  • diag: Uscita diagnostica.
  • serial: Console diagnostica seriale. Supporto per una tastiera seriale e / o console.

  • maxmem

    Memoria massima da utilizzare. Limita la memoria indirizzabile alla quantità specificata (ad es maxmem=32.).

  • cpus=1

    Limita il numero di processori attivi nel sistema al livello impostato. Questo potrebbe aiutare a preservare il potere, probabilmente non utile per molto altro a meno che non si stia testando e programmando.

  • himemory_mode

    Viene utilizzato per il debug di configurazioni di memoria fisica di grandi dimensioni per sistemi di oltre 4 GB. Modalità: 0 - tutte le pagine disponibili, 1 - disabilita mem alta, 2 - preferisce mem alta.

  • immediate_NMI

    Supporto del debug per sistemi da oltre 4 GB forzando il debugger NMI immediato.

  • urgency_notification_abstime

Altro:

  • bluetoothHostControllerSwitchBehavior( never/ always)

    Indicare al driver Bluetooth se passare al dongle collegato. Per rendere il dongle esterno predefinito anche dopo il riavvio, utilizzare always.

  • smbios: Verbose SMBIOS (AppleSMBIOS.kext) {1}

  • acpi: Debug AppleACPIPlatform {1-8}
  • acpi_level: Livello di debug ACPI
  • acpi_layer: ACPI Debug Layer
  • acpi_sleep: ACPI Sleep
  • nvdebug: Debug NVDAResman
  • nvrm: NVDAResman
  • ndrv_debug_level: Livello di debug NDRV (NVDAResman)
  • pstep: Power Step Debug (ACPI_SMC)
  • hpet: AppleHPET
  • busratio(es. busratio=20): ha usato i7 cpu in 10.5.6, dopo 10.5.7 non ha bisogno di x86osx .

Fonte: xnu-1228 / Argomenti di avvio


uso

Ad esempio, quando sei in modalità singola ( CMD- Sdopo il suono all'avvio), per eseguire la modalità provvisoria e verbalmente con l'output di debug del kernel aggiuntivo sulla console, prova:

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

Per aggiungere l'argomento in esistente (senza sovrascrivere), prova:

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

Per rimuovere gli argomenti di avvio, eseguire:

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

Altri parametri non ufficiali possono essere trovati in kernel binario stesso, ad es

$ 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

Oppure controlla nei file sorgente Apple o su GitHub cercando PE_parse_boot_argn(che viene utilizzato per analizzare gli argomenti di avvio del kernel).


2
Questa è una delle mie risposte preferite di tutti i tempi! Grazie!
Chris,

10

Googling for boot-args site:developer.apple.comoffre alcune buone risorse. Per esempio

  • cpus=1 impone al sistema di utilizzare solo un singolo core della CPU.
  • srv=1 è impostato su Xserves e macchine su cui è installato Mac OS X Server e presumibilmente modifica alcuni parametri di ottimizzazione del kernel per un funzionamento intuitivo.
  • _panicd_ip=a.b.c.d Consente di specificare l'indirizzo IP di un server di debug di panico in cui scrivere dump core del kernel.
  • debug=0xH (Dove H è un numero esadecimale di 1-4 cifre) Consente di impostare flag di debug del kernel da questo elenco:

    DB_HALT 0x01 Arrestare al momento dell'avvio e attendere il collegamento del debugger (gdb).  
    DB_PRT 0x02 Invia l'output di printf di debug del kernel alla console.  
    DB_NMI 0x04 Passa al debugger su NMI (Command-Power, Command-Option-Control-Shift-Escape o interruttore di interruzione).  
    DB_KPRT 0x08 Invia l'output di kprintf di debug del kernel alla porta seriale.  
    DB_KDB 0x10 Imposta ddb (kdb) come debugger predefinito (richiede un kernel personalizzato).  
    DB_SLOG 0x20 Trasmette determinate informazioni diagnostiche al registro di sistema.  
    DB_ARP 0x40 Consenti al debugger di ARP e instradare (consente il debug su router e rimuove la necessità di una voce ARP permanente, ma è un potenziale buco di sicurezza), non disponibile in tutti i kernel.  
    DB_KDP_BP_DIS 0x80 Supporta vecchie versioni di gdb su sistemi più recenti.  
    DB_LOG_PI_SCRN 0x100 Disabilita la finestra di dialogo di panico grafica.  
    DB_KERN_DUMP_ON_PANIC 0x0400 Fa sì che il kernel esegua il dump principale quando il sistema si blocca.  
    DB_KERN_DUMP_ON_NMI 0x0800 Fa sì che il kernel esegua il core dump quando l'utente attiva un NMI.  
    DB_DBG_POST_CORE 0x1000 Controlla il comportamento del kernel dopo aver scaricato il core in risposta a un NMI (DB_KERN_DUMP_ON_NMI). Se l'utente innesca un NMI e questo flag è chiaro, il kernel scaricherà il core e poi continuerà. Al contrario, se questo flag è impostato, il kernel scaricherà il core e quindi attenderà una connessione debugger.  
    DB_PANICLOG_DUMP 0x2000 Controlla se il kernel scarica un core completo (se il flag è chiaro) o semplicemente un log di panico (se il flag è impostato).  
    




8

Eccone alcuni di più :

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

Solo un semplice link non è molto utile. Espandi la tua risposta per contenere effettivamente un elenco di alcune opzioni, come hanno fatto altri post qui.
Pensa

@nink: Fatto. Inizialmente non l'ho fatto perché la mancanza del supporto per i tavoli di StackExchange rende difficile elencarli in un modo non dolorosamente brutto. Ma suppongo che le informazioni brutte siano meglio di nessuna informazione. :-)
Patch

Grazie per l'aggiornamento, @Patches. È molto più utile ora, +1!
pensa

3

Il kernel darwin si chiama "xnu", il meglio che potevo fare era greppare il codice sorgente per quello che si stava cercando.

Esempio: OS X 10.8.5

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

Procedura:

Vai qui (o versione OS X)

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

Scarica tarball XNU, extract, grep per "parse_boot"

cd xnu; grep -iRn parse_boot .


Ottimi collegamenti - grazie! Sapere che la funzione rilevante è PE_parse_boot * è molto più utile che rigurgitare un elenco statico e inevitabilmente stantio di opzioni.
Ted Middleton,

1

Non dimenticare l'immensamente utile (se hai aggiornato Lion e vuoi usare il tuo mac in "modalità a conchiglia chiusa" con il coperchio aperto)

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

complimenti a: chenga.8

Ciò che mi disturba, tuttavia, è che non trovo alcuna spiegazione per questo. Perché 0x0? Perché non 0x1? Cosa significa "iog"?

Devo sottolineare che sul mio macbook non funziona.


0x0 è il primo periodo decimale esadecimale.
Trevor Rudolph,

Ha funzionato per me su 10.7 e 10.8, ma è necessario riavviare, quindi chiudere e aprire il coperchio dopo l'avvio.
Lri,

0

Apple non sembra fornire un elenco completo. Cercando su Google alcune opzioni conosciute e site:apple.comnon si ottengono risultati. La riduzione dell'elenco di opzioni trova articoli come questo e alcuni codici sorgente che analizzano questi argomenti, ma nulla di esaustivo.

Puoi anche cercare PE_parse_boot_arg, una funzione che, bene, analizza gli argomenti di avvio.


Detto questo, ci sono alcune pagine di terze parti sul web in cui gli utenti forniscono le informazioni più complete che ho trovato, ma potrebbero non essere aggiornate:

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.