Bug 5491

Summary: Кракозябры в виртуальной консоли
Product: [ROSA-based products] Certified ROSA distros Reporter: Vladimir Potapov <v.potapov>
Component: ---Assignee: Private ROSA Bugs <private-bugs>
Status: RESOLVED FIXED    
Severity: normal CC: a.lahin
Priority: Normal    
Version: unspecified   
Target Milestone: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Platform: --- ROSA Vulnerability identifier:
RPM Package: Upstream:

Description Vladimir Potapov 2015-05-06 18:13:21 MSK
Ctrl+F2
видим нормально русское приглашение
Переключаемся на русский с помощью caps lock и печатаем - получаем кракозябры
в vconsole.conf стоит ru4
Comment 1 Vladimir Potapov 2015-05-09 05:55:10 MSK
ROSA.DX64.Nickel.2.0.r10982

Теперь и в лайве, и в установленной системе кракозябры несмотря на правильные настройки vconsole.conf
Comment 2 Vladimir Potapov 2015-05-09 06:23:00 MSK
dracut -f проблему НЕ решает
Comment 3 Vladimir Potapov 2015-05-09 06:23:59 MSK
В запущенном mc - кракозябры вместо рамок
Comment 4 Vladimir Potapov 2015-05-09 17:35:13 MSK
*** Bug 4154 has been marked as a duplicate of this bug. ***
Comment 5 a.lahin 2015-05-13 15:03:59 MSK
Проблема связана с неоднократной инициализацией графической подсистемы.
Как выяснилось, драйверы инициализируют frame buffer повторно, после запуска systemd-vconsole-setup.
Таким образом, шрифты сбрасываются и больше не загружаются.
В качестве решения было опробовано правило:
SUBSYSTEM=="graphics", KERNEL=="fb[0-9]*", ACTION=="add", RUN+="/lib/systemd/systemd-vconsole-setup"

Повторная инициализация происходит корректно, но в некоторых случаях шрифт не загружается из-за того, что systemd-vconsole-setup перед копированием шрифта из tty0 в ttyX проверяет наличие соответствующих /dev/vcsX, а они ещё не созданы к моменты запуска systemd-vconsole-setup.

В более новой версии systemd привязка к vtcon:
https://github.com/systemd/systemd/blob/master/src/vconsole/90-vconsole.rules.in
ACTION=="add", SUBSYSTEM=="vtconsole", KERNEL=="vtcon*", RUN+="@rootlibexecdir@/systemd-vconsole-setup"

Но и это не помогает - лучшее решение - привязаться непосредственно к vcs*.
Минус - инициализация консолей будет происходить многократно: для vcs2, vcs3, ...
Пока решили оставить так.
Comment 6 a.lahin 2015-05-13 16:07:21 MSK
Исправлено в
https://abf.io/current/systemd/commit/edf93d3bbc1e46b06fdf7f531785e2762afe84e5
Comment 7 Vladimir Potapov 2015-05-22 07:54:52 MSK
В образе ROSA.DX64.Nickel.2.0.r11223 кракозябры присутствуют во всей красе.
Comment 8 a.lahin 2015-05-22 08:11:09 MSK
(In reply to comment #7)
> В образе ROSA.DX64.Nickel.2.0.r11223 кракозябры присутствуют во всей красе.

В какой конфигурации это происходит?
Реальная/виртуальная машина, с какими видеодрайверами?
Comment 9 Vladimir Potapov 2015-05-22 09:20:49 MSK
Реальная машина на нвидиа, на свободных драйверах (т.к. других в никеле просто нет)
Comment 10 a.lahin 2015-05-23 19:00:28 MSK
Судя по всему, проблема именно в xf86-video-nouveau.
Шрифт не загружается до тех пор, пока не произошло переключение в консоль.
Можно проверить так - подключиться по ssh и выполнить:
/lib/systemd/systemd-vconsole-setup
Затем переключиться в консоль tty2 и убедиться в том, что шрифт не загружен.
Если сразу после этого, так же, удалённо, выполнить:
/lib/systemd/systemd-vconsole-setup
То шрифт загружается успешно.

(можно использовать команду showconsolefont)

Похоже, что с этими драйверами шрифт загружается успешно, только когда включен текстовый режим.
Comment 11 a.lahin 2015-05-25 08:55:35 MSK
Последовательность событий при загрузке:

май 25 07:37:30 rosa-desktop kernel: Console: colour dummy device 80x25
май 25 07:37:30 rosa-desktop kernel: console [tty0] enabled

май 25 07:37:30 rosa-desktop kernel: simple-framebuffer simple-framebuffer.0: format=a8r8g8b8, mode=1024x768x32, linelength=4096
май 25 07:37:30 rosa-desktop kernel: Console: switching to colour frame buffer device 128x48
май 25 07:37:30 rosa-desktop kernel: simple-framebuffer simple-framebuffer.0: fb0: simplefb registered!

май 25 07:37:30 rosa-desktop : svs setup
май 25 07:37:30 rosa-desktop systemd[1]: Started Setup Virtual Console.

май 25 07:37:31 rosa-desktop : svs rules /devices/virtual/vc/vcs1


май 25 07:37:31 rosa-desktop systemd[1]: Starting Show Plymouth Boot Screen...
май 25 07:37:31 rosa-desktop systemd[1]: About to execute: /sbin/plymouthd --mode=boot --pid-file=/run/plymouth/pid --attach-to-session
май 25 07:37:31 rosa-desktop systemd[1]: Forked /sbin/plymouthd as 258
май 25 07:37:31 rosa-desktop systemd[257]: Executing: /bin/dracut-initqueue
май 25 07:37:31 rosa-desktop systemd[1]: plymouth-start.service changed dead -> start
май 25 07:37:31 rosa-desktop systemd[258]: Executing: /sbin/plymouthd --mode=boot --pid-file=/run/plymouth/pid --attach-to-session

май 25 07:37:31 rosa-desktop kernel: fb: conflicting fb hw usage nouveaufb vs simple - removing generic driver
май 25 07:37:31 rosa-desktop kernel: Console: switching to colour dummy device 80x25

май 25 07:37:31 rosa-desktop kernel: nouveau  [     DRM] allocated 1920x1200 fb: 0x70000, bo ffff880212778c00
май 25 07:37:31 rosa-desktop kernel: fbcon: nouveaufb (fb0) is primary device

май 25 07:37:31 rosa-desktop kernel: Console: switching to colour frame buffer device 240x75
май 25 07:37:31 rosa-desktop kernel:  sdc: sdc1 sdc2 sdc3 sdc4 sdc5
май 25 07:37:31 rosa-desktop kernel: sd 2:0:0:0: [sdc] Attached SCSI disk
май 25 07:37:31 rosa-desktop kernel: nouveau 0000:02:00.0: fb0: nouveaufb frame buffer device

май 25 07:37:56 rosa-desktop : svs rules /devices/virtual/vc/vcs9
май 25 07:37:56 rosa-desktop : svs rules /devices/virtual/vc/vcs1

май 25 07:38:01 rosa-desktop : svs rules /devices/virtual/vc/vcs2

май 25 07:38:01 rosa-desktop : svs rules /devices/virtual/vc/vcs5

май 25 07:38:01 rosa-desktop : svs rules /devices/virtual/vc/vcs6
май 25 07:38:01 rosa-desktop : svs rules /devices/virtual/vc/vcs3
май 25 07:38:01 rosa-desktop : svs rules /devices/virtual/vc/vcs4

В коде kbd/setfont.c есть проверка, отключающую загрузку шрифта в графическом режиме:
	if (!ioctl(fd, KDGETMODE, &kd_mode) && (kd_mode == KD_GRAPHICS))
	  {
	    /*
	     * PIO_FONT will fail on a console which is in foreground and in KD_GRAPHICS mode.
	     * 2005-03-03, jw@suse.de.
	     */
	    if (verbose)
	      printf("setfont: graphics console %s skipped\n", console?console:"");
	    close(fd);
	    return 0;
	  }
Comment 12 a.lahin 2015-05-25 09:56:17 MSK
Проблема в том, что устройства vcsX появляются, когда уже включен графический режим и шрифт уже не загружается.
Если же шрифт загружать раньше, на этапе появления устройства vtcon*, как сделано здесь: http://lists.freedesktop.org/archives/systemd-devel/2015-February/028740.html
Тогда устройства vcsX оказываются не готовы, и font_copy_to_all_vcs не срабатывает.

В качестве решения можно выполнять /lib/systemd/systemd-vconsole-setup и при появлении vtcon (тогда шрифты будут загружены в tty0), и при появлении vcsX (шрифт не будут загружатьс в tty0, но будут успешно копироваться в vcsX).

В идеале решение должно быть более точным.
Comment 13 a.lahin 2015-05-25 10:52:55 MSK
Исправлено в https://abf.io/current/systemd/commit/29fd630804ac4541f0fa4bae7a6ada0ec37ba509
Comment 14 Vladimir Potapov 2015-05-25 10:53:51 MSK
(In reply to comment #12)
загружатьс в tty0, но будут успешно копироваться в vcsX).
> 
> В идеале решение должно быть более точным.
Т.к. иногда все же "само" работает, дело скорее всего в порядке сервисов.
Comment 15 a.lahin 2015-05-25 12:47:43 MSK
Должно быть исправлено в образе 11297:
http://file-store.rosalinux.ru/api/v1/file_stores/35a4c99586bcca4c98c072255610c0611a5f5ef5
Comment 16 a.lahin 2015-05-25 12:49:27 MSK
Версия systemd с исправлением: 208-53.20141106.18
Comment 17 Vladimir Potapov 2015-05-26 18:33:37 MSK
ROSA.DX64.Nickel.2.0.r11307
Версия systemd соответствует. Ошибка присутствует :-(
Comment 18 a.lahin 2015-05-26 18:40:29 MSK
При загруз(In reply to comment #17)
> ROSA.DX64.Nickel.2.0.r11307
> Версия systemd соответствует. Ошибка присутствует :-(

При загрузке непосредственно с образа проблема наблюдается?
Comment 19 Vladimir Potapov 2015-05-26 18:53:05 MSK
Да. Приграшение там аглицкое, а если дальше переключиться - кракозябры
Comment 20 a.lahin 2015-05-26 19:37:55 MSK
При загрузке Live-системы с образа 11330 на машине с видеокартой nvidia не наблюдаю проблемы.
Загружается рабочий стол, переключаюсь на tty2, написано по-русски "логин".
Comment 21 Vladimir Potapov 2015-05-26 19:43:47 MSK
От периферии зависят задержки. У меня две вайфай карты, две сетевухи, винт+SSD, туча рос на этих дисках - в результате иной порядок загрузки сервисов.
Comment 22 a.lahin 2015-05-26 19:45:46 MSK
И поэтому приглашение становится английским?
Что-то ещё влияет, надо разобраться, если мы хотим закрыть эту ошибку.
Comment 23 Vladimir Potapov 2015-05-26 19:48:43 MSK
(In reply to comment #21)
> От периферии зависят задержки. У меня две вайфай карты, две сетевухи,
> винт+SSD, туча рос на этих дисках - в результате иной порядок загрузки
> сервисов.

Гм, проверил этот лайв на ATI карте ноута lenovo g570.
Тоже кракозябры.
Может, из-за того что я Иркутск выбираю?
Comment 24 Vladimir Potapov 2015-05-26 19:49:05 MSK
(In reply to comment #22)
> И поэтому приглашение становится английским?
> Что-то ещё влияет, надо разобраться, если мы хотим закрыть эту ошибку.

Аглицкий из-за того, что я в EFI гружусь.
Comment 25 a.lahin 2015-05-26 19:58:28 MSK
(In reply to comment #24)
> (In reply to comment #22)
> > И поэтому приглашение становится английским?
> > Что-то ещё влияет, надо разобраться, если мы хотим закрыть эту ошибку.
> 
> Аглицкий из-за того, что я в EFI гружусь.

Есть возможность проверить то же самое при загрузке не в EFI?
Comment 26 Vladimir Potapov 2015-05-27 03:12:04 MSK
(In reply to comment #25)
> (In reply to comment #24)
> > (In reply to comment #22)
> > > И поэтому приглашение становится английским?
> > > Что-то ещё влияет, надо разобраться, если мы хотим закрыть эту ошибку.
> > 
> > Аглицкий из-за того, что я в EFI гружусь.
> 
> Есть возможность проверить то же самое при загрузке не в EFI?
Да, проверил. Теперь кракозябры сразу  - приглашение пытается быть русским.
Comment 27 Vladimir Potapov 2015-05-29 20:46:12 MSK
11390 - кракозябры живы
Comment 28 a.lahin 2015-06-02 07:14:32 MSK
Должно быть исправлено в образе 11456: http://file-store.rosalinux.ru/api/v1/file_stores/1d1baf0375c1586128f8f62cbe4747e897ef693a

plymouth 0.8.9-15
Comment 29 Vladimir Potapov 2015-06-02 11:54:19 MSK
В 11456 исправлено!