Adicionar suporte a rc.local no ubuntu 16.04 ou superior

Embora um script muito útil para tarefas de inicialização de um servidor, essa funcionalidade se perdeu na migração de init.d para systemd.

Para poder utilizar esse arquivo novamente, vamos instalar um serviço no systemd que irá se encarregar da execução.

Primeiramente, vamos criar o rc.local e aplicar permissão de executável:

printf '%s\n' '#!/bin/bash' 'exit 0' | sudo tee -a /etc/rc.local
sudo chmod +x /etc/rc.local

Após isso, vamos criar o serviço no systemd

sudo systemctl edit --full rc-local

Será necessário inserir no final do script, os parâmetros de instalação do mesmo:

[Install]
WantedBy=multi-user.target

O arquivo final vai ficar parecido com isso:

[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.target

Depois é só rodar o comando de instalação e voilá

systemctl enable rc-local