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 IBMZlib
para compressão no nível 1 e descompressão -
off
- Sem suporte de hardware IBMZlib
-
def_only
- Suporte de hardware IBMZlib
somente para o algoritmodeflate
(compressão no nível 1) -
inf_only
- Suporte de hardware IBMZlib
somente para o algoritmoinflacionado
(descompressão) -
sempre
- Semelhante aoanterior
, 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()
emadd_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 sistemaadd_taint()
for invocada com qualquer uma das bandeiras deste conjunto. A chave opcionalnousertaint
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 empanic_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ê definirrcutree.use_softirq
para um valor diferente de zero (padrão),RCU_SOFTIRQ
é usado por padrão. Especifiquercutree.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 modofatal
.
-
- 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
eRDSEED
fiquem muito mais lentas. Entre outros efeitos, isto resultará na redução da produção do dispositivo fonte de número aleatório do kerneldo 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 oRDRAND
eRDSEED
-
- 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
ehugepages
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
oudefault_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âmetroshugepagesz
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 ashugepages
forem precedidas porhugepagesz
inválidas, ashugepages
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âmetrohugepagesz
padrão
com o parâmetrohugepagesz
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 atributoEFI_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. Especifiqueefi=nosoftreserve
para desativar esta reserva e tratar a memória por seu tipo de base (por exemploEFI_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:
- Para teste.
- Quando o núcleo não é capaz de ver toda a memória do sistema.
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 omemmap
, 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 bandeiraO_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 bandeiraO_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.
-