Failed to initialize the NVIDIA GPU

После обновления ядра до версии 2.6.38.7 система стала работать нестабильно, переодически зависала на продолжительное время, решил не откатываться на предыдущее, не ждать милости Патрика, а собрать более свежее ядро руками (вспомнить молодость, ага).

Процесс прошёл на удивление быстро:

#"инструкция"
cd /usr/src/
wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.1.8.tar.bz2
tar xfj linux-3.1.8.tar.bz2
rm -rf linux
ln -s /usr/src/linux-3.1.8 /usr/src/linux
cd /usr/src/linux
zcat /proc/config.gz > .config
make oldnoconfig
make menuconfig
make -j3 all
make modules_install
make install
cd /etc/rc.d
mv /boot/vmlinuz /boot/vmlinuz-3.1.8
ln -s /boot/vmlinuz-3.1.8 /boot/vmlinuz
mv /boot/System.map /boot/System.map-3.1.8
ln -s /boot/System.map-3.1.8 /boot/System.map
cp /usr/src/linux/.config /boot/config-3.1.8
rm /boot/config
ln -s /boot/config-3.1.8 /boot/config
mcedit lilo.conf
lilo
reboot

…а главное безболезненно – система загрузилась сразу.

Настал черёд пересобрать драйвера nvidia. В наличии имелся инсталлятор версии 275.09 – он работать отказался сославшись на то, что не может найти исходники ядра. Хорошо – скачал последнюю на данный момент сборку – 290.10, которая установилась без проблем. Но не тут-то было – xOrg не запустился ругнувшись:

NVIDIA: could not open the device file /dev/nvidia0 (Input/output error).
(EE) NVIDIA(0): Failed to initialize the NVIDIA GPU at PCI:1:0:0.  Please
(EE) NVIDIA(0):     check your system's kernel log for additional error
(EE) NVIDIA(0):     messages and refer to Chapter 8: Common Problems in the
(EE) NVIDIA(0):     README for additional information.
(EE) NVIDIA(0): Failed to initialize the NVIDIA graphics device

И пошло-поехало…

  • откатился до 285.05.09 – тоже самое
  • последовательно перепробовал всевозможные опции ядру, которые удалось найти в “этих ваших интернетах” и noacpi и pci=biosirq и vmalloc=XXXm – без результата.
  • перепробовал море разных опций модулю nvidia – без толку

И вот надежда уже погибла, xOrg работает через убогий nouveau и остаётся лишь установить бубунту загрузить старое ядро (и собрать ему старые драйвера nvidia). Поудалял кучу старых инсталляторов и решил скачать (раз пошла такая пьянка) 275.28 и на всякий попробовал их собрать к свежему ядру. И что удивительно – получилось! всё заработало, на первый взгляд система стала шустрее, chrome с полусотней открытых табов больше не вводит иксы в транс. На днях попробую повторить операцию “хватить тупить” на другой машине

“Такой день” (ц)

zoom-слайдер на клавиатуре в linux

После прочтения заметки о “странных кнопках ноутбука” сразу вспомнил о неработающем zoom-слайдере на клавиатуре Microsoft Microsoft® Digital Media Keyboard. Немедленно с помощью showkeys выяснил keycodes событий “слайдер вверх” – 418, слайдер вниз – 419. Перечитав ещё несколько раз заметку понял что мне она больше не поможет – xOrg в принципе не переваривает keycodes выше 255, ситуация казалось бы безвыходная, но оказалось не совсем, нашлось решение в виде evrouter – программы, которая (как видно из названия) “пробрасывает” события одних устройств на другие трансформируя согласно правилам описанным в конфигурационном файле.

После непродолжительных мытарств родился следующий ~/.evrouterrc:

#при нажатии на slider up на клавиатуре - сгенерируй событие "mousewheelup"
"Microsoft Microsoft® Digital Media Keyboard" "/dev/input/event.*" none key/418 "XButton/4"
#при нажатии на slider down на клавиатуре - сгенерируй событие "mousewheeldown
"Microsoft Microsoft® Digital Media Keyboard" "/dev/input/event.*" none key/419 "XButton/5"

Для получения необходимых прав в /dev/input в rc.local была добавлена строка:

# внимание - используйте на свой страх и риск! Слабо представляю какие подсистемы затронет такое наглое вмешательство в /dev
chgrp users /dev/input/event*

В ~/.kde/Autostart добавлен запуск /usr/bin/evrouter /dev/input/event*

Вы можете запускать evrouter через sudo (и не трогать права на /dev), но подозреваю, что с автозапуском могут быть проблемы…

После чего обнаружил что скроллинг работает, да совсем не так, как ожидалось – одно нажатие на слайдер прогручивает активное окно на три строки (как и указано в настройках KDE), но хотелось-то чтобы прокручивалось до тех пор пока слайдер не отпустишь… Снова поиск и снова решение (more…)

Adobe AIR и linux. Часть II.

В начале года мне уже удалось установить Adobe AIR на свой slackware. Но спустя несколько месяцев вышел свежий релиз (2.0) и инструкция стала неактуальной. Я обещал разобраться и выложить обновлённую. Хотя и прошло почти полгода, но лучше поздно, чем никогда, правда?

С версией 2.0.2 так ничего и не вышло, а вот с недавно вышедшей версией 2.5 всё прошло очень гладко. Всё устанавливается и работает почти без проблем (остался описанный ранее изъян с тем, что инсталлятор air-приложений спрашивает пароль root-а).

Итак инструкция:

rpm --initdb
RPM_VERSION=`rpm --version|awk '{print $3}'`
cat <<ENDSPEC>>rpm.spec
Summary: The RPM package management system
Name: rpm
Version: ${RPM_VERSION}
Release: 1
Group: System Environment/Base
Url: http://www.rpm.org/
License: GPLv2+
BuildArch: noarch
Provides: /bin/sh

%description
The RPM Package Manager.

%files
ENDSPEC

BUILD=`rpmbuild -ba rpm.spec|grep 'noarch.rpm'|awk '{print $2}'`

rpm --justdb -ivh $BUILD

rm -f rpm.spec

GTK2_VERSION=`gtk-query-immodules-2.0|grep 'Created by'|awk '{print $6}'|sed 's/gtk+-//'`

cat <<ENDSPEC>>gtk2.spec
Summary: The GIMP ToolKit (GTK+), a library for creating GUIs for X
Name: gtk2
Version: ${GTK2_VERSION}
Release: 1
License: LGPLv2+
Group: System Environment/Libraries

%description
GTK+ is a multi-platform toolkit for creating GUI.

%files
ENDSPEC

BUILD=`rpmbuild -ba gtk2.spec|grep 'i386.rpm'|awk '{print $2}'`

rpm --justdb -ivh $BUILD

rm -f gtk2.spec

COREUTILS_VERSION=`/bin/env --version|head -n1|awk '{print $4}'`

for bin in /usr/bin/env /bin/uname /bin/cat /bin/chmod /bin/ln /bin/ls /bin/rm /bin/sh /bin/echo; do

PKG=`basename $bin`

mkdir -p /root/rpmbuild/BUILDROOT/$PKG-$COREUTILS_VERSION-1.i386/bin
mkdir -p /root/rpmbuild/BUILDROOT/$PKG-$COREUTILS_VERSION-1.i386/usr/bin
cp $bin /root/rpmbuild/BUILDROOT/$PKG-$COREUTILS_VERSION-1.i386$bin 

cat <<ENDSPEC>>$PKG.spec
Summary: Coreutils
Name: $PKG
Version: ${COREUTILS_VERSION}
Release: 1
License: LGPLv2+
Group: System Environment/Libraries

%description
GNU Coreutils
%files
$bin
ENDSPEC

BUILD=`rpmbuild -ba $PKG.spec|grep 'i386.rpm'|awk '{print $2}'`

rpm --justdb -ivh $BUILD

rm -f $PKG.spec

done 

AWK_VERSION=`/usr/bin/awk --version|head -n1|awk '{print $3}'`
mkdir -p /root/rpmbuild/BUILDROOT/awk-$AWK_VERSION-1.i386/usr/bin
cp /usr/bin/awk /root/rpmbuild/BUILDROOT/awk-$AWK_VERSION-1.i386/usr/bin/awk
cat <<ENDSPEC>>awk.spec
Summary: GNU AWK
Name: awk
Version: ${AWK_VERSION}
Release: 1
License: LGPLv2+
Group: System Environment/Libraries

%description
GNU AWK
%files
/usr/bin/awk
ENDSPEC

BUILD=`rpmbuild -ba awk.spec|grep 'i386.rpm'|awk '{print $2}'`

rpm --justdb -ivh $BUILD

rm -f awk.spec

GREP_VERSION=`/usr/bin/grep --version|head -n1|awk '{print $4}'`
mkdir -p /root/rpmbuild/BUILDROOT/grep-$GREP_VERSION-1.i386/bin
cp /usr/bin/grep /root/rpmbuild/BUILDROOT/grep-$GREP_VERSION-1.i386/bin/grep
cat <<ENDSPEC>>grep.spec
Summary: GNU GREP
Name: grep
Version: ${GREP_VERSION}
Release: 1
License: LGPLv2+
Group: System Environment/Libraries

%description
GNU GREP
%files
/bin/grep
ENDSPEC

BUILD=`rpmbuild -ba grep.spec|grep 'i386.rpm'|awk '{print $2}'`

rpm --justdb -ivh $BUILD

rm -f grep.spec

LIBXML2_VERSION=`xml2-config --version`
mkdir -p /root/rpmbuild/BUILDROOT/libxml2-$LIBXML2_VERSION-1.i386/usr/lib/
ln -s /usr/lib/libxml2.so /root/rpmbuild/BUILDROOT/libxml2-$LIBXML2_VERSION-1.i386/usr/lib/libxml2.so.2
cat <<ENDSPEC>>libxml2.spec
Summary: XML parser library
Name: libxml2
Version: ${LIBXML2_VERSION}
Release: 1
License: LGPLv2+
Group: System Environment/Libraries

%description
XML parser library
%files
/usr/lib/libxml2.so.2
ENDSPEC

BUILD=`rpmbuild -ba libxml2.spec|grep 'i386.rpm'|awk '{print $2}'`

rpm --justdb -ivh $BUILD

rm -f libxml2.spec

LIBXSLT_VERSION=`xslt-config --version`
mkdir -p /root/rpmbuild/BUILDROOT/libxslt-$LIBXSLT_VERSION-1.i386/usr/lib/
ln -s /usr/lib/libslt.so /root/rpmbuild/BUILDROOT/libxslt-$LIBXSLT_VERSION-1.i386/usr/lib/libxslt.so.1
cat <<ENDSPEC>>libxslt.spec
Summary: XML transformation library
Name: libxslt
Version: ${LIBXSLT_VERSION}
Release: 1
License: LGPLv2+
Group: System Environment/Libraries

%description
XML transformation library
%files
/usr/lib/libxslt.so.1
ENDSPEC

BUILD=`rpmbuild -ba libxslt.spec|grep 'i386.rpm'|awk '{print $2}'`

rpm --justdb -ivh $BUILD

rm -f libxslt.spec

wget http://airdownload.adobe.com/air/lin/download/latest/adobeair.i386.rpm

rpm -i adobeair.i386.rpm

Суть скрипта – создать для rpm фиктивную базу “зависимостей” необходимых для установки adobeair.

Скрипт проверен на нескольких инсталяциях более-менее свежих slackware, но инструкция должна подойти для любых не deb (и не rpm) систем.

Особая благодарность товарищу deywos, который не просто обнаружил “кривость” инструкции, опубликованной ранее, но и помог разобраться в причинах.

11.11.10  |  , ,  | стань первым

Бесплатные пакетики

Вообще, как мне кажется, пользователи slackware очень самостоятельные и вполне могут собрать любую “тулзовину” без чужой помощи. Но тем не менее, они тоже собирают “пакетики” и делятся ими с другими любителями слаки.

Я тоже решил с вами поделиться несколькими программками, а так же пакетами с ними.
Если вы пользуетесь slapt-get или slackpkg, то можете просто добавить в SOURCE ссылочку http://miracle.rpz.name/shared/slack/ и ознакомиться со скудным ассортиментом моего репозитария. В основном это программы русскоговорящих авторов, и потому в многочисленных зарубежных репозитариях ранее не встречались. Все гуёвые программы cделаны с помощью qt. (more…)

20.12.08  |   | стань первым

Performance Optimization WordPress Plugins by W3 EDGE