|
|||||||
Поддержка русского языка в консоли
Время создания: 06.08.2018 12:08
Текстовые метки: linux ubuntu console cyrillic
Раздел: Ubuntu
Запись: Velonski/mytetra-database/master/base/1488264331m5k1njaan6/text.html на raw.githubusercontent.com
|
|||||||
|
|||||||
Почему в консоли квадратики вместо русских букв? Многие замечали, что из версии в версию в Ubuntu у некоторых слетают русские фонты в консоли (куда можно попасть нажав CTRL+ALT+F1 - F6, а CTRL+ALT+F7 возвращает в графическую среду). Озаботившись причинами почему это происходит я (Sly_tom_cat ) облазил кучу мест в поисках решения. Залез и в initrd и смотрел в скрипты upstart и в UDEV… что ни правил - не помогает. Особо порадовал комментарий разработчиков в одном из скриптов Udev1 ). Cуть там примерно такова: «надо бы делать как-то так, но мы попробовали - у нас не вышло. Так что, делаем как получится, а если юзерам нужны нормальные фонты - пускай выполнят setupcon и все будет Ok» Но все-таки нет такого решения, которого не найти в Интернете. Причем нашел я его даже по русски 2 ) Как же правильно лечить больного? Оказывается, всего навсего, нужно включить поддержку фреймбуфера на этапе инициализации ядра. Это в свою очередь разрешит выполнение нужных скриптов, которые загрузят фонты на самом раннем этапе инициализации ядра. sudo -i echo 'FRAMEBUFFER=Y' >> /etc/initramfs-tools/initramfs.conf exit 2. Обновить образ рамдиска периода инициализации ядра (initrd): sudo update-initramfs -u Поле этих манипуляций наконец начнут работать настройки сделанные командой3 ): sudo dpkg-reconfigure console-setup Кириллическими фонтами будет показываться все с самого начала - т.е. даже запрос на проверку дисков (возникающий в процессе инициализации ядра) будет выводится кириллицей, а не квадратами. sudo dpkg-reconfigure keyboard-configuration Кому интересно - "откуда ноги растут"... Покопавшись глубже можно обнаружить следующее: scripts/init-top/console_setup scripts/init-top/keymap scripts/init-top/blacklist scripts/init-top/udev scripts/init-top/framebuffer scripts/init-top/ORDER scripts/init-top/plymouth scripts/init-top/all_generic_ide Но, если заглянуть в файлы console_setup, keymap и framebuffer то в самом начале скрипта мы увидим такую строчку: OPTION=FRAMEBUFFER А покопавшись в скриптах инициализации можно понять, что OPTION обрабатывается так, что если значение переменной (что ей присвоено) не задано или не Y, то выполнение самого скрипта пропускается. Т.е. в нашем случае, если FRAMEBUFFER не равно Y, то ни один из скриптов, отвечающих за поддержку фонтов и раскладок клавиатуры, попросту не будут выполнятся в процессе инициализации ядра. Однако, это совсем не объясняет почему подобная проблема возникает не у всех. И как оказывается - она вылезает у любителей оптимизации системы, да еще и у пользователей серверной версии Ubuntu… Так вот, оказывается, разработчики решили, что фреймбуфер нужен для рисования заставки и … и только для этого. Больше (оказывается) он никому, ни зачем, не нужен. Поэтому, если заставку рисуем - то фреймбуфер разрешаем (а то как же - без него же не нарисовать заставку), а если заставку не рисуем, то и фреймбуфер включать незачем, не включаем…. Нет, позже, после инициализации ядра, фреймбуфер все-таки где-то активируется, но поезд уже ушел - фонты на этапе иницализации ядра не загрузились…. «а кому надо - те пусть вызывают setupcon …» Решение для ubuntu 15.10 и более поздних В Ubuntu 15.10 имеется неисправленный баг с настройкой локали https://bugs.launchpad.net/ubuntu/+source/console-setup/+bug/1511975. Поэтому для настройки русского языка необходимо проделать следующее 1. sudo dpkg-reconfigure console-setup (настройки в файле /etc/default/console-setup) /dev/tty[1-6] UTF-8 Combined - Latin; Slavic and non-Slavic cyrillic Let system select suitable font 8x16 2. sudo dpkg-reconfigure keyboard-configuration (настройки в файле /etc/default/console-setup) Generic 105-key (Intl) (выберите вашу клавиатуру) Russian Russian (выберите вашу раскладку) Control+Shift (выберите шорткат для смены раскладки) No temporary switch The default for the keyboard layout No compose key 3. sudo vim /lib/systemd/system/console-setup.service Заменить последнюю строку ExecStart=/usr/bin/loadkeys /etc/console-setup/cached.kmap.gz на ExecStart=/bin/setupcon 4. sudo reboot Поиск в сети порой дает много костыльных советов на данную тему. Особенно часто встречаются два из них: Если вам попадаются такие советы, не поленитесь - объясните людям их глубокое заблуждение и отправьте на эту страницу. HOWTO , Tips , терминал , Консоль 1 ) даже там есть настройка фонтов консоли, но она не работает 3 ) эта команда, кстати, тоже инициализирует процесс обновления initrd 4 ) хотя настройки клавиатуры работают нормально и без манипуляций с фреймбуфером |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|