Linux Mint 18 sul MacBook Bianco

macbook_biancoMi serviva un portatile dedicato per Linux. Solo Linux, senza virtualizzazione né doppia partenza con un altro sistema operativo. Perché non riciclare il mio vecchio MacBook bianco fine 2009? E’ fornito “solamente” di una CPU Intel Core 2 Duo a 2.26 GHz, ma col passare del tempo l’ho dotato di 8 Gb di RAM e di un paio di SSD (rispettivamente 240 Gb e 480 Gb) al posto dell’HDD a piatto rotante originale e dell’ormai (quasi) inutile masterizzatore DVD. Si difende quindi molto bene, anche se confrontato con un attuale portatile di fascia media. Non ha certo le prestazioni di una game machine, ma per un uso “office” va più che bene.

Ho deciso di installarci l’ultima Linux Mint attualmente disponibile, la 18 Cinnamon, probabilmente una delle scelte più indicate per un’installazione desktop ma soprattutto perfetta per chi, come me, non ama molto Unity e tantomeno le ultime GUI Gnome. Come dicevo prima, volevo che la macchina facesse girare solamente Linux in modo nativo e che soprattutto non avesse problemi con l’hardware Apple, principalmente la scheda di rete wi-fi e la telecamera iSight.

Prima di procedere, quando ancora c’e ancora Mac OS installato (ora si chiama di nuovo così a partire da Sierra) è bene fare in modo che il “Dong” classico dei Mac emesso alla partenza venga regolato ad un volume piuttosto basso perché dopo, sotto Linux non sarà più possibile variarne il volume.

L’installazione della Mint è semplice: inserito il DVD della distro in un lettore esterno, nel mio caso, è stato sufficiente far ripartire il Mac con il tasto Alt premuto ed aspettare che il Bios proponesse se partire con Mac OS, la partizione di ripristino oppure Windows (!). Sì, proprio Windows. Ovviamente si trattava del DVD esterno con su Linux, ma tant’è…..

Finita l’installazione, arrivato il momento di far ripartire la distro installata, il Mac si bloccava. Ho dovuto spegnere e riaccendere il portatile e la Mint è partita correttamente. Chiaro però che c’era un problema a fare un “warm reboot” con Linux (reboot da GUI, da terminale che sia). Il problema si presentava molto fastidioso, perché tra l’altro impediva di riavviare in qualche modo da remoto il portatile. Probabilmente qualcosa che non andava tra la funzione del kernel in “reboot.c” e il Mac stesso. Fortunatamente il problema è risolvibile e richiede l’inserimento di un parametro nel file di configurazione di GRUB, il boot manager di Linux. Vediamo come.

Entriamo da terminale nella directory /etc/default ed apriamo con l’editor “vi” il file “grub”

ora modifichiamo la riga contenente GRUB_CMDLINE_LINUX_DEFAULT in modo che contenga:

aggiorniamo GRUB con il comando

e saremo in grado di far ripartire correttamente Linux. Devo dire che questo è un problema lamentato da molti che hanno deciso di togliere Mac OS dal portatile Apple a favore di una distro Linux (mi risulta che anche Linus Torvalds lo abbia fatto sul suo Mac Book Air 🙂 ) e che in alcuni casi viene riferito che il problema sia stato risolto con il parametro “reboot=bios”. Non è comunque il mio caso con questo modello di MacBook.

Per il resto sono piuttosto soddisfatto. I tasti relativi alla luminosità dello schermo funzionano, quelli di regolazione volume idem, la scheda di rete wi-fi ha funzionato al primo colpo e così ha fatto anche la iSight con Skype. Rimane da vedere quanto sarà ottimizzato il consumo della batteria, che dopo 6.5 anni di onorato servizio durava sotto Mac OS ancora circa 3 ore e mezza. Vedremo.

Non mi risulta che Linux, nonostante la Mint utilizzi un kernel molto recente, gestisca in automatico il trim degli SSD (ma potrei sbagliarmi) quindi nel dubbio provvederò a mettere nella crontab utente le chiamate periodiche all’eseguibile “fstrim”.

Mi manca il trascinamento a 3 dita delle finestre presente in Mac OS nel menu Accessibilità che trovo comodissimo quando si usa solo il trackpad; quindi è necessario tenere il dito schiacciato sul pad e muovere per spostare una finestra sullo schermo. Questo mi dà un pò fastidio, ma non è un problema insormontabile.

Inutile dire che con la IDE di Arduino tutto funziona perfettamente 🙂

 

Nel caso si voglia installare una distribuzione più adatta ad agire come server, una RedHat o CentOS 6.x, la versione di Grub è differente (la 1, più vecchia di quella usata dalla Mint) per cui lo stesso comando va inserito nel file /etc/grub.conf in tutte le voci di menu (come da figura). Non esiste un comando update-grub quindi va fatto il poweroff del notebook per poi ripartire. Quando si aggiorna il kernel e quindi viene creata una nuova voce nel menu va aggiunto di nuovo l’opzione reboot=pci.

centos

RedHat / CentOS 7 – Far ripartire automaticamente un processo dopo un crash

Ci sono dei processi su un server che abbiamo necessità siano sempre up, ovvero funzionanti. Può accadere che a causa di un crash questi cadano e purtroppo, tranne alcuni casi, siamo costretti a controllare manualmente e  a intervenire per riavviarli da console. Vedremo come fare in modo da impostare un processo in modo tale che in caso di caduta riparta da solo in automatico. Va da sé che se il nostro processo ha delle problematiche tali che cade in continuazione anche se riavviato dobbiamo capire perché questo succede ed eliminare la causa del malfunzionamento. Ma per fortuna la maggior parte delle volte un processo può essere fatto ripartire senza problemi. Farò l’esempio del demone “ntpd” (l’aggiornamento dell’ora esatta) perché mi capita, specialmente sui Raspberry, di trovarlo qualche volta “caduto” misteriosamente.

Premetto che questa procedura funziona esclusivamente sulle distribuzioni di Linux che utilizzano “systemd” come controllore di processi, quindi Raspbian Jessie e Centos 7 nel caso dei Raspberry. Nelle distro precedenti, basate su “initd” si interveniva all’interno del file /etc/inittab o con l’upstart e non mi dilungherò su queste procedure.

Innanzitutto avremo fatto in modo che il nostro servizio sia in grado di ripartire automaticamente al reboot del server, tramite il comando:

Fatto questo entreremo nella directory sotto indicata e cercheremo il file .service associato al nostro servizio:

Eccolo qui, evidenziato (ntpd.service). Apriamo un editor e aggiungiamo nella sezione Service la riga contenente Restart=always

Salviamo il file, ricarichiamo i demoni e facciamo ripartire il nostro servizio.

A questo punto per testare se effettivamente funziona la ripartenza automatica NON useremo un comando systemctl stop, che essendo uno stop volontario non causerà una ripartenza ma dovremo fare un kill del processo, simulando un crash. Facciamo ad esempio un systemctl status ntpd e leggiamo il Main PID del processo. Supponendo sia 8382 diamo poi un comando:

Chiedendo di nuovo lo status del processo vedremo che è stato immediatamente fatto ripartire, ovvero lo troveremo in stato active running.