Multi-OS Persistence
Agent otomatis mendeteksi init system dan mendaftar sesuai lingkungan.
Urutan Deteksi
1. systemd tersedia? → systemctl enable (sudah dari install.sh)
2. OpenRC tersedia? → /etc/init.d/sysconf-daemon (format openrc-run)
rc-update add sysconf-daemon default
3. SysVinit? → /etc/init.d/sysconf-daemon (format LSB)
update-rc.d defaults / chkconfig --add
4. Fallback → /etc/rc.local (insert sebelum exit 0)
Deteksi OpenRC
func hasOpenRC() bool {
for _, p := range []string{"/sbin/openrc", "/usr/sbin/openrc", "/usr/sbin/rc-update"} {
if _, err := os.Stat(p); err == nil { return true }
}
return false
}
:::note
OpenRC dicek sebelum SysVinit karena keduanya menggunakan /etc/init.d/ — tapi format script berbeda.
:::