Risposte:
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=foobar
Caricherà /Library/Preferences/SystemConfiguration/foobar.plist
invece 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 colleghi0x02
- Invia l'output di debug del kernel alla console0x04
- Rilascia nel debugger in caso di interruzione non mascherabile0x08
- Invia le informazioni di debug del kernel a una porta seriale0x10
- Imposta ddb come debugger predefinito0x20
- Invia le informazioni di diagnostica al registro di sistema0x40
- Consentire al debugger di ARP e instradare0x80
- Supporta le vecchie versioni di gdb su sistemi più recenti0x100
- Disabilita la finestra di dialogo del panico graficonvram_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 ACPIacpi_layer
: ACPI Debug Layeracpi_sleep
: ACPI Sleepnvdebug
: Debug NVDAResmannvrm
: NVDAResmanndrv_debug_level
: Livello di debug NDRV (NVDAResman)pstep
: Power Step Debug (ACPI_SMC)hpet
: AppleHPETbusratio
(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
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).
Googling for boot-args site:developer.apple.com
offre 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).
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)
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 .
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.
Apple non sembra fornire un elenco completo. Cercando su Google alcune opzioni conosciute e site:apple.com
non 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: