¿Hay una lista de argumentos de arranque disponibles para darwin / OS X

25

En OS X puede establecer parámetros de arranque con

nvram boot-args=[options]

Donde las opciones que conozco sobre -v (detallado) -x (modo seguro) y arch = x86_64 (arranque en el núcleo de 64 bits en máquinas con capacidad de 64 bits).

¿Hay otros? Parece que no hay ninguna documentación.

stib
fuente

Respuestas:

23

No hay una lista oficial, las comunes se compilan en el núcleo por sí mismas, otras pueden ser analizadas por las extensiones del núcleo. Aquí está la lista que he encontrado hasta ahora.

Opciones generales de arranque:

  • -v: Siempre arrancar el sistema en modo detallado sin necesidad de realizar CMD- Ven el inicio.
  • -x: Inicie siempre el sistema en Modo a prueba de fallos sin necesidad de mantenerlo Shiften el inicio.
  • f: Modo seguro antiguo.
  • -s: Arranque el sistema en modo de usuario único sin necesidad de realizar CMD- Sen el inicio.
  • -F - Ignorar el archivo de arranque.
  • iog(por ejemplo iog=0x0)

    Esto invierte el modo "Clamshell" para los sistemas portátiles de Apple, donde cuando cierra la pantalla pero conecta el sistema a un monitor y teclado externos, el sistema permanecerá despierto. Después de ejecutar este comando, al conectar un monitor externo, la pantalla interna se desactivará, lo que puede ser beneficioso en algunas situaciones, como aquellas en las que está duplicando su escritorio pero desea ejecutar la pantalla externa a una resolución más alta que la que puede ejecutar su computadora portátil . CNET

  • arch

    Cambia la forma en que se inicia el sistema, ya sea en el núcleo de 32 bits ( i386) o de 64 bits ( x86_64). Tenga en cuenta que las extensiones de kernel de terceros pueden ser solo de 32 bits o de 64 bits.

  • Graphics Mode: Dimensiones del modo de gráficos VESA.

  • Text Mode: Dimensiones del modo de texto VGA.
  • Boot Graphics: Modo de gráficos o texto.
  • Quiet Boot: Modo de arranque tranquilo.
  • MKext Cache: Archivo de caché Mkext.
  • Kernel Cache: Archivo Kernel Cache.
  • rd: Dispositivo raíz.
  • boot-uuid: Arranque UUID.
  • platform: Experto en plataformas {ACPI}.
  • config: Carga la configuración alternativa plist (por ejemplo, config=foobarse cargará en /Library/Preferences/SystemConfiguration/foobar.plistlugar de com.apple.Boot.plist) x86osx .

  • serverperfmode=1

    En OS X El Capitan 10.11 y posterior, esto habilita el modo de rendimiento para dedicar recursos del sistema adicionales para aplicaciones de servidor.

DTrace:

  • dtrace_dof_mode: Establezca los modos DTrace DOF {0/1/2/3}.
  • DisableFBT: Deshabilitar FBT {1}.
  • IgnoreFBTBlacklist: Ignorar la lista negra de ciertos módulos críticos {1}.

BSD:

  • -b: No ejecute /etc/rc.boot.
  • -l: Registro de pérdidas de memoria ( osfmk/kern/startup.c).
  • srv: Arrancar como servidor {1}.
  • ncl: Número de grupos.
  • nbuf: Número de buffers para BSD.
  • kmem: Acceso a la memoria del núcleo {1}.
  • trace: Tamaño del búfer de rastreo del kernel.
  • msgbuf: Buffer de mensajes.
  • rp: Ruta de la raíz.
  • mcache_flags: Banderas de memoria caché.
  • mbuf_debug: MBuf Debug {1}.
  • initmcl: Inicia los grupos de mbuf.
  • socket_debug: Depuración de sockets (neto).
  • net_affinity: Afinidad neta (neta).
  • rte_debug: Ruta de depuración (net) {flags}.
  • -rwroot_hack: Montar lectura / escritura raíz.

IOKit:

  • mseg: Segmento máx.
  • dart: Eliminar el mapeador presente.
  • io: Depuración de IO Kit.

Mach:

  • keepsyms: No descargue la traducción de KLD / Dirección-símbolo {1}.
  • debug: Kernel debug {flags} (por ejemplo debug=0x14e).

    Habilita las funciones de depuración del núcleo que le mostrarán información adicional. P.ej

    • 0x01 - Pare en el momento del arranque y espere a que se conecte el depurador
    • 0x02 - Enviar salida de depuración del kernel a la consola
    • 0x04 - Caiga en el depurador en una interrupción no enmascarable
    • 0x08 - Enviar información de depuración del núcleo a un puerto serie
    • 0x10 - Hacer ddb el depurador predeterminado
    • 0x20 - Salida de información de diagnóstico al registro del sistema
    • 0x40 - Permitir al depurador a ARP y ruta
    • 0x80 - Admite versiones antiguas de gdb en sistemas más nuevos
    • 0x100 - Deshabilitar la pantalla de diálogo de pánico gráfico
  • nvram_paniclog: compromete paniclog a NVRAM {1}.

  • pmsafe_debug: Ponga las CPU en modo de energía "segura" {1}.
  • preempt: Establece la tasa de preferencia predeterminada.
  • unsafe: Quanta inseguras máx.
  • poll: Max encuesta quanta.
  • yield: Programar el cambio de rendimiento de la encuesta.
  • idlehalt: Detenga el subproceso inactivo para permitir que la CPU entre en modo de bajo consumo {1}.
  • panic_io_port: En pánico, lea desde este puerto de E / S {0x0 a 0xffff}.
  • _fpu: Limite las características de la CPU durante el tiempo de arranque {387 / mmx / sse}.
  • disable high mem/2: prefiera alta mem}.
  • immediate_NMI: Fuerza el depurador NMI inmediato {1}.
  • -legacy: Fuerza el modo heredado de 32 bits.
  • lcks: Estadísticas de bloqueo.
  • novmx: Sin emulación altivec en Rosetta {1}.
  • max_valid_dma_addr: Dirección DMA válida máxima.
  • maxbouncepool: Tamaño máximo de la piscina de rebote.
  • maxloreserve: Max baja reserva.
  • npvhash: Hash de mapeo físico a virtual.
  • wpkernel: Escritura proteger kernel {1}.
  • -no_shared_cr3: Deshabilite el espacio de dirección del núcleo compartido para usuarios de 64 bits.
  • -pmap_trace: Habilita las trazas del kernel para pmap.
  • _panicd_ip: IP del servidor de pánico.
  • _router_ip: IP del enrutador.
  • panicd_port: Puerto del servidor de pánico.
  • -zc: Comprobación de elementos de zona libre.
  • mtxspin: Giro Mutex (ppc).
  • vmmforce: Fuerza VMM (ppc).
  • fn: Forzar siesta (ppc) (acpi) {0/1/2}.
  • pmsx: Modo paso a paso de administración de energía experimental (ppc) {1}.
  • ctrc: Establece el seguimiento en una CPU específica (ppc).
  • tb: Tamaño de búfer de rastreo no predeterminado (ppc).
  • wcte: Escribir combinación de temporizador habilitado (ppc).
  • mcklog: Borrar la marca de verificación de la máquina (ppc).
  • mcksoft: Recuperación de software de verificación de máquina (ppc).
  • ht_shift: Tamaño de tabla hash no predeterminada (ppc) {1}.
  • zsize: Tamaño de la zona objetivo.
  • colors: Establecer colores VM.
  • fill: Rellenar páginas.
  • serialbaud: Establecer la velocidad de transmisión en serie.

Opciones de arranque desde xnu/osfmk/i386/i386_init.c:

  • diag: Salida de diagnóstico.
  • serial: Consola de diagnóstico en serie. Soporte para un teclado y / o consola en serie.

  • maxmem

    Máxima memoria para usar. Limita la memoria direccionable a la cantidad especificada (por ejemplo maxmem=32).

  • cpus=1

    Limita el número de procesadores activos en el sistema al nivel establecido. Esto podría ayudar a conservar la energía, lo que probablemente no sea útil para mucho más a menos que esté probando y programando.

  • himemory_mode

    Se utiliza para depurar grandes configuraciones de memoria física para sistemas de más de 4 GB. Modos: 0: todas las páginas disponibles, 1: deshabilitar la memoria alta, 2: prefieren la memoria alta.

  • immediate_NMI

    Soporte de depuración para sistemas de más de 4GB al forzar el depurador NMI inmediato.

  • urgency_notification_abstime

Otro:

  • bluetoothHostControllerSwitchBehavior( never/ always)

    Indique al controlador Bluetooth si debe cambiar al dispositivo de seguridad que conectó. Para que el dispositivo de seguridad externo sea el predeterminado incluso después de reiniciar, use always.

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

  • acpi: Depurar AppleACPIPlatform {1-8}
  • acpi_level: Nivel de depuración ACPI
  • acpi_layer: Capa de depuración ACPI
  • acpi_sleep: Sueño ACPI
  • nvdebug: Depuración NVDAResman
  • nvrm: NVDAResman
  • ndrv_debug_level: Nivel de depuración NDRV (NVDAResman)
  • pstep: Depuración de Power Step (ACPI_SMC)
  • hpet: AppleHPET
  • busratio(p busratio=20. ej. ): usó i7 cpu en 10.5.6, después de 10.5.7 no necesita x86osx .

Fuente: xnu-1228 / Argumentos de arranque


Uso

Por ejemplo, cuando está en modo único ( CMD- Sdespués del sonido al inicio), para ejecutar en modo seguro y de forma vergonzosa con salida de depuración de kernel adicional a la consola, intente:

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

Para agregar el argumento en existente (sin anular), intente:

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

Para eliminar argumentos de arranque, ejecute:

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

Se pueden encontrar otros parámetros no oficiales en kernelbinario, por ejemplo

$ 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

O busque en los archivos fuente de Apple o en GitHub buscando PE_parse_boot_argn(que se utiliza para analizar los argumentos de arranque del kernel).

kenorb
fuente
2
¡Esta es una de mis respuestas favoritas de todos los tiempos! ¡Gracias!
Chris
10

Buscar en Google boot-args site:developer.apple.comda algunos buenos recursos. P.ej

  • cpus=1 obliga al sistema a usar solo un núcleo de CPU.
  • srv=1 está configurado en Xserves y máquinas que tienen instalado Mac OS X Server, y supuestamente cambia algunos parámetros de ajuste del kernel para una operación amigable con el servidor.
  • _panicd_ip=a.b.c.d Le permite especificar la dirección IP de un servidor de depuración de pánico para escribir volcados de núcleo del núcleo.
  • debug=0xH (Donde H es un número hexadecimal de 1-4 dígitos) Le permite establecer indicadores de depuración del núcleo de esta lista:

    DB_HALT 0x01 Deténgase durante el arranque y espere a que se adjunte el depurador (gdb).  
    DB_PRT 0x02 Enviar salida de printf de depuración del núcleo a la consola.  
    DB_NMI 0x04 Caiga en el depurador en NMI (Comando-Energía, Comando-Opción-Control-Shift-Escape o interruptor de interrupción).  
    DB_KPRT 0x08 Enviar salida de kprintf de depuración del kernel al puerto serie.  
    DB_KDB 0x10 Convierta ddb (kdb) en el depurador predeterminado (requiere un núcleo personalizado).  
    DB_SLOG 0x20 Envía cierta información de diagnóstico al registro del sistema.  
    DB_ARP 0x40 Permitir depurador a ARP y ruta (permite la depuración a través de enrutadores y elimina la necesidad de una entrada ARP permanente, pero es un agujero de seguridad potencial), no disponible en todos los núcleos.  
    DB_KDP_BP_DIS 0x80 Admite versiones antiguas de gdb en sistemas más nuevos.  
    DB_LOG_PI_SCRN 0x100 Deshabilita el cuadro de diálogo de pánico gráfico.  
    DB_KERN_DUMP_ON_PANIC 0x0400 Hace que el núcleo se voltee cuando el sistema entra en pánico.  
    DB_KERN_DUMP_ON_NMI 0x0800 Hace que el núcleo se vuelque al núcleo cuando el usuario activa un NMI.  
    DB_DBG_POST_CORE 0x1000 Controla el comportamiento del núcleo después de volcar el núcleo en respuesta a un NMI (DB_KERN_DUMP_ON_NMI). Si el usuario dispara un NMI y este indicador está claro, el núcleo volcará el núcleo y luego continuará. Por el contrario, si se establece este indicador, el núcleo volcará el núcleo y luego esperará una conexión de depuración.  
    DB_PANICLOG_DUMP 0x2000 Controla si el núcleo volca un núcleo completo (si el indicador está despejado) o simplemente un registro de pánico (si el indicador está configurado).  
    
Spiff
fuente
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

Aquí hay algunos más :

-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)
Parches
fuente
Solo un enlace simple no es muy útil. Expanda su respuesta para que realmente contenga una lista de algunas de las opciones, como lo han hecho otras publicaciones aquí.
nhinkle
@nhinkle: Listo. Originalmente no lo hice porque la falta de soporte de tablas de StackExchange hace que sea difícil enumerarlos de una manera que no sea dolorosamente fea. Pero supongo que la información fea es mejor que ninguna información. :-)
Parches
Gracias por la actualización, @Patches. ¡Eso es mucho más útil ahora, +1!
nhinkle
3

El núcleo de Darwin se llama "xnu", lo mejor que pude hacer fue obtener el código fuente de lo que se estaba buscando.

Ejemplo: OS X 10.8.5

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

Procedimiento:

Vaya aquí (o su versión de OS X)

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

Descargar XNU tarball, extract, grep para "parse_boot"

cd xnu; grep -iRn parse_boot .

slf
fuente
Grandes enlaces, ¡gracias! Saber que la función relevante es PE_parse_boot * es mucho más útil que regurgitar una lista de opciones estática e inevitablemente obsoleta.
Ted Middleton
1

Sin olvidar lo inmensamente útil (si actualizaste a Lion y quieres usar tu mac en 'modo clamshell cerrado' con la tapa abierta)

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

felicitaciones a: chenga.8

Sin embargo, lo que me molesta es que no encuentro ninguna explicación para eso. ¿Por qué 0x0? ¿Por qué no 0x1? ¿Qué significa 'iog' de todos modos?

Debo señalar que en mi macbook no funciona.

lorenzog
fuente
0x0 es el primer período decimal hexadecimal.
Trevor Rudolph
Funcionó para mí tanto en 10.7 como en 10.8, pero debe reiniciar, y luego cerrar y abrir la tapa después de comenzar.
Lri
0

Apple no parece proporcionar una lista completa. Busca en Google algunas opciones conocidas y site:apple.comno da ningún resultado. Al reducir la lista de opciones, se encuentran artículos como este y algunos códigos fuente que analizan estos argumentos, pero nada exhaustivo.

También puede buscar PE_parse_boot_arguna función que, bueno, analiza los argumentos de arranque.


Dicho esto, hay algunas páginas de terceros en la web donde los usuarios proporcionan la información más completa que pude encontrar, pero podría estar desactualizada:

Daniel Beck
fuente