Raspberry Pi® a fondo para desarrolladores. Derek MolloyЧитать онлайн книгу.
Process: 502 ExecStart=/etc/init.d/ntp start (code=exited, status=0/SUCCESS)
Para reiniciar el servicio, ejecutamos:
pi@erpi ~ $ sudo systemctl start ntp
La tabla 3-1 ofrece un resumen de los comandos de systemd con la sintaxis del servicio ntp como ejemplo. Muchos de estos comandos exigen elevación a permisos de superusuario con el uso de sudo, como veremos en la sección siguiente.
Tabla 3-1: Comandos habituales de systemd.
Comando | Descripción |
systemctl | Lista todos los servicios en ejecución. |
systemctl start ntp | Inicia un servicio. No persiste después de reiniciar. |
systemctl stop ntp | Detiene un servicio. No persiste después de reiniciar. |
systemctl status ntp | Muestra el estado del servicio. |
systemctl enable ntp | Habilita un servicio durante el arranque. |
systemctl disable ntp | Impide que un servicio se inicie durante el arranque. |
systemctl is-enabled ssh | Muestra si un servicio se inicia durante el arranque. |
systemctl restart ntp | Reinicia un servicio (lo detiene y lo vuelve a iniciar). |
systemctl condrestart ntp | Reinicia un servicio solo si está en ejecución. |
systemctl reload ntp | Carga los archivos de configuración de un servicio sin detenerlo. |
journalctl –f | Siga el archivo de registro systemd. Pulsamos Control+C para salir. |
hostnamectl --static set-hostname ERPi | Cambia el nombre del host. |
timedatectl | Muestra fecha y hora, así como la información de la zona horaria. |
systemd-analyze time | Muestra la duración del arranque. |
El nivel de ejecución (runlevel) describe el estado actual del RPi y se puede utilizar para controlar los procesos o servicios iniciados por el sistema init. Bajo SysV hay diferentes niveles de ejecución, identificados como 0 (halt), 1 (single-user mode), 2 a 5 (multi-user modes), 6 (reboot) y S (start-up). Cuando el proceso init se inicia, el nivel de ejecución se inicia en N (none). Luego, entra en el nivel de ejecución S para inicializar el sistema en modo monousuario y, finalmente, pasa a uno de los modos multiusuario. Para averiguar el nivel de ejecución actual, escriba lo siguiente:
pi@erpi ~ $ who -r
run-level 5 2016-01-02 03:23
En este caso, el RPi presenta un nivel de ejecución 5. Podemos cambiar el nivel de ejecución escribiendo init seguido del número del nivel. Por ejemplo, podemos reiniciar nuestro RPi escribiendo:
pi@erpi ~ $ sudo init 6
Como vemos, systemd conserva cierta compatibilidad hacia atrás con los niveles de ejecución de SysV y sus números, puesto que los antiguos comandos de SysV funcionan correctamente en systemd. No obstante, utilizar niveles de ejecución en systemd es una práctica considerada obsoleta. En su lugar, systemd utiliza objetivos con identificador (named target units), algunos de los cuales se listan en la tabla 3-2, que muestra las equivalencias con los niveles de ejecución SysV. Para identificar el objetivo con identificador predeterminado en cada momento en el RPi, escribimos:
pi@erpi ~ $ systemctl get-default
graphical.target
Indica que la configuración actual exige que el RPi tenga un monitor para interfaz con ventanas. El comando siguiente le permite observar también la lista de unidades que el objetivo carga:
pi@erpi ~ $ 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
multi-user.target loaded active active Multi-User System
...
Tabla 3-2: Objetivos systemd junto con los niveles de ejecución de SysV.
Nombres de objetivo | SysV | Descripción y ejemplo de uso |
poweroff.target | 0 | Detiene el sistema: estado de apagado para todos los servicios. |
rescue.target | 1,S | Modo monousuario administrador: para funciones administrativas, por ejemplo comprobar el sistema de archivos. |
multi-user.target | 2-4 | Modos estándar multiusuario sin monitor para interfaz con ventanas. |
graphical.target | 5 | Modo estándar multiusuario con monitor para interfaz con ventanas. |
reboot.target | 6 | Reinicia el sistema: estado de reinicio para todos los servicios. |
emergency.target | — | Shell de emergencia solo para la consola principal. |
Si utilizamos el RPi como dispositivo de red, sin monitor, mantener activos los servicios de interfaz de ventanas parece un derroche de recursos de CPU y memoria. Podemos pasar a un modo objetivo sin monitor usando la llamada siguiente, donde la interfaz gráfica LXDE dejará de estar presente y la entrada graphical.target desaparecerá de la lista de unidades:
pi@erpi ~ $ sudo systemctl isolate multi-user.target
pi@erpi ~ $ systemctl list-units --type=target | grep graphical
Análogamente, podemos reactivar el modo objetivo con monitor e interfaz gráfica de este modo:
pi@erpi ~ $ sudo systemctl isolate graphical.target
Por último, para configurar el RPi de manera que utilice un nivel de ejecución distinto de forma predeterminada durante el arranque, por ejemplo sin monitor, usaremos:
pi@erpi ~ $ sudo systemctl set-default multi-user.target
Created symlink from /etc/systemd/system/default.target to /lib/systemd/sys
tem/multi-user.target.
pi@erpi ~ $ systemctl get-default
multi-user.target
Tras reiniciar, los servicios de interfaz gráfica con ventanas no arrancarán, y el nivel de ejecución SysV equivalente se mostrará con el número 3.
Gestión de sistemas Linux
En esta sección examinaremos más de cerca el sistema de archivos de Linux, a partir de los comandos y herramientas descritas en el capítulo 2. De este modo adquiriremos un control administrativo completo del RPi.
El superusuario
En los sistemas Linux, la cuenta de administrador del sistema tiene el nivel de acceso con la seguridad más alta para todos los comandos y archivos. Esta cuenta se suele conocer como root o superuser, superusuario. En Raspbian/Debian, esta cuenta tiene el nombre de usuario root, pero suele estar deshabilitada de forma predeterminada. Sin embargo, la podemos habilitar escribiendo sudo passwd root desde un intérprete de comandos en el que haya iniciado sesión la cuenta pi (username: pi, password: raspberry):
pi@erpi ~ $ sudo passwd root
Enter new UNIX password: mySuperSecretPassword
Retype new UNIX password: mySuperSecretPassword
passwd: password updated successfully
NOTA Llamar a la cuenta “root” está relacionado con el hecho de que es la única cuenta de usuario con permiso para alterar el directorio raíz (root) de más alto nivel (/). Para más información diríjase a www.linfo.org/root.htm.
Se recomienda no realizar el manejo cotidiano del sistema Linux desde la cuenta de superusuario. Sin embargo, tampoco debemos olvidar que manejar el RPi no es lo mismo que gestionar un servidor con miles de cuentas de usuario. En muchas aplicaciones, una sola cuenta de superusuario con una contraseña no estándar es más que suficiente. Sin embargo, utilizar una cuenta estándar para los trabajos de desarrollo puede protegernos de errores catastróficos, como eliminar accidentalmente el sistema de archivos. La cuenta de usuario pi en Raspbian ha sido configurada cuidadosamente para simplificar la interacción