Definamos Normal.

El Blog personal de Rafael Rojas

Category: systemd

Jugando con systemd-journal-gatewayd

Una de las tantas cosas que cambio Systemd es el como se registran los eventos del sistema, antes de esta tarea se encargaba syslog-ng, ahora esto lo hace journald. EDIT: a este post lo debe preceder otro en el que hable del journalctl y sus menesteres.

Uno de los juguetitos de journald es un servidor http embebido llamado systemd-journal-gatewayd cuya funcion (en teoria) es hacer accesibles por HMTL los logs de los servicios, logs, sockets y eventos de systemd:

 

instantánea2

La forma de habilitarlo en ArchLinux ( y posiblemente en otras distribuciones que usen systemd como fedora u opensuse) es la siguiente: Continue reading

Devuelveme mis puntos de montaje udisk!!!!

Udev desde hace rato forma parte de Systemd, y con ello ha dejado de ocuparse de los puntos de montaje de los dispositivos, haciendose cargo ahora udisk2

Por default udisk2 monta los dispositivos en un arreglo de directorios /run/media/$USER/ :

pagotelcel2

Pero no es algo que a mi me guste 🙂 y como muchas cosas en Linux es algo que se puede modificar a mis necesidades. En este caso quiero modificar las reglas de montaje a que todo se monte en el tradicional directorio /media para que un script de descarga y sincronizacion de torrents siga funcionando sin problemas.

Como la wiki de udev lo menciona es basicamente agregar una nueva regla de udisk.

vi /etc/udev/rules.d/99-udisks2.rules

Y agregar esta simple regla:

ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{UDISKS_FILESYSTEM_SHARED}="1"

(todo en una sola linea)

Al volver a montar mi dispositivo USB ya lo tengo en /media, justo como queria.

pagotelcel3

hay que pasar a leerse la wiki de udev en ArchLinux. hay muchos detalles de configuración interesantes. Por supuesto esta configuración aplica para todos las distribuciones que carguen con Systemd (eso incluye a Fedora u OpenSuSe). Viene siendo hora de una entrada de que diablos es udev y por que deberia conocerlo, saludos!

Oye Systemd, devuelveme los nombres de mis interfaces de red!

Desde la edición 197 de Systemd, este se encargo de la maravillosa tarea de renombrar nuestras interfaces de red, siguiendo una clara política establecida en FreeDesktop.org que establece los siguientes parametros para nombrar interfaces de red:

With systemd 197 we have added native support for a number of different naming policies into systemd/udevd proper and made a scheme similar to biosdevname’s (but generally more powerful, and closer to kernel-internal device identification schemes) the default. The following different naming schemes for network interfaces are now supported by udev natively:

  • Names incorporating Firmware/BIOS provided index numbers for on-board devices (example: eno1)
  • Names incorporating Firmware/BIOS provided PCI Express hotplug slot index numbers (example: ens1)
  • Names incorporating physical/geographical location of the connector of the hardware (example: enp2s0)
  • Names incorporating the interfaces’s MAC address (example: enx78e7d1ea46da)
  • Classic, unpredictable kernel-native ethX naming (example: eth0)

Esto es que Udev (ya integrado en systemd) nombrara las interfaces de red bajo la política de:

Primero por el numero de serie establecido en el Firmware/BIOS (eno1)
De no ser posible por el numero del slot de conexión de la interfaz proveído por el Firmware/BIOS (ens1)
Si no, por la localización geográfica del conector (enp2s0)
O incorporando la MAC address al nombre de la interfaz (en mi opinión, el mas útil: enx78e7d1ea46da).
Finalmentepor el nombramiento clásico estándar del kernel (eth0)

Este cambio es meramente opcional si es que actualizas de una versión anterior de systemd, pero si has instalado ArchLinux en los últimos 4 meses, así sera el nombramiento de las interfaces.

Selección_007

Pero, que tal si no quiero batallar con los nombres de las interfaces de red todavia?
Simple: eliminamos la regla de udev que las nombra así, con un comando tan simple como:

ln -s /dev/null /etc/udev/rules.d/80-net-name-slot.rules

(o borrando directamente el archivo también).

A la hora de reiniciar el sistema el nombre canónico que el kernel le pone a las interfaces de red ha vuelto, solo falta otro ip link show para verificar:

Selección_008

En base a la depreciación de inet-tools, mucha gente no conoce muy bien el uso de ip link, mañana un post al respecto.

PD. Esto aplica para toda distro con systemd 197 o superior (Fedora, OpenSuSe, etc)

Ha muerto initscripts, larga vida a initscripts

Bueno tan asi como mueto no, pero se anuncia el fin del soporte de initscripts.

Con el anuncio hace unas semanas de la inclusion de systemd como default en las nuevas instalaciones y consolekit siendo remplazado por logind (una implementacion que es utilizado como un modulo de systemd) esta noticia no es tan sorprendente y solo es parte de la transicion completa que esta haciendo ArchLinux a este gestor de aranque/administrador de recursos.

La nota de Tom Gundersen dice que a vista de que se esta haciendo una migracion a systemd, se esta haciendo poco o nulo testing con los initscripts asi que los bugs y/o peticiones sobe initscripts seran marcados como WONTFIX o “no resolvibles”.

Tambien anuncia que para enero del año entrante es probable que eliminen por completo initscripts y todos los demonios de rc.d de los paquetes para terminar con esta transicion.

¿Todavia no migras a systemd? la wiki oficial de ArchLinux tiene una guia muy completa sobre como hacer esta migracion aqui.

Recuerden: para este tipo de cosas, algo delicadas y con mucho detalle siempre es mejor la wiki oficial.

Nueva ISO de instalacion, incluye Systemd para la imagen Live

La liberación de la nueva imagen de instalación de ArchLinux se acerca mas a el cambio completo a systemd. Utiliza systemd para cargar el sistema live, aunque para la instalación de inicial del sistema base sigue usando initscripts, y al parecer esto va a cambiar en un futuro próximo, así que ya saben: a cambiar a systemd.

Les recomiendo leer las notas de esta iso en la pagina de ArchiLinux, aqui

NOTA: una nueva ISO de instalación no significa que tengan que reinstalar todo el sistema completo otra vez, esta ISO es útil solamente para quienes instalen sistemas nuevos, nuestro sistema ya instalado ya cuenta con todas las características que esta ISO pueda ofrecer.

Entendiendo a Systemd: targets y servicios

Continuando con estos temas de systemd (ahora que el tiempo ha dado tregua :P) vamos a la siguiente parte.

Niveles de ejecucion/targets

Los runlevel o nuveles de ejecucion en sistemas tipo Unix SystemV se refiere a el modo de operacion del sistema, generalmente son 7 distintos niveles de ejecucion, aunque algunos sistemas varian de 7 a 10 niveles distintos de ejecucion.

En ArchLinux hay 7 niveles de ejecucion en los initscripts

Nivel Descripcion
0 Halt/Apagar
1 Mono-usuario (modo de mantenimiento)
2 No usado
3 Multi-Ususario
4 No usado
5 Multi-Usuario con X11
6 Reinicio

Distintos niveles de ejecucion son llamados durante el inicio del sistema o durante el apagado/reinicio, esto claro con initcripts, systemd hace las cosas un poco diferente.

Systemd tiene un concepto de objetivos o targets que tienen el mismo objetivo que los niveles de ejecucion, pero funcionan diferente: Continue reading

Entendiendo a Systemd

Se ha hablado mucho de el cambio a systemd en ArchLinux, pero se ha hablado realmente poco de que es systemd, como funciona y de si es es una mejora o no para el sistema Arch, mucho menos se ha mencionado de que distros como Fedora u OpenSuSe ya adoptaron definitivamente systemd, o que Gentoo o Debian testing ya lo adoptaron desde hace tiempo como alternativa.

Que es systemd?

Systemd es un gestor de sistenma y servicios para Linux, compatible con scripts Sysv o init, tiene capacidades de paralelizacion de procesos (manejar 2 o mas procesos en el arranque al mismo tiempo), pero no solo hace eso:

  • Usa Dbus y Sockets para activar servicios
  • Puede ejecutar daemons por demanda
  • Optimiza el uso de recursos utilizando cgroups
  • Soporta snapshots y restauracion del sistema a un punto definido
  • Administra puntos de montaje y montaje de unidades de almacenamiento

Y que hace?

Generalmente la administracion de un sistema GNU/Linux se divide en varias partes: estan los servicios o daemons que corren ciertos programas de fondo, estan los puntos de montaje con permisos y usuarios, asi como dbus, los sockets que escuchan protocolos y ordenes. Cada una de estas partes con su propia administración y su propia logica, systemd es un entorno para manejar todo esto dentro de la misma herramienta.

Systemd trabaja con unidades. Una unidad en un archivo que contiene informacion acercad e un servicio, un socket, un punto de montaje o de automontaje, un swap o simplemente un pounto de inicio de una aplicacion o script gatillada por systemd. La sintaxis esta insirada en la especificacion de los archivos .desktop que utilizamos para lanzar las aplicaciones de cualquiera de nuestros programas (en cualquier escritorio Linux), esta basado en la especificacion de XDG Desktop Entry.

Mas tarde escribire de estas undiades y como crear nuestras propias unidades y puntos de inicio, de momento hasta ahi vamos bien.

Y como funciona

Ya habia hablado al respecto en otro post que instalaba systemd en ArchLinux y que jugara con initscripts (que hace falta un post sobre instalar y correr a puro y duro systemd, que es la mejor opcion ahora), voy a abarcar un poco de ello:

La principal herramienta de systemd es:

$ systemctl

Podemos listar las unidades en ejecucion

$ systemctl list-units

Las unidades disponibles se encuentra listados en los directorios /lib/systemd/system y /etc/systemd/system, aunque tambien se pueden listar con:

systemctl list-unit-files

Esto me da la lista de las unidades disponibles y el estatus de ellas

Activar una unidad:

# systemctl start

Deactivar una unidad:

# systemctl stop

Reiniciar una unidad:

# systemctl restart

Recargar una unidad:

# systemctl reload

Muestra el estatus de una unidad, incluso si esta en ejecucion o no:

# systemctl status

Habilita la unidad que sea iniciado en el proximo arranque:

# systemctl enable

Deshabilita una unidad para que no sea iniciado automaticamente en el siguiente arranque:

# systemctl disable

EJEMPLO:

Quiero que mi servicio de bluetooth se inicie por default al iniciar el sistema:

sudo systemctl enable bluetooth.service

Pero mas que habilitar su inicio, yo lo necesito ahora:

sudo systemctl start bluetooth.service

pero no estoy seguro si inicio o no:

sudo systemctl status bluetooth.service

Y me da:

Y si ya no quiero que inicie el bluetooth por default?

sudo systemctl disable bluetooth.service

Ahora, imaginen que fuera asi para demonios, servicios, puntos de montaje, sockets y administracion general del sistema, una sola herramienta de sintaxis sencilla y facil de automatizar con scripts, suena bien ¿no?

para este fin de semana hay que adentrarons en la sitaxis de las unidades, dejar a Arch con puro y duro systemd y enchular el systemd. Saludos

Para leer:
http://freedesktop.org/wiki/Software/systemd/
http://0pointer.de/public/systemd-man/systemd.unit.html
https://wiki.archlinux.org/index.php/Systemd

Error Systemd (rev. 185-4) y KDM

Hay un error con la ultima revision de systemd y el servicio que inicializa el gestor de sesiones KDM (de momento no se si afecte al KDM de igual forma). Se trata de que el servicio kdm.service ha sido removido por completo asi que systemd falla al inicializar el KDM por inittab.

El sintoma que tuve fue que al iniciar el equipo me llevaba a una consola de root en vez de mi gestor de sesion y al dar un listado de los gestores de sesion graficos me daba en razon de que ya no estaba dicho directorio.

ls -l /etc/systemd/system/graphical.target.wants
ls: no se puede acceder a /etc/systemd/system/graphical.target.wants: No existe el fichero o el directorio

¿Por que este cambio? realmente no se, cuando tenga mas tiempo investigo la causa, de momento me importaba solucionar mi inicio de sesión sin tener que quitar mi gestor de inciio systemd, asi que lo que hice fue utilizar KDM como un DAEMON al inicio de sesion. Solamente al final de la lista de DAEMONS del archivo /etc/rc.conf agregue kdm de esta forma:

DAEMONS=(...kdm)

Al final de la lista de servicios agrege KDM, al inciar KDM como servicio

sudo rc.s start kdm

O al reiniciar el sistema me encontraba con la pantalla de acceso de KDE dandome la bienvenida. Espero que esto les ayude a solucionar el molesto problema como a mi, saludos.

udev hacia systemd-tools y systemd a [core]

Hace unos meses hablaba de systemd, ese sistema de arranque que pretende remplazar a sysvinit y/o a initscripts. Muchas distribuciones como Fedora o Mageia han hecho el cambio completo a systemd, ArchLinux en un futuro hará también ese cambio.

De entrada esta semana se ha incluido systemd al repositorio core, aparte de que systemd y udev se han fusionado en un solo paquete llamado systemd-tools, ahora, este cambio trajo consigo muchas confusiones, que espero poder aclarar algunas:

Systemd-tools no reemplaza a udev, udev esta dentro de un metapaquete llamado systemd-tools, nada mas
No es necesario instalar y configurar todo systemd para tener systemd-tools, ergo systemd-tools no modifica o afecta el gestor de arranque del sistema.
Al actualizar el sistema udev sera sustituido por systemd-tools, si se actualiza el kernel en la misma actualización, la creación de la imagen de arranque alegando que udev no fue encontrado, para eso al final de la actualización regeneramos la imagen de linux con

mkinitcpio -p linux

Acabara la creacion de la imagen de arranque sin problemas.

Systemd (el gestor de arranque) ya se encuentra instalable desde la instalacion en red de ArchLinux, pero este sigue generando conflictos con sysvinit, asi que no se recomienda su seleccion para instalacion:

Esperemos que dentro de los siguientes meses systemd pueda sustituir por completo el gestor de arranque de ArchLinux (y esperemos que se pasen por el grub y pongan de una vez grub2 desde un principio)

Systemd en ArchLinux

Systemd es un gestor de arranque y de servicios para Linux desarrollado principalmente por Lennart Poettering (creador también de pulseaudio). Systemd, a diferencia de initscripts el gestor de inicio default en ArchLinux utiliza un método de paralelizacion agresiva que hace uso de los procesadores modernos multinucleo para iniciar procesos y demonios en paralelo real y así tener una gestión de inicio mas rápida y limpia.

Nota: Systemd hace uso de características de procesadores multi núcleo, si su procesador es mono núcleo , Systemd si va a funcionar, pero la diferencia seria cuando mucho penas perceptible. S

Systemd tampoco promete ser la respuesta a la rapidez del sistema y puede que una mala configuración dañe el sistema, le recomiendo leer muy bien de que trata Systemd y saber lo que hacen antes de hacer cualquier cambio, en si lo recomiendo para usuarios que gustan de personalización avanzada.

Instalar Systemd

Para instalar Systemd simplemente instalamos los paquetes necesarios vía pacman.
Continue reading

© 2017 Definamos Normal.

Theme by Anders NorenUp ↑