Archivo de la etiqueta: arranque

Levantando servicios tras el arranque con systemd

Hace no mucho comenté en un artículo que tras la adopción de systemd en openSUSE poco a poco ha ido cambiando la manera de gestionar el arranque del sistema.

Una ventaja -entre otras- es que arranca muy rápido, pero un inconveniente -para mí, al menos- es que no funcionan los scripts de if-up.d. Os recuerdo que estos scripts se ejecutan cada vez que la interfaz de red se levanta. Estoy me venía genial para levantar el servicio Mediatomb que configura mi PC como un servidor DLNA (para ver las pelis, las series, etc., en la tele).

En openSUSE 13.2 ya no funcionan los scripts if-up.d como comenté en dicho artículo. A partir de ahora hay que crear un servicio de systemd que arranque automáticamente en cada inicio. En systemd, los servicios se llaman units. Dado que hay mucha información sobre systemd en Internet, no voy a explicar cada aspecto nuevo. Simplemente diremos que unit es un archivo que especifica un proceso que  systemd arrancará y target es un conjunto de units. El target más importante para nosotros será el multi-user.target, que es equivalente al runlevel 5 de SysVinit.

A continuación vamos a comentar cómo crear un servicio personalizado (una unidad –unit-) para ejecutar el programa que queramos en el arranque. Además, veremos cómo especificar si éste depende de otro (*).

Básicamente, se trata de crear un archivo de texto plano en /etc/systemd/system con el nombre MISERVICIO.service. Lógicamente, reemplazáis MISERVICIO por el nombre que queráis. En mi caso se llama mediatomb.service y éste es su contenido:

[Unit]
Description=Mediatomb
After=mysql.service
Requires=mysql.service

[Service]
TimeoutStartSec=0
ExecStart=/usr/bin/mediatomb-mysql

[Install]
WantedBy=multi-user.target

Vemos tres secciones principales: Unit, Service e Install. Vamos a analizar los distintos parámetros de cada sección.

En la primera sección (Unit) especificamos una descripción. En la segunda indicamos que el servicio «mysql» debe estar arrancado antes que el nuestro. La opción Requieres indica que la activación/desactivación de nuestro servicio depende de la activación/desactivación del especificado en dicha opción.

En la sección Service especificamos, entre otros, el comando a ejecutar: ExecStart. El parámetro TimeoutStartSec es el tiempo tras el cuál, si el servicio no ha arrancado, se considera fallo y se detiene. Si se especifica «0», como ha sido el caso, se ignora este parámetro.

Por úlitmo, en la sección Install especificamos la cláusula WantedBy, en la que indicamos el target al que pertenece dicha unidad.

Aquí y aquí tenéis más información sobre los distintos parámetros que acepta este fichero.

Más información sobre las generalidades de systemd:

(*) Esto es fundamental en mi caso, pues tengo configurado mediatomb con mysql y necesito este último en ejecución antes de arrancar mediatomb.

El arranque de Windows 7… como para tener prisa

Windows 7 mejoró con respecto a la versión anterior de Windows (Vista), pero claro, hicieran lo que hicieran siempre se mejoraría porque era imposible (alguien lo demostró) hacerlo peor. Una de las cosas que mejoró fue el tiempo de arranque (en Windows Vista, lo normal era encender el equipo, hacerte un café, pasear 10 minutos por el pasillo y luego contar 1 Misisipi, 2 Misisipi, 3 Misisipi… y así hasta 632 Misisipi).

Sin embargo, a Microsoft le gusta colocar alguna opción o mecanismo que irrite al personal, ¿por qué? os preguntaréis. Porque puede. Es así. Bueno… esto es aplicable a aquéllos que lo uséis, yo estoy escribiendo este artículo desde Linux así que por mí no va la cosa (gracias a Dios).

Una de estas características, mecanismos, fallos, vueltas de tuerca… como queráis llamarlo, es que a veces, al encenderlo, el tío se pone a aplicar los cambios de las actualizaciones. A ver, no me parece mal que windows 7 se actualice periódicamente (si no lo hiciera el universo implosionaría… o algo así), pero que lo haga cuando arrancas el equipo… sin dar la posibilidad de posponerlo al menos una vez… pues toca las narices -cuando menos-.

El otro día necesitaba -de hecho- arrancar un PC con windows 7 para sacar una información urgente y se pone a actualizar… y actualizar… y actualizar…

… y actualizar… y actualizar… 25%…. 26%…

… y ¡se reinicia! Dios mío! ¿Puede ser? ¿Ha terminado ya? ¿En sólo 10 minutos? ¡Bien! Arranca de nuevo y…

… ah, no, espera… actualizar… actualizar… 32%… 40%…

… y al final tuve que desistir porque se me pasó el plazo de tiempo que tenía disponible para sacar un archivo.

Es lo que ocurre cuando algún documento importante depende de un sistema como Windows, que se actualiza en el arranque (quieras o no), y, aunque el tiempo de éste disminuyó drásticamente desde windows vista, si luego se pone a actualizar, la cosa iguala e incluso empeora a su infame predecesor.

Windows 7, personalmente, me ha parecido siempre un digno sustituto de windows xp, pero tiene sus mecanismos para desesperarte, para tocarte las narices y demostrarte que Windows puede conseguir que la máquina más veloz te haga esperar 10 minutos a que arranque. ¿Por qué? Porque puede.

Así que ya sabéis, si tenéis que acceder a vuestro equipo windows e indica que está actualizándose, podéis aprovechar a hacer la cama y tender la ropa, aunque seáis tan lentos como yo, no os preocupéis… os dará tiempo (de sobra!).