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

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:russian_font_in_console [2015/04/30 22:55]
[Как же правильно лечить больного?]
wiki:russian_font_in_console [2019/03/16 23:41] (текущий)
[Решение для ubuntu 15.10 и более поздних]
Строка 1: Строка 1:
 ====== Поддержка русского языка в консоли ====== ====== Поддержка русского языка в консоли ======
-<note important>​Данная статья актуальна по крайней мере для тех, у кого нет поддержки русского в консоли в версиях *Ubuntu ​начиная ​с 11.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>В версиях 12.10 и 13.04 эта проблема вроде как была решена.</​note>​
Строка 15: Строка 17:
 ======= Как же правильно лечить больного?​ ======= ======= Как же правильно лечить больного?​ =======
  
-Оказывается,​ всего навсего,​ нужно включить поддержку фреймбуфера на этапе инициализации ядра.\\+Оказывается,​ всего навсего,​ нужно включить поддержку фреймбуфера на этапе инициализации ядра. Это в свою очередь разрешит выполнение нужных скриптов,​ которые загрузят фонты на самом раннем ​этапе инициализации ядра.\\
 Для этого:​\\ Для этого:​\\
 1. в любом текстовом редакторе с правами рута нужно в файл /​etc/​initramfs-tools/​initramfs.conf добавить строчку FRAMEBUFFER=Y. 1. в любом текстовом редакторе с правами рута нужно в файл /​etc/​initramfs-tools/​initramfs.conf добавить строчку FRAMEBUFFER=Y.
Строка 24: Строка 26:
 2. Обновить образ рамдиска периода инициализации ядра (initrd):\\ 2. Обновить образ рамдиска периода инициализации ядра (initrd):\\
 <​code>​sudo update-initramfs -u</​code>​ <​code>​sudo update-initramfs -u</​code>​
-Поле этих манипуляций наконец начнут работать настройки сделанные командой((эта команда,​ кстати,​ тоже инициализирует процесс ​перестроения ​initdr)): \\ +Поле этих манипуляций наконец начнут работать настройки сделанные командой((эта команда,​ кстати,​ тоже инициализирует процесс обновления ​initrd)): \\ 
 <​code>​sudo dpkg-reconfigure console-setup</​code> ​ <​code>​sudo dpkg-reconfigure console-setup</​code> ​
 Кириллическими фонтами будет показываться все с самого начала - т.е. даже запрос на проверку дисков (возникающий в процессе инициализации ядра) будет выводится кириллицей,​ а не квадратами.\\ Кириллическими фонтами будет показываться все с самого начала - т.е. даже запрос на проверку дисков (возникающий в процессе инициализации ядра) будет выводится кириллицей,​ а не квадратами.\\
Строка 44: Строка 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...\\
Строка 54: Строка 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/​keyboard)
 +<​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 nano /​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 терминал "​Консоль"​ }}