Mullvad Without Systemd

2026/08/30

This work is marked CC0 1.0.


Hopefully you’ve found this page after installing Mullvad VPN and realizing that it doesn’t work (by default) without systemd. There is, however, a work around for this problem.

Fist, you will want to create a new file named mullvad in /etc/init.d/ (e.g., sudo nano /etc/init.d/mullvad). Paste the following content into the file and save it:

#!/bin/sh
# Generated by sysd2v v0.3  --  http://www.trek.eu.org/devel/sysd2v
# kFreeBSD do not accept scripts as interpreters, using #!/bin/sh and sourcing.
if [ true != "$INIT_D_SCRIPT_SOURCED" ] ; then
    set "$0" "$@"; INIT_D_SCRIPT_SOURCED=true . /lib/init/init-d-script
fi
### BEGIN INIT INFO
# Provides:       mullvad-daemon.service
# Required-Start: $syslog $local_fs $remote_fs  
# Required-Stop:  $remote_fs
# Should-Start:   $network NetworkManager
# Should-Stop:    $network NetworkManager
# chkconfig: 35 90 10
# Default-Start:  2 3 4 5
# Default-Stop:   0 1 6
# Description:    Mullvad VPN daemon
### END INIT INFO
DESC="mullvad-daemon"
DAEMON=/usr/bin/mullvad-daemon
DAEMON_ARGS="-v --disable-stdout-timestamps"
PIDFILE=/var/run/mullvad-daemon.service-sysd2v.pid
START_ARGS="--background --make-pidfile"

Next, you will want to give mullvad the executable permission:

sudo chmod +x /etc/init.d/mullvad

Finally, update rc.d:

sudo update-rc.d mullvad defaults

You will need to perform a system restart, but that’s all there is to it. Mullvad should work just fine now. If you continue to get errors from apt concerning mullvad-vpn, then you may want to modify mullvad-vpn.postinst (e.g., sudo nano /var/lib/dpkg/info/mullvad-vpn.postinst). You can comment out the lines calling for systemctl.