Linux в консоли квадратики
После того, как у меня пару раз при загрузке грохнулась последняя версия Fedora, я решил пока перейти на Ubuntu, так как заниматься решением возникающих проблем сейчас времени нет ― слишком много работы, которую я должен завершить до выхода в отпуск. Unity на Gnome 3, как оказалось, меняется очень просто: путем установки Gnome 3 и удаления Unity+Unity-2D (в предшествующих версиях Ubuntu такие манипуляции приводили к некоторой нестабильности системы). Все бы хорошо, да возникла одна проблема.
Большинство операций я привык делать через консоль, которая вызывается нажатием ALT+CTRL+F(1/6). В Ubuntu 12.04 же это оказалось не очень-то удобно из-за того, что в консоли по какой-то причине не отображалось ничего, кроме латинских букв и спецсимволов, все же остальное превращалось в белые квадратики. «Или шрифт не поддерживает кириллические символы, или проблемы с кодировкой», ― подумал я.
В Интернете часто встречаются сообщения о такой проблеме. Некоторым помогала установка пакета console-cyrillic, однако в моем случае после этого вообще ничего не произошло. Помогает только исполнение следующей команды:
В вики русского сообщества Ubuntu, как оказалось, достаточно много всего интересного. Среди этого интересного нашлось и решение моей ужасной проблемы :
UPD: Квадратики во время загрузки таки пропали после того, как я повторно запустил dpkg-reconfigure console-setup, так что проблема, можно сказать, полностью решена.
Поддержка русского языка в консоли
Содержание
В 15.10 изменена система загрузки (sustemd) и описанное ниже средство не помогает. Смотрите раздел Решение для ubuntu 15.10 и более поздних.
Почему в консоли квадратики вместо русских букв?
Многие замечали, что из версии в версию в Ubuntu у некоторых слетают русские фонты в консоли (куда можно попасть нажав CTRL+ALT+F1 — F6, а CTRL+ALT+F7 возвращает в графическую среду). Озаботившись причинами почему это происходит я (Sly_tom_cat) облазил кучу мест в поисках решения. Залез и в initrd и смотрел в скрипты upstart и в UDEV… что ни правил — не помогает. Особо порадовал комментарий разработчиков в одном из скриптов Udev 1) . Cуть там примерно такова: «надо бы делать как-то так, но мы попробовали — у нас не вышло. Так что, делаем как получится, а если юзерам нужны нормальные фонты — пускай выполнят setupcon и все будет Ok»
Но все-таки нет такого решения, которого не найти в Интернете. Причем нашел я его даже по русски 2)
Как же правильно лечить больного?
Оказывается, всего навсего, нужно включить поддержку фреймбуфера на этапе инициализации ядра. Это в свою очередь разрешит выполнение нужных скриптов, которые загрузят фонты на самом раннем этапе инициализации ядра.
Для этого:
1. в любом текстовом редакторе с правами рута нужно в файл /etc/initramfs-tools/initramfs.conf добавить строчку FRAMEBUFFER=Y. Это также можно сделать выполнив следующие команды:
2. Обновить образ рамдиска периода инициализации ядра (initrd):
Поле этих манипуляций наконец начнут работать настройки сделанные командой 3) :
Кириллическими фонтами будет показываться все с самого начала — т.е. даже запрос на проверку дисков (возникающий в процессе инициализации ядра) будет выводится кириллицей, а не квадратами.
Возможно потребуется так же настроить и клавиатуру (раскладки, переключение раскладок и compose-key) 4) :
Кому интересно — «откуда ноги растут».
Покопавшись глубже можно обнаружить следующее:
В initrd/scripts/init-top/ лежат скрипты выполняющиеся в самом начале процесса инициализации ядра. И там мы видим все, что могло бы потребоваться для поддержки «правильных» фонтов
Но, если заглянуть в файлы console_setup, keymap и framebuffer то в самом начале скрипта мы увидим такую строчку:
А покопавшись в скриптах инициализации можно понять, что OPTION обрабатывается так, что если значение переменной (что ей присвоено) не задано или не Y, то выполнение самого скрипта пропускается. Т.е. в нашем случае, если FRAMEBUFFER не равно Y, то ни один из скриптов, отвечающих за поддержку фонтов и раскладок клавиатуры, попросту не будут выполнятся в процессе инициализации ядра.
Но без FRAMEBUFFER не возможно загрузить шрифты с поддержкой национальных символов!
Примечательно то, что настройки раскладок клавиатуры все-таки будут применены в процессе загрузки ОС (уже после инициализации ядра). За это отвечает скрипт console-setup системы инициализации upstart, а вот консольные фонты скрипты upstart не настраивают.
Однако, это совсем не объясняет почему подобная проблема возникает не у всех. И как оказывается — она вылезает у любителей оптимизации системы, да еще и у пользователей серверной версии Ubuntu…
Что можно увидеть в любой инструкции по повышению скорости загрузки ОС?
Правильно — «уберите заставку при загрузке»: в файле /etc/default/grub в переменной GRUB_CMDLINE_LINUX_DEFAULT значение splash замените на nosplash или просто уберите) и выполните sudo update-grub. Ну, а пользователи серверной версии Ubuntu по умолчанию обделены таким «счастьем», как графическая заставка во время загрузки.
Так вот, оказывается, разработчики решили, что фреймбуфер нужен для рисования заставки и … и только для этого. Больше (оказывается) он никому, ни зачем, не нужен. Поэтому, если заставку рисуем — то фреймбуфер разрешаем (а то как же — без него же не нарисовать заставку), а если заставку не рисуем, то и фреймбуфер включать незачем, не включаем…. Нет, позже, после инициализации ядра, фреймбуфер все-таки где-то активируется, но поезд уже ушел — фонты на этапе иницализации ядра не загрузились…. «а кому надо — те пусть вызывают setupcon …»
Решение для ubuntu 15.10 и более поздних
В Ubuntu 15.10 имеется неисправленный баг с настройкой локали https://bugs.launchpad.net/ubuntu/+source/console-setup/+bug/1511975. Поэтому для настройки русского языка необходимо проделать следующее 1.
(настройки в файле /etc/default/console-setup)
(настройки в файле /etc/default/keyboard)
Заменить последнюю строку
Вредные советы
Поиск в сети порой дает много костыльных советов на данную тему. Особенно часто встречаются два из них:
1. костыль из костылей: «Прописать setupcon в /etc/rc.local» — мало того что это костыль, да еще и не помогает иногда 🙁
2. совсем эпический по своей дебильности костыль — персональный пакет для русского языка в консоли — console-cyrillic . …вызывает полное недоумение идея — «под каждый язык на свете создавать персональный пакет для консоли», когда по дефолту в UTF8 кодировке и основных консольных шрифтах есть все, что нужно для поддержки практически любого языка (по крайней мере европейского).
Если вам попадаются такие советы, не поленитесь — объясните людям их глубокое заблуждение и отправьте на эту страницу.
белые квадратики вместе русских букв Debian 8
Всем привет , поставил дебиан 8 и столкнулся с проблемой — в консоле, вместо русских букв вижу белые квадратики . Подскажите в чем может быть проблема именно в этой версии Дебиана ?
В tty? Скорее всего шрифт консоли без кириллических глифов.
в jessie так оно и есть, а в stretch уже исправили, лично мне квадратики не мешают — забейте на них болт.
там кроме UTF-8 нечего ловить — оно и так по умолчанию.
UTF-8 — это кодировка, которая будет использоваться консолью при чтении stdin-выводе в stdout. Но благодаря наследию VGA 80-х годов, в текстовую консоль без иксов видеокарточка может рисовать только 256 различных глифов. Какие именно — тебе предстоит выбрать на следующем шаге.
У меня, например, выбран Cyrillic KOI8-R and KOI8-U, это значит, что в видеодрайвере окажутся глифы, входящие в эту кодировку, т.е. латинские и кириллические. Это совершенно не значит, что консоль будет использовать KOI8-R, просто она сможет отображать символы из этой кодировки.
Можешь потом дать команду showconsolefont — она тебе выведет все возможные глифы.
Спасибо, не знал этой особенности. Всегда выбираю Cyrillic (non-slavic) и обычно всё хорошо работает.
ТСС!! А то ещё немного и свидетели KOI припрутся! ЧУР! ЧУР!
Спасибо ! Выбрал Cyrillic KOi8-R and Koi8-U и больше никаких квадратиков! ) версия tty
После перезагрузки все слетело , как сохранить изменения?
Кракозябры в консоли Ubuntu/Debian
Если у вас в один прекрасный день в консоли вместо русских букв появились всякие не понятные символы, как например квадратики, не переживайте, так как это легко исправляется. Кстати, такие символы на сленге называются — кракозябры.
Кракозя́бры (крякозя́бры) — жаргонизм, обозначающий бессмысленный с точки зрения читателя набор символов, чаще всего получаемый на компьютере в результате неправильного перекодирования осмысленного текста. В единственном числе — вообще любой компьютерный символ, для которого в русском языке нет общеизвестного названия, например, значок @. Чаще всего кракозябры образуются на выводе программ по причине неправильно настроенной кодировки символов, а также из-за использования неподходящего шрифта.
Пара примеров из того же Wiki:
А теперь перейдём к решению.
Для редактирования отображения симвлов в консоли существует специальный конфигуратор который запускается такой командой:
Далее все действия производятся в консольном графическом конфигураторе простым выбором необходимых пунктов с помощью кнопок вверх, вниз и “Enter”.
Выбираем кодировку — UTF-8 :
Выбираем таблицу символов — Кирилица — славянские языки (5 пункт):
Выбираем шрифт — Fixed или TerminusBold :
Выбираем размер шрифта — 8×16 :
Для того, чтобы наша настройка не слетела после перезагрузки нужно проделать следующее:
В открывшемся текстовом файле находим exit 0 и над этой строкой пишем:
Если эта статья помогла вам, пожалуйста, оставьте комментарий
Спасибо за прочтение!
Если этот пост помог вам, и вы хотели бы показать свою поддержку, подумайте о том, чтобы заправить будущие посты, купив мне чашку кофе!