NAS QNAP – Esecuzione di script personalizzati al boot del sistema

Come sappiamo i nas della QNAP non consentono di gestire dalla loro interfaccia web l’esecuzione di script personalizzati all’avvio del sistema.

Fortunatamente però esistono diversi modi per ovviare al problema. Il principale lo vediamo qui, e vi posso assicurare che funziona perfettamente dato che l’ho provato personalmente su un QNAP TS-543 e su un QNAP TS-253A entrambi con firmware QTS 4.2.3.

Un altro metodo è questo, e si basa sull’uso di una dummy app qpkg che fa credere al sistema di avere un nuovo servizio da avviare assieme a tutte le app installate mediante l’app center dell’interfaccia web.

Parte 1.

Dobbiamo inserire un file autorun.sh nel flash-drive che viene montato ad ogni avvio il quale a sua volta richiama un altro file autorun.sh inserito all’interno della partizione dei dischi fissi fisici montata anch’essa all’avvio. Si fa questo per evitare di modificare ogni volta il file autorun.sh del flashdrive dato che agire con troppe riscritture sul flashdrive potrebbe deteriorarlo anzitempo.

  1. Utilizzando il comando /sbin/hal_app –get_boot_pd port_id=0 si ottiene il nome del device di boot (il flash-drive). Dopodiché sapendo che la partizione 6 è quella di boot siamo in grado di individuare drive e partizione da montare.
  2. Montiamo la partizione di boot del flash-drive in /tmp/config:
    mount -t ext2 $(/sbin/hal_app --get_boot_pd port_id=0)6 /tmp/config
  3. Spostiamoci in /tmp/config e creiamo il file autorun.sh con un editor (io uso vim)
    vi autorun.sh
  4. Inseriamo queste righe nel file (si preme i per inserire ed esc per terminare l’inserimento e poi in sequenza i caratteri :wq per salvare e chiudere l’editor)
    #!/bin/sh
     /etc/config/autorun.sh
  5. Assegnare i permessi di esecuzione al file
    chmod 755 autorun.sh
  6. Come si può notare il file appena scritto chiama un file autorun.sh in /etc/config. Una buona posizione dove mettere il file chiamato è /etc/config/ oppure /share/CACHEDEV1_DATA/.qpkg/autorun/ dato che queste posizioni sono fisicamente allocate sul disco fisso e non in quello ram che viene costruito ad ogni avvio che quindi è volatile.
  7. Smontare il flashdrive
    cd /
    umount /tmp/config

Parte 2.

Personalizzare e customizzare a piacere lo script etc/config/autorun.sh chiamato dall’autorun.sh nel flashdrive. Ricorda che i comandi contenuti in questo script devono essere scritti con percorsi assoluti dato che sono eseguiti direttamente dal sistema nelle prime fasi di avvio.

  1. Utilizzando il solito vim creiamo il file
    vi /etc/config/autorun.sh
  2. Nella prima riga mettiamo il solito
    #!/bin/sh
  3. Poi aggiungiamo tutti i comandi che desideriamo vengano eseguiti. Salviamo e usciamo (con esc :wq)
  4. Rendiamo eseguibile il file
    chmod 755 /etc/config/autorun.sh

…E il gioco è fatto!! Nota importante:
Il sistema esegue l’autorun.sh nelle fasi iniziali dell’avvio, quindi non è possibile fare riferimento a servizi autoavviati o a programmi installati dall’app manager semplicemente perché questi non sono ancora partiti.