Linux

Copia da server remoto con Rsync

Per copiare uno o più file, directories da un server remoto senza usare scp, è possibile ricorrere ad Rsync, a mio avviso strumento più flessibile e potente.

Avevo infatti bisogno di copiare i backup dei file di configurazione del server su cui gira Home Assistant, ma non volevo abilitare condivisioni samba, quindi come fare? Rsync ci viene in aiuto, lavorando tramite ssh.

Digitando infatti

rsync -rv --progress indirizzo_ip:/percorso_remoto directory_locale

E’ possibile copiare automaticamente i file presenti in un colpo solo. Le opzioni -rv indicano la copia ricorsiva, includendo anche la struttura delle directory ed il loro contenuto, –progress indica l’andamento della copia visualizzando i nomi dei files trasferiti con le relative velocità .

Se vogliamo che la copia avvenga nella directory di destinazione in cui ci troviamo, basta specificare come directory_locale un punto .

Quindi

rsync -rv --progress indirizzo_ip_remoto:/backup .

Produrrà come output

Per maggiori informazioni, c’è sempre l’ottima pagina di man, oppure basta consultare il sito https://terminalroot.com/10-examples-of-using-the-rsync-command/

Standard
Linux

Impostare indirizzo ip statico su Linux

Old, but gold. Visto che periodicamente mi ritrovoa cercare sempre le stesse guide su google, la metto qui a futura memoria.

Prendiamo il file /etc/network/interfaces, per una connessione via cavo in dhcp ci troviamo questa configurazione:

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0 #eth0 oppure altra interfaccia
iface eth0 inet dhcp

A questo punto basta fare questa modifica:

iface eth0 inet static
        address 192.168.2.160 #indirizzo ip scelto
        netmask 255.0.0.0 #di solito standard
        gateway 192.168.2.2 #gateway di uscita, coincide quasi sempre con l'indirizzo ip del modem/router
        dns-nameservers 8.8.8.8 8.8.4.4 #dns di google

Salvare e riavviare il demone di rete con

# service networking restart

Enjoy!

Standard
Linux

Impostare trim su hd ssd

Per lo spiegone su come i drive ssd scrivono i dati sul disco, vi consiglio questo link, mentre sul perché è necessario periodicamente effettuare il trim di un drive ssd, leggete qui.

Una volta chiarita la parte concettuale, passiamo alla pratica. Verifichiamo innanzitutto che il trim sia attivo oppure no. Digitiamo il comando

# lsblk --discard /dev/sda

La macchina risponderà con un

Se le colonne “disc-gran” e “disc-max” hanno valori diversi da zero, il trim è attivo. Verifichiamo dunque che non venga ripetuto ogni volta che si effettua il mount del disco, altrimenti potrebbe portare specie su dischi economici ad un’usura precoce.

Iniziamo quindi a capire quali unità hanno il trim ad ogni mount. Se digitando il comando

$ findmnt -O discard

la macchina non restituisce risultati, allora la funzione non è attiva, altrimenti, nel caso in cui ottenessimo

bisogna disabilitarla innanzitutto digitando

# mount -o remount,nodiscard [TARGET]

Nell’esempio indicato

# mount -o remount,nodiscard /

Per rendere effettive le modifiche, che altrimenti sparirebbero al prossimo riavvio, è necessario andare a rimuovere il parametro “nodiscard” nell’fstab.

Facciamo un primo TRIM manuale sul disco per verificare che funzioni correttamente in modo da individuare eventuali errori sul disco. La macchina segnalerà la quantità di dati “trimmati”

# fstrim -a -v

Impostiamo dunque il sistema per eseguire il trim una volta a settimana.

# systemctl enable fstrim.timer

Digitando quindi

# systemctl daemon-reload
$ systemctl status fstrim.timer

Il sistema risponde con

Digitando

$ systemctl status fstrim.service

Il sistema risponde con lo stato del servizio. Per vedere quando è l’ultima volta che è stato eseguito e cosa ha fatto basta digitare

$ journalctl -u fstrim.service

Nel caso in cui si avesse un sistema in cui non è presente il tipo di chiamata “systemctl”, basta inserire in cron l’esecuzione del comando una volta a settimana, creando un file bash e rendendolo eseguibile (chmod a+x).

cat /etc/periodic/weekly/trimmamelo 
#!/bin/sh
# trim all mounted file systems which support it
fstrim -a -v
Standard
Linux

Impostare percorso $path

I computer sono degli idioti solamente molto veloci. Ma idioti rimangono. Tenendo questo bene a mente, impostare correttamente il percorso $path ci consente di digitare un comando che verrà comunque eseguito anche se nella directory in cui siamo in quel momento non è presente. Come fa la macchina a capire dove cercarlo? Grazie al percorso $path specificato nel file .bashrc nella home! La macchina infatti, prima di rispondere alla nostra richiesta con un “command not found” cercherà prima tale comando nella directory di esecuzione e poi nelle varie directory specificate nel percorso $path; se anche quest’ultima ricerca fosse infruttosa, allora risponderà con il messaggio d’errore anzidetto.

Basta quindi editare il file .bashrc presente nella home ed aggiungere il seguente percorso (che va bene per tutto) alla fine del file

$ nano .bashrc

export PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin:/sbin

Fatto. Per rendere operativa la modifica effettuata, basta uscire dalla bash e rientrare, il file .bashrc viene eseguito ogni volta che apriamo il terminale.

Standard
Linux

Possible missing firmware for module tg3

Durante il processo di upgrade del server su cui gira PiHole, ho riscontrato l’errore nel titolo. Orpo! E che roba è? San Google mi è corso in aiuto ed ecco da cosa dipende quel warning.

Innanzitutto, la segnalazione completa è la seguente:

W: Possible missing firmware /lib/firmware/tigon/tg3_tso5.bin for module tg3
W: Possible missing firmware /lib/firmware/tigon/tg3_tso.bin for module tg3
W: Possible missing firmware /lib/firmware/tigon/tg3.bin for module tg3

Ok. dando quindi il comando

$ dpkg-query -S /lib/firmware/tigon/*
firmware-linux-nonfree: /lib/firmware/tigon/tg3.bin 
firmware-linux-nonfree: /lib/firmware/tigon/tg357766.bin 
firmware-linux-nonfree: /lib/firmware/tigon/tg3_tso.bin 
firmware-linux-nonfree: /lib/firmware/tigon/tg3_tso5.bin

La macchina ci sta quindi dicendo che il firmware mancante fa parte del pacchetto firmware-linux-nonfree.

Provvediamo quindi ad installarlo con

$ sudo apt-get install firmware-linux-nonfree

Nel caso in cui il sistema dovesse rispondere con un errore di file non trovato, bisogna abilitare i repository non-free nel file /etc/apt/sources.list

Alla prossima!

Standard
Linux

Importare libri Kindle su Calibre

Se avete acquistato un ebook sul vostro Kindle e volete importarlo su Calibre, dopo aver collegato il dispositivo al pc basta cliccare su “Aggiungi Libri” e navigare all’interno del device. Se invece del lettore fisico abbiamo il programma Kindle for PC, basta andare nella directory “Documenti/My Kindle Content” e selezionare il libro che ci interessa.

Se poi il libro è protetto da DRM e voi l’avete acquistato (vero????), ci sono dei programmi fatti apposta per la rimozione delle protezioni, come De-DRM tools, che vi consentirà di spostare il libro una volta convertito in formato epub anche su altri dispositivi non proprietari. Google-it!

Alla prossima.

Standard
Uncategorized

Come programmare Arduino pro mini utilizzando Arduino Uno

La scheda Arduino pro mini è un gioiellino in miniatura, così piccolo che per salvare spazio non ha nemmeno la porta mini USB. Come fare quindi a programmarlo? Molto semplice, se si è in possesso anche di una scheda Arduino Uno, basta rimuovere innanzitutto da questa il chip Atmel, che altrimenti verrebbe danneggiato. Estratto con cura l’integrato, basta collegare le relative seguenti porte tra le due schede:

  • TX della Uno al TX della Mini;
  • RX della Uno all’RX della Mini;
  • 5v della Uno ai 5v della Mini;
  • GND della Uno al GND della Mini;
  • Reset della Uno al Reset della Mini;

Fatto questo, collegare la Uno alla USB del pc, avviare Arduino e selezionare come scheda da programmare la pro mini; la Uno farà da ponte tra quest’ultima ed il pc.

Voilà!

Edit: dal mio spacciatore di ciarpame preferito (Aliexpress) ho acquistato un convertitore USB-Seriale in maniera da evitare ogni volta di sfilare e rimettere l’integrato ATMEL sulla scheda dell’arduino Uno.

Lo schema di collegamento è il seguente

Alcune distribuzioni potrebbero mettere di default la porta /dev/ttyUSB0 creata dall’FTDI in sola lettura. Per poter programmare il nano è necessario digitare il seguente comando nella shell: sudo chmod a+rw /dev/ttyUSB0
Standard
Linux

Disabilitare driver nouveau su Linux

Può succedere che in sede di installazione di Linux su una nuova macchina ci sia qualche problema con la scheda video che provochi il mancato funzionamento del desktop grafico del nostro pc. Se la scheda video è di marca Nvidia, spesso tale malfunzionamento può essere causato dai drivers opensource Nouveau. Vediamo come disabilitarli all’avvio evitando il blocco e poi installando gli Nvidia proprietari.

Se riusciamo a far partire la macchina in modalità di recupero o in modalità di compatibilità siamo già più facilitati, altrimenti è necessario alla partenza, quando viene caricato il menù di boot di Grub, selezionare le opzioni ed aggiungere alla riga di start (identificabile il più delle volte molto facilmente in quanto termina con quiet splash) il seguente comando nouveau.modeset=0 Questo impedirà temporaneamente l’avvio dei drivers nouveau che verranno sostituiti con quelli standard vesa; la modifica è però solo temporanea e sparirà al prossimo riavvio, riproponendo il problema. Vediamo come risolverlo definitivamente (Se non fosse possibile accedere comunque al server grafico, è possibile provare ad aprire una sessione testuale con ctrl+alt+2, loggarsi a linea di comando e digitare i comandi sotto indicati.)

Seguendo le linee guida di Nvidia, una volta arrivati al desktop grafico, avviamo il terminale e digitiamo

sudo nano /etc/modprobe.d/blacklist-nouveau.conf

all’interno, scriviamo i seguenti comandi:

blacklist nouveau

options nouveau modeset=0

Salvare ed uscire. Rigenerare poi il kernel initramfs con

sudo update-initramfs -u

Ed infine riavviare il sistema con sudo reboot

Adesso, i driver nouveau sono disabilitati in maniera permanente ed una volta che il sistema si sarà riavviato, sarà possibile procedere all’installazione dei driver proprietari.

Standard
Uncategorized

Powerbank fai da te!

Ok, lo ammetto. Questo articolo nasce da un fallimento, quello di cercare di rianimare il pacco batterie del portatile comprando 4 celle 18650 anziché un pacco nuovo bello e fatto. Purtroppo la cosa non ha sortito l’effetto sperato, la BMU (battery management unit, la scheda che gestisce i processi di carica/scarica del pacco è andata a troie, quindi pur essendo le batterie nuove, non eroga corrente verso il portatile).

Cosa fare quindi con 4 celle 18650 nuove? Che domande, un bel powerbank! Ho acquistato su Amazon un kit composto da 2 schede ed un case per realizzare il tutto (basta ricercare 18650 powerbank) e mi sono messo all’opera.

Innanzitutto una doverosa premessa: questa operazione prevede che abbiate conoscenze quantomeno base di come si usa un saldatore a stagno e che abbiate anche una saldatrice a punto per batterie, anche di livello hobbistico (quella che si vede nella foto collegata alla batteria da auto), altrimenti il powerbank compratelo già bello e fatto. Se siete interessati, la saldatrice a punto potete trovarla su Aliexpress o su Banggood digitando “12v spot welder”.

IMG_20200411_102156_2

Iniziamo legando tra loro le celle in parallelo (tutti i positivi insieme, tutti i negativi insieme) con un nastro carta al fine di tenerle ferme ed allineate, per poi procedere alla saldatura delle stesse

IMG_20200411_103743_2

Procediamo quindi alla saldatura dei terminali prima sulla scheda di controllo e poi sul pacco assemblato. Una volta fatto, verifichiamo che la tensione erogata sia corretta, pena la bruciatura dei circuiti sulla scheda (avendo messo le celle in parallelo il voltaggio rimane quello della singola batteria ma la capacità complessiva si somma; se le avessimo invece montate in serie avremmo avuto l’effetto contrario).

IMG_20200411_103926_2

Un po’ di guaina termorestrigente sui poli è d’obbligo, quindi il pacco è pronto per essere inserito nel case.

IMG_20200411_105034_2

Chiudete il tutto e mettete in carica.

Resizer_15866131211010

Al termine della ricarica, avrete il vostro nuovo powerbank per poco più di 16 euro. La capacità è di 12Ah (dipende ovviamente dalle celle che ci mettete), sufficiente per due-tre ricariche al 100% di un cellulare moderno.

Alla prossima!

Standard
Linux

Backup Server

Rieccoci come promesso.

In questa guida illustrerò la configurazione di un server di backup, che in maniera del tutto automatica e ad intervalli prestabiliti, provveda ad effettuare le copie di sicurezza su un supporto esterno. Iniziamo.

I backup sono l’unica protezione alla perdita dei nostri dati, dunque è importante farli frequentemente, quantomeno ad ogni cambiamento delle informazioni memorizzate sul nostro pc; l’importante però è che il tutto avvenga in automatico, altrimenti la salvaguardia dei nostri files sarebbe condizionata dalla nostra attenzione, cosa non accettabile.

Secondo la legge di Murphy, la probabilità di perdere i nostri dati è inversamente proporzionale alla frequenza con cui ne facciamo i backup e direttamente proporzionale all’importanza degli stessi. Ecco quindi la necessità di creare un sistema automatico che pensi ad effettuare le copie di sicurezza e che consenta inoltre di avere delle “foto” della situazione a date diverse, per poter recuperare eventualmente le versioni precedenti di un documento o di un file.

Sotto linux è possibile realizzare tutto questo come al solito con poca spesa e tanta resa, tramite due programmi, Rsinc e Rsnapshot. Il primo consente di effettuare backup incrementali, andando a memorizzare solo ed esclusivamente le informazioni che sono cambiate rispetto al backup precedente; si pensi ad esempio ad un disco di 40Gb pieno di foto, effettuando un backup giornaliero andremmo a ricopiare tutto ogni volta, occupando tale spazio “n” volte se volessimo mantenere uno storico dei backup (ad esempio uno settimanale ed uno mensile); utilizzando invece Rsinc, si riesce ad avere un sistema incrementale dove nei successivi backup verranno scritti e salvati solo i dati che rispetto al precedente sono effettivamente cambiati, con notevole risparmio di tempo di esecuzione delle copie e di spazio su disco.

Il secondo programma, Rsnapshot, consente invece di creare backup a cadenza predefinita (oraria, giornaliera, settimanale, mensile) di una o più directory e salvarle dove l’utente preferisce (es. su un disco usb esterno).

L’unione fa la forza, quindi un sistema incrementale ripetuto con una periodicità predefinita ed altamente personalizzabile e soprattutto in modo completamente automatico fornisce la soluzione al problema che ci si era posti all’inizio.

Partiamo dunque sempre dal nostro server multifunzione visto qui.

Se avete una distribuzione Debian based, teoricamente entrambi i programmi dovrebbero essere già presenti nel sistema, altrimenti installateli.

Per quanto riguarda Rsnapshot, l’unico file di configurazione da editare è presente in /etc/ e si chiama guarda un po’ proprio rsnapshot.conf.

Prima di fare qualsiasi modifica, fatene una copia digitando

$ sudo cp /etc/rsnapshot.conf /etc/rsnapshot.conf.original

Aprite con l’editor di testo il file così duplicato; le sezioni da variare sono poche, la più importante è

snapshot_root /directory_di_destinazione_backup/

rsnap1

Altra è quella relativa alla frequenza di backup, che trovate nella sezione #backup intervals#, qui è possibile impostare la cadenza di backup (oraria, giornaliera, settimanale e mensile) e quante copie conservarne (es daily 7 lascerà le copie degli ultimi 7 giorni, weekly 4 delle ultime 4 settimane, monthly 2 degli ultimi 2 mesi). La cadenza di rotazione è a scalare, ad esempio: backup giornaliero (lunedì – domenica) il lunedì successivo, il backup del lunedì precedente viene spostato su quello della settimana 1 e così via, dalla settimana 1 alla 2 fino a popolare lo slot dei mensili. In questo caso, ho selezionato solo la cadenza settimanale, commentando le altre voci.

Istantanea_2020-04-10_17-56-04

Arriviamo quindi alla sezione #backup points# dove dobbiamo specificare la directory di cui fare il backup. Questa può essere una directory di sistema, oppure un disco di rete remoto. In quest’ultimo caso, al momento della partenza dello script il disco deve risultare montato altrimenti lo script darà errore.

Nel mio caso è necessario decommentare la prima riga sostituendola con

backup /punto_di_mount_da_salvare/            localhost/

Ovviamente, se altre directory fossero necessarie, decommentare e/o modificare le altre voci sottostanti. Per quanto riguarda Rsnapshot, abbiamo finito. Semplice, no?

Ora, dobbiamo dire al sistema quando eseguire i backup: per questo lavoro ci viene in soccorso il demone Cron, che lanceremo con

$ sudo crontab -e

modifichiamo la crontab come segue

cron

Per il funzionamento e la sintassi di Cron, vi invito a leggere la relativa man-page.

Quindi, ogni giorno alle 12.00 il sistema parte con un aggiornamento dei file di sistema, alle 23.25 parte il mount automatico di tutte le unità indicate nel file fstab (nel caso alcune unità di rete di cui fare il backup nel frattempo si fossero disconnesse) alle 23.30 viene quindi eseguito il backup giornaliero. Alle 6 infine parte la sincronizzazione dell’ora di sistema con quella del server ntp (tramite ntpdate, se non c’è, installatelo altrimenti riceverete un bel messaggio d’errore quando cron tenterà dimandarlo in esecuzione), che consente di avere una precisione al decimo di secondo, importante se vogliamo che l’orario a cui partano le copie sia sempre quello.

Ultimamente c’è stata una recrudescenza del fenomeno dei cryptolocker, virus che cifrano il contenuto dell’hd chiedendo poi un riscatto per la decodifica. Fortunatamente, il fenomeno sembra confinato solo al mondo windows, ma se eseguito su una macchina linux possa comunque provocare danni anche se limitati alla sola directory home dell’utente. Ovvio che se il disco di backup o la directory dove questo viene immagazzinato fosse sempre montata ed accessibile non solo a root ma anche agli altri, tra cui l’utente che ha cliccato sull’allegato infetto, non ci sarebbero backup che tengano, anche tutte le copie verrebbero irrimediabilmente compromesse. La soluzione quindi consiste nel rendere accessibile in scrittura il disco su cui vengono effettuati i salvataggi solo per il periodo necessario all’operazione per poi rimetterlo in sola lettura per il resto del tempo. Tutto questo può essere fatto sempre tramite cron, nel modo seguente

mount -o remount,rw /directory_destinazione

[script di backup ]

mount -o remount,ro /directory_destinazione

Per il momento è tutto. Nella prossima guida vedremo le varie modifiche da apportare al sistema nel caso in cui la directory da salvare sia su un server Windows.

Standard