====== LPI Topic 101: System Architecture ======
Perteneciente a [[informatica:certificaciones:lpic:lpic-1|LPIC-1]]
Se explica cómo es la arquitectura del sistema, cómo se relaciona Linux con los componentes de hardware y cómo comienza la ejecución del sistema cuando se enciende la máquina.
* [[informatica:certificaciones:lpic:lpic-1:101_system_architecture:101.1_determine_and_configure_hardware_settings|101.1 Determine and configure hardware settings]] (2)
* [[informatica:certificaciones:lpic:lpic-1:101_system_architecture:101.2_boot_the_system|101.2 Boot the system]] (3)
* [[informatica:certificaciones:lpic:lpic-1:101_system_architecture:101.3_change_runlevels_boot_targets_and_shutdown_or_reboot_system|101.3 Change runlevels / boot targets and shutdown or reboot system]] (3)
===== Ejercicios =====
==== Ejercicio 1: Módulos del kernel y niveles de ejecución ====
**SysV**
**1. Busca cual es el runlevel por defecto y lista los procesos que arrancan en él**
El runlevel por defecto se especifica en el fichero ''/etc/inittab''
Para ver los procesos que arrancan en dicho nivel de servicio: ''/etc/rcX.d/'' (donde X habrá que sustituirlo por el runlevel que aparezca en ''/etc/inittab''
**2. Cambia al runlevel 2 y comprueba si hay alguna diferencia en los procesos que estan corriendo**
Primero verificamos los procesos que están corriendo en el runlevel actual:
''ps aux''
Ahora cambiamos al runlevel 2:
''telinit 2'' / ''init 2''
Y verificamos de nuevo:
''ps aux''
**3. Quita el servicio "crond" del runlevel 2, ponlo como runlevel por defecto y reinicia. Comprueba que ese servicio no esté corriendo (//creo que lo que quieren es que quitemos el servicio crond del runlevel2, que pongamos el runlevel por defecto al runlevel2 y que luego verifiquemos que cuando arrancamos el linux efectivamente ese servicio crond no está habilitado al haber arrancado el sistema en el runlevel2.//)**
Quitamos el servicio crond del runlevel 2:
chkconfig --level 2 crond off
Establecemos el runlevel 2 por defecto en ''/etc/inittab'':
id:2:initdefault:
Reiniciamos:
reboot # o telinit 6
Comprobamos el nivel de ejecución en el que estamos:
runlevel
Verificamos si está corriendo el servicio crond:
service crond status # o también ps aux |grep -i crond
**4. Deshabilita totalmente del sistema el servicio "crond"**
chkconfig --del crond
**5. Levanta manualmente ese servicio**
service crond start
**Systemd**
**1. Busca cual es el target por defecto y lista todos los targets del sistema**
Para ver el target por defecto:
systemctl get-default
Para listar todos los targets del sistema:
systemctl list-units --type=target
**2. Cambia al target multi-user y comprueba si hay alguna diferencia en los procesos que estan corriendo**
Miramos los procesos en el target actual:
ps aux
Para cambiar al target multi-user:
systemctl isolate multi-user.target
Miramos los procesos en el target actual:
ps aux
**3. Deshabilita el servicio "cron" y comprueba que ese servicio ya no es una dependencia del target.**
Para deshabilitarlo:
systemctl disable cron.service
Revisamos si cron.service es dependencia del target actual:
systemctl list-dependencies
**4. Comprueba si el servicio está corriendo y si es así detenlo**
systemctl status crond.service
Lo detenemos con:
systemctl stop crond.service
**5. Vuelve a habilitar el servicio "cron"**
systemctl enable cron.service
**Trabajar con módulos del kernel**
**1. Desde la línea de comando, enumere todos los módulos activados actualmente en el sistema. Determine si su
sistema tiene un módulo habilitado para el cdrom. Si es así, ¿cuál es el nombre?**
Para ver los módulos del kernel cargados en memoria:
lsmod
Buscamos alguno para el cdrom:
lsmod | grep -i cdrom
**2. Use el comando ''lspci'' para listar todos los dispositivos en su sistema. Use el modo detallado y asegúrese de que se incluya toda la información de IRQ o dirección.**
lspci -vvv
**3. Usando algunos de los comandos que hemos aprendido hasta ahora, encuentre un módulo de sistema de archivos que esté CARGADO pero que usted NO esté en usando. Identifica el nombre de su módulo.**
lsmod | grep -i fs
**4. Ahora desinstale ese módulo y verifique que ya no está cargado en el kernel. Enumere los pasos para desinstalar el módulo y cómo ha verificado que ya no está cargado.**
modprobe -r
**5. Sin usar modprobe, vuelva a cargar y verifique el módulo que se eliminó recientemente. Enumere los pasos para cargar el módulo y cómo ha verificado que ahora se haya cargado.**
Comprobamos el kernel que está en ejecución:
uname -r
Vamos a la carpeta de dicho kernel ''/lib/modules/'' y buscamos el módulo.
Lo cargamos en memoria con:
insmod
Verificamos que esté cargado:
lsmod
===== Test =====
**The ''lsmod'' utilities list which of the following when run?**
* Kernel modules that are loaded into memory (**Solución**)
* All kernel modules and their attributes
* All kernel modules available on the system
* None of the above
**Which of the following filesystem types are referred to as a 'pseudofilesystem'?**
* sysfs (**Solución**)
* xfs
* ext2
* dev
**Which of the following represents the correct boot order of a 'sysvinit' system?**
* None of the above
* BIOS, kernel, boot loader, init, login
* Boot loader, BIOS, init, device initialization, mount filesystems, login
* BIOS, MBR, boot loader, kernel, device initialization, root filesystem mount (**Solución**)
**Which of the following runlevel numbers translates to the 'reboot' runlevel (either in 'sysvinit' or 'systemd')?**
* 6 (**Solución**)
* 1
* 0
* 5
**The 'procfs' filesystem is referred to as a 'pseudofilesystem'.**
* Verdadero (**Solución**)
* Falso