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 Zzlib
para la compresión en el nivel 1 y la descompresión -
off
- No hay soporte de hardware IBM Zzlib
-
def_only
- Soporte de hardware IBM Zzlib
sólo para el algoritmodeflate
(compresión en el nivel 1) -
inf_only
- Soporte de hardware IBM Zzlib
sólo para el algoritmo deinflado
(descompresión) -
always
- Similar aon
, 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()
enadd_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 sistemaadd_taint()
con cualquiera de las banderas de este conjunto. El modificador opcionalnousertaint
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 depanic_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 utilizaRCU_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
ofatal
.
-
- 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
yRDSEED
sean mucho más lentas. Entre otros efectos, esto resultará en una reducción del rendimiento del dispositivo fuente de números aleatorios del kernelurandom
.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 deRDRAND
yRDSEED
-
- 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
yhugepages
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
odefault_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ámetrohugepagesz
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. Sihugepages
está precedido porhugepagesz
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 seguirdefault_hugepagesz
con el parámetrohugepages
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 atributoEFI_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. Especifiqueefi=nosoftreserve
para deshabilitar esta reserva y tratar la memoria por su tipo base (por ejemploEFI_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:
- Para la prueba.
- Cuando el kernel no es capaz de ver toda la memoria del sistema.
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. Sinmemmap
, 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 banderaO_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 banderaO_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.
-