Servicios del Kernel y configuración
El kernel es el encargado de iniciar el SO y esta presente en todos los sistemas Linux. Controla, entre otras cosas, el acceso al hardware, las E/S y las colas de espera por recursos.
Este permite personalizar la inicializacion del sistema usando parámetros durante el booteo.
Tareas principales:
- Inicializacion y booteo
- Planificación de procesos
- Gestión de memoria
- Control acceso al hardware
- E/S entre aplicaciones y dispositivos de almacenamiento
- Implementación de archivos locales y de red
- Control de seguridad: a nivel local (permisos de sistema de archivos) y de red
- Control de la red
Comando para ver la linea de comandos usada para bootear el sistema:
1 |
cat /proc/cmdline |
Lista de parámetros que se pueden utilizar al iniciar el kernel:
- https://www.kernel.org/doc/Documentation/kernel-parameters.txt
- O en el paquete de documentación del kernel (kernel-doc o linux-doc).
- Ejecutando comando man bootparam
Algunos parámetros no requieren argumentos y basta con solo nombrarlos. Otros requieren utilizarse como param=valor .
- ro: monta directorio raíz en modo solo lectura
- root: sistema de archivos raiz
- rd_LVM_LV: activa sistema de archivos root en el volumen logico especificado
- rd_NO_LUKS: deshabilita la detección de cifrado LUKS
- rd_NO_DM: deshabilita la detección de DM RAID
- LANG: es el lenguaje del sistema
- SYSFONT: es la fuente de consola
- KEYTABLE: es el nombre del archivo de configuración del teclado
- rhgb: para soporte de booteo gráfico en sistema Red Hat
- quiet: deshabilita la mayoría de los mensajes de registro
Los parámetros que empiezan con rd se usan solo en sistemas basados en Red Hat.
sysctl
Este comando se usa para leer y ajustar parámetros del kernel en tiempo de ejecución.
sysctl -a devuelve la lista de todos los parámetros.
1 2 3 |
... kernel.pid_max = 32768 ... |
Donde cada valor corresponde a una ruta en /proc/sys reemplazando las barras diagonales por puntos.
Para cambiar el valor de un parámetro se usa:
1 |
sudo sysctl net.ipv4.ip_forward=1 |
Lo cual sería igual que ejecutar:
1 |
sudo sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward' |
Nota: No se posible usar sudo con echo. Ese comando también podría ejecutarse siendo root y así evitar usar sh.
Mas info de como usar sysctl: man 2 sysctl
Si existe el archivo /etc/sysctl.conf es posible realizar ahí ajustes en el inicio del sistema de forma permanente.
Con el comando sudo sysctl -p se aplicarán los cambios que se encuentren en el archivo de configuración de forma inmediata.
Nota: En distros recientes que usan systemd (como RHEL7) el archivo de configuración está en /usr/lib/sysctl.d/00-system pero el original aún es soportado.