Vai al contenuto

kmscon sostituisce fbcon: la nuova console virtuale di Fedora 45

Logo di Fedora Linux
Logo: Fedora Project

Con Fedora 45 la console virtuale smette di appoggiarsi al driver kernel fbcon, che disegnava il framebuffer, gestiva i font e il layout di tastiera, e passa a kmscon, un’utility in userspace. Lo scrive Fedora Magazine in un articolo di Jocelyn Falempe del 19 ottobre 2026: la nuova console sostituisce quella predefinita su tty1-6. Chi usa le console virtuali per lavoro, cioè sviluppatori e amministratori, dovrà verificare script e configurazioni; per gli altri, osserva l’autore, l’impatto dovrebbe essere nullo.

kmscon sostituisce fbcon: La nuova console virtuale di Fedora 45 passa dal kernel allo userspace
Grafica: opengeek

Perché fbcon viene messo da parte

Il motivo di fondo, secondo l’articolo, è che fbcon gira nello spazio kernel. Le ragioni elencate:

  • sicurezza: ogni bug di fbcon è sfruttabile direttamente nel kernel e ogni crash si traduce in un kernel panic;
  • tastiera: i layout supportati dal kernel differiscono da quelli dello userspace, tanto che in anaconda si cerca il layout kernel più vicino a quello scelto dall’utente;
  • font: fbcon usa solo font bitmap, piccoli sugli schermi HiDPI, non ridimensionabili a runtime e con un supporto Unicode limitato, mentre kmscon usa freetype e rende qualsiasi font monospace;
  • scrolling: fbcon non lo supporta più a causa di una CVE;
  • mouse: fbcon non lo gestisce (si può aggiungere con gpm, in modo un po’ goffo), mentre kmscon usa un cursore hardware trasparente, quando disponibile, e offre un supporto di base;
  • fbdev: fbcon dipende dalla vecchia interfaccia fbdev, benché tutti i driver GPU usino ormai drm, e abbandonarlo consente di togliere dal kernel lo strato di emulazione fbdev.

Schermata dello store di applicazioni di Fedora con categorie di software.
Foto: Fedora Project

Cosa si rompe e cosa cambia per chi amministra

Dato che kmscon si basa su dispositivi pseudo-tty, il comando tty restituisce /dev/pts/0 invece di /dev/tty1, come accade in un terminale grafico: gli script o le configurazioni che si affidano a quel valore vanno aggiornati.

Cambia anche il rapporto con la GPU. kmscon usa l’interfaccia drm in modo esclusivo; fbcon, stando nel kernel, lasciava che qualunque applicazione prendesse la GPU, mentre il nuovo programma non può farlo e va istruito a rilasciarla con lo script kmscon-launch-gui. Esempi: kmscon-launch-gui startx e kmscon-launch-gui kmscube -c 100.

  • Messaggi del kernel: per default errori e warning compaiono su tty1 e possono mescolarsi a ciò che si digita. Si leggono con dmesg -w.
  • Font: setfont non ha effetto. kmscon usa unifont integrato o freetype, se presente, e può leggere font psf per ottenere lo stesso aspetto di fbcon.
  • Layout di tastiera: loadkeys non ha effetto, perché kmscon segue localectl via dbus. Il layout si cambia con localectl set-keymap us.

Come tenere fbcon su un tty

Chi vuole conservare una console tradizionale può farlo su un singolo terminale. L’esempio dell’articolo riguarda tty5: sudo systemctl mask kmsconvt@tty5 && sudo systemctl enable --now getty@tty5. Dopo il comando, Ctrl+Alt+F5 porta alla vecchia console basata su fbcon.

Configurazione e pacchetti

Il programma è diviso in sottopacchetti, così che i server possano avere un’installazione minima senza dipendenze grafiche o di font:

  • kmscon: pacchetto principale, con il font unifont per un buon supporto Unicode senza altre dipendenze;
  • kmscon-freetype: rendering dei font con freetype;
  • kmscon-pango: rendering con pango, indicato come deprecato a favore di freetype;
  • kmscon-gl: renderer OpenGL, forse più veloce ma un po’ sfocato, che richiede hwaccel nel file di configurazione.

La configurazione sta in /etc/kmscon/kmscon.conf; si parte copiando l’esempio con sudo cp /etc/kmscon/kmscon.conf.example /etc/kmscon/kmscon.conf. Tra le opzioni principali:

  • font-engine: freetype se disponibile, altrimenti unifont; sono ammessi anche pango e psf;
  • font-name e font-size: per default la dimensione cerca di ottenere circa 120×40 caratteri;
  • multi-monitor: scaled è il valore predefinito, in alternativa clone e largest;
  • dpms-timeout: 600 secondi di default, 0 per disattivarlo;
  • no-mouse disabilita il mouse, utile per escludere il touchpad su alcuni portatili;
  • verbose: più log, consultabili con journalctl -u kmsconvt*.

Poiché kmscon gira come root, i font devono stare in /usr/share/fonts e non nella home; il nome esatto si ricava con fc-list. Per chi vuole i simboli Nerd Fonts, nei repository Fedora è disponibile cascadia-code-nf-fonts, una variante di Cascadia Code con quei simboli.

Scorciatoie e cosa resta aperto

Tra le scorciatoie predefinite: zoom con Ctrl++ o Ctrl più rotella, scorrimento con Shift+Freccia, Shift+PagSu/PagGiù o rotella, copia selezionando col mouse e incolla con il clic centrale. Per riavviare il programma su un terminale si usa sudo systemctl restart kmsconvt@ttyX, mentre echo $XDG_VTNR indica il VT in uso.

Rispondendo a un lettore nei commenti, l’autore spiega che Fedora 45 è un primo passo: per Fedora 46 l’obiettivo sarebbe usare kmscon anche per la password LUKS e per la console di rescue del ramdisk, e poi passare al driver kernel drm_log per i messaggi precoci. È un intento espresso nei commenti, non un impegno ufficiale. Per bug e contributi, il repository upstream è github.com/kmscon/kmscon.