jueves, 9 de enero de 2014

LINUX: configurar niveles de arranque (inittab y systemd)

En los servidores linux es posible configurar el nivel de arranque del sistema. De esta forma se puede prescindir de algunos servicios como interfaz gráfica en aquellos servidores que requieren una mejor optimización de recursos de ram, cpu, etc.
Son varias las razones para administrar los niveles de arranque del sistema.
Acontinuación se realiza un ejercicio con la forma de inittab (legacy) y systemd.



usando inittab

observando el archivo iniitab, se puede obtener una idea de los distintos niveles de arranque disponibles para utilizar.
[root@YAYO ~]# cat /etc/inittab 
#
# inittab       This file describes how the INIT process should set up
#               the system in a certain run-level.
#
# Author:       Miquel van Smoorenburg,
#               Modified for RHS Linux by Marc Ewing and Donnie Barnes
#

# Default runlevel. The runlevels used by RHS are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)

id:3:initdefault:

# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit

l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6

# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now

# When our UPS tells us power has failed, assume we have a few minutes
# of power left.  Schedule a shutdown for 2 minutes from now.
# This does, of course, assume you have powerd installed and your
# UPS connected and working correctly.  
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"

# If power was restored before the shutdown kicked in, cancel it.
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"


# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

# Run xdm in runlevel 5
x:5:respawn:/etc/X11/prefdm -nodaemon
[root@YAYO ~]# 


De esta forma existen 4 niveles de arranque disponibles para utilizar:
   1 - monousuario, sin interfaz gráfica.
   2 - multiusuario sin posibilidad de conexion de red.
   3 - multiusuario con posibilidad de conexion de red.
   5 - multiusuario, con interfaz gráfica.

Para setear un nivel en particular, ingresar el número correspondiente al nivel en la sentencia "initdefault":
id:3:initdefault:

usando systemd
systemd es un sistema y servicio utilizados por recientes versiones de linux para manipular los servicos utilizados por el sistema. Entre sus características más interesantes se encuentran:

  • es un daemon que administra a todos los demás daemons. 
  • utiliza paralelismo de procesos. 
  • está encapsulado en un package rpm. 
  • la sintaxis de sus comandos está simplificada para su mejor comprensión y utilización. 


algunas consideraciones importantes:

  • Reemplaza a innittab en CentOS 6.5, RHEL y derivados.
  • Es el maestro de todos los demás procesos. El primer Daemon que arranca cuando se enciende y el último en detenerse cuando se apaga.
  • Para manipular los niveles de arranque en systemd existe el utilitario systemctl.


en systemd se cambia el concepto de niveles tal como se conoce en inittab.
Para conocer el listado de runlevels se aplica el siguiente comando "list-units --type=target" 

[root@Emesh ~]#  systemctl list-units --type=target 
UNIT                LOAD   ACTIVE SUB    DESCRIPTION
basic.target        loaded active active Basic System
cryptsetup.target   loaded active active Encrypted Volumes
getty.target        loaded active active Login Prompts
graphical.target    loaded active active Graphical Interface
local-fs-pre.target loaded active active Local File Systems (Pre)
local-fs.target     loaded active active Local File Systems
multi-user.target   loaded active active Multi-User System
network.target      loaded active active Network
paths.target        loaded active active Paths
remote-fs.target    loaded active active Remote File Systems
sockets.target      loaded active active Sockets
sound.target        loaded active active Sound Card
swap.target         loaded active active Swap
sysinit.target      loaded active active System Initialization
timers.target       loaded active active Timers

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

15 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.
[root@Emesh ~]# 

Donde:
nivel 3 = multi-user.target
nivel 5 = graphical.target

Para emular los niveles de arranque 3 y 5 (lo más utilizados) se invoca los siguientes comandos:

Conocer el nivel que está actualmente seteado:
nivel 3:
[root@Emesh ~]# cat /etc/systemd/system/default.target | grep Description
Description=Multi-User System
[root@Emesh ~]# 

nivel 5:
[root@Emesh ~]# cat /etc/systemd/system/default.target | grep Description
Description=Graphical Interface
[root@Emesh ~]# 

Setear por defecto el nivel de arranque:

nivel 3 = multi-user.target
[root@Emesh ~]# systemctl enable multi-user.target --force
rm '/etc/systemd/system/default.target'
ln -s '/usr/lib/systemd/system/multi-user.target' '/etc/systemd/system/default.target'
[root@Emesh ~]# 


nivel 5 = graphical.target
[root@Emesh ~]# systemctl enable graphical.target --force
rm '/etc/systemd/system/default.target'
ln -s '/usr/lib/systemd/system/graphical.target' '/etc/systemd/system/default.target'
[root@Emesh ~]# 



Documentación:
https://fedoraproject.org/wiki/Systemd
http://www.reddit.com/r/linux/comments/132gle/eli5_the_systemd_vs_initupstart_controversy/
https://en.wikipedia.org/wiki/Systemd

No hay comentarios:

Publicar un comentario