Capítulo 5. Cambios importantes en los parámetros externos del núcleo

Este capítulo proporciona a los administradores de sistemas un resumen de los cambios significativos en el kernel enviado con Red Hat Enterprise Linux 8.3. Estos cambios pueden incluir, por ejemplo, entradas proc añadidas o actualizadas, valores por defecto de sysctl y sysfs, parámetros de arranque, opciones de configuración del kernel o cualquier cambio de comportamiento notable.

Nuevos parámetros del núcleo

acpi_no_watchdog = [HW,ACPI,WDT]
Este parámetro permite ignorar la interfaz de vigilancia basada en ACPI (Advanced Configuration and Power Interface) y dejar que el controlador nativo controle el dispositivo de vigilancia.
dfltcc = [HW,S390]

Este parámetro configura el soporte de hardware zlib para las arquitecturas IBM Z.

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

Las opciones son:

  • on (por defecto) - Soporte de hardware IBM Z zlib para la compresión en el nivel 1 y la descompresión
  • off - No hay soporte de hardware IBM Z zlib
  • def_only - Soporte de hardware IBM Z zlib sólo para el algoritmo deflate (compresión en el nivel 1)
  • inf_only - Soporte de hardware IBM Z zlib sólo para el algoritmo de inflado (descompresión)
  • always - Similar a on, pero ignora el nivel de compresión seleccionado y siempre utiliza el soporte de hardware (utilizado para la depuración)
irqchip.gicv3_pseudo_nmi = [ARM64]

Este parámetro permite el soporte de pseudo interrupciones no enmascarables (NMIs) en el kernel.

Para utilizar este parámetro es necesario construir el kernel con el elemento de configuración CONFIG_ARM64_PSEUDO_NMI.

panic_on_taint =

Máscara de bits para llamar condicionalmente a panic() en add_taint()

Formato

Una máscara de bits hexadecimal que representa un conjunto de banderas TAINT que hará que el kernel entre en pánico cuando se invoque la llamada al sistema add_taint() con cualquiera de las banderas de este conjunto. El modificador opcional nousertaint evita los bloqueos forzados por el usuario escribiendo en el archivo /proc/sys/kernel/tainted cualquier conjunto de banderas que coincida con la máscara de bits de panic_on_taint.

Para más información, consulte la documentación de la versión anterior.

prot_virt = [S390]

Formato

Este parámetro permite alojar máquinas virtuales protegidas que están aisladas del hipervisor si el soporte de hardware está presente.

rcutree.use_softirq = [KNL]

Este parámetro permite eliminar el procesamiento softirq de Tree-RCU.

Si establece este parámetro a cero, mueve todo el procesamiento de RCU_SOFTIRQ a los kthreads rcuc por CPU. Si establece rcutree . use_softirq a un valor distinto de cero (por defecto), se utiliza RCU_SOFTIRQ por defecto. Especifique rcutree .use_softirq=0 para utilizar rcuc kthreads.

split_lock_detect = [X86]

Este parámetro habilita la detección de bloqueo dividido. Cuando está habilitado, y si el soporte de hardware está presente, las instrucciones atómicas que acceden a los datos a través de los límites de la línea de caché resultarán en una excepción de comprobación de alineación.

Las opciones son:

  • off - no habilitado
  • warn - el kernel emitirá advertencias de tasa limitada sobre las aplicaciones que activen la Excepción de Comprobación de Alineación (#AC). Este modo es el predeterminado en las CPUs que soportan la detección de bloqueos divididos.
  • fatal - el kernel enviará la señal de error de Buss (SIGBUS) a las aplicaciones que activen la excepción #AC.

    Si la excepción #AC es golpeada mientras no se ejecuta en el modo de usuario, el kernel emitirá un error oops en el modo warn o fatal.

srbds = [X86,INTEL]

Este parámetro controla la mitigación del muestreo de datos del búfer de registro especial (SRBDS).

Ciertas CPUs son vulnerables a un exploit similar al MDS (Microarchitectural Data Sampling) que puede filtrar bits del generador de números aleatorios.

Por defecto, el microcódigo mitiga este problema. Sin embargo, la corrección del microcódigo puede hacer que las instrucciones RDRAND y RDSEED sean mucho más lentas. Entre otros efectos, esto resultará en una reducción del rendimiento del dispositivo fuente de números aleatorios del kernel urandom.

Para desactivar la mitigación del microcódigo, configure la siguiente opción:

  • off - Desactivar la mitigación y eliminar el impacto en el rendimiento de RDRAND y RDSEED
svm = [PPC]

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

Este parámetro controla el uso de la Facilidad de Ejecución Protegida en los sistemas pSeries.

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

Este parámetro deshabilita las optimizaciones PV, lo que obliga al huésped a ejecutarse como huésped genérico sin controladores PV.

Actualmente se soportan los huéspedes XEN HVM, KVM, HYPER_V y VMWARE.

Parámetros del núcleo actualizados

hugepagesz = [HW]

Este parámetro especifica un tamaño de página enorme. Utilice este parámetro junto con el parámetro hugepages para preasignar un número de páginas enormes del tamaño especificado.

Especifique los parámetros hugepagesz y hugepages en pares como:

hugepagesz=2M hugepages=512

El parámetro hugepagesz sólo puede especificarse una vez en la línea de comandos para un tamaño de página enorme específico. Los tamaños de página enormes válidos dependen de la arquitectura.

hugepages = [HW]

Este parámetro especifica el número de páginas enormes a preasignar. Este parámetro suele seguir al parámetro válido hugepagesz o default_hugepagesz.

Sin embargo, si hugepages es el primer o el único parámetro de la línea de comandos de HugeTLB, especifica implícitamente el número de páginas enormes del tamaño por defecto a asignar. Si el número de páginas enormes del tamaño por defecto se especifica implícitamente, no puede ser sobrescrito por el parámetro hugepagesz hugepages para el tamaño por defecto.

Por ejemplo, en una arquitectura con 2M de tamaño de página enorme por defecto:

hugepages=256 hugepagesz=2M hugepages=512

La configuración del ejemplo anterior da como resultado la asignación de 256 páginas enormes de 2M y un mensaje de advertencia de que el parámetro hugepages=512 fue ignorado. Si hugepages está precedido por hugepagesz no válido, hugepages será ignorado.

default_hugepagesz = [HW]

Este parámetro especifica el tamaño de la página enorme por defecto. Puede especificar default_hugepagesz sólo una vez en la línea de comandos. Opcionalmente, puedes seguir default_hugepagesz con el parámetro hugepages para preasignar un número específico de páginas enormes del tamaño por defecto. Además, puede especificar implícitamente el número de páginas enormes de tamaño predeterminado que se preasignarán.

Por ejemplo, en una arquitectura con 2M de tamaño de página enorme por defecto:

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

Las configuraciones del ejemplo anterior dan como resultado la asignación de 256 páginas enormes de 2M. El tamaño válido de la página enorme por defecto depende de la arquitectura.

efi = [EFI]

Formato: {"mapa_antiguo", "nochunk", "noruntime", "debug", "nosoftreserve" }

Las opciones son:

  • old_map [X86-64] - Cambia a la antigua asignación de servicios de ejecución EFI basada en ioremap. Los 32 bits todavía utilizan éste por defecto
  • nochunk - Desactivar la lectura de archivos en "chunks" en el stub de arranque EFI, ya que el chunking puede causar problemas con algunas implementaciones de firmware
  • noruntime - Desactivar el soporte de los servicios de ejecución EFI
  • debug - Habilitar la salida de depuración miscelánea
  • nosoftreserve - El atributo EFI_MEMORY_SP (Specific Purpose) a veces hace que el kernel reserve el rango de memoria para que un controlador de mapeo de memoria lo reclame. Especifique efi=nosoftreserve para deshabilitar esta reserva y tratar la memoria por su tipo base (por ejemplo EFI_CONVENTIONAL_MEMORY / \ "System RAM").
intel_iommu = [DMAR]

Controlador Intel IOMMU Reasignación de acceso directo a la memoria (DMAR).

Las opciones añadidas son:

  • nobounce (por defecto desactivado) - Desactivar el búfer de rebote para los dispositivos que no son de confianza, como los dispositivos Thunderbolt. Esto tratará los dispositivos no confiables como los confiables. Por lo tanto, esta configuración podría exponer los riesgos de seguridad de los ataques de acceso directo a la memoria (DMA).
mem = nn[KMG] [KNL,BOOT]

Este parámetro fuerza el uso de una cantidad específica de memoria.

La cantidad de memoria que se utilizará en los casos siguientes:

  1. Para la prueba.
  2. Cuando el kernel no es capaz de ver toda la memoria del sistema.
  3. La memoria que se encuentra después del límite de la memoria se excluye del hipervisor y se asigna a los huéspedes KVM.

    X86] Funciona como la limitación de la dirección máxima. Se utiliza junto con el parámetro memmap para evitar colisiones en el espacio de direcciones físicas. Sin memmap, los dispositivos de Interconexión de Componentes Periféricos (PCI) podrían colocarse en direcciones pertenecientes a la RAM no utilizada.

    Tenga en cuenta que esta configuración sólo tiene efecto durante el tiempo de arranque, ya que en el caso 3 anterior, la memoria puede necesitar ser añadida en caliente después del arranque si la memoria del sistema del hipervisor no es suficiente.

pci = [PCI]

Varias opciones del subsistema de interconexión de componentes periféricos (PCI).

Algunas de las opciones aquí presentes operan en un dispositivo específico o en un conjunto de dispositivos (<pci_dev>). Se especifican en uno de los siguientes formatos:

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

Tenga en cuenta que el primer formato especifica una dirección de bus/dispositivo/función PCI que puede cambiar si se inserta nuevo hardware, si el firmware de la placa base cambia, o debido a cambios causados por otros parámetros del kernel. Si el dominio se deja sin especificar, se toma como cero. Opcionalmente, se puede especificar una ruta a un dispositivo a través de múltiples direcciones de dispositivo/función después de la dirección base (esto es más robusto contra problemas de renumeración). El segundo formato selecciona los dispositivos usando IDs del espacio de configuración que pueden coincidir con múltiples dispositivos en el sistema.

Las opciones son:

  • hpmmiosize - La cantidad fija de espacio de bus que se reserva para la ventana de E/S mapeada en memoria (MMIO) del puente hotplug. El tamaño por defecto es de 2 megabytes.
  • hpmmioprefsize - La cantidad fija de espacio en el bus que se reserva para la ventana MMIO_PREF del puente hotplug. El tamaño por defecto es de 2 megabytes.
pcie_ports = [PCIE]

Manejo de servicios de puertos de interconexión de componentes periféricos (PCIe).

Las opciones son:

  • nativo - Utiliza los servicios PCIe nativos (PME, AER, DPC, PCIe hotplug) incluso si la plataforma no da permiso al SO para utilizarlos. Esta configuración puede causar conflictos si la plataforma también intenta utilizar estos servicios.
  • dpc-native - Utiliza el servicio PCIe nativo sólo para DPC. Esta configuración puede causar conflictos si el firmware utiliza AER o DPC.
  • compat - Desactivar los servicios PCIe nativos (PME, AER, DPC, PCIe hotplug).
rcu_nocbs = [KNL]
El argumento es una lista de CPUs. Se puede utilizar la cadena "all" para especificar cada CPU del sistema.
usbcore.authorized_default = [USB]

La autorización del dispositivo USB por defecto.

Las opciones son:

  • -1 (por defecto) - Autorizado excepto para el USB inalámbrico
  • 0 - No autorizado
  • 1 - Autorizado
  • 2 - Autorizado si el dispositivo está conectado al puerto interno
usbcore.old_scheme_first = [USB]
Este parámetro permite iniciar con el antiguo esquema de inicialización del dispositivo. Este ajuste sólo se aplica a los dispositivos de baja y máxima velocidad (por defecto 0 = desactivado).
usbcore.quirks = [USB]

Una lista de entradas de quirk para aumentar la lista de quirk del núcleo USB incorporada. Las entradas de la lista están separadas por comas. Cada entrada tiene la forma VendorID:ProductID:Flags, por ejemplo quirks=0781:5580:bk,0a5c:5834:gij. Los IDs son números hexadecimales de 4 dígitos y Flags es un conjunto de letras. Cada letra cambiará el quirk incorporado; fijándolo si está claro y borrándolo si está fijado.

Las banderas añadidas:

  • o - USB_QUIRK_HUB_SLOW_RESET, el hub necesita un retardo extra después de reiniciar su puerto

Nuevos parámetros de /proc/sys/fs

protected_fifos

Este parámetro se basa en las restricciones del software Openwall y proporciona protección al permitir evitar escrituras involuntarias en un FIFO controlado por el atacante donde un programa pretendía crear un archivo regular.

Las opciones son:

  • 0 - La escritura en los FIFOs no tiene restricciones.
  • 1 - No permite la apertura de la bandera O_CREAT en FIFOs que no poseemos en directorios pegajosos de escritura mundial a menos que sean propiedad del dueño del directorio.
  • 2 - Se aplica a los directorios pegajosos con escritura de grupo.
protegido_regular

Este parámetro es similar al parámetro protected_fifos, sin embargo, evita que se escriba en un archivo regular controlado por un atacante donde un programa pretendía crear uno.

Las opciones son:

  • 0 - La escritura en archivos regulares no tiene restricciones.
  • 1 - No permite la apertura de la bandera O_CREAT en archivos regulares que no poseemos en directorios pegajosos de escritura mundial a menos que sean propiedad del dueño del directorio.
  • 2 - Se aplica a los directorios pegajosos con escritura de grupo.