LPIC101 - Sesión 2
LPIC101 - Sesión 2
LPIC101 - Sesión 2
DIRECCIONES E/S
Son direcciones de memoria reservada a los dispositivos de entrada y salida para que puedan
comunicarse con el sistema. Para poder visualizar las direcciones ejecutar el comando cat
/proc/ioports.
Los hotplug son aquellos dispositivos de conexión caliente (mientras está en funcionamiento).
Los driver o controladores son un software el cual permite la comunicación entre el sistema
operativo y los componentes del hardware del equipo. En caso de que el sistema no lo reconozca
se tendrá que instalar el driver correspondiente del dispositivo.
Comandos:
Nos conectamos a través de nuestro cliente ssh y validamos si esta en la lista de módulos
agregados al kernel. Ejecutamos el comando lsmod | grep floppy y validamos que ya ha sido
añadido.
Ahora vamos a remover el módulo floppy, para ello se debe ejecutar comando modprobe -r
floppy. Después volvemos a validar si se puede visualizar en lista de módulos con el comando
lsmod | grep floppy.
Para poder volver añadirlo se debe ejecutar el mismo comando modprob floppy, y como se
podrá observar al ejecutar el comando lsmod | grep floppy ha vuelto hacer añadido.
En caso de necesitar más parámetros del comando modprob lo podemos ejecutar con –help.
Como se puede observar se lista todos los parámetros más una breve descripción.
INFORMACION DEL HARDWARE
En Linux hay dos sistemas de archivos que están dedicados a la gestión de dispositivos de
hardware.
PROCFS
Es un sistema de archivos que se utiliza para permitir el acceso a la información del kernel sobre
los procesos. Esta montado en el directorio /proc contiene archivos virtuales el cual brindan
información de los procesos y aplicaciones que están en ejecución en el sistema como también
recursos del hardware.
SYSFS
Es un sistema de archivos virtual orientado al hardware. Fue lanzado oficialmente en el Kernel
2.6. Está montando en el directorio /sys y contiene archivos virtuales similares a los de /proc.
La diferencia esta que en /sys solo brinda información de los dispositivos y datos del kernel
relacionados con el hardware.
UDEV
Programa que se encarga de gestionar de forma dinámica devices nodes dentro del directorio
/dev, es decir, maneja todos los eventos en el espacio de usuario mientras los dispositivos de
hardware se agregan o retiran del sistema.
DBUS
Se encargar de hurgar en /dev y nos envía señales con los cambios al gestor de escritorio del
sistema operativo.
lspci
Muestra información de todos los dispositivos conectados al bus PCI.Para visualizar los PCI
ejecutar el comando lspci.
Parámetros:
Para tener mas destalles acerca de un dispositivo se debe especificar la dirección que
están en formato hexadecimal con -s y acompañado con -v. En este caso se ha colocado
la tarjeta de video VGA. Se ejecutó el comando lspci -s 00:0f.0 -v.
Para obtener otra manera de validar si el modulo esta cargado en el kernel se utiliza la
opción -k. Ejecutamos el siguiente comando: lspci -s 00:0f.0 -k.
Del siguiente resultado se puede observar que el módulo del dispositivo es vmwgfx en
Kernel driver in use y todos los módulos del kernel del sistema se listan en kernel
modules: vmwgfx.
lsusb
Lista los dispositivos USB y los buses de conexión que están conectados en el sistema. Para
visualizar los dispositivos USB ejecutar el comando lsusb.
Parámetros:
Para tener más detalles de los dispositivos USB se debe especificar la dirección acompañado
con -v y -d. Ejecutar el comando lsusb -v -d.
LPIC – 101.2
A continuación, se detalla el proceso de arranque en los entornos de Linux.
1. BIOS/UEFI
Pasos previos antes del arranque del sistema en BIOS:
Una vez que se enciende nuestro equipo se ejecuta el firmware del BIOS, el cual es
un software que esta almacenado en un chip y está integrado a la placa base.
Luego se ejecuta el proceso POST (Power On Self Test) el cual permite identificar y
diagnosticar fallas con los dispositivos de hardware del equipo.
El BIOS activa los componentes básicos para cargar el sistema, como salida de video,
teclado y medios de almacenamiento.
4. KERNEL
Inicia la secuencia llamada “init”, que es el primer programa del sistema operativo
que va a encargar de configurar todos los servicios, es decir, poner el sistema en
funcionamiento.
5. INIT
Al ser primer proceso en ejecución se le asigna 1 como numero de identificador de
procesos (PID).
BIOS UEFI
MBR
SysVinit
Inicialmente en Unix el proceso init solía ejecutarse en base a un solo script ubicado en /etc/rc
el cual iniciaba todos los servicios del sistema. Posteriormente Linux adopto SysVinit como
proceso inicio en base a init, donde se reemplaza el script por un nuevo sistema de gestión de
servicios y de scripts en el directorio /etc/rc.d o /etc/init.d dependiendo de la distribución de
Linux.
Contenido de scripts en /etc/init.d en Debian 6.
Los scripts se ejecutan a través del script rc el cual se invoca los directorios ubicados en
/etc/rcN.d/, donde N es el nivel de ejecución. El contenido en cada uno de estos directorios son
enlaces que están direccionados hacia /etc/init.d/. A continuación, se muestra el contenido de
/etc/rc1.d.
Como se podrá observar los enlaces que empiezan tienen una sintaxis que empiezan por K y S.
Los enlaces que inicien por S se le va a pasar el comando start y los que inicien por K se le va a
pasar el comando stop. También se tiene un numero el cual indica el orden en el que se tiene
que ejecutar esos parámetros
Nivel de ejecución
Runlevel 0 Apagado del sistema.
Runlevel 1, s o usuario Sin interfaz de red, solo para root. Para reparar problemas, o hacer
único pruebas en el sistema.
Runlevel 2, 3 o 4 Modo multiusuario. Los usuarios pueden iniciar sesión por consola o
red. Los niveles de ejecución 2 y 4 no se usan con frecuencia.
Runlevel 5 Modo multiusuario. Es equivalente a 3, más el inicio de sesión en
modo gráfico.
Runlevel 6 Reinicio del sistema.
id:runleves:action:process
Donde:
Vamos a ejecutar el siguiente comando cat /etc/inittab para visualizar los niveles de ejecución.
Como se podrá observar se tiene una descripción por cada nivel de ejecución, además el nivel
por default o nivel actual es 5.
DISTRIBUCIÓN LINUX - DEBIAN 6
Vamos a ejecutar el siguiente comando cat /etc/inittab para visualizar los niveles de ejecución.
Como se podrá observar se tiene una descripción por cada nivel de ejecución, además el nivel
por default o nivel actual es 2.
COMANDOS
A continuación, algunos comandos que pertenecen a SysVinit.
CASOS DE PRACTICA
A continuación, vamos a poner en práctica los comandos mencionados en el punto anterior. Se
va a trabajar en un entorno de Debian 6, ya que es una versión que todavía está soportada por
SysVinit.
COMANDO runlevel
Ejecutamos el comando runlevel, para identificar en qué nivel de ejecución nos encontramos.
Como se podrá observar nos encontramos en el nivel de ejecución 2 y además como se podrá
observar hay una N e indica el runlevel anterior en el que ha estado.
En el archivo /etc/inittab también se podrá observar que el nivel de ejecución por default
también es 2.
COMANDO init/telinit
Para regresar al estado inicial se debe ejecutar el nivel de ejecución por defecto. Ejecutamos
telinit 2.
A diferencia de SysVinit que trabaja con servicios que se invocan a través de scripts en Systemd
trabaja con unidades y se pueden encontrar en distintas rutas /lib/systemd/system,
/usr/lib/systemd/system, /etc/systemd/system/.
service
socket
device
mount
automount
target
snapshot
En este caso al trabajar con Systemd debemos de tener una distribución en Linux que este
soportada, por lo tanto, se va a trabajar en Centos 7. A continuación, se muestra la ubicación de
las unidades en unos de los directorios. Ejecutamos el comando ls /lib/systemd/system.
CASOS DE PRACTICA
A continuación, se muestran algunos ejemplos del comando systemctl. Tener en consideración
que se está utilizando Centos 7.
1. Si se ejecuta por sí solo el comando systemctl, se lista todos los servicios del sistema con
una breve descripción por cada uno de ellos.
2. Se puede listar las unidades con list-unit y para especificar el tipo con –type=<<unit>>.
En este ejemplo reemplazamos <<unit>> con la unidad service. Ejecutar el comando
systemctl list-units --type=service.
3. Se puede visualizar el árbol de dependencias de un servicio o de una unidad, se tiene
que ejecutar comando systemctl list-dependencies acompañado con el nombre del
servicio. En este ejemplo se listará las dependencias de sshd ejecutando systemctl list-
dependencies sshd.
4. Para poder visualizar todos los archivos de las unidades con sus estados ejecutar
systemctl list-unit-files. Se imprime dos columnas, la primera es archivo de la unidad y
la segunda es el estado que generalmente son habilitado, deshabilitado, estatico o
enmascarado.
5. Para poder identificar los estados de los servicios vamos a realizar el siguiente
procedimiento de validar status, detener e iniciar servicios. En este ejemplo se va a
trabajar con el servicio de firewalld.
Primero vamos a validar el estatus del servicio del firewalld, ejecutamos el comando
systemctl status firewalld. Como se podrá observar se ha identificado que el servicio
está operativo según la línea Active: active (running) since jue 2022-06-09 19:04:35 -
05; 44min ago.
Iniciar el servicio del firewalld con el comando systemctl start firewalld y validamos el
estatus. Como se podrá observar el servicio del firewalld ha vuelto a estar operativo
según la línea Active: active (running) since jue 2022-06-09 20:00:48 -05; 9s ago.
Upstart
Al igual que systemd, Upstart es un sustituto de init. El objetivo de Upstart es acelerar el proceso
de arranque paralelizando el proceso de carga de los servicios del sistema. Upstart fue utilizado
por distribuciones basadas en Ubuntu en versiones anteriores, pero hoy dio paso a systemd.
JOURNALCTL
Es una herramienta que se encarga de recopilar, administrar y permite acceder a los registros
del sistema de systemd.
PARÁMETROS - JOURNALCTL
PARÁMETROS
-s, -u Consultar mensajes en un rango de fecha. Sintaxis de tiempo:
YYYY-MM-DD [HH:MM:SS], yesterday, today, tomorrow, N day ago, -/+
NhMmin(-1h15min)
u Permite visualizar unidades.
k Permite visualizar mensajes del kernel.
P imprime según el nivel de log (emerg, alert, crit, err, warning, notice, info,
debug).
nX Permite visualizar las ultimas, donde X, es el número de líneas que
queremos limitar.
PARAM_VALUE Permite visualizar parámetros:
_PID ID de procesos
_UID ID de usuarios
_COMM
CASOS DE PRACTICA
A continuación, se muestran algunos ejemplos del comando journalctl acompañado con los
parámetros del punto anterior. Tener en consideración que se está utilizando Centos 7.
1. Para poder visualizar los logs en un rango de fecha del sistema ejecutamos el comando
journalctl -S 2022-06-06 -U 2022-06-08.
2. Visualizar los logs del sistema de la fecha actual. Ejecutar el comando journactl -S today.
3. Visualizar los logs del sistema especificando un número de días. Ejecutar el comando
journalctl -S '20 day ago'.
4. Visualizar los logs del sistema especificando el tiempo en hora y minutos. Ejecutar el
comando journalctl -S -6h25min.
6. Visualizar los logs del sistema especificando el nivel error. Ejecutar el comando
journalctl -p err.
7. Visualizar los logs del sistema especificando el nivel warning. Ejecutar el comando
journalctl -p warning.
8. Visualizar logs del sistema por una unidad en específico, en este caso se ha puesto
como ejemplo la unidad service y se ejecutó el comando journalctl _COMM=sshd.
10. Visualizar especificando el número de las ultimas líneas de logs del sistema. Ejecutar el
comando journalctl -n20.
DMESG
Nos muestra los mensajes del kernel de Linux. Al arrancar el sistema se muestran mensajes
según se van cargando controladores o funciones del sistema. Para revisarlos se usa dmesg.
PARÁMETROS - DMESG
PARÁMETROS
-T Muestra las marcas de tiempo más claramente.
-k Solo mensajes del kernel
-l Filtra por niveles de aviso (warn, err, etc..)
CASOS DE PRACTICA
A continuación, se muestran algunos ejemplos del comando dmesg acompañado con los
parámetros del punto anterior. Tener en consideración que se está utilizando Centos 7.
1. El uso básico del comando es ejecutarlo sin parámetros. Como se puede observar el
resultado son todos los mensajes del kernel.
2. Para que sea más legible los mensajes ejecutamos el comando dmesg -H.
3. En caso de querer visualizar solo los mensajes del kernel ejecutamos el comando dmesg
-k.
4. Para visualizar el tiempo con mayor detalle ejecutamos el comando dmesg -T.