Arquitectura del Sistema
Determinar y configurar hardware, arranque del sistema y gestión de niveles de ejecución.
101.1 Determinar y configurar los ajustes de hardware
Activación de Dispositivos
BIOS se presenta al presionar una tecla durante el arranque (F1, F2, Esc...). Aquí podemos habilitar/deshabilitar periféricos integrados, activar protección básica contra errores y cambiar configuraciones como DMA y IRQ.
Inspección de dispositivos en Linux
Podemos identificar recursos de hardware de dos formas: usando comandos o leyendo archivos específicos.
Comandos:
lspci: Muestra los dispositivos conectados al bus PCI.
Para más información:lspci -s 01:00.0 -volspci -s 04:02.0 -k(más detallado).lsusb: Muestra los dispositivos USB.
Opciones útiles:lsusb -v -d 0424:2514,lsusb -t(árbol). Requiere root.lsmod: Muestra módulos cargados (Module, Size, Used by).
Gestión:modprobe -r modulo(descargar),modprobe -p modulo(info).
Configuración: Parámetros en/etc/modprobe.d/. Bloqueo en/etc/modprobe.d/blacklist.conf.
Archivos:
Info sistema/procesos
cpuinfo, interrupts, ioports, dma
Interacción Kernel/Hardware
Archivos de dispositivos
Gestionado por udev
Udev gestiona dispositivos (coldplugs/hotplugs) usando reglas en /etc/udev/rules.d/. acpid gestiona eventos de energía.
Dispositivos de almacenamiento
Nomenclatura de dispositivos de bloques:
/dev/hdX # Canales IDE
/dev/fdX # Disquetes
/dev/sdX # SCSI/SATA
/dev/mmcblkXpy # Tarjetas SD
/dev/nvmeZnXpY # NVMe (Z=controlador, X=disco, Y=partición)
101.2 Arranque del Sistema
Para controlar un equipo, el núcleo (kernel) debe cargarse mediante un programa llamado bootloader, y este a su vez lo carga el firmware.
BIOS vs UEFI
| BIOS (Legacy) | UEFI |
|---|---|
| 1. POST | 1. POST |
| 2. Activar componentes básicos | 2. Activar componentes básicos |
| 3. Carga la primera etapa del gestor de arranque desde MBR (primeros 512 bytes) | 3. Lee las definiciones almacenadas en la NVRAM para ejecutar la aplicación definida |
| 4. La primera etapa llama a la segunda etapa que carga el kernel | 4. Si la app definida es un gestor de arranque, cargará el kernel |
Detalles UEFI: No se basa en MBR. Usa partición ESP (EFI System Partition), admite Secure Boot y sistemas de archivos FAT12/16/32. Almacenado en GPT.
El Cargador de Arranque (GRUB 2)
Presiona Shift (BIOS) o Esc (UEFI) para invocar el menú. Parámetros del kernel comunes:
init:Establece un iniciador alternativo (ej. init=/bin/bash)system.unit:Indica la unidad a usar por systemdmaxcpus:Cantidad de CPUs a usarroot:Establece en qué partición está raíz (root=/dev/sda2)rootflags:Parámetros para el filesystem raízro:Montaje de solo lectura para raízrw:Montaje de lectura y escritura para raíz
Para persistir cambios: editar /etc/default/grub en la línea GRUB_CMDLINE_LINUX y ejecutar grub-mkconfig o update-grub.
Archivos clave: /boot/grub/grub.cfg (configuración principal), /boot/grub/i386-pc/lvm.mod. Instalar en MBR: grub-install /dev/sdX.
Inicialización del sistema
El kernel abre initramfs (sistema de archivos raíz temporal comprimido), monta /etc/fstab y ejecuta el primer programa (init), que gestiona scripts y demonios.
Una vez cargado init, initramfs se elimina de la RAM. Init puede ser SysVinit, Systemd o Upstart (obsoleto).
En SysVinit, el primer programa es /sbin/init (PID 1). El nivel de ejecución se configura en /etc/inittab. Los scripts de arranque en /etc/rcX.d/ usan prefijos S (Start) y K (Kill).
Inspección de inicialización
Los mensajes del kernel se guardan en el kernel ring buffer (se pierden al apagar o con dmesg --clear).
dmesg: Muestra mensajes actuales.journalctl --list-boots: Listará el número de arranques.journalctl -b 0: Mensajes del inicio actual (-b 1el anterior).journalctl -D RUTA: Mensajes en/var/log/journal.
101.3 Cambiar los niveles de ejecución / objetivos de arranque y apagar o reiniciar el sistema
Estándar SysVinit
Proporciona estados de sistema llamados runlevels. El responsable es /sbin/init, que identifica el nivel en /etc/inittab y carga scripts en /etc/init.d/.
Sintaxis /etc/inittab: id:runlevels:action:process.
Apagado
Modo monousuario (Mantenimiento)
Modo multiusuario
Modo multiusuario gráfico
Reinicio
Acciones: boot, bootwait, sysinit, wait, respawn, ctrlaltdel.
Comandos: telinit q (recargar inittab), runlevel (ver nivel), telinit N (cambiar).
Systemd
Utiliza unidades. Tipos: service, socket, device, mount, automount, target, snapshot.
Comandos systemctl:
start/stop/restart unit.service
is-active unit.service
status unit.service
enable/disable unit.service
is-enabled unit.service
Control de Targets (equivalente a runlevels):
systemctl isolate graphical.target # Cambiar modo
systemctl set-default graphical.target # Establecer por defecto
Nota: Systemd no utiliza /etc/fstab. Archivos de configuración en /lib/systemd/system. Listar: systemctl list-unit-files --type=tipo.
Upstart (Obsoleto)
Scripts en /etc/init/. Comandos: initctl list, start, status, stop.
Apagado y Reinicio
shutdown [option] time [message].
- Opciones:
-h(apagar),-r(reiniciar). - Tiempo:
hh:mm,+m(minutos),now/+0. - Systemd:
poweroff,reboot. - Mensajes:
wall(enviar a todos los usuarios).