Ini adalah skrip BASH sekali jalan untuk membuat lingkungan autorun di QNAP NAS Anda. Skrip ini dapat digunakan untuk secara otomatis menjalankan skrip Anda sendiri saat NAS dinyalakan.
Tujuan dari proyek ini adalah untuk mendukung semua model QNAP NAS dan semua versi QTS & QuTS hero. Silakan beri tahu jika Anda mengalami kesalahan saat menjalankannya di NAS Anda.
Apa yang dilakukan
Skrip installer ini menulis prosesor autorun.sh ke volume default Anda, di bawah direktori .system. Kemudian skrip ini membuat symlink dari DOM kembali ke volume data default Anda sehingga dijalankan saat NAS startup. Ini berarti Anda tidak perlu memuat partisi DOM setiap kali ingin mengubah isi autorun.sh.
Perangkat dan partisi autorun akan ditentukan secara otomatis oleh skrip ini.
Jika Anda belum memiliki file autorun.sh sebelumnya, maka file autorun.sh yang dibuat oleh utilitas ini akan berisi prosesor direktori skrip, dan akan membuat direktori skrip tersedia untuk shell-script Anda sendiri. Semua yang ada di direktori skrip ini akan dijalankan (berurutan) selama startup NAS oleh file autorun.sh default yang hanya dibuat. Catatan di bawah ini hanya berlaku untuk autorun.sh yang ditulis oleh utilitas ini. Jika Anda sudah memiliki file autorun.sh lain, maka file tersebut akan tetap digunakan, dan catatan berikut tidak berlaku.
Lokasi sistem autorun akan bergantung pada nama volume default Anda. Misalnya: jika volume default Anda adalah CACHEDEV1_DATA, maka prosesor skrip otomatis akan dibuat di:
/share/CACHEDEV1_DATA/.system/autorun/autorun.sh
… dan direktori skrip akan dibuat di:
/share/CACHEDEV1_DATA/.system/autorun/scripts/
autorun.sh akan dipicu pada suatu titik selama bootup NAS, yang kemudian menjalankan setiap file eksekusi di direktori skrip sesuai urutan daftar nama file default. Jika Anda perlu menjalankan satu skrip sebelum yang lain, beri awalan dengan angka seperti:
File log akan dibuat selama eksekusi autorun.sh. File ini berada di /var/log/autorun.log dan berisi tanggal-waktu serta nama setiap skrip eksekusi yang ditemukan di direktori skrip saat dijalankan, beserta stdout dan stderr yang dihasilkan oleh skrip tersebut.
Instalasi pada QTS 5.2.5 berhasil, tetapi jika saya mencoba menjalankan skrip saya, saya mendapatkan error “command not found”. Sepertinya autorun.sh berjalan sebelum semua QPKG, sehingga tidak menemukan perintah terkait. Jika saya menjalankannya secara manual nanti, semuanya berjalan seperti yang diharapkan. Perintah “sleep” di awal tidak berpengaruh (kecuali “sleep” itu sendiri).
Benar. autorun.sh dieksekusi sebelum QPKG dimulai.
sleep tidak akan membantu karena hanya menahan proses boot sampai autorun selesai, yang termasuk memulai QPKG.
Saya kemudian membuat QPKG RunLast untuk membantu mengatasi masalah ini, tetapi sekarang tidak lagi berfungsi sejak QTS 5.2.0 karena perubahan yang dilakukan oleh QNAP untuk memulai QPKG secara asinkron.
Saat ini tidak ada cara untuk menjalankan skrip setelah startup yang bergantung pada QPKG.
Ini belum sepenuhnya benar.
Saya sekarang telah menemukan solusi dengan menggunakan “RunLast” dari repositori “MyQNAP”. Saya terkejut karena awalnya juga menghasilkan error yang sama. Jadi saya melakukan sedikit riset. Saya menemukan bahwa layanan QNAP tidak selalu dijalankan secara asinkron dan terutama bahwa mereka tidak selalu menunggu keberhasilan start dari dependensinya.
Jadi saya memodifikasi skrip start saya agar mempertimbangkan hal ini.
Hal ini sebagian berkaitan dengan cara QNAP menghubungkan (link) binary dan library-nya, tergantung pada aplikasi yang terpasang.
Sebagai contoh, “autostart.sh” biasanya gagal karena sebagian besar library dan binary belum “terhubung (linked)”. Hal yang sama juga berlaku sebagian untuk “RunLast”.
Namun, mohon jangan berhenti mengembangkan “RunLast”. Pendekatannya sudah benar, terutama karena struktur skrip start SysV yang bagus. Anda bisa menjalankan hampir semua hal dengan itu jika mempertimbangkan dependensi aplikasi Anda pada QPGG lain dan sedikit meniru skrip start mereka. Saya punya contoh sederhana untuk ClamD saya, yang saya gunakan untuk Xeams saya:
Salam hangat,
Mandragor59
***** Tidak ada masalah, hanya ada tantangan *****
Meh… mungkin aku harus berdebat tentang semantik bahasa Jerman saja? Jerman bukan bahasa utama saya, tapi mengikuti contohmu, sepertinya itu bukan halangan.