Тем, у кого видео карта от nVidia посвящается....
Для всех у кого на компе стоит 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