Capítulo 5. Mudanças importantes nos parâmetros do kernel externo

Este capítulo fornece aos administradores de sistemas um resumo das mudanças significativas no kernel enviado com o Red Hat Enterprise Linux 8.3. Estas mudanças podem incluir, por exemplo, entradas proc adicionadas ou atualizadas, valores default sysctl e sysfs, parâmetros de inicialização, opções de configuração do kernel ou quaisquer mudanças perceptíveis de comportamento.

Novos parâmetros do kernel

acpi_no_watchdog = [HW,ACPI,WDT]
Este parâmetro permite ignorar a Interface Avançada de Configuração e Alimentação (ACPI) baseada na interface de vigilância (WDAT) e deixar o motorista nativo controlar o dispositivo de vigilância.
dfltcc = [HW,S390]

Este parâmetro configura o suporte de hardware zlib para as arquiteturas IBM Z.

Formato: { on | on | off | def_only | inf_only | always }

As opções são:

  • on (padrão) - suporte de hardware IBM Zlib para compressão no nível 1 e descompressão
  • off - Sem suporte de hardware IBM Zlib
  • def_only - Suporte de hardware IBM Zlib somente para o algoritmo deflate (compressão no nível 1)
  • inf_only - Suporte de hardware IBM Zlib somente para o algoritmo inflacionado (descompressão)
  • sempre - Semelhante ao anterior, mas ignora o nível de compressão selecionado e usa sempre o suporte de hardware (usado para depuração)
irqchip.gicv3_pseudo_nmi = [ARM64]

Este parâmetro permite o suporte de pseudo interrupções não-máscaras (NMIs) no núcleo.

Para utilizar este parâmetro é necessário construir o kernel com o item de configuração CONFIG_ARM64_PSEUDO_NMI.

panic_on_taint =

Máscara de bits para chamar condicionalmente o pânico() em add_taint()

Formato

Uma máscara de bit hexadecimal que representa um conjunto de bandeiras TAINT que causará pânico no kernel quando a chamada ao sistema add_taint() for invocada com qualquer uma das bandeiras deste conjunto. A chave opcional nousertaint evita falhas forçadas pelo espaço do usuário ao escrever no arquivo /proc/sys/kernel/tainted qualquer flagset que combine com a máscara de bit em panic_on_taint.

Para obter mais informações, consulte a documentação a montante.

prot_virt = [S390]

Formato

Este parâmetro permite a hospedagem de máquinas virtuais protegidas que estão isoladas do hipervisor se o suporte de hardware estiver presente.

rcutree.use_softirq = [KNL]

Este parâmetro permite a eliminação do processamento do softirq da TREERCU.

Se você definir este parâmetro como zero, ele move todo o processamento RCU_SOFTIRQ para kthreads rcuc per-CPU. Se você definir rcutree.use_softirq para um valor diferente de zero (padrão), RCU_SOFTIRQ é usado por padrão. Especifique rcutree.use_softirq=0 para usar rcuc kthreads.

split_lock_detect = [X86]

Este parâmetro permite a detecção de bloqueio dividido. Quando ativado, e se houver suporte de hardware, instruções atômicas que acessam dados através dos limites da linha de cache resultarão em uma exceção de verificação de alinhamento.

As opções são:

  • desligado - não habilitado
  • aviso - o kernel emitirá avisos de taxa limitada sobre as aplicações que acionam a Exceção de Verificação de Alinhamento (#AC). Este modo é o padrão nas CPUs que suportam a detecção de bloqueio dividido.
  • fatal - o kernel enviará o sinal de erro Buss (SIGBUS) para aplicações que acionem a exceção #AC.

    Se a exceção #AC for atingida enquanto não for executada no modo usuário, o kernel emitirá um erro oops tanto no modo de advertência quanto no modo fatal.

srbds = [X86,INTEL]

Este parâmetro controla a atenuação da amostragem de dados de registro especial (SRBDS).

Certas CPUs são vulneráveis a um exploit semelhante ao MDS (Microarchitectural Data Sampling), que pode vazar bits do gerador de números aleatórios.

Por padrão, o microcódigo atenua este problema. Entretanto, a correção do microcódigo pode fazer com que as instruções RDRAND e RDSEED fiquem muito mais lentas. Entre outros efeitos, isto resultará na redução da produção do dispositivo fonte de número aleatório do kernel do urandom.

Para desativar a mitigação do microcódigo, defina a seguinte opção:

  • off - Desabilitar a mitigação e remover o impacto do desempenho para o RDRAND e RDSEED
svm = [PPC]

Formato: { on | off | y | n | 1 | 0 }

Este parâmetro controla o uso do Mecanismo de Execução Protegida em sistemas pSeries.

nopv = [X86,XEN,KVM,HYPER_V,VMWARE]

Este parâmetro desabilita as otimizações PV que forçam o convidado a funcionar como convidado genérico sem drivers PV.

Atualmente são apoiados os convidados XEN HVM, KVM, HYPER_V e VMWARE.

Parâmetros de kernel atualizados

hugepagesz = [HW]

Este parâmetro especifica um enorme tamanho de página. Use este parâmetro em conjunto com o parâmetro hugepages para pré-alocar um número de páginas enormes do tamanho especificado.

Especifique os parâmetros hugepagesz e hugepages em pares, como por exemplo:

hugepagesz=2M hugepages=512

O parâmetro hugepagesz só pode ser especificado uma vez na linha de comando para um tamanho de página enorme específico. Os tamanhos de página enormes válidos dependem da arquitetura.

hugepages = [HW]

Este parâmetro especifica o número de páginas enormes a serem pré-alocadas. Este parâmetro normalmente segue o parâmetro válido hugepagesz ou default_hugepagesz.

Entretanto, se hugepages é o primeiro ou o único parâmetro de linha de comando HugeTLB, ele especifica implicitamente o número de páginas enormes do tamanho padrão a serem alocadas. Se o número de páginas enormes do tamanho padrão for implicitamente especificado, ele não pode ser sobrescrito pelo par de parâmetros hugepagesz hugepages para o tamanho padrão.

Por exemplo, em uma arquitetura com 2M de tamanho de página padrão enorme:

hugepages=256 hugepagesz=2M hugepages=512

As configurações do exemplo acima resultam na alocação de 256 2M páginas enormes e uma mensagem de aviso de que o parâmetro hugepages=512 foi ignorado. Se as hugepages forem precedidas por hugepagesz inválidas, as hugepages serão ignoradas.

default_hugepagesz = [HW]

Este parâmetro especifica o tamanho padrão de página enorme. Você pode especificar o padrão_hugepagesz apenas uma vez na linha de comando. Opcionalmente, você pode seguir o parâmetro hugepagesz padrão com o parâmetro hugepagesz para pré-alocar um número específico de páginas enormes com o tamanho padrão. Além disso, você pode especificar implicitamente o número de páginas enormes de tamanho padrão para pré-alocar.

Por exemplo, em uma arquitetura com 2M de tamanho de página padrão enorme:

hugepages=256
default_hugepagesz=2M hugepages=256
hugepages=256 default_hugepagesz=2M

As configurações do exemplo acima resultam na alocação de 256 2M de páginas enormes. O tamanho padrão válido de página enorme depende da arquitetura.

efi = [EFI]

Formato: "old_map", "nochunk", "noruntime", "debug", "nosoftreserve" }

As opções são:

  • old_map [X86-64] - Mudar para o antigo mapeamento de serviços de tempo de execução EFI baseado em ioremap. 32 bits ainda usa este por padrão
  • nochunk - Desabilitar a leitura de arquivos em "pedaços" no toco de inicialização do EFI, já que a leitura de pedaços pode causar problemas com algumas implementações de firmware
  • noruntime - Desativar o suporte aos serviços de tempo de execução da EFI
  • debug - Habilitar saída de depuração diversa
  • nosoftreserve - O atributo EFI_MEMORY_SP (Specific Purpose) às vezes faz com que o kernel reserve a faixa de memória para um driver de mapeamento de memória a reivindicar. Especifique efi=nosoftreserve para desativar esta reserva e tratar a memória por seu tipo de base (por exemplo EFI_CONVENTIONAL_MEMORY / "System RAM").
intel_iommu = [DMAR]

Remapping de Acesso Direto à Memória Intel IOMMU (DMAR).

As opções adicionais são:

  • nobounce (Default off) - Desabilita o buffer de ressalto para dispositivos não confiáveis, como os dispositivos Thunderbolt. Isto tratará os dispositivos não confiáveis como os dispositivos de confiança. Portanto, este ajuste pode expor riscos de segurança de ataques de acesso direto à memória (DMA).
mem = nn[KMG] [KNL,BOOT] [KNL,BOOT

Este parâmetro força o uso de uma quantidade específica de memória.

A quantidade de memória a ser utilizada nos casos a seguir:

  1. Para teste.
  2. Quando o núcleo não é capaz de ver toda a memória do sistema.
  3. A memória que fica após o limite do memorial é excluída do hipervisor, sendo então atribuída aos convidados da KVM.

    [X86] Trabalho como limite de endereço máximo. Use junto com o parâmetro memmap para evitar colisões físicas do espaço de endereços. Sem o memmap, os dispositivos de interconexão de componentes periféricos (PCI) poderiam ser colocados em endereços pertencentes à RAM não utilizada.

    Observe que esta configuração só tem efeito durante o tempo de inicialização, já que no caso 3 acima, a memória pode precisar ser adicionada quente após a inicialização se a memória do sistema de hipervisor não for suficiente.

pci = [PCI]

Várias opções de subsistema de Interconexão de Componentes Periféricos (PCI).

Algumas opções aqui presentes funcionam num dispositivo específico ou num conjunto de dispositivos (<pci_dev>). Estes são especificados num dos seguintes formatos:

[<domain>:]<bus>:<dev>.<func>[/<dev>.<func>]*
pci:<vendor>:<device>[:<subvendor>:<subdevice>]

Note que o primeiro formato especifica um barramento PCI/dispositivo/endereço de função que pode mudar se novo hardware for inserido, se o firmware da placa-mãe mudar, ou devido a mudanças causadas por outros parâmetros do kernel. Se o domínio for deixado indeterminado, é considerado zero. Opcionalmente, um caminho para um dispositivo através de múltiplos endereços de dispositivos/funções pode ser especificado após o endereço base (isto é mais robusto contra problemas de renumeração). O segundo formato seleciona dispositivos usando IDs do espaço de configuração que podem corresponder a múltiplos dispositivos no sistema.

As opções são:

  • hpmmiosize - A quantidade fixa de espaço de ônibus que é reservada para a janela de E/S (MMIO) da ponte hotplug. O tamanho padrão é de 2 megabytes.
  • hpmmioprefsize - A quantidade fixa de espaço de ônibus que é reservada para a janela MMIO_PREF da ponte hotplug. O tamanho padrão é de 2 megabytes.
pcie_ports = [PCIE]

Manuseio de serviços de porta PCIe (Peripheral Component Interconnect Express).

As opções são:

  • nativo - Use serviços PCIe nativos (PME, AER, DPC, PCIe hotplug) mesmo que a plataforma não dê permissão ao sistema operacional para usá-los. Este cenário pode causar conflitos se a plataforma também tentar utilizar estes serviços.
  • dpc-native - Use o serviço PCIe nativo somente para DPC. Esta configuração pode causar conflitos se o firmware usar AER ou DPC.
  • compatriota - Desabilitar serviços PCIe nativos (PME, AER, DPC, PCIe hotplug).
rcu_nocbs = [KNL]
O argumento é uma lista de CPU. A seqüência "tudo" pode ser usada para especificar cada CPU do sistema.
usbcore.authorized_default = [USB]

A autorização padrão do dispositivo USB.

As opções são:

  • -1 (Default) - Autorizado, exceto para USB sem fio
  • 0 - Não autorizado
  • 1 - Autorizado
  • 2 - Autorizado se o dispositivo estiver conectado à porta interna
usbcore.old_scheme_first = [USB]
Este parâmetro permite começar com o antigo esquema de inicialização do dispositivo. Esta configuração se aplica somente a dispositivos de baixa e alta velocidade (padrão 0 = desligado).
usbcore.quirks = [USB]

Uma lista de entradas quirk para aumentar a lista de entradas quirk do núcleo USB embutido. As entradas da lista são separadas por vírgulas. Cada entrada tem o formulário VendorID:ProductID:Flags, por exemplo quirks=0781:5580:bk,0a5c:5834:gij. O IDs são números hexadecimais de 4 dígitos e Flags é um conjunto de letras. Cada letra mudará o quirk incorporado; definindo-o se estiver claro e limpando-o se estiver definido.

As bandeiras adicionadas:

  • o - USB_QUIRK_HUB_SLOW_RESET, o hub precisa de um atraso extra após o reset de sua porta

Novos parâmetros /proc/sys/fs

protected_fifos

Este parâmetro é baseado nas restrições do software Openwall e fornece proteção, permitindo evitar escritas não intencionais para um FIFO controlado por atacantes, onde um programa destinado a criar um arquivo regular.

As opções são:

  • 0 - Escrever para FIFOs é irrestrito.
  • 1 - Não permite que a bandeira O_CREAT abra em FIFOs que não possuímos em diretórios pegajosos escrevíveis no mundo, a menos que sejam de propriedade do proprietário do diretório.
  • 2 - Aplica-se a diretórios pegajosos e graváveis em grupo.
protected_regular

Este parâmetro é semelhante ao parâmetro protegido_fifos, porém evita escrever em um arquivo regular controlado por um atacante, onde um programa pretende criar um.

As opções são:

  • 0 - Escrever para arquivos regulares é irrestrito.
  • 1 - Não permite a abertura da bandeira O_CREAT em arquivos regulares que não possuímos em diretórios pegajosos graváveis no mundo, a menos que sejam de propriedade do proprietário do diretório.
  • 2 - Aplica-se a diretórios pegajosos e graváveis em grupo.