Capita spesso, soprattutto per lavoro ma non solo, di dover utilizzare una macchina Ubuntu da remoto, senza monitor connesso. Il caso più diffuso è un headless server. Quando ci si collega da remoto – ad esempio col classico TeamViewer – Ubuntu genera una risoluzione video bassissima di 640×480, spesso non sufficiente per lavorare neppure da terminale.
Il nostro scopo
Ciò che ci prefiggiamo è poter avviare la macchina Ubuntu senza avere un monitor connesso. In seconda istanza, poter lavorare da remoto in condizioni dignitose, senza che nessuno da locale possa interagire con la macchina. Quindi, tutti quei casi in cui semplicemente non c’è monitor, headless server, docker machine, virtual machine e così via.
La guida è applicabile a: Ubuntu 14/15/16/17. Non sono certo continui a funzionare dal 17.10 in avanti causa wayland, se non forzando Ubuntu ad usare lightdm.
Aggiungere un display finto ad Ubuntu senza monitor
Per poter procedere, se non abbiamo reso possibile una connessione alla macchina Ubuntu prima, è necessario almeno in prima istanza connettere un monitor ad essa.
Una volta installati servizi che successivamente ci consentano la gestione da remoto (vnc, team viewer, remmina, ssh…), procediamo con l’installazione di un finto monitor.
sudo apt update
sudo apt install xserver-xorg-video-dummy
Attenzione, la precedente riga fa una chiamata generica al driver e poi apt si occupa di installare quello corretto per la distribuzione. Sarebbe stato possibile indicare il driver specifico per la distribuzione in uso con:
per ubuntu 14.04
sudo apt-get install xserver-xorg-video-dummy-lts-trusty
per ubuntu 16.04
sudo apt-get install xserver-xorg-video-dummy-lts-xenial
e così via per le altre release.
Creare il file di configurazione di default per X
Modifichiamo/creiamo il file xorg.conf (uso nano per comodità, ma potete usare vi o quel che più vi aggrada)
sudo nano /usr/share/X11/xorg.conf.d/xorg.conf
All’interno del file andiamo a specificare la configurazione, ricordandoci di indicare una risoluzione video plausibile, ma soprattutto adeguata al monitor da cui ci collegheremo in futuro da remoto. In genere, se non siete sicuri, con 1280×720 siete certi di avere una discreta risoluzione. Personalmente uso 1920×1080.
Section "Device"
Identifier "Configured Video Device"
Driver "dummy"
EndSection
Section "Monitor"
Identifier "Configured Monitor"
HorizSync 31.5-48.5
VertRefresh 50-70
EndSection
Section "Screen"
Identifier "Default Screen"
Monitor "Configured Monitor"
Device "Configured Video Device"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "1024x768"
EndSubSection
EndSection
Riavviamo il computer
Alcuni accorgimenti
Possiamo interrogare in qualunque momento la risoluzione video con:
xrandr -d :0 -q
Possiamo modificare la risoluzione video “al volo” e senza riavviare Ubuntu, con:
xrandr -d :0 --output default --mode 1920x1080
semplicemente sostituiamo qui la risoluzione che ci serve (nel mio caso 1920×1080).