1) Da terminale creiamo il servizio ramlog (/usr/bin/ramlog):
sudo nano /usr/bin/ramlog
ed incolliamo il seguente codice:
#!/bin/sh
. /lib/lsb/init-functions
start() {
log_begin_msg "RAMLOG: Read files from disk.."
tar xfz /var/ram_log.tar.gz -C /
log_end_msg 0
}
stop() {
log_begin_msg "RAMLOG: Write files to disk.."
tar cfz /var/ram_log.tar.gz --directory=/ var/log/
log_end_msg 0
}
case "$1" in
start)
start
;;
stop)
stop
;;
flush)
stop
;;
*)
echo "Usage: $0 {start|stop|flush}"
exit 1
esac
CTRL+O per salvare e CTRL+X per uscire
Diamo ora i corretti permessi al file:
sudo chmod a+x /usr/bin/ramlog
2) Creiamo una voce per systemd (/etc/systemd/system/ramlog.service):
Da terminale
sudo nano /etc/systemd/system/ramlog.service
ed incolliamo il seguente codice:
[Unit]
Description=Ramlog
After=local-fs.target
Before=cron.service syslog.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/ramlog start
ExecStop=/usr/bin/ramlog stop
[Install]
WantedBy=multi-user.target
CTRL+O per salvare e CTRL+X per uscire
3) aggiungiamo a cron il comando da eseguire ogni giorno a mezzanotte ed 1 minuto
sudo nano /etc/crontab
e aggiungiamo la seguente riga alla fine
1 0 * * * root /usr/bin/ramlog flush >/dev/null 2>&1
CTRL+O per salvare e CTRL+X per uscire
4) modifichiamo fstab per creare ramdisk della cartella /var/log/
sudo nano /etc/fstab
ed incolliamo la riga:
tmpfs /var/log tmpfs nodev,nosuid 0 0<code>
CTRL+O per salvare e CTRL+X per uscire
5) installiamo il servizio eseguendo da terminale
<code>insserv
systemctl enable ramlog.service
6) avviamo quindi il servizio eseguendo sempre da terminale
systemctl start ramlog.service
7) riavviamo il raspberry
sudo reboot
Ora dovrebbe venire creato il ramdisk della cartella /var/log
Per verificare che Ramlog sia attivo, puoi comunque fare quanto segue:
1) controllare se nella cartella /var/ si trova un file compresso dal nome ram_log.tar.gz con la data dell'ultimo riavvio/spegnimento del raspberry, oppure dell'ultima periodicità del comando inserito in cron (di default prevista alle 00:01 di ogni giorno)
Questo è il file che verrà scompattato e copiato nella cartella in memoria temporanea /var/log al riavvio del raspberry
Viene creato al primo avvio del servizio ramlog oppure con la periodicità impostata in cron
2) eseguire da Putty il seguente comando:
df
e controllare che la cartella /var/log sia del tipo tmpfs cioè una memoria temporanea (ramdisk)
Se sono verificati i due punti sopra significa che RamLog è attivo e funzionante.
Una ulteriore protezione per evitare la corruzione della scheda SD è di disabilitare lo swapping
Il Raspberry usa dphys-swapfile per controllare lo swapping.
Questo crea dinamicamente una partizione di swap. Utilizzeremo questo tool per disabilitare lo swap.
Eseguire i seguenti comandi da terminale per disabilitare lo swap:
sudo systemctl disable dphys-swapfile
Questa soluzione non è però permanente ed al riavvio il raspberry continuerebbe a creare lo swap file.
Per rendere permeanente la modifica è necessario rimuovere il pacchetto dphys-swapfile
sudo apt-get remove dphys-swapfile
Infine riavviamo il raspberry
sudo reboot
Fatto ciò potremo eseguire il commando free -m per verificare l’uso della memoria:
Troveremo che lo swap è stato disabilitato.