Предыстория, - копипаст отсюда:
https://forum.altlinux.org/index.php?topic=36177.msg276022#msg276022https://forum.altlinux.org/index.php?topic=36177.msg276026#msg276026Кто-то спрашивал на форуме, можно ли старым машинкам сидеть на сизифе, будущем p8.
Нарисовалось вот что:
Долго рассматривал ядро led-vs в связи с проблемой кулера и рандомного ступора приводящему вплоть до SysRq на 4-тых сизифных ядрах.
Первое положительное впечатление от led-vs:
- При выходе из спячки нет большой задержки на окне предупреждения, кулер уходит в лёгкий пик и тут же сбрасывает обороты, показания 'acpi -t' всегда в норме, т.е. всё как надо;
- В отличие от ядра led-ws (p7), нет бага со сменой разрешения экрана.
На update-kernel ядро подтянет один модуль:
Следующие НОВЫЕ пакеты будут установлены:
kernel-image-led-vs#3.15.10-alt8 kernel-modules-drm-led-vs#3.15.10-alt8
Всё остальное надо вворачивать руками:
*sound* - алсовые модули, *video* - intelfb
$ rpm -qa|grep led-vs
kernel-modules-drm-led-vs-3.15.10-alt8
kernel-modules-video-led-vs-3.15.10-alt8
kernel-image-led-vs-3.15.10-alt8
kernel-modules-sound-led-vs-3.15.10-alt8
$ uname -r
3.15.10-led-vs-alt8
$ cat /etc/altlinux-release
ALT Linux Sisyphus (unstable)
Но с разбегу ударился об стену - вместо виртуальных терминалов, чёрный фон:
Фреймбуфер
# fbset
mode "1024x768"
geometry 1024 768 1024 768 32
timings 0 0 0 0 0 0 0
accel true
rgba 8/16,8/8,8/0,0/0
endmode
Но геометрия виртуальных терминалов в знакоместах выглядит так (4-й виртуальный терминал):
готовим чтобы увидеть поле виртуального терминала
Для пробного просмотра
# cat /dev/vcs4 > vcs4.txt
Длинна строки в символах определялась вслепую, по позиции первых символов в строках с Welcome.to и comp-pentium -- фразы идут одна за другой построчно и начинаются с начала строки.
Когда размер по X в знакоместах виртуального терминала был определён, на строки нарезалось со вставкой кода перевода строки, - здесь 80, это длина строки окна виртуального терминала
# fold -w 80 /dev/vcs4 > vcs4.txt
Потом создавалась копия для обработки
# cp vcs4.txt vcs4-2.txt
по которой прошёлся sed, чтобы увидеть пробелы во всём поле виртуального терминала и определить геометрию виртуального терминала в знакоместах
# sed -i 's/ /\./g' vcs4-2.txt
Т.е. невидимое поле виртуального терминала в знакоместах -- каждая точка - знакоместо, набор был вслепую:
# cat vcs4-2.txt
................................................................................
Welcome.to.ALT.Linux.Sisyphus.(unstable)./.tty4.................................
comp-pentium-m-e6b072.login:.pcuser.............................................
Password:.......................................................................
Last.login:.Wed.Jan.20.21:33:40.MSK.2016.from.localhost.on.tty4.................
[pcuser@comp-pentium-m-e6b072.~]$...............................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
Т.е. поле виртуального терминала, это поле 80x25 знакомест.
А размер символа составляет
# echo $((1024/80))x$((768/25))
12x30
на поле 80x25 знакомест при размере фреймбуфера 1024x768 для которого в знакоместах поле должно быть:
# echo $((1024/8))x$((768/16))
128x48
8 и 16 это матрица символа фонта для виртуальных терминалов
# cat /etc/sysconfig/consolefont
SYSFONT=UniCyr_8x16
Подсмотреть в комментарии негде - конфиг пустой
# cat /etc/sysconfig/console/setterm
#
Кириллические фонты в системе
# find /lib -name "UniCyr*"
/lib/kbd/consolefonts/UniCyr_8x16.psf.gz
/lib/kbd/consolefonts/UniCyr_8x14.psf.gz
/lib/kbd/consolefonts/UniCyr_8x8.psf.gz
/lib/kbd/consolefonts/UniCyrExt_8x16.psf.gz
Надо как-то смотреть как виртуальному терминалу возвращается установками его размер в знакоместах.
Ткнул бы кто носом туда где не увидел или сморозил. Сходу пока не вижу. Был бы безмерно благодарен. И ядро led-vs можно было бы использовать смело. А старые машинки скорее всего могли бы продолжать жить на p8. Это по крайней мере грубыми прикидками на nx6110 с сизифным led-vs.
# lspci -k|grep -A2 VGA
00:02.0 VGA compatible controller: Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller (rev 03)
Subsystem: Hewlett-Packard Company NX6110/NC6120
Kernel driver in use: i915
# fbset -db /etc/fb.modes
mode "1024x768"
geometry 1024 768 1024 768 32
timings 0 0 0 0 0 0 0
accel true
rgba 8/16,8/8,8/0,0/0
endmode
# fbset -i -v
Linux Frame Buffer Device Configuration Version 2.1 (23/06/1999)
(C) Copyright 1995-1999 by Geert Uytterhoeven
Opening frame buffer device `/dev/fb0'
Using current video mode from `/dev/fb0'
mode "1024x768"
geometry 1024 768 1024 768 32
timings 0 0 0 0 0 0 0
accel true
rgba 8/16,8/8,8/0,0/0
endmode
Getting further frame buffer information
Frame buffer device information:
Name : inteldrmfb
Address : 0xc0020000
Size : 3145728
Type : PACKED PIXELS
Visual : TRUECOLOR
XPanStep : 1
YPanStep : 1
YWrapStep : 0
LineLength : 4096
Accelerator : No
# grep -H FRAMEBUFFER /boot/config-*
/boot/config-3.15.10-led-vs-alt8:CONFIG_FRAMEBUFFER_CONSOLE=m
/boot/config-3.15.10-led-vs-alt8:CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
/boot/config-3.15.10-led-vs-alt8:CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
/boot/config-4.4.0-un-def-alt1:CONFIG_FRAMEBUFFER_CONSOLE=y
/boot/config-4.4.0-un-def-alt1:CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
/boot/config-4.4.0-un-def-alt1:CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
В ядрах *-def стоит в yes
CONFIG_FRAMEBUFFER_CONSOLE=y
РешениеСуть решения:
http://www.gentoo.ru/node/22234#comment-163635
в вики же черным по белому написано
If you have blackscreens on boot, it may be because you've built both Framebuffer Console support and the i915 driver (with KMS enabled) as modules. i915 loads & enables KMS, but fbcon never loads so nothing is displayed.
смените
CONFIG_FRAMEBUFFER_CONSOLE=m
на
CONFIG_FRAMEBUFFER_CONSOLE=y
http://gentoo-en.vfose.ru/wiki/Intel_GMA#Blackscreen
Blackscreen
If you have blackscreen on boot, it may be because you've built both Framebuffer Console support and the i915 driver (with KMS enabled) as modules. The blackscreen is a result of the i945 driver probing for displays before the fbcon module is loaded. As it can't find any console display(because the fbcon driver isn't loaded yet) it simply turns it off.
To solve this you have to set the fbcon module to load at boot:
File: /etc/conf.d/modules
modules="fbcon"
i915 это KMS-драйвер.
Здесь ранее модуль fbcon
# rpm -qf $(find /lib/modules/3.15.10-led-vs-alt8/ -name "*fbcon.ko")
kernel-image-led-vs-3.15.10-alt8
не был загружен
led-vs :
# lsmod
Module Size Used by
msr 1508 0
uinput 4528 0
michael_mic 1224 4
arc4 1256 2
ecb 1064 0
lib80211_crypt_tkip 4944 1
lib80211_crypt_ccmp 2808 1
ipv6 211178 16
cpufreq_stats 2136 0
af_packet 18096 2
dm_mod 55863 0
ohci_pci 1668 0
ohci_hcd 13582 1 ohci_pci
pcmcia 23060 0
mousedev 6548 0
hp_wmi 4860 0
sparse_keymap 1817 1 hp_wmi
sdhci_pci 9088 0
sdhci 16570 1 sdhci_pci
mmc_core 58128 2 sdhci,sdhci_pci
ppdev 3804 0
snd_intel8x0 18636 1
yenta_socket 13812 0
pcmcia_rsrc 6433 1 yenta_socket
firewire_ohci 20772 0
firewire_core 32346 1 firewire_ohci
snd_ac97_codec 68581 1 snd_intel8x0
ac97_bus 576 1 snd_ac97_codec
snd_pcm 43836 2 snd_ac97_codec,snd_intel8x0
snd_timer 10802 1 snd_pcm
snd 32012 6 snd_ac97_codec,snd_intel8x0,snd_timer,snd_pcm
soundcore 3156 1 snd
led_class 1751 1 sdhci
pcmcia_core 7578 3 pcmcia,pcmcia_rsrc,yenta_socket
tifm_7xx1 2520 0
microcode 7277 0
crc_itu_t 1007 1 firewire_core
tifm_core 2798 1 tifm_7xx1
pcspkr 1036 0
ipw2200 99620 0
libipw 16391 1 ipw2200
psmouse 57032 0
lib80211 2287 4 lib80211_crypt_ccmp,lib80211_crypt_tkip,libipw,ipw2200
cfg80211 131619 2 libipw,ipw2200
lpc_ich 11400 0
rfkill 5843 3 cfg80211,hp_wmi
sr_mod 10175 0
led_triggers 3153 3 mmc_core,rfkill,led_class
mfd_core 1980 1 lpc_ich
led_core 1084 2 led_triggers,led_class
regulator 25067 3 mmc_core,sdhci,mfd_core
cdrom 23617 1 sr_mod
8250_pci 23927 0
thermal 9416 0
fan 1556 0
wmi 5483 1 hp_wmi
battery 5344 0
parport_pc 21733 0
parport 20824 2 ppdev,parport_pc
8250 23165 1 8250_pci
serial_core 13739 1 8250
tpm_infineon 4100 0
uhci_hcd 14160 0
ehci_pci 2472 0
ehci_hcd 27620 1 ehci_pci
tpm 14484 1 tpm_infineon
usbcore 106762 5 uhci_hcd,ohci_hcd,ohci_pci,ehci_hcd,ehci_pci
usb_common 1056 1 usbcore
acpi_cpufreq 4340 0
processor 18545 2 acpi_cpufreq
ac 2348 0
ext4 248930 3
crc16 995 1 ext4
mbcache 3981 1 ext4
jbd2 38246 1 ext4
ata_generic 2064 0
pata_acpi 1684 0
atkbd 10288 0
libps2 3011 2 atkbd,psmouse
serio_raw 2668 0
ata_piix 17876 4
i915 479866 2
libata 112628 3 pata_acpi,ata_generic,ata_piix
i2c_algo_bit 3430 1 i915
vga_switcheroo 5188 1 i915
drm_kms_helper 28207 1 i915
firmware_class 4126 4 drm_kms_helper,pcmcia,microcode,ipw2200
drm 157628 5 i915,drm_kms_helper
i2c_core 13358 4 drm,i915,drm_kms_helper,i2c_algo_bit
intel_agp 6400 0
intel_gtt 7385 3 i915,intel_agp
agpgart 17239 3 drm,intel_agp,intel_gtt
video 9030 1 i915
thermal_sys 13019 4 fan,video,thermal,processor
hwmon 1720 1 thermal_sys
evdev 6536 13
button 2986 1 i915
Если с
# grep FRAMEBUFFER_CONSOLE= /boot/config-3.15.10-led-vs-alt8
CONFIG_FRAMEBUFFER_CONSOLE=m
опробирование дисплея пройдёт при незагруженном модуле fbcon, в виртуальных терминалах получим чёрный экран (blackscreen), - терминалы приглашают к логину, но изображения не видно.
Чтобы исправить эту проблему, необходимо fbcon добавить в список загружаемых модулей
# echo fbcon >> /etc/modules
чтобы файл /etc/modules привести к виду
# cat /etc/modules
# /etc/modules: kernel modules to load at boot time.
#
# This file should contain the names of kernel modules that are
# to be loaded at boot time, one per line. Comments begin with
# a `#', and everything on the line after them are ignored.
button
fbcon
и тогда на последующей загрузке системы модуль fbcon загрузится,
# lsmod|grep fbcon
fbcon 26856 72
bitblit 3182 1 fbcon
fbcon_rotate 1390 1 bitblit
fbcon_ccw 3598 1 fbcon_rotate
fbcon_ud 3597 1 fbcon_rotate
fbcon_cw 3545 1 fbcon_rotate
softcursor 801 4 fbcon_cw,fbcon_ud,fbcon_ccw,bitblit
font 6928 1 fbcon
tileblit 1319 1 fbcon
а содержимое виртуальных терминалов отобразится.
В решении этой проблемы, огромная благодарность выражается:
- за наводку на решение проблемы, Хихину Руслану и русскоговорящим гентушниками ресурса www.gentoo.ru;
- англоговорящим гентушникам ресурса gentoo-en.vfose.ru за объяснение сути проблемы и решение.