LINUX.ORG.RU

Тем, у кого видео карта от nVidia посвящается....


0

0

Для всех у кого на компе стоит Linux а внутри видео карта на чипсете Nvidia,
думаю, будет интересен мой небольшой рассказ...

Не знаю как вы, но я большую часть своего времени провожу в консоли а не в иксах.
По-моему удобне залогониться на нескольких терминалах, запустить 2-3 Midnight'a,
mpg321, top и ещё там, что-нибудь, чем открывать десятки окошек. В иксах я
играюсь, смотрю фильмы, лазию по нету, но основная работа - это в консоли.

Только вот стандартный VGA видеорежим 80x25 символов при частоте обновления
в 70Гц меня обсалютно не радовал, поэтому я стал искать варианты его повысить.
Наиболее простым и быстрым способом оказось использование frame buffer'а.
Он включается в ядре и потому не требует ни какого дополнительного софта.

- Как это сделать?
- Просто!

# cd /usr/src/linux
# make menuconfig

заходим в разделы

= Console driver
==> Frame-buffer support

и помечаем

[*] Support for frame buffer devise
[*] nVidia Riva support

выходим сохраняя настройки и компиляем ядро
(если не знаете как - читайте книжки, мой рассказ не про это :)

В результате я получил консоль с гадким видео режимом 640x480 8bit 60Гц.
Я долго бился пытаясь его сменить, скармливаю ядру, посредством lolo,
разные строчки с append="всякая_херня", но всё было бесполезно.
Потом я додумался посмотреть исходники исходники это frame buffera и ...
О Боги !!! =) Я нашёл !!! Выглядело это примерно так:

# vi /usr/src/linux/driver/video/riva/fbdev.c

...

static struct fb_var_screeninfo rivafb_default_var = {
xres: 1024,
yres: 768,
xres_virtual: 1024,
yres_virtual: 768,
xoffset: 0,
yoffset: 0,
bits_per_pixel: 8,
grayscale: 0,
red: {0, 6, 0},
green: {0, 6, 0},
blue: {0, 6, 0},
transp: {0, 0, 0},
nonstd: 0,
activate: 0,
height: -1,
width: -1,
accel_flags: 0,
pixclock: 10111,
left_margin: 192,
right_margin: 32,
upper_margin: 34,
lower_margin: 14,
hsync_len: 160,
vsync_len: 6,
sync: 0,
vmode: FB_VMODE_NONINTERLACED
};

...

Этот кусок, что вы сейчас видите, задаёт dafault'ный видео режим.
Раньше тут было прописано то гадкое разрешение 640x480 60Гц,
теперь же - 1024x686 85Гц.

Если вы аккуратно подредактируете этот файл, перекопмайлите ядро,
перезагрузитесь, то ... получите 128x48 символов вместо 80x25 ранее,
или 6144 символа против 2000, т.е вы на экране вы увидите в 3.072 раза
больше символов чем у вас было! Запустите Midnight и полюбуйтесь!

Наверное у вас появился вопрос откуда я взял эти значения для
pixclock, left_margin и т.д. - долго писать, может быть в следующий раз.
НЕ ставьте их от балды - ПЛОХО будет.

Вот ещё несколько значений для других режимов,
всё поочереди начиная с pixclock:

800x600-75 = 20203 160 16 21 1 80 3
800x600-100 = 14815 216 0 14 7 64 4
1024x768-100 = 9091 280 0 16 0 88 8
1280x1024-75 = 7408 248 16 38 1 144 3
1600x1200-76 = 5051 304 40 42 3 136 5

А теперь ложка дёгтя в бочку мёда!
Именно этот frame buffer КОНФЛИКТУЕТ с видео драйвером под иксы
от INVIDIA, не с тем который идёт с иксами и называется "nv",
а с тем, который выкладывается на www.nvidia.com и называется "nvidia"
Запустите иксы, выйдите из них и посмотрите во что превратился курсор....

Итоги:

От драйвера nvidia в иксах я отказываться НЕ ХОЧУ, потому, что
quake3 (пропатченый под linux) идет у меня БЫСТРЕЕ чем в винде,
а лишать себя удовольствия лишний раз обломать фанов винды ;)
я НЕ МОГУ

От консоли с 1024x768x32bit (!) (bit_per_pixel=24) я тоже отказаться
не могу! Уже привык смотреть видео НЕ загружаая (!) иксы посредством
mplayer'a (MPlayer RULEZ!!!)

Пришлось сделать два ядра:
1. обычное - если планирую пользоваться иксами
2. с frame buffer'ом - для всего остального
и перезагружають теперь от одного к другому... :(

Контрольный вопрос:

Может кто-нибудь нашёл способ это исправить?
Или ломанул nvidia и слил их исходники дров, поделись?
Или переписал сам frame buffer чтобы он дружил с nvidia'вскими дровами?
Или ... просто хочет проделиться впечатлениями, пишите сюда
или мне на мыло iddqd@xakep.ru


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

anonymous
()

напиши в нвидию обьясни им ситуацию вдруг они вспомнят значение слова думать

Zika
()

Фрэмбуффер в ядро не ставь, компиль как модуль,

когда нужны иксы, будешь rmmod делать :)

У меня так. Вроде проблем не наблюдается.

anonymous
()

А вот если использовать vesafb, а не rivafb, то таких багов не наблюдается ;) Но пропадают некоторые полезности фреймбуффера ;( как то переключение фидеорежима налету ...

П. С.: А зделать rmmod rivafb невыйдет ;) ведь фреймбуффер будет использоватся, и в итоге получите Device or resource busy ;)

BigBug
()

У меня в конфиге ядра стоит следующее: Console Drivers => VGA text console 'Y', Video mode selection support 'Y', Frame-buffer support => Support for frame-buffer devices 'Y', VESA VGA graphics console 'Y'. Исчо стоит nVidia Riva support 'M' и VGA 16-colors graphics console 'M' - но эти модули я НЕ использую. В Лило стоит VGA=792. В итоге получаю консоль 1024*768 - вощем всё красиво и дрова nVidia не конфликтуют. Кстати как и обещано в Help'е к VESA VGA graphics console: 'You will get a boot time pinguin logo at no additional cost' - при загрузке вылезает симпотный пингвин )))

anonymous
()

ну ты герой.. а заюзать vesafb и строчку vga=xxx (почитать доку на vesafb) в lilo слабо было? правда, я не знаю, как побороть 60 герц..

anonymous
()

А еще с vesafb можно сделать в консоли background типа как в X, а если пустить поверху прозачный MC - то вообще красота...

Llama
()

А еще с vesafb можно сделать в консоли background типа как в X, а если пустить поверху прозачный MC - то вообще красота...

Llama
()

Да, поражаюсь изобретательности наших линухоидов и продвинутости самого линуха по части удовлетворения извращенческих страстей все тех же линухоидов... Какой винде такое приснится?...

snigga ★★★
()

Все линуксоиды... переходят на чистую консоль. Гонять по WWW, читать почту, юзать ICQ/IRC, смотреть картинки/видео и слушать музыку уже можно осуществить из-под консоли. Так скоро иксы вообще никому нужны не будут.

anonymous
()

Это сново я ;)

Да, пожалуй самый стоящий совет -- это написать в iNvidia !!!

вот только смысла, думаю, в этом мало...
Ну НЕ ВЕРЮ я, что они всё почту читают и к требованиям
своих пользователей чутко прислушиваются... НЕ ВЕРЮ !!!

============================================================

P.S.

Насчёт того, чтобы скомпилять rivafb как модуль, а потом
загружать/выгружать его когда нужно/не нужно -- НЕ ПОЙДЁТ!
Как было замечено выше BigBug'ом -- выгрузить его уже не удастся !

r0nin
() автор топика

А как фильмы в консоли смотреть?
У меня в мплаере нет отпции fb
И тормозит ли? И что сделать чтоб не тормозило?

anonymous
()

А я вот чем хочу поделиться... и заодно спросить у меня дома стоял Сузи 8.0 так вот он умел загружать в графическом режиме (что именно не знаю но похоже что VesaFB(проде уже не помню) но может и нет но точно не rivafb) и при этом консоль была не на 60Hz а 1024x768-85HZ. Кто видел тот знает очень симпотно выглядит вокруг консоли такая рамочка зеленая с сузевским лого и вобще сначала загрузки она есть. Кто то может это объяснить как они это сделали и через что ? (я где то читал что люди патчили сам загрухчик лило)

anonymous
()

у меня та же самая система, что дает дома 60 герц в vesafb, на работе дает 85 герц.. наверное, дело в разных мониторах и их автодетекте.. а ручками герцы в vesafb нигде не настраиваются?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.