Vedi /ubuntu/630118/ e /ubuntu/328463/ .
Questo problema sembra essere causato da una mancata corrispondenza nella denominazione dei caratteri che l'installazione della console prevede rispetto a ciò che si trova /usr/share/consolefonts/
, e quindi copiata /etc/console-setup/
quando si sceglie un carattere da usare (usando
dpkg-reconfigure console-setup
).
Se vai su una console e fai una strace /lib/udev/console-setup-tty fbcon
, puoi vedere che sta cercando di aprire caratteri in questo modo:
/etc/console-setup/Lat15-TerminusBold11x22.psf
Ma se guardi dentro /etc/console-setup/
, ci sono solo una manciata di caratteri (quelli che hai scelto), e sembrano più così:
/etc/console-setup/Lat15-TerminusBold22x11.psf.gz
Uno ha altezza x larghezza e l'altro ha larghezza x altezza.
Il problema può essere risolto in alcuni modi.
(1) /lib/udev/console-setup-tty
potrebbe essere risolto - Questa è la soluzione più permanente, a monte.
(2) È possibile modificare manualmente /etc/default/console-setup
, invertendo l'altezza e la larghezza in FONTSIZE. Questo dovrà essere fatto ogni volta che cambi i caratteri usando dpkg-reconfigure console-setup
. Ma quando la macchina si riavvia, tale preferenza viene mantenuta.
(3) È possibile installare i caratteri previsti dalla console-setup-tty. Questo è ciò che chiamo l'opzione "overkill". L'ho fatto così:
In /etc/rc.local:
# install console fonts and then set up console
/etc/console-setup/fonts.sh install
/lib/udev/console-setup-tty fbcon
Crea uno script chiamato /etc/console-setup/fonts.sh
:
#!/bin/bash
action=$1
srcdir="/usr/share/consolefonts"
parent="/etc/console-setup"
subdir="fonts"
case "$1" in
install)
# console fonts are not named properly in Ubuntu 15.04, compensate
[[ -d $parent/$subdir ]] || mkdir $parent/$subdir
for x in $( cd $srcdir ; ls -1 ) ; do
# rearrange the two numbers from HHxWW to WWxHH
y=$(echo "$x" | sed -e 's/^\([^-]*\)-\([^0-9]*\)\([0-9]*\)x\([0-9]*\).psf.gz/\1-\2\4x\3.psf.gz/g')
# whether the pattern above matches or not, we'll be uncompressing here
z=${y/.psf.gz/.psf}
[[ ! -f $parent/$subdir/$z ]] && zcat $srcdir/$x > $parent/$subdir/$z
[[ ! -L $parent/$z ]] && ln -sv $subdir/$z $parent/$z
done
;;
uninstall)
rm -rf $parent/$subdir
# only remove broken links (links to the fonts we removed above)
rm $(find -L $parent -type l)
;;
*)
echo "$(basename $0) install|uninstall"
;;
esac
exit 0
Per una rapida soluzione pragmatica, farei # 2, con un commento nel file che potrebbe essere necessario rifare se si sceglie un carattere diverso (supponendo che il commento non venga sovrascritto).
Ma # 3 funziona bene con confusione o disordine minimi.