Existe uma lista de argumentos de inicialização disponíveis para o darwin / OS X

25

No OS X, você pode definir parâmetros de inicialização com

nvram boot-args=[options]

Onde as opções que eu conheço sobre -v (detalhado) -x (modo de segurança) e arch = x86_64 (inicialize no kernel de 64 bits em máquinas com capacidade de 64 bits).

Existem outros? Parece não haver documentação.

stib
fonte

Respostas:

23

Não existe uma lista oficial, a comum é compilada no próprio kernel, outra pode ser analisada pelas extensões do kernel. Aqui está a lista que eu encontrei até agora.

Opções gerais de inicialização:

  • -v: Sempre inicialize o sistema no modo verboso sem precisar esperar CMD- Vna inicialização.
  • -x: Sempre inicialize o sistema no modo de segurança sem precisar esperar Shiftna inicialização.
  • f: Modo de segurança antigo.
  • -s: Inicialize o sistema no modo Usuário Único sem a necessidade de aguardar CMD- Sna inicialização.
  • -F - Ignorar arquivo de inicialização.
  • iog(por exemplo iog=0x0)

    Isso inverte o modo "Clamshell" para os sistemas laptop da Apple, onde quando você fecha a tela, mas conecta o sistema a um monitor externo e teclado, o sistema permanece ativo. Depois de executar este comando, ao conectar um monitor externo, o monitor interno será desativado, o que pode ser benéfico em algumas situações, como aquelas em que você está espelhando sua área de trabalho, mas deseja executar o monitor externo em uma resolução maior do que o seu laptop pode executar. . CNET

  • arch

    Altera como o sistema inicializa, no kernel de 32 bits ( i386) ou 64 bits ( x86_64). Observe que as extensões de kernel de terceiros podem ser apenas de 32 ou 64 bits.

  • Graphics Mode: Dimensões do modo de gráficos VESA.

  • Text Mode: Dimensões do modo de texto VGA.
  • Boot Graphics: Gráficos ou modo de texto.
  • Quiet Boot: Modo de inicialização silencioso.
  • MKext Cache: Arquivo de cache Mkext.
  • Kernel Cache: Arquivo de cache do kernel.
  • rd: Dispositivo raiz.
  • boot-uuid: UUID de inicialização.
  • platform: Especialista em plataforma {ACPI}.
  • config: Carrega a configuração alternativa (por exemplo config=foobar, carrega em /Library/Preferences/SystemConfiguration/foobar.plistvez de com.apple.Boot.plist) x86osx .

  • serverperfmode=1

    No OS X El Capitan 10.11 e posterior, isso permite que o modo de desempenho dedique recursos adicionais do sistema para aplicativos de servidor.

DTrace:

  • dtrace_dof_mode: Defina os modos DTrace DOF {0/1/2/3}.
  • DisableFBT: Desative o FBT {1}.
  • IgnoreFBTBlacklist: Ignore a lista negra de determinados módulos críticos {1}.

BSD:

  • -b: Não execute /etc/rc.boot.
  • -l: Registro de vazamentos de memória ( osfmk/kern/startup.c).
  • srv: Inicialize como servidor {1}.
  • ncl: Número de clusters.
  • nbuf: Número de buffers para BSD.
  • kmem: Acesso à memória do kernel {1}.
  • trace: Tamanho do buffer de rastreio do kernel.
  • msgbuf: Buffer de mensagem.
  • rp: Caminho raiz.
  • mcache_flags: Sinalizadores de cache de memória.
  • mbuf_debug: MBuf Debug {1}.
  • initmcl: Init mbuf clusters.
  • socket_debug: Depuração de soquete (líquida).
  • net_affinity: Afinidade líquida (líquida).
  • rte_debug: Depuração de rota (rede) {sinalizadores}.
  • -rwroot_hack: Monte a leitura / gravação na raiz.

IOKit:

  • mseg: Segmento máx.
  • dart: Remova o mapeador presente.
  • io: Depuração do kit IO.

Mach:

  • keepsyms: Não descarregue a tradução do KLD / símbolo de endereço {1}.
  • debug: Depuração do kernel {flags} (por exemplo debug=0x14e).

    Habilita os recursos de depuração do kernel que mostrarão informações extras. Por exemplo

    • 0x01 - Pare no momento da inicialização e aguarde o depurador anexar
    • 0x02 - Enviar saída de depuração do kernel para o console
    • 0x04 - Solte no depurador em uma interrupção não mascarável
    • 0x08 - Envie informações de depuração do kernel para uma porta serial
    • 0x10 - Tornar ddb o depurador padrão
    • 0x20 - Enviar informações de diagnóstico para o log do sistema
    • 0x40 - Permitir que o depurador para ARP e rotear
    • 0x80 - Suporte versões antigas do gdb em sistemas mais recentes
    • 0x100 - Desativar a tela de diálogo gráfica de pânico
  • nvram_paniclog: confirme o paniclog na NVRAM {1}.

  • pmsafe_debug: Coloque as CPUs no modo de energia "seguro" {1}.
  • preempt: Defina a taxa de preempção padrão.
  • unsafe: Max quantidade insegura.
  • poll: Quantidade máxima de pesquisas.
  • yield: Agende a mudança no rendimento da pesquisa.
  • idlehalt: Interrompa o encadeamento inativo para permitir que a CPU entre no modo de baixa potência {1}.
  • panic_io_port: Em pânico, leia a partir desta porta de E / S {0x0 a 0xffff}.
  • _fpu: Limite de recursos da CPU no momento da inicialização {387 / mmx / sse}.
  • disable high mem/2: prefira mem alta}.
  • immediate_NMI: Força o depurador imediato da NMI {1}.
  • -legacy: Força o modo herdado de 32 bits.
  • lcks: Estatísticas de bloqueio.
  • novmx: Nenhuma emulação altivec no Rosetta {1}.
  • max_valid_dma_addr: Endereço DMA válido máximo.
  • maxbouncepool: Tamanho máximo da piscina de rejeição.
  • maxloreserve: Máxima reserva baixa.
  • npvhash: Hash de mapeamento físico para virtual.
  • wpkernel: Proteger contra gravação o kernel {1}.
  • -no_shared_cr3: Desabilite o espaço de endereço compartilhado do kernel para usuários de 64 bits.
  • -pmap_trace: Ative rastreamentos do kernel para pmap.
  • _panicd_ip: IP do servidor pânico.
  • _router_ip: IP do roteador.
  • panicd_port: Porta do servidor pânico.
  • -zc: Verificação do elemento da zona livre.
  • mtxspin: Rotação Mutex (ppc).
  • vmmforce: Força do VMM (ppc).
  • fn: Forçar soneca (ppc) (acpi) {0/1/2}.
  • pmsx: Modo experimental de gerenciamento de energia experimental (ppc) {1}.
  • ctrc: Defina o rastreamento para a CPU específica (ppc).
  • tb: Tamanho do buffer de rastreamento não padrão (ppc).
  • wcte: Gravar habilitar timer de combinação (ppc).
  • mcklog: Limpe o sinalizador de verificação da máquina (ppc).
  • mcksoft: Recuperação de software de verificação da máquina (ppc).
  • ht_shift: Tamanho da tabela de hash não padrão (ppc) {1}.
  • zsize: Tamanho da zona alvo.
  • colors: Defina cores da VM.
  • fill: Preencha páginas.
  • serialbaud: Define a taxa de transmissão serial.

Opções de inicialização de xnu/osfmk/i386/i386_init.c:

  • diag: Saída de diagnóstico.
  • serial: Console de diagnóstico serial. Suporte para teclado serial e / ou console.

  • maxmem

    Memória máxima para usar. Limita a memória endereçável à quantidade especificada (por exemplo maxmem=32).

  • cpus=1

    Limita o número de processadores ativos no sistema ao nível definido. Isso pode ajudar a preservar a energia, provavelmente não útil para muitas outras coisas, a menos que você esteja testando e programando.

  • himemory_mode

    É usado para depurar grandes configurações de memória física para sistemas com mais de 4 GB. Modos: 0 - todas as páginas disponíveis, 1 - desabilitar mem alta, 2 - preferir mem alta.

  • immediate_NMI

    Suporte de depuração para sistemas com mais de 4 GB forçando o depurador imediato da NMI.

  • urgency_notification_abstime

De outros:

  • bluetoothHostControllerSwitchBehavior( never/ always)

    Informe ao driver Bluetooth se deseja alternar para o dongle conectado. Para tornar o dongle externo o padrão mesmo após a reinicialização, use always.

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

  • acpi: Depure o AppleACPIPlatform {1-8}
  • acpi_level: Nível de depuração da ACPI
  • acpi_layer: Camada de depuração ACPI
  • acpi_sleep: ACPI Sleep
  • nvdebug: Depuração do NVDAResman
  • nvrm: NVDAResman
  • ndrv_debug_level: Nível de depuração de NDRV (NVDAResman)
  • pstep: Depuração da etapa de energia (ACPI_SMC)
  • hpet: AppleHPET
  • busratio(por exemplo busratio=20): Usou o i7 cpu em 10.5.6, depois de 10.5.7 não precisa do x86osx .

Fonte: xnu-1228 / Argumentos de inicialização


Uso

Por exemplo, quando você está no Modo Único ( CMD- Sapós o som na inicialização), para entrar no modo de segurança e com uma saída extra de depuração do kernel para o console, tente:

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

Para adicionar o argumento à existente (sem substituir), tente:

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

Para remover argumentos de inicialização, execute:

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

Outros parâmetros não oficiais podem ser encontrados no próprio kernelbinário, por exemplo

$ 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

Ou verifique nos arquivos de origem da Apple ou no GitHub pesquisando PE_parse_boot_argn(o que é usado para analisar os argumentos de inicialização do kernel).

kenorb
fonte
2
Esta é uma das minhas respostas favoritas de todos os tempos! Obrigado!
18718 Chris
10

Pesquisando no Google boot-args site:developer.apple.comdá alguns bons recursos. Por exemplo

  • cpus=1 força o sistema a usar apenas um único núcleo da CPU.
  • srv=1 é definido no Xserves e nas máquinas que possuem o Mac OS X Server instalado e, supostamente, altera alguns parâmetros de ajuste do kernel para operação amigável ao servidor.
  • _panicd_ip=a.b.c.d Permite que você especifique o endereço IP de um servidor de depuração de pânico para o qual gravar dumps do núcleo do kernel.
  • debug=0xH (Onde H é um número hexadecimal de 1 a 4 dígitos) Permite definir sinalizadores de depuração do kernel nesta lista:

    DB_HALT 0x01 Pare no momento da inicialização e aguarde a conexão do depurador (gdb).  
    DB_PRT 0x02 Envie a saída de printf de depuração do kernel para o console.  
    DB_NMI 0x04 Solte no depurador na NMI (Command-Power, Command-Option-Control-Shift-Escape ou switch de interrupção).  
    DB_KPRT 0x08 Envie a saída do kprintf da depuração do kernel para a porta serial.  
    DB_KDB 0x10 Torne o ddb (kdb) o depurador padrão (requer um kernel personalizado).  
    DB_SLOG 0x20 Envia certas informações de diagnóstico para o log do sistema.  
    DB_ARP 0x40 Permitir que o depurador faça o ARP e faça o roteamento (permite a depuração entre roteadores e elimina a necessidade de uma entrada permanente do ARP, mas é uma falha de segurança em potencial) - não disponível em todos os kernels.  
    DB_KDP_BP_DIS 0x80 Suporta versões antigas do gdb em sistemas mais recentes.  
    DB_LOG_PI_SCRN 0x100 Desativar diálogo de pânico gráfico.  
    DB_KERN_DUMP_ON_PANIC 0x0400 Faz com que o núcleo despeje o núcleo quando o sistema entra em pânico.  
    DB_KERN_DUMP_ON_NMI 0x0800 Faz com que o kernel faça core dump quando o usuário aciona uma NMI.  
    DB_DBG_POST_CORE 0x1000 Controla o comportamento do kernel após despejar o núcleo em resposta a uma NMI (DB_KERN_DUMP_ON_NMI). Se o usuário acionar uma NMI e esse sinalizador estiver desmarcado, o kernel despejará o núcleo e continuará. Por outro lado, se esse sinalizador estiver definido, o kernel fará o dump do núcleo e aguardará a conexão do depurador.  
    DB_PANICLOG_DUMP 0x2000 Controla se o kernel despeja um núcleo completo (se o sinalizador estiver limpo) ou simplesmente um log de pânico (se o sinalizador estiver definido).  
    
Spiff
fonte
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

Aqui estão mais alguns :

-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)
Patches
fonte
Apenas um link simples não é muito útil. Expanda sua resposta para realmente conter uma lista de algumas das opções, como outras postagens feitas aqui.
Nhinkle
@ nhinkle: Feito. Originalmente, não o fiz, porque a falta de suporte de tabela do StackExchange torna difícil listá-las de uma maneira que não é dolorosamente feia. Mas suponho que informações feias sejam melhores que nenhuma informação. :-)
Patches
Obrigado pela atualização, @Patches. Isso é muito mais útil agora, +1!
Nhinkle
3

O kernel do darwin é chamado "xnu", o melhor que pude fazer foi cumprimentar o código-fonte pelo que estava sendo procurado.

Exemplo: OS X 10.8.5

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

Procedimento:

Vá aqui (ou sua versão do OS X)

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

Faça o download do tarball XNU, extraia, grep para "parse_boot"

cd xnu; grep -iRn parse_boot .

slf
fonte
Ótimos links - obrigado! Saber que a função relevante é PE_parse_boot * é muito mais útil do que regurgitar uma lista estática e inevitavelmente obsoleta de opções.
Ted Middleton #
1

Para não esquecer o imensamente útil (se você atualizou para o Lion e deseja usar o seu mac no 'modo de garra fechada' com a tampa aberta)

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

parabéns a: chenga.8

O que me incomoda, no entanto, é que não encontro explicação para isso. Por que 0x0? Por que não 0x1? O que 'iog' significa?

Devo salientar que no meu macbook não funciona.

Lorenzog
fonte
0x0 é o primeiro período decimal hexadecimal.
Trevor Rudolph
Ele funcionou para mim tanto nos 10.7 quanto nos 10.8, mas é necessário reiniciar e fechar e abrir a tampa após a inicialização.
Lri
0

A Apple parece não fornecer uma lista abrangente. Pesquise no Google algumas opções conhecidas e site:apple.comnão produz nenhum resultado. Reduzir a lista de opções encontra artigos como este e algum código-fonte analisa esses argumentos, mas nada abrangente.

Você também pode procurar PE_parse_boot_arguma função que analise os argumentos de inicialização.


Dito isto, existem algumas páginas de terceiros na web em que os usuários fornecem as informações mais abrangentes que eu poderia encontrar, mas podem estar desatualizadas:

Daniel Beck
fonte