Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
wiki:russian_font_in_console [2012/09/14 00:40] [Почему в консоли квадратики вместо русских букв?] |
wiki:russian_font_in_console [2019/03/16 23:41] [Решение для ubuntu 15.10 и более поздних] |
||
---|---|---|---|
Строка 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> | ||
====== Почему в консоли квадратики вместо русских букв? ====== | ====== Почему в консоли квадратики вместо русских букв? ====== | ||
Строка 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/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 терминал "Консоль" }} |