LinuxForum.Fans
Тема

Блоб nvidia и uvesafb

Автор: SergMarkov 24 сообщений 8491 просмотров
#243699

Как их вместе использовать, то бишь включить и далее, и чем чревато
Включать в lilo.conf вот это как то стремно,

text

# VESA framebuffer console @ 1024x768x64k
#vga=791

правь его потом с livecd в случае чего

#243717
"SergMarkov" написал:
Как их вместе использовать, то бишь включить и далее, и чем чревато

никак увы, т.е. включить то ты включишь, но эффекта будет ноль, ей(ювесе) нужен костыль v86d который непойми как и через что работает( у меня вообще не хочет вовремя стартовать) и т.д. и т.п.
если тебе нужна графическая консоль есть решение, но сайт с его описанием уже с пол-года умер. Вот вариант - тыц

#243720
gramozeka написал:

если тебе нужна графическая консоль есть решение, но сайт с его описанием уже с пол-года умер. Вот вариант - тыц

Thanks. Опробованный вариант, а то "на кошках потренироваться" как не получается ?:-)

#243776
gramozeka написал:
ей(ювесе) нужен костыль v86d который непойми как и через что работает( у меня вообще не хочет вовремя стартовать) и т.д. и т.п.

У гентушников нарыл что надо пересобирать под него ядро с
CONFIG_INITRAMFS_SOURCE="/usr/share/v86d/initramfs

Может оно ?

#243866
"SergMarkov" написал:
Может оно ?

да оно, только стоит крепко курнуть(да-да совсем не табака!) чтобы проделать сей финт ушами в Слаке, прочти внимательно последовательность действий - да за такие извращения убивать нужно из рогатки колотым горохом...
... и таки да - вся эта пляска с тухлым членом мамонта всё равно не принесет ожидаемого эффекта - ювеса всё-равно не стартует вместе с ядром, максимум её можно дёрнуть как модуль после монтирования корня, но это всё касается только случая НЕиспользования блоба - таки Слака это не Гента, хотя и похожи некоторыми плоскостями. Я этим онанизмом как-то с месяц занимался(в целях саморазвития) в результате тупо собрал Генту и сейчас понимаю над чем так стебается львиная доля гентушников когда дело касается дистросрачей... а на Слаке я сделал так - тыц, в общем очень доволен и обои в консоли есть и система не напрягается.

#243868

"Так" это как ? :-)

#243870
"SergMarkov" написал:
"Так" это как ? :-)

ссылку не видишь ?
вот она...ссылка
или тебе нужен мунуал ?

#243875

Если правильно путаю, то CONFIG_INITRAMFS_SOURCE -- это то же самое, что и внешний initrd, только приклеенный к ядру.
В /usr/share/v86d/initramfs (текстовый файл) лежат "инструкции" по которым строится initramfs, там совсем немного.
В Slackware традиционно для построения initrd.gz используется mkinitrd. Это хозяйство можно допаковать в его начальный образ в /usr/share/mkinitrd/initrd-tree.tar.gz или, добавив в /boot/initrd-tree, перепаковать сжатый образ вызовом mkinitrd без ключей.

Появится под рукой машина с nvidia, попробую с блобом провернуть...

#243883

черт, будет интересно, результаты будут ?

#243985
"bormant" написал:
Появится под рукой машина с nvidia, попробую с блобом провернуть...

ничилавечески человечный человек !
... вот только зачем это в Слаке ? Есть же красивое и простое решение.., ну да ладно, ждем историю успеха(с подробностями), тоже интересно как у тебя получится.

#243996

Я так и не понял преимуществ использования uvesafb
Мне моя консоль и так нравится ;)

#244007


это VESAFB не путать с UVESAFB.. мне нравится, когда долго втыкаешь в черный экран иногда бывает скучно.. и да это под блобом, о чём собственно и весь топик...

#244012

nvidia под руку ещё не попалась, поэтому пока опишу, что нужно для перехода на uvesafb в общем случае.
Сразу оговорюсь, что процесс оказался прост и прямолинеен.

0. Исходные:
Slackware-13.37 32-bit внутри VirtualBox-3.2.12
Ядра стоковые:
- основное generic-smp-2.6.37.6, создан initrd
- резервное huge-smp, прописано в lilo.conf отдельным пунктом загрузки (да, из ремонтных соображений).

Поехали...

1. Читаем
http://dev.gentoo.org/~spock/projects/uvesafb/

Смотрим, как собрано ядро:

text

$ zgrep "CONFIG_CONNECTOR\|CONFIG_FB_UVESA" /proc/config.gz
CONFIG_CONNECTOR=m
# CONFIG_FB_UVESA is not set

Понимаем, что нужно дособрать собственно uvesa, чем и займёмся.


2. Собираем модуль uvesafb

Ставим исходники ядра (если ещё не установлены):

text

# slackpkg install kernel-source

Включаем сборку uvesafb, собираем и ставим модуль:

text

# cd /usr/src/linux
# zcat /proc/config.gz > .config
# make menuconfig
Graphics support ---> 
 Support for frame buffer devices ---> 
  <M> Userspace VESA VGA graphics support

# make prepare modules_prepare # make drivers/video/uvesafb.ko # cp drivers/video/uvesafb.ko /lib/modules/$(uname-r)/kernel/drivers/video/ # depmod -A

3. Ставим klibc (есть на slackbuilds.org)

text

# mkdir ~/bld; cd ~/bld
# wget http://slackbuilds.org/slackbuilds/13.37/misc/klibc.tar.gz
# tar xf klibc.tar.gz
# cd klibc
# wget http://mirror.sit.wisc.edu/pub/linux/libs/klibc/1.5/klibc-1.5.24.tar.bz2
# PKGTYPE=txz VERSION=1.5.24 ./*Build
# rm -rf /tmp/SBo/klibc-*/ /tmp/SBo/package-klibc/
# upgradepkg --install-new /tmp/klibc-*t?z

4. Ставим v86d

text

# cd /src
# wget -O - http://dev.gentoo.org/~spock/projects/uvesafb/archive/v86d-0.1.10.tar.bz2 | tar jx
# cd v86d
# ./configure --with-klibc
# make
# strip --strip-unneeded v86d
# make install
# make clean

Результат -- единственный файл: /sbin/v86d, желающие могут опакетить ;-)


5. Готовим initrd

Как говорил выше, у меня initrd был создан ранее, поэтому мне достаточно было просто немного модифицировать существующий /boot/initrd-tree и пересобрать /boot/initrd.gz. Если в сказанном что-то непонятно, читаем /boot/README.initrd, man mkinitrd. Полезняшка:

text

# /usr/share/mkinitrd/mkinitrd_command_generator.sh
mkinitrd -c -k 2.6.37.6-smp -f ext4 -r /dev/sda2 -m jbd2:mbcache:ext4 -u -o /boot/initrd.gz

Добавляем uvesafb в список модулей (коннектор -- cn -- добавится по зависимостям) и выполняем:

text

# mkinitrd -c -k 2.6.37.6-smp -f ext4 -r /dev/sda2 -m uvesafb:jbd2:mbcache:ext4 -u -o /boot/initrd.gz

Читаем /usr/src/linux/Documentation/fb/uvesafb.txt

Модифицируем дерево, добавляя туда /sbin/v86d, правим параметры модуля в /boot/initrd-tree/load_kernel_modules и пересобираем initrd:

text

# cp /sbin/v86d /boot/initrd-tree/sbin/
# sed -i /boot/initrd-tree/load_kernel_modules \
   -e 's/uvesafb/uvesafb mode_option=1024x768-32 mtrr=3 scroll=ywrap/'
# mkinitrd

6. Загрузчик

Правим /etc/lilo.conf, ставим vga=normal или vga=extended, если не было initrd -- добавляем. Получится что-то вроде:

text

append=" vt.default_utf8=1"
boot = /dev/sda
compact
lba32
  bitmap = /boot/slack.bmp
  bmp-colors = 255,0,255,0,255,0
  bmp-table = 60,6,1,16
  bmp-timer = 65,27,0,255
prompt
timeout = 30
change-rules
  reset
vga=normal
image = /boot/vmlinuz-generic-smp-2.6.37.6-smp
  root = /dev/sda2
  initrd = /boot/initrd.gz
  label = Linux
  read-only
image = /boot/vmlinuz-huge-smp-2.6.37.6-smp
  root = /dev/sda2
  label = LinuxHS
  read-only

Записываем загрузчик:

text
# lilo

Перезагружаемся, лицезрим uvesafb в действии. На всякий случай проверяем:

text

# dmesg | grep uvesafb
[    4.294639] uvesafb: Oracle Corporation, Oracle VM VirtualBox VBE Adapter, 
Oracle VM VirtualBox Version 3.2.12, OEM: VirtualBox VBE BIOS http://www.virtualbox.org/, VBE v2.0
[    4.350977] uvesafb: protected mode interface info at c000:7fe6
[    4.351902] uvesafb: pmi: set display start = c00c8031, set palette = c00c80e2
[    4.353167] uvesafb: pmi: ports = 1ce 1cf 1cf 1d0
[    4.355195] uvesafb: no monitor limits have been set, default refresh rate will be used
[    4.356568] uvesafb: scrolling: ywrap using protected mode interface, yres_virtual=2304
[    4.359920] uvesafb: message too long (57808), can't execute task
[    4.359923] uvesafb: VBE get state call failed (eax=0x4f04, err=-7)
[    4.374637] uvesafb: framebuffer at 0xe0000000, mapped to 0xe0880000, using 9216k, total 9216k
#244016

bormant - Голова !

#244029

Пожалуй, вместо

text

# sed -i /boot/initrd-tree/load_kernel_modules \
   -e 's/uvesafb/uvesafb mode_option=1024x768-32 mtrr=3 scroll=ywrap/'

можно поступить проще, после сборки uvesafb

text

# echo "options uvesafb mode_option=1024x768-32 mtrr=3 scroll=ywrap" > /etc/modprobe.d/uvesafb.conf

modprobe позвать с -M, или ручками:

text

# mkdir /boot/initrd-tree/etc/modprobe.d/
# cp /etc/modprobe.d/uvesafb.conf /boot/initrd-tree/etc/modprobe.d/
#244038

Примечание: в качестве исходного дерева mkinitrd использует /usr/share/mkinitrd/initrd-tree.tar.gz. Если дополнить его файликом /sbin/v86d, при создании initrd можно будет обходиться одним вызовом mkinitrd, наподобие:
# mkinitrd -c -M -k 2.6.37.6-smp -f ext4 -r /dev/sda2 -m uvesafb:jbd2:mbcache:ext4 -u -o /boot/initrd.gz
или
# mkinitrd -c -M -m uvesafb:ext4 -u
или даже (при условии правильного содержимого /etc/mkinitrd.conf)
# mkinitrd -F
только не забывать модифицировать /usr/share/mkinitrd/initrd-tree.tar.gz после обновления пакета mkinitrd (да-да, превратится в тыкву ;-) ).

#244099

вот только klibc на новых ядрах не хочет собираться( в куренте если чё 3.2.7) :

text

In file included from /lib/modules/3.2.7-smp/source/include/linux/netdevice.h:30:0,
                 from /lib/modules/3.2.7-smp/source/include/linux/if_arp.h:26,
                 from /tmp/SBo/klibc-1.5.23/usr/klibc/../include/net/if_arp.h:3,
                 from usr/kinit/ipconfig/main.c:15:
/lib/modules/3.2.7-smp/source/include/linux/if_packet.h:176:2: ошибка: unknown type name «__aligned_u64»
usr/kinit/ipconfig/main.c: В функции «loop»:
usr/kinit/ipconfig/main.c:361:6: предупреждение: variable «nr» set but not used [-Wunused-but-set-variable]
make[3]: *** [usr/kinit/ipconfig/main.o] Ошибка 1
make[2]: *** [usr/kinit/ipconfig] Ошибка 2
make[1]: *** [all] Ошибка 2
make: *** [klibc] Ошибка 2

и это нормально для klibc ! вот патч для неё - тыц

Войдите или зарегистрируйтесь, чтобы ответить.