Как навсегда изменить тип шрифта консоли TTY, чтобы он сохранялся после перезагрузки?

14

Я использую Ubuntu 15.04 64-bit Desktop Edition (Linux на основе Debian).

Я использовал sudo dpkg-reconfigure console-setupиз командной строки, чтобы изменить тип шрифта консоли по умолчанию на Terminus. Сразу после этого консольные шрифты изменились на более резкое лицо шрифта.

Тем не менее, после перезагрузки Ctrl+ Alt+ F1выводит меня в окно консоли, которое имеет оригинальный шрифт стиля шрифта, а не мой выбранный вариант.

/etc/default/console-setupФайл , кажется, был изменен на мой выбор.

# CONFIGURATION FILE FOR SETUPCON

# Consult the console-setup(5) manual page.

ACTIVE_CONSOLES="/dev/tty[1-6]"

CHARMAP="UTF-8"

CODESET="guess"
FONTFACE="Terminus"
FONTSIZE="8x16"

VIDEOMODE=

# The following is an example how to use a braille font
# FONT='lat9w-08.psf.gz brl-8x8.psf'

Как навсегда изменить шрифт консоли, чтобы использовать мой предпочитаемый шрифт?

Энди Фусняк
источник
Этот ответ на askuntu может вам помочь: askubuntu.com/a/396254/399775
toxefa
Похоже, это известная ошибка. К сожалению, в ответе на вопрос аскубунту предложен ответ: создать сценарий выскочки. Ubuntu 15.04 и Debian теперь используют systemd и больше не используют upstart.
Энди Фусняк

Ответы:

6

См. Https://askubuntu.com/questions/630118/ и /ubuntu/328463/ .

Эта проблема, по-видимому, вызвана несоответствием в именовании шрифтов, которое консольная установка ожидает, а не в том /usr/share/consolefonts/, что находится в , и, таким образом, копируется /etc/console-setup/при выборе шрифта для использования (использования dpkg-reconfigure console-setup).

Если вы идете в консоль и делаете strace /lib/udev/console-setup-tty fbcon, вы можете увидеть, что она пытается открыть шрифты следующим образом:

/etc/console-setup/Lat15-TerminusBold11x22.psf

Но если вы загляните внутрь /etc/console-setup/, там есть только несколько шрифтов (те, что вы выбрали), и они больше похожи на это:

/etc/console-setup/Lat15-TerminusBold22x11.psf.gz

Один имеет высоту х ширина, а другой ширина х высота.

Проблема может быть решена несколькими способами.

(1) /lib/udev/console-setup-ttyможет быть исправлено - это более постоянное, восходящее решение.

(2) Вы можете изменить вручную /etc/default/console-setup, изменив высоту и ширину в FONTSIZE. Это нужно будет делать каждый раз, когда вы меняете шрифты с помощью dpkg-reconfigure console-setup. Но когда машина перезагружается, это предпочтение сохраняется.

(3) Вы можете установить шрифты, которые ожидает console-setup-tty. Это то, что я называю «излишним». Я сделал это так:

В /etc/rc.local:

# install console fonts and then set up console
/etc/console-setup/fonts.sh install
/lib/udev/console-setup-tty fbcon

Создайте скрипт с именем /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

Для быстрого прагматического решения я бы сделал № 2 с комментарием в файле, который, возможно, потребуется пересмотреть, если вы выберете другой шрифт (при условии, что комментарий также не будет перезаписан).

Но # 3 работает хорошо с минимальной суетой или беспорядком.

Алан Портер
источник
6

Я недавно столкнулся с этой проблемой на моем 64-битном компьютере с Ubuntu 15.04. Команда setupconустановила шрифты в соответствии с тем, что я установил dpkg-reconfigure console-setup.

Я добавил setupconк своему rc.local, но это оставило пробел, где шрифт был все еще неправильным (потому что rc.local выполняется после установки консоли), так что это было недостаточно для меня.

Итак, я решил пойти глубже. Я отредактировал свой /lib/systemd/system/console-setup.serviceфайл и добавил ExecStart=/bin/setupconв конец файла. Это будет вызывать setupconпри настройке консоли, исправляя шрифты при загрузке без промежутка времени.

MeetTitan
источник
2

Самое простое решение, которое я нашел, было отредактировать, /etc/default/console-setupчтобы установить

FONT="Lat7-Terminus32x16.psf.gz"

и закомментируйте все остальное, кроме ACTIVE_CONSOLESстроки.

Вы можете применить это сразу же setupcon, и оно будет применено и после перезагрузки.

Задание имени шрифта, а не отдельных компонентов работает на основе несоответствия имен, описанного Аланом Портером.

Дэвид Фор
источник