es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Ejecutar script personalizado después del inicio en un sistema Linux construido con Yocto.

Quiero ejecutar un script que está presente en rootfs cada vez que el sistema se inicia para indicar una actualización exitosa y restablecer las variables del gestor de arranque.

Por ejemplo, el script “custom-script” está presente en /etc de la siguiente manera:

/etc
—-/init.d
———–custom-script.sh

El primer paso que hice fue instalar este script en el rootfs de la imagen de Linux. He creado una receta en mi capa personalizada de Yocto. El directorio de la capa “meta-custom\recipes-support\images” es el siguiente:

.
├── files
│ ├── custom-script.sh
└── core-image-base.bb

El archivo core-image-base.bb es:

DESCRIPTION = “Instalar script en Rootfs”
SUMMARY = “Instalar script en Rootfs y ejecutar después del arranque”
LICENSE = “CLOSED”

SRC_URI = “file://custom-script.sh”

do_install_append() {
install -d 644 ${D}${sysconfdir}/init.d
install -m 0755 ${WORKDIR}/custom-script.sh ${D}${sysconfdir}/init.d/custom-script.sh

FILES_${PN} = “${sysconfdir}/init.d”
}

Y en el archivo conf/layer.conf he agregado “IMAGE_INSTALL_append = ” core-image-base””.

Ahora quiero ejecutar este script cada vez que el sistema Linux se inicia (después de cargar correctamente el rootfs). ¿Alguien puede ayudarme a lograr esto? Según mi comprensión, puedo usar servicios de systemd para esto y este servicio debe ejecutarse cada vez que el sistema se inicia. Cualquier ayuda sería muy apreciada.

Gracias de antemano.

P.D: Estoy usando Ubuntu 20.04 y esta es la primera vez que uso servicios de systemd en Yocto con la versión Dunfell.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para ejecutar el script custom-script.sh presente en /etc/init.d cada vez que el sistema arranca, puedes crear un servicio de systemd. Esto se puede lograr creando un archivo de tipo .service en el directorio /lib/systemd/system/.

    1. Crea un nuevo archivo llamado custom-script.service en el siguiente directorio /lib/systemd/system/.
      sudo nano /lib/systemd/system/custom-script.service
    2. Agrega el siguiente contenido al archivo custom-script.service.

      [Unit]
      Description=Servicio de Script Personalizado
      After=multi-user.target
      
      [Service]
      Type=idle
      ExecStart=/etc/init.d/custom-script.sh start
      Restart=always
      TimeoutSec=120
      
      [Install]
      WantedBy=multi-user.target
      

    3. Guarda el archivo y cierra el editor.
    4. Recarga los archivos de configuración de systemd:
      sudo systemctl daemon-reload

    5. Habilita el servicio para que se inicie durante el arranque:
      sudo systemctl enable custom-script.service

    6. Reinicia el sistema para probar si se inicia el servicio y se ejecuta el script correctamente:
      sudo reboot

    Después de que el sistema se reinicie, el script custom-script.sh debería ejecutarse, lo que indica una actualización y restablecimiento exitosos de las variables del cargador de arranque.

Comments are closed.