giovedì 26 novembre 2015

Risoluzione dei problemi con il dual boot di Debian GNU/Linux e Windows 10


Installare Debian, o qualsiasi altra distribuzione GNU/Linux, in dual boot con Windows 10 è abbastanza semplice e, alla fine dell'installazione, dopo il riavvio del sistema, ci troveremo davanti al classico menu di GRUB.
Ci sono dei casi particolari in cui potremmo andare in contro a dei problemi, vediamone due dei più comuni e cosa fare per risolverli.

Non compare il menù di GRUB, si avvia direttamente Windows 10


Questo è un problema capitato a molti, in alcuni casi si verifica non solo subito dopo aver installato Debian, ma anche dopo un aggiornamento a/di Windows 10, vediamo perché e come risolverlo.

Il problema è causato da Windows 10, che modifica le impostazioni del firmware UEFI (senza avvisare l'utente o chiedere conferma) e forza il boot con Windows. Da sempre Microsoft non si è mai curata di rispettare gli altri eventuali sistemi operativi installati sul computer dando per scontato che sul PC ci deve essere un solo sistema: il suo.

La soluzione è semplice, da Windows 10, cliccate sul pulsante Start, selezionate la voce Tutte le app, quindi Sistema Windows.



Cliccate con il tasto destro su Prompt dei comandi, verrà visualizzato un sotto menù, selezionate Altro e quindi Esegui come amministratore.



Vi verrà richiesta conferma di consentire all'applicazione Prompt dei comandi di eseguire modifiche sul PC, cliccate sul Si e comparirà la finestra per l'immissione dei comandi.

Inserite il seguente comando e premete invio:

bcdedit /set {bootmgr} path \EFI\debian\grubx64.efi



Come potete vedere dalla riga del comando, abbiamo impostato il percorso del boot manager da eseguire all'avvio. In questo caso specifico la directory all'interno di EFI è debian, per Ubuntu scriverete \EFI\ubuntu\grubx64.efi, mentre per Fedora sarà \EFI\fedora\grubx64.efi e così via.

Ora riavviate il PC e il familiare menù di GRUB vi accoglierà come sempre.

GRUB non trova l'immagine di sfondo impostata


La flessibilità di GRUB ci permette di personalizzarne l'aspetto modificando l'immagine di sfondo (vedi i miei precedenti post al riguardo per distribuzioni Debian/Ubuntu e per Fedora), ma in alcuni casi, pur avendo impostato correttamente l'immagine di sfondo, GRUB sembra non trovarla.

Di solito l'immagine da utilizzare per GRUB viene messa in /usr/share all'interno di qualche altra directory come ad esempio /usr/share/images/grub (come consigliato sulle mie guide precedenti). Se non ci sono errori di scrittura nel percorso indicato nell'opzione GRUB_BACKGROUND, ma nonostante tutto l'immagine non viene trovata, allora è probabile che la vostra /usr sia in una partizione diversa da quella dove GRUB va a cercare. Questo succede quando ad esempio abbiamo Windows 10 installato sul primo disco e Debian GNU/Linux nel secondo disco. Purtroppo GRUB non si affida ad un puro schema ad albero per il file system come in ambiente UNIX like, ma ha una vera e propria foresta di partizioni dove districarsi.

La soluzione più semplice che ho trovato a questo problema è quella di spostare l'immagine destinata a GRUB da /usr/share/images/grub a /boot/grub.
Se ad esempio l'immagine si chiama splash.png, dal terminale la possiamo spostare digitando:

> mv /usr/share/images/grub/splash.png /boot/grub

Ricordatevi di eseguire i comandi mostrati come root utilizzando su, oppure aggiungete sudo all'inizio della riga se il vostro utente è di tipo amministratore.

A questo punto possiamo modificare il file grub in /etc/default e rimuoviamo l'opzione GRUB_BACKGROUND.

> nano /etc/default/grub

Possiamo cancellare interamente la riga dell'opzione GRUB_BACKGROUND oppure escluderla inserendo il carattere # all'inizio della stessa per farla diventare un commento.

Salvate le modifiche premendo la combinazioni di tasti Ctrl-O e quindi uscite dall'editor con Ctrl-X.

GRUB di default cerca la prima immagine utile presente in /boot/grub, per questo motivo abbiamo rimosso l'opzione GRUB_BACKGROUND. Abbiate cura di mettere una sola immagine in /boot/grub, altrimenti verrà utilizzata la prima tra le tante.
Ora aggiornate GRUB con il solito script

> update-grub

Durante l'update GRUB vi dovrebbe comunicare che ha trovato l'immagine
Found background image: splash.png

Riavviate il sistema, il menù di GRUB adesso dovrebbe sfoggiare il nuovo look.

giovedì 19 novembre 2015

Come collegarsi alla rete Wi-Fi dal terminale


Di solito il computer si collega automaticamente alla rete Wi-Fi senza bisogno del nostro intervento, altre volte invece bastano pochi click per farlo. Può capitare però di trovarci di fronte al terminale e non avere alcuna interfaccia grafica per collegare il nostro computer alla rete Wi-Fi, per esempio quando l'installazione dei driver grafici non è andata a buon fine.
In questa breve guida vi mostrerò come collegarci dalla riga di comando.

Durante la guida darò per scontato che abbiate effettuato il login come root o che prima di procedere abbiate eseguito il comando su per eseguire i comandi come super utente. Altrimenti potete sempre anteporre la parola sudo ad ogni comando.

Trovare la scheda Wi-Fi installata


Prima cosa da fare bisognerà trovare la scheda Wi-Fi installata sul nostro computer, useremo il comando iw

> iw dev

Produrrà un output simile a questo

phy#0
Interface wlan0
ifindex 3
wdev 0x1
addr 9c:d2:1e:61:a6:86
type managed
channel 6 (2437 MHz), width: 20 MHz, center1: 2437 Mhz

Nel mio caso ho una scheda di rete Wi-Fi chiamata wlan0

Visualizzare lo stato della scheda Wi-Fi


Ora possiamo controllare lo stato della scheda con il seguente comando

> ip link show wlan0

Otterremo un risultato simile a questo

3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
link/ether 9c:d2:1e:61:a6:86 brd ff:ff:ff:ff:ff:ff

Come potete intuire dalla parola DOWN lo stato della Wi-Fi è spenta.

Accendere la scheda di rete Wi-Fi


Per attivare la scheda Wi-Fi procediamo con

> ip link set wlan0 up

Controlliamo di nuovo lo stato

> ip link show wlan0

Questa volta il risultato dovrebbe essere questo

3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
link/ether 9c:d2:1e:61:a6:86 brd ff:ff:ff:ff:ff:ff

Notate come questa volta lo stato è UP

Controllare lo stato della connessione


Ora che la scheda Wi-Fi è attiva, controlliamo lo stato della connessione

> iw wlan0 link

il risultato sarà

Not connected.
Non siamo connessi.

Cercare le reti disponibili


Ora cerchiamo le reti Wi-Fi disponibili

> iw wlan0 scan

Otterremo una lunga lista di informazioni per ogni rete trovata come questa


BSS 9c:d3:6d:b4:a4:10(on wlan0) -- associated
TSF: 914250503275 usec (10d, 13:57:30)
freq: 2437
beacon interval: 100 TUs
capability: ESS Privacy ShortSlotTime (0x0411)
signal: -41.00 dBm
last seen: 172 ms ago
Information elements from Probe Response frame:
SSID: My_Network
Supported rates: 1.0* 2.0* 5.5 11.0 18.0 24.0 36.0 54.0
DS Parameter set: channel 6
ERP: Barker_Preamble_Mode
ERP D4.0: Barker_Preamble_Mode
RSN: * Version: 1
* Group cipher: CCMP
* Pairwise ciphers: CCMP
* Authentication suites: PSK
* Capabilities: 16-PTKSA-RC 1-GTKSA-RC (0x000c)
Extended supported rates: 6.0 9.0 12.0 48.0
HT capabilities:
Capabilities: 0x186c
HT20
SM Power Save disabled
RX HT20 SGI
RX HT40 SGI
No RX STBC
Max AMSDU length: 7935 bytes
DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 8 usec (0x06)
HT RX MCS rate indexes supported: 0-7
HT TX MCS rate indexes are undefined
HT operation:
* primary channel: 6
* secondary channel offset: no secondary
* STA channel width: 20 MHz
* RIFS: 1
* HT protection: no
* non-GF present: 1
* OBSS non-GF present: 0
* dual beacon: 0
* dual CTS protection: 0
* STBC beacon: 0
* L-SIG TXOP Prot: 0
* PCO active: 0
* PCO phase: 0
WPS: * Version: 1.0
* Wi-Fi Protected Setup State: 2 (Configured)
* Selected Registrar: 0x0
* Response Type: 3 (AP)
* UUID: 1620a1d7-a8d6-d819-4860-8a40e4e07abf
* Manufacturer: NETGEAR, Inc.
* Model: WNR1000v3
* Model Number: WNR1000v3
* Serial Number: 83258
* Primary Device Type: 6-0050f204-1
* Device name: WNR1000v3
* Config methods: Label, PBC
WMM: * Parameter version 1
* u-APSD
* BE: CW 15-1023, AIFSN 3
* BK: CW 15-1023, AIFSN 7
* VI: CW 7-15, AIFSN 2, TXOP 3008 usec
* VO: CW 3-7, AIFSN 2, TXOP 1504 usec

Le informazioni più importanti che ci occorrono sono il nome della rete ed il protocollo di sicurezza. Il nome della rete è quello che segue la parola SSID (Service Set Identifier), in questo caso è My_Network. Il protocollo di sicurezza è invece RSN, meglio conosciuto come WPA2.

Creare un file di configurazione WPA/WPA2


Per poterci collegare ad una rete Wi-Fi protetta da passphrase con protocollo WPA/WPA2 avremo bisogno di preparare un file di configurazione con questo comando:

> wpa_passphrase My_Network >> /etc/wpa_supplicant.conf

Subito dopo aver premuto invio dovremo digitare la passphrase per collegarci alla rete, quindi verrà creato il file di configurazione in /etc/wpa_supplicant.conf. Il file di configurazione così creato non andrà comunque a sostituire le configurazioni già esistenti.

Collegarsi alla rete Wi-Fi protetta da passphrase WPA/WPA2


Ora che abbiamo preparato tutto il necessario possiamo collegarci alla rete con

> wpa_supplicant -B -D wext -i wlan0 -c /etc/wpa_supplicant.conf

Controlliamo di nuovo lo stato della connessione 

> iw wlan0 link

 Questa volta ci dovrebbe mostrare la connessione avvenuta.

Connected to 9c:d3:6d:b4:a4:10 (on wlan0)
SSID: My_Network
freq: 2437
RX: 10476343 bytes (59172 packets)
TX: 743393 bytes (5687 packets)
signal: -49 dBm
tx bitrate: 65.0 MBit/s MCS 6 short GI

bss flags: short-slot-time
dtim period: 0
beacon int: 100

Ottenere un indirizzo IP dal DHCP


Possiamo ottenere un indirizzo IP con il comando

> dhclient wlan0

E verificare l'indirizzo IP con

> ip addr show wlan0

Otterrete qualcosa come questo

3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 9c:d2:1e:61:a6:86 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.5/24 brd 10.0.0.255 scope global dynamic wlan0
valid_lft 82996sec preferred_lft 82996sec
inet6 fe80::9ed2:1eff:fe61:a686/64 scope link
valid_lft forever preferred_lft forever

L'indirizzo IP è quello che segue la parola inet, in questo caso 10.0.0.5.

Testare la connessione


Per finire possiamo fare un test della connessione con il buon vecchio comando ping


Se il risultato è simile al seguente siete connessi

PING www.google.com (74.125.232.146) 56(84) bytes of data.
64 bytes from mil02s05-in-f18.1e100.net (74.125.232.146): icmp_seq=1 ttl=52 time=38.3 ms
64 bytes from mil02s05-in-f18.1e100.net (74.125.232.146): icmp_seq=2 ttl=52 time=37.9 ms
64 bytes from mil02s05-in-f18.1e100.net (74.125.232.146): icmp_seq=3 ttl=52 time=38.2 ms

Fermate l'esecuzione di ping con la combinazione di tasti Ctrl + c.

Il vostro sistema è online!





mercoledì 4 novembre 2015

Personalizzare il menù di GRUB 2 (Fedora): sistema operativo di default, immagine di sfondo e colore del testo


GRUB 2 è il bootloader di GNU, cioè quel programma che, all'avvio del computer, si occupa di caricare in memoria il kernel del sistema operativo.

Dopo aver installato la nostra distribuzione GNU/Linux preferita, all'avvio del PC, verrà visualizzato il menù di GRUB 2, dove potremo scegliere, tra le altre opzioni, quale sistema operativo caricare.

Vediamo quali modifiche possiamo apportare alla configurazione di GRUB 2 per adattarlo alle nostre necessità.

Questa guida è scritta in modo specifico per la distribuzione GNU/Linux Fedora. I concetti di base sono comunque validi anche su altre distribuzioni GNU/Linux.

Scelta del sistema operativo da avviare


Il comportamento di default di GRUB 2 è quello di attendere alcuni secondi la scelta dell'utente prima di avviare automaticamente il sistema operativo che ha installato GRUB 2 (in un PC con dual-boot Windows e GNU/Linux, quest'ultimo sarà avviato di default salvo scelta differente da parte dell'utente).

1) Cambiare il sistema operativo di default


Nel caso preferissimo avviare di default un altro sistema operativo basterà apportare la seguente modifica:

Avviate il terminale e portatevi sulla directory /etc/default con il comando cd

> cd /etc/default

Ora andremo a modificare il file grub contenuto in questa cartella (in questa guida userò il text editor nano, ma se preferite potrete utilizzarne un altro a piacimento).

> sudo nano grub

Verrà visualizzato un file di testo come il seguente:

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=0
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

La righe che iniziano con il carattere # sono considerate commenti e quindi ignorate. Il sistema operativo di default è indicato dall'opzione GRUB_DEFAULT che di solito è impostato al valore 0, cioè il primo sistema indicato sulla lista di GRUB 2. Sostituendo 0 con un altro numero potremmo scegliere il sistema di default (1 per il secondo sistema della lista, 2 il terzo e così via).

Ora salvate le modifiche ed uscite dal text editor (se state utilizzando nano salvate con la combinazione di tasti Ctrl-O, confermando il nome del file premendo Invio. Quindi uscite con Ctrl-X).

Ora da terminale aggiornate la configurazione di GRUB2 con questo comando:
> sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Ricordatevi che le sole modifiche al file grub non hanno alcun effetto sulla configurazione di GRUB2 se non eseguite il comando grub2-mkconfig. Ora potete riavviare e testare le modifiche apportate.

2) Avvio di default del sistema operativo utilizzato precedentemente


Questa opzione è quella che reputo più comoda, è particolarmente utile quando dobbiamo riavviare un sistema, come ad esempio a seguito di un aggiornamento del kernel.

Andiamo ancora a modificare il file grub in /etc/default. Per attivare questa opzione dovremmo aggiungere una riga prima di GRUB_DEFAULT ed inserire quanto seguente:

GRUB_SAVEDEFAULT=true

Questa opzione attiva il salvataggio dell'ultima scelta fatta. Ora modifichiamo la riga sottostante per scegliere come sistema di default quello salvato.

GRUB_DEFAULT=saved

Come prima salviamo il file ed aggiorniamo GRUB 2 eseguendo il solito comando.
> sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Modificare l'aspetto del menu di GRUB 2


Una cosa comune alla maggior parte degli utenti GNU/Linux è la voglia di personalizzazione del proprio sistema, a partire dalla prima cosa che viene visualizzata dopo aver acceso il computer: il menu di GRUB 2.

1) Aggiungere un'immagine di sfondo al menu


Per avere un'immagine di sfondo basterà aggiungere questa opzione al solito file grub in /etc/default

GRUB_BACKGROUND="percorso del file immagine"

GRUB 2 supporta l'uso di immagini in formato PNG, JPG/JPEG e TGA. Scegliete accuratamente un'immagine della giusta risoluzione e fate in modo che sia salvata in uno dei formati supportati.

Ora la domanda è dove mettere l'immagine da utilizzare con GRUB 2?

Io ho l'abitudine di metterla in /usr/share/images/grub. Andate in /usr/share con il comando
> cd /usr/share

Ora visualizzate il contenuto per controllare se c'è una directory chiamata images, se non c'è potrete crearla con il seguente comando

> sudo mkdir images

Ora andate all'interno della directory images

> cd images

Create la directory grub al suo interno

> sudo mkdir grub

Ora abbiamo una cartella dedicata a contenere le immagini destinate a GRUB 2. Copiate l'immagine che volete utilizzare con il comando cp. Per farlo andate nella directory dove avete l'immagine con il comando cd (per tornare alla propria home directory potete usare il comando cd senza indicare alcun percorso), quindi digitate

> sudo cp nome immagine /usr/share/images/grub/nome immagine

Se per esempio la vostra immagine si chiama splash.png scriverete

> sudo cp splash.png /usr/share/images/grub/splash.png

Ora andiamo a modificare il solito file grub in /etc/default per indicare il percorso completo dell'immagine nell'opzione GRUB_BACKGROUND, se per esempio l'immagine si chiama splash.png scriverete quanto segue

GRUB_BACKGROUND=”/usr/share/images/grub/splash.png”

Salvate e uscite dal text editor, quindi ricordatevi di aggiornare GRUB 2 con il solito comando

> sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Ora riavviate ed ammirate il nuovo look.

2) Cambiare i colori del testo del menu


Potrebbe essere necessario cambiare i colori del testo del menu di GRUB 2 per migliorarne la leggibilità dopo aver aggiunto un'immagine di sfondo, o semplicemente perché vogliamo personalizzare anche questi.

Per cambiare i colori del testo dobbiamo modificare il file 41_custom che si trova in /etc/grub.d

> cd /etc/grub.d
> sudo nano 41_custom

Verrà visualizzato un file di testo come il seguente:

#!/bin/sh
cat <<EOF
if [ -f  \${config_directory}/custom.cfg ]; then
  source \${config_directory}/custom.cfg
elif [ -z "\${config_directory}" -a -f  \$prefix/custom.cfg ]; then
  source \$prefix/custom.cfg;
fi
EOF
I colori che vogliamo modificare sono i seguenti:
  • menu_color_highlight = sono i colori del testo evidenziato e del suo sfondo
  • menu_color_normal = sono i colori del testo non evidenziato e del suo sfondo

La sintassi della scelta del colore è la seguente:

    menu_color=colore_testo/colore_sfondo

E questi sono i nomi dei colori accettati da GRUB2:

  •     black
  •     blue
  •     brown
  •     cyan
  •     dark-gray
  •     green
  •     light-cyan
  •     light-blue
  •     light-green
  •     light-gray
  •     light-magenta
  •     light-red
  •     magenta
  •     red
  •     white
  •     yellow

Ora aggiungiamo le istruzioni per la configurazione dei colori prima della riga EOF come nell'esempio di seguito:


#!/bin/sh
cat <<EOF
if [ -f  \${config_directory}/custom.cfg ]; then
  source \${config_directory}/custom.cfg
elif [ -z "\${config_directory}" -a -f  \$prefix/custom.cfg ]; then
  source \$prefix/custom.cfg;
fi
set color_normal=white/black
set color_highlight=light-green/black
EOF

Modificate a piacimento i colori, ma fate attenzione se modificate il colore di sfondo con un colore diverso da black. Infatti se il colore di sfondo è impostato come black, questo sarà trasparente e lascerà vedere l'immagine sottostante, se lo modificate con un altro colore allora non sarà trasparente e verrà visualizzata la riga del colore scelto.

Al termine della modifica salvate il file e ricordate sempre di aggiornare la configurazione con il solito comando:

> sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Riavviate e controllate che il look finale sia leggibile e di vostro gradimento.