Derek Molloy

Raspberry Pi® a fondo para desarrolladores


Скачать книгу

       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.

ComandoDescripción
systemctlLista todos los servicios en ejecución.
systemctl start ntpInicia un servicio. No persiste después de reiniciar.
systemctl stop ntpDetiene un servicio. No persiste después de reiniciar.
systemctl status ntpMuestra el estado del servicio.
systemctl enable ntpHabilita un servicio durante el arranque.
systemctl disable ntpImpide que un servicio se inicie durante el arranque.
systemctl is-enabled sshMuestra si un servicio se inicia durante el arranque.
systemctl restart ntpReinicia un servicio (lo detiene y lo vuelve a iniciar).
systemctl condrestart ntpReinicia un servicio solo si está en ejecución.
systemctl reload ntpCarga los archivos de configuración de un servicio sin detenerlo.
journalctl –fSiga el archivo de registro systemd. Pulsamos Control+C para salir.
hostnamectl --static set-hostname ERPiCambia el nombre del host.
timedatectl Muestra fecha y hora, así como la información de la zona horaria.
systemd-analyze timeMuestra 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 objetivoSysVDescripción y ejemplo de uso
poweroff.target0Detiene el sistema: estado de apagado para todos los servicios.
rescue.target1,SModo monousuario administrador: para funciones administrativas, por ejemplo comprobar el sistema de archivos.
multi-user.target2-4Modos estándar multiusuario sin monitor para interfaz con ventanas.
graphical.target5Modo estándar multiusuario con monitor para interfaz con ventanas.
reboot.target6Reinicia el sistema: estado de reinicio para todos los servicios.
emergency.targetShell 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.

      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.

      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