воскресенье, 29 мая 2011 г.

Отображение русского в консоли Ubuntu 11.04 Natty

Как заметил один мой знакомый: русификация консоли слетает в Ubuntu через версию. Видимо 10.04 она тоже слетала, а теперь пришла очередь 11.04. Пока возился с настройками после обновления, ненадолго застрял в консоли и обнаружил, что вместо русских букв там теперь квадратики. Выяснение причин вскрыло абсолютно раздолбайское отношение разработчиков к консоли. Я конечно понимаю, что она нужна абсолютному меньшинству пользователей. И все же это место, где мы обычно оказываемся, когда все остальное уже не работает.

В общем, если вас коснулась эта проблема и вам, надо срочно привести консоль в рабочее состояние предлагаю делать следующее:

  • Установить или удостовериться в наличии необходимых пакетов:

    env LANG=C sudo aptitude install console-setup keyboard-configuration
  • Выполнить настройку консоли (или перенастройку):

    env LANG=C sudo dpkg-reconfigure console-setup
    sudo dpkg-reconfigure keyboard-configuration
  • Включить настройку консоли при загрузке. Для этого в файл /etc/initramfs-tools/initramfs.conf необходимо добавить параметр FRAMEBUFFER=Y

  • Обновить initramfs, чтобы в него добавились нужные скрипты:

    sudo update-initramfs -u

Для тех кому интересны подробности

Корень проблем видимо в непрекращающейся глобальной переделке процесса начальной загрузки. До Natty за настройку шрифтов в консоли отвечал скрипт /etc/init.d/console-setup.sh, но в Natty его наконец переделали в upstart job /etc/init/console-setup.conf. Однако, по дороге из него исчезли все упоминания о настройке шрифтов в консоли. Там нет ни одного вызова setupcon. Настраивать шрифты в консоли теперь просто некому.

Кстати, тупо добавлять вызов setupcon в console-setup.conf все равно не выход (#668812). В результае настраивается только одна консоль, а надо все. Соответствующим скриптом видимо никто не озадачивался. Патч по идее будет тривиальный.

В принципе, решение убрать setupcon из init было, возможно, верным. Консоль может быть настроена раньше, еще до запуска upstart. За этот этап отвечает initramfs-tools, который использует скрипты console-setup. Однако, разработку этого пакета шарахает из стороны в сторону и похоже давно. Баги плодятся, но не похоже, чтобы их кто-то решал исправлял. Сейчас багов около 400.

Где-то в районе версии 0.94 (Maverik), настройку консоли и framebuffer из initramfs выкинули, а потом в версии 0.98 (Natty) включили обратно, но по-умолчанию отключили, и, докучи, забыли задокументировать произведенные изменения (#789141).

Так что в результате, настройка шрифтов консоли оказалась отключеной и все языки использующие не английский набор символов, теперь отображаются, как бог на душу положит, вплоть до ручного запуска setupcon.

20 коммент.:

  1. "Я конечно понимаю, что она нужна абсолютному меньшинству пользователей."

    Ну в Ubuntu может быть. А если у нас Ubuntu Server? Где в наличии только консоль :). А проблема там ровна та же.

    Спасибо за заметку! Вылетело из головы название пакета который надо пересобрать... вы помогли.

    ОтветитьУдалить
  2. АнонимныйJun 10, 2011 10:16 AM

    не сработало

    ОтветитьУдалить
  3. АнонимныйJun 10, 2011 10:58 AM

    интересный факт! поставил на vortualbox ubuntu 11.04. русские папки отображаются квадратиками. по запрос -locale -a нет ни слова о RU. выключаем машину, в настройках ставим 55мегабайт ОЗУ, включаем. ловим глюки (так и надо)... затем выключаем машину, возвращаем обьем ОЗУ (64+ метра) и до следующей перезагрузке все папки и файлы с русским именем отлично отображаются. проверенно на 4 разных компах с разными версиями базовой ОС, но все на виртуалбоксе. т.е. не меняя никаких настроек, после искусственных глюков на 1 сеанс все становится впорядке. кто сможет обьяснить - буду благодарен, art-kom07@mail.ru

    ОтветитьУдалить
  4. Для тех у кого не сработало. Если не трудно, проверьте вот что. В каталоге /boot должен быть образ initramfs для вашего ядра, например initrd.img-2.6.38-8-generic-pae. Все описанные в статье действия имеют целью добавление в init-top скриптов отвечающих за настройку консоли.

    В моем случае:

    cat /boot/initrd.img-2.6.38-8-generic-pae | gunzip -c - | cpio -t | grep init-top

    scripts/init-top
    scripts/init-top/bootchart
    scripts/init-top/ORDER
    scripts/init-top/console_setup <--- нам нужен этот
    scripts/init-top/plymouth
    scripts/init-top/blacklist
    scripts/init-top/framebuffer
    scripts/init-top/all_generic_ide
    scripts/init-top/brltty
    scripts/init-top/udev
    scripts/init-top/keymap

    Если на вашей системе скрипта console_setup нет, работать не будет. Надо разбираться куда скрипт делся.

    Другое дело. если скрипт есть, но не работает. Тоже надо разбираться, я могу предположить, что дело вдрайвере framebuffer. У меня на машине с видео-картой ATI пришлось делать то, что описано в статье. На другой машине с Nvidia файлы появились сами, каким-то
    магическим образом. Вполне допускаю, что где-то и наличие setupcon не поможет.

    Нужны подробности.

    ОтветитьУдалить
  5. Последним действием должно быть выполнение

    sudo update-initramfs -u

    В противном случае, система не добавит в initrd информацию об активированном framebuffer.

    ОтветитьУдалить
  6. Кстати да. Мой косяк. Спасибо за обнаруженную ошибку. Пойду поправлю.

    ОтветитьУдалить
  7. Уже есть обновление в репозитарии. После инсталяции сервера - сразуже установите обновления - и будет Вам счастье.

    ОтветитьУдалить
  8. Поспешил :-(

    После перезагрузки... опять "грабли".

    Сразу же сделал рестарт /etc/init.d/console-cyrillic
    - кириллица появилась.

    ОтветитьУдалить
  9. (я не специалист в этом, поэтому сделал всё как обезъяна)
    После перезагрузки русский пропал
    dpkg-reconfigure console-setup - отвечал что предлагали
    dpkg-reconfigure keyboard-configuration - тоже самое

    initrd.img-2.6.38-8-generic-pae - подобных файлов два, initrd.img-2.6.38-10-generic-pae - после настройки дата модификации меняется именно у этого

    Система под vmware server 1.0.10

    ОтветитьУдалить
  10. помогло http://m0hn.blogspot.com/2011/05/ubuntu-server-1104.html

    обновлялся до изменений из репозитария
    apt-get update
    apt-get updgrade
    apt-get dist-upgrade

    ОтветитьУдалить
  11. Автор какой-то извращенный метод тут изобрел.
    Который между прочем у половины не работает, у второй половины работает через анус.
    Вот рабочий и гораздо более простой метод:


    После установки русской версии Ubuntu-Server 11.04 появилась проблема. Все что написано на кириллице отображалось в виде квадратиков. Правки вносимые в файл /etc/default/console-setup, отвечающий за консоль не приводили к результатам. Было найдено решение:

    Устанавливаем пакет console-cyrillic

    sudo apt-get install console-cyrillic

    Добавляем в /etc/rc.local строку:

    /etc/init.d/console-cyrillic start

    Далее перезагружаем:

    sudo reboot

    Готово!

    ОтветитьУдалить
  12. АнонимныйAug 20, 2011 02:27 PM

    Slevin, как раз твое решение - через анус.

    ОтветитьУдалить
  13. У меня заработало как в статье, но стоит добавить заметку, что к времени настройки фреймбуфер уже должен работать.

    например в файле /etc/default/grub стоять параметр vga=0x317 и выполнена перегенерация скриптов граб sudo update-grub.

    У меня на виртуалбоксе вреймбуфер не завелся из коробки.
    Автору большое спасибо!!! Самое ценное в заметке разъяснения!!! А то тупые манулы сделать так, а потом не работает уже достали.

    ОтветитьУдалить
  14. Посмотрел на свой пост и понял, что стоит добавить
    приведенный пример с разрешением соответствует 1024x768X24bit. Остальные разрешения и полную инструкцию смотреть здесь http://www.truediamon.ru/content/vkljuchenie-framebuffer-v-ubuntu

    ОтветитьУдалить
  15. АнонимныйNov 16, 2011 04:11 AM

    Работает! Спс! =)

    ОтветитьУдалить
  16. АнонимныйNov 28, 2011 05:30 AM

    Ubuntu 11.10 Server - работает.

    Автору большое спасибо. Статью в закладки.

    ОтветитьУдалить
  17. АнонимныйNov 30, 2011 11:00 AM

    Спасибо.
    Но перенастройку пакетов проводить не объязательно.

    ОтветитьУдалить
  18. АнонимныйFeb 7, 2012 01:23 PM

    Спасибо за подсказку, все изрыл и облазил, везде впихивал загрузку фонтов - не помогало никак.
    FRAMEBUFFER=Y помогло, а когда глубже копнул, по подсказке, накопал еще много интересного, что изложил в статейке на другом ресурсе: http://help.ubuntu.ru/wiki/russian_font_in_console

    Спасибо!

    PS console-cyrillic - RIP, и не жалко - этот костыль - не нужен.

    ОтветитьУдалить
  19. АнонимныйFeb 8, 2012 08:40 AM

    спасибо за самый быстрый и правильный способ

    ОтветитьУдалить