Поддержка русского языка в консоли Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
Последняя версия Следующая версия справа и слева
wiki:russian_font_in_console [2012/09/14 00:39]
[Поддержка русского языка в консоли]
wiki:russian_font_in_console [2016/06/03 21:16]
[Поддержка русского языка в консоли]
Строка 1: Строка 1:
 ====== Поддержка русского языка в консоли ====== ====== Поддержка русского языка в консоли ======
-<note important>​Данная статья актуальна по крайней мере для тех, у кого нет поддержки русского в консоли в версиях *Ubuntu 11.04 - 12.04, и особенно для пользователей Ubuntu Server этих же версий</​note>​+<note important>​Данная статья актуальна по крайней мере для тех, у кого нет поддержки русского в консоли в версиях *Ubuntu ​с 11.04 по 14.10, и особенно для пользователей Ubuntu Server этих же версий
 + 
 +В 15.10 изменена система загрузки (sustemd) и описанное ниже средство не помогает. Смотрите раздел [[http://​help.ubuntu.ru/​wiki/​russian_font_in_console?&#​решение_для_ubuntu_1510_и_более_поздних|Решение для ubuntu 15.10 и более поздних]].</​note>​ 
 + 
 +<note tip>В версиях 12.10 и 13.04 эта проблема вроде как была решена.</​note>​ 
 + 
 +<note tip>UPD: Русские фонты в сервере 14.04 также не работают без лекарства. 
 +Похоже отключенный FRAMEBUFFER - это хроническая болезнь серверной версии.</​note>​
 ====== Почему в консоли квадратики вместо русских букв? ====== ====== Почему в консоли квадратики вместо русских букв? ======
  
  
-Многие замечали,​ что из версии в версию в Ubuntu у некоторых слетают русские фонты в консоли (куда можно попасть нажав CTRL+ALT+F1 - F6, а CTRL+ALT+F7 возвращает в графическую среду) . Озаботившись причинами почему это происходит я ([[user>​Sly_tom_cat]]) облазил кучу мест в поисках решения. Залез и в initrd и смотрел в скрипты upstart и в UDEV... что ни правил - не помогает. Особо порадовал комментарий разработчиков в одном из скриптов Udev((даже там есть настройка фонтов консоли,​ но она не работает)). Cуть там примерно такова:​ "​надо бы делать как-то так, но мы попробовали - у нас не вышло. Так что, делаем как получится,​ а если юзерам нужны нормальные фонты - пускай выполнят setupcon и все будет Ok" :-O :-\+Многие замечали,​ что из версии в версию в Ubuntu у некоторых слетают русские фонты в консоли (куда можно попасть нажав CTRL+ALT+F1 - F6, а CTRL+ALT+F7 возвращает в графическую среду). Озаботившись причинами почему это происходит я ([[user>​Sly_tom_cat]]) облазил кучу мест в поисках решения. Залез и в initrd и смотрел в скрипты upstart и в UDEV... что ни правил - не помогает. Особо порадовал комментарий разработчиков в одном из скриптов Udev((даже там есть настройка фонтов консоли,​ но она не работает)). Cуть там примерно такова:​ "​надо бы делать как-то так, но мы попробовали - у нас не вышло. Так что, делаем как получится,​ а если юзерам нужны нормальные фонты - пускай выполнят setupcon и все будет Ok" :-O :-\
  
 Но все-таки нет такого решения,​ которого не найти в Интернете. Причем нашел я его даже по русски (([[http://​www.abone.pp.ru/​2011/​05/​ubuntu-1104-natty.html|Статья с решением]])) Но все-таки нет такого решения,​ которого не найти в Интернете. Причем нашел я его даже по русски (([[http://​www.abone.pp.ru/​2011/​05/​ubuntu-1104-natty.html|Статья с решением]]))
Строка 10: Строка 17:
 ======= Как же правильно лечить больного?​ ======= ======= Как же правильно лечить больного?​ =======
  
-Оказывается,​ всего навсего,​ нужно включить поддержку фреймбуфера на этапе инициализации ядра.\\+Оказывается,​ всего навсего,​ нужно включить поддержку фреймбуфера на этапе инициализации ядра. Это в свою очередь разрешит выполнение нужных скриптов,​ которые загрузят фонты на самом раннем ​этапе инициализации ядра.\\
 Для этого:​\\ Для этого:​\\
 1. в любом текстовом редакторе с правами рута нужно в файл /​etc/​initramfs-tools/​initramfs.conf добавить строчку FRAMEBUFFER=Y. 1. в любом текстовом редакторе с правами рута нужно в файл /​etc/​initramfs-tools/​initramfs.conf добавить строчку FRAMEBUFFER=Y.
Строка 19: Строка 26:
 2. Обновить образ рамдиска периода инициализации ядра (initrd):\\ 2. Обновить образ рамдиска периода инициализации ядра (initrd):\\
 <​code>​sudo update-initramfs -u</​code>​ <​code>​sudo update-initramfs -u</​code>​
-Поле этих манипуляций настройки сделанные командой:​ \\  +Поле этих манипуляций ​наконец начнут работать ​настройки сделанные командой((эта команда,​ кстати,​ тоже инициализирует процесс обновления initrd)): \\  
-<​code>​sudo dpkg-reconfigure console-setup</​code>​ +<​code>​sudo dpkg-reconfigure console-setup</​code>​  
-Наконец начнут ​работать:​ Русским фонтами будет показываться все с самого начала - т.е. даже запрос на проверку дисков (возникающий в процессе инициализации ядра) будет выводится кириллицей,​ а не квадратами.\\+Кириллическими фонтами будет показываться все с самого начала - т.е. даже запрос на проверку дисков (возникающий в процессе инициализации ядра) будет выводится кириллицей,​ а не квадратами.\\
 \\ \\
 Возможно потребуется так же настроить и клавиатуру (раскладки,​ переключение раскладок и compose-key)((хотя настройки клавиатуры работают нормально и без манипуляций с фреймбуфером)):​\\ Возможно потребуется так же настроить и клавиатуру (раскладки,​ переключение раскладок и compose-key)((хотя настройки клавиатуры работают нормально и без манипуляций с фреймбуфером)):​\\
Строка 39: Строка 46:
 Но, если заглянуть в файлы console_setup,​ keymap и framebuffer то в самом начале скрипта мы увидим такую строчку:​ Но, если заглянуть в файлы console_setup,​ keymap и framebuffer то в самом начале скрипта мы увидим такую строчку:​
 <​code>​OPTION=FRAMEBUFFER</​code>​ <​code>​OPTION=FRAMEBUFFER</​code>​
-А покопавшись в скриптах инициализации можно понять,​ что OPTION обрабатывается так, что если значение переменной (что ей присвоено) не задано или не Y, то выполнение самого скрипта пропускается. Т.е. в нашем случае,​ если FRAMEBUFFER не равно Y, то ни один из скриптов,​ отвечающих за поддержку фонтов и раскладок клавиатуры,​ попросту не будут выполнятся в процессе инициализации ядра.\\ +А покопавшись в скриптах инициализации можно понять,​ что OPTION обрабатывается так, что если значение переменной (что ей присвоено) не задано или не Y, то выполнение самого скрипта пропускается. Т.е. в нашем случае,​ если FRAMEBUFFER не равно Y, то ни один из скриптов,​ отвечающих за поддержку фонтов и раскладок клавиатуры,​ попросту не будут выполнятся в процессе инициализации ядра.\\ Но без FRAMEBUFFER не возможно загрузить шрифты с поддержкой национальных символов! ​\\ 
-Примечательно то, что настройки раскладок клавиатуры все-таки будут применены в процессе загрузки ОС (уже после инициализации ядра). За это отвечает скрипт console-setup системы инициализации upstart, а вот ​фонты ​консоли скрипты upstart не настраивают.+Примечательно то, что настройки раскладок клавиатуры все-таки будут применены в процессе загрузки ОС (уже после инициализации ядра). За это отвечает скрипт console-setup системы инициализации upstart, а вот консольные фонты ​скрипты upstart не настраивают.
  
 Однако,​ это совсем не объясняет почему подобная проблема возникает не у всех. И как оказывается - она вылезает у любителей оптимизации системы,​ да еще и у пользователей серверной версии Ubuntu...\\ Однако,​ это совсем не объясняет почему подобная проблема возникает не у всех. И как оказывается - она вылезает у любителей оптимизации системы,​ да еще и у пользователей серверной версии Ubuntu...\\
Строка 49: Строка 56:
  
 Так вот, оказывается,​ разработчики решили,​ что фреймбуфер нужен для рисования заставки и ... и __только__ для этого. Больше (оказывается) он никому,​ ни зачем, не нужен.:​-D Поэтому,​ если заставку рисуем - то фреймбуфер разрешаем (а то как же - без него же не нарисовать заставку),​ а если заставку не рисуем,​ то и фреймбуфер включать незачем,​ не включаем.... Нет, позже, после инициализации ядра, фреймбуфер все-таки где-то активируется,​ но поезд уже ушел - фонты на этапе иницализации ядра не загрузились.... "а кому надо - те пусть вызывают setupcon ...";​-) Так вот, оказывается,​ разработчики решили,​ что фреймбуфер нужен для рисования заставки и ... и __только__ для этого. Больше (оказывается) он никому,​ ни зачем, не нужен.:​-D Поэтому,​ если заставку рисуем - то фреймбуфер разрешаем (а то как же - без него же не нарисовать заставку),​ а если заставку не рисуем,​ то и фреймбуфер включать незачем,​ не включаем.... Нет, позже, после инициализации ядра, фреймбуфер все-таки где-то активируется,​ но поезд уже ушел - фонты на этапе иницализации ядра не загрузились.... "а кому надо - те пусть вызывают setupcon ...";​-)
 +
 +====== Решение для ubuntu 15.10 и более поздних ======
 +В Ubuntu 15.10 имеется неисправленный баг с настройкой локали https://​bugs.launchpad.net/​ubuntu/​+source/​console-setup/​+bug/​1511975. Поэтому для настройки русского языка необходимо проделать следующее
 +1. <​code>​sudo dpkg-reconfigure console-setup</​code>​ (настройки в файле /​etc/​default/​console-setup)
 +<​code>​
 +/​dev/​tty[1-6]
 +UTF-8
 +Combined - Latin; Slavic and non-Slavic cyrillic
 +Let system select suitable font
 +8x16
 +</​code>​
 +
 +2.<​code>​sudo dpkg-reconfigure keyboard-configuration</​code>​ (настройки в файле /​etc/​default/​console-setup)
 +<​code>​
 +Generic 105-key (Intl) (выберите вашу клавиатуру)
 +Russian
 +Russian (выберите вашу раскладку)
 +Control+Shift (выберите шорткат для смены раскладки)
 +No temporary switch
 +The default for the keyboard layout
 +No compose key
 +</​code>​
 +3. <​code>​sudo vim /​lib/​systemd/​system/​console-setup.service</​code>​
 +
 +Заменить последнюю строку ​
 +<​code>​ExecStart=/​usr/​bin/​loadkeys /​etc/​console-setup/​cached.kmap.gz</​code>​
 +на
 +<​code>​ExecStart=/​bin/​setupcon</​code>​
 +4. <​code>​sudo reboot</​code>​
  
 ====== Вредные советы ====== ====== Вредные советы ======
-Поиск в сети порой дает ​и много костыльных советов на данную тему. Особенно часто встречаются два из них: \\ +Поиск в сети порой дает много костыльных советов на данную тему. Особенно часто встречаются два из них: \\ 
-1. костыль из костылей ​в виде setupcon прописанный ​в /​etc/​rc.local - мало того что костыль,​ да еще и не помогает ​почему-то ​иногда ​ :( \\ +1. костыль из костылей: "Прописать setupcon ​в /​etc/​rc.local" ​- мало того что это костыль,​ да еще и не помогает иногда :( \\ 
-2. совсем эпический по свойе безумности костыль - персональный пакет для русского языка в консоли - console-cyrillic !!! ...вызывает полное недоумение идея - "​под каждый язык на свете создавать персональный пакет для консоли",​ когда по дефолту в UTF8 кодировке и основных консольных шрифтах есть все, что нужно для поддержки практически любого языка (по крайней мере европейского).+2. совсем эпический по своей дебильности костыль - персональный пакет для русского языка в консоли - console-cyrillic !!! ...вызывает полное недоумение идея - "​под каждый язык на свете создавать персональный пакет для консоли",​ когда по дефолту в UTF8 кодировке и основных консольных шрифтах есть все, что нужно для поддержки практически любого языка (по крайней мере европейского)
 + 
 +Если вам попадаются такие советы,​ не поленитесь - объясните людям их глубокое заблуждение и отправьте на эту страницу.
  
 {{tag>​HOWTO Tips терминал "​Консоль"​ }} {{tag>​HOWTO Tips терминал "​Консоль"​ }}