1 (30.04.2012 23:44:26 отредактировано Armoyt)

Вопрос не праздный... как понять какой версии ядра соответствует какая версия nvidia дров?  Пытаюсь откатить дрова к старой версии (что-то глюков тьма стала после последних обновлений), но похоже для этого придётся собирать ядро старой версии (какой именно версии?...). По-другому никак? Вообще я плохо себе представляю как взаимодействуют эти два пакета и что нужно для их совместимости (потонул в зависимостях пакмана).
Допустим я хочу, чтобы у меня крутились дрова версии X, какая версия ядра Y мне нужна, чтобы сборка модуля nvidia прошла успешно (без ругани на headers и зависимости)? Или прогрессивное человечество решает эту проблему без решения уравнений с двумя неизвестными? =)

P.S. И ещё я мечтаю реализовать это на основе какого-нибудь PKGBUILD из aur...

Главное для пользователя Арча или Debian это не превратить случайно свою систему в Рач или Дебину...

2

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

" si contuderis stultum in pila quasi tisanas feriente desuper pilo non auferetur ab eo stultitia eius " © Proverbs 27:22

3

То бишь смотреть надо по времени релиза... Благодарю, кое-что проясняется. Ну а +\- во времени видимо зависит чисто от изменений в ядре.

хм.. Покурил =)  судя по PKGBUILD, после распаковки дров в папке kernel должен лежать файл nvidia.ko, но его там нет. Смотрел такой же сборочный скриптик из аура, но для той версии ядра, что я ставлю (pkgver=256.53) - там тоже упоминается этот файл, но на практике его после распаковки не оказывается.

package() {
    install -D -m644 "${srcdir}/${_pkg}/kernel/nvidia.ko" \
        "${pkgdir}/lib/modules/${_extramodules}/nvidia.ko"
    install -d -m755 "${pkgdir}/usr/lib/modprobe.d"
    echo "blacklist nouveau" >> "${pkgdir}/usr/lib/modprobe.d/nvidia.conf"
    sed -i -e "s/EXTRAMODULES='.*'/EXTRAMODULES='${_extramodules}'/" "${startdir}/nvidia.install"
    gzip "${pkgdir}/lib/modules/${_extramodules}/nvidia.ko"
}

откуда его брать то?

Главное для пользователя Арча или Debian это не превратить случайно свою систему в Рач или Дебину...

4 (01.05.2012 14:53:55 отредактировано gramozeka)

Armoyt пишет:

откуда его брать то?

ab ну так в этом и суть "сборки пакета", nvidia.ko это и есть сторонний модуль ядра от производителя карты, он создаётся во время компиляции NVIDIA-bla-bla-bla.run . Как это происходит ? Для начала скачай с оф. сайта нвидии любой понравившийся NVIDIA-bla-bla-bla.run , рекомендую 290-ю серию, она более-менее не глюкавая. Вот ссылка. Потом дай ему права на исполнение :

# chmod +x NVIDIA-bla-bla-bla.run

и запусти вот так :

# ./NVIDIA-bla-bla-bla.run  -A

почитай внимательно опции, там много интересного. Потом тебе нужено его собрать самостоятельно, как читай доки Арча. Вот вариант из вики.

" si contuderis stultum in pila quasi tisanas feriente desuper pilo non auferetur ab eo stultitia eius " © Proverbs 27:22

5

Так этим яурт же должен заниматься (сборкой) или нет? Смысл PKGBUILD разве не в том, чтобы дать инструкции по сборке пакета? Но там происходит только распаковка NVIDIA-bla-bla-bla.run а затем запускается функция package(), в которой уже указан этот модуль как существующий. Больше сборочный скрипт ничего не делает и не планирует делать. функция билд в нём ограничена распаковкой .run.

Главное для пользователя Арча или Debian это не превратить случайно свою систему в Рач или Дебину...

6

Armoyt пишет:

Так этим яурт же должен заниматься (сборкой) или нет?

этого я тебе не скажу, у меня Слака ab ..

Armoyt пишет:

Смысл PKGBUILD разве не в том, чтобы дать инструкции по сборке пакета?


да, смысл именно в этом, суть в том что одной из этих инструкций должна быть приметно такой :

SRCNAM=NVIDIA-Linux-$TARGET-${VERSION}

CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=${PKG:-$TMP/package-$PRGNAM}
OUTPUT=${OUTPUT:-/tmp}

rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP || exit 1
rm -rf $SRCNAM
sh $CWD/$SRCNAM.run --extract-only || exit 1
cd $SRCNAM || exit 1
chown -R root:root .
chmod -R u+w,go+r-w,a-s .

cd kernel || exit 1

make SYSSRC=$KERNELPATH module || exit 1

mkdir -p $PKG/lib/modules/$KERNEL/kernel/drivers/video
install -m 0664 nvidia.ko $PKG/lib/modules/$KERNEL/kernel/drivers/video/

# Make sure the X is specified to automagically load the 
# correct driver, since I always forget. 

это из Слаки, но суть одна в любом дистрибутиве, хоть в Федоре, хоть в Бубунте, хоть в Генту

" si contuderis stultum in pila quasi tisanas feriente desuper pilo non auferetur ab eo stultitia eius " © Proverbs 27:22

7

Кажется я понял где был глюк, но наткнулся на новый.
Функция
build() {
    _kernver="$(cat /lib/modules/${_extramodules}/version)"
    cd "${srcdir}"
    #sh "${_pkg}.run" --extract-only
    cd "${_pkg}/kernel"
    #_kernver=3.3.3-1-ARCH
    make SYSSRC=/lib/modules/3.3.3-1-ARCH/build module
}

даёт результат:
*** Unable to determine the target kernel version. ***

make: *** [select_makefile] Ошибка 1
Он не видит ядра и предлагает указать путь к нему переменной SYSSRC, но она уже указывает на установленное ядро:  make SYSSRC=/lib/modules/3.3.3-1-ARCH/build module

Главное для пользователя Арча или Debian это не превратить случайно свою систему в Рач или Дебину...

8

Armoyt пишет:

но наткнулся на новый.

покажи весь билд, так не понятно что-где назначено.(под спойлер или на пастербин)

" si contuderis stultum in pila quasi tisanas feriente desuper pilo non auferetur ab eo stultitia eius " © Proverbs 27:22

9 (01.05.2012 15:45:23 отредактировано Armoyt)

+ открыть спойлер

# $Id: PKGBUILD 157953 2012-04-30 07:19:09Z tpowa $
# Maintainer : Thomas Baechler <thomas@archlinux.org>

pkgname=nvidia
pkgver=256.53
_extramodules=extramodules-3.3-ARCH
pkgrel=3
pkgdesc="NVIDIA drivers for linux."
arch=('i686' 'x86_64')
url="http://www.nvidia.com/"
depends=('linux>=3.3' 'linux<3.4')
makedepends=('linux-headers>=3.3' 'linux-headers<3.4')
conflicts=('nvidia-96xx' 'nvidia-173xx')
license=('custom')
install=nvidia.install
options=(!strip)

if [ "$CARCH" = "i686" ]; then
    _arch='x86'
    _pkg="NVIDIA-Linux-${_arch}-${pkgver}"
    #source=("ftp://download.nvidia.com/XFree86/Linux-${_arch}/${pkgver}/${_pkg}.run")
    #md5sums=('0bc1561b405443c6d1331934093137fd')
elif [ "$CARCH" = "x86_64" ]; then
    _arch='x86_64'
   _pkg="NVIDIA-Linux-${_arch}-${pkgver}-no-compat32"
   # source=("ftp://download.nvidia.com/XFree86/Linux-${_arch}/${pkgver}/${_pkg}.run")
    #md5sums=('dde8347cde142c329b6bb923747672a3')
fi

echo ${pkgdir}

build() {
    _kernver="$(cat /lib/modules/${_extramodules}/version)"
    cd "${srcdir}"
    #sh "${_pkg}.run" --extract-only
    cd "${_pkg}/kernel"
    #_kernver=3.3.3-1-ARCH
    make SYSSRC=/lib/modules/3.3.3-1-ARCH/build module
}

package() {
    install -D -m644 "${srcdir}/${_pkg}/kernel/nvidia.ko" \
        "${pkgdir}/lib/modules/${_extramodules}/nvidia.ko"
    install -d -m755 "${pkgdir}/usr/lib/modprobe.d"
    echo "blacklist nouveau" >> "${pkgdir}/usr/lib/modprobe.d/nvidia.conf"
    sed -i -e "s/EXTRAMODULES='.*'/EXTRAMODULES='${_extramodules}'/" "${startdir}/nvidia.install"
    gzip "${pkgdir}/lib/modules/${_extramodules}/nvidia.ko"
}

P.S. дрова были распакованы вручную, потому закомментил кое-что, ну и кое-что ещё пришлось закомментить, чтобы он не качал их каждый раз заново с фтп.

Главное для пользователя Арча или Debian это не превратить случайно свою систему в Рач или Дебину...

10

Armoyt пишет:

    _kernver="$(cat /lib/modules/${_extramodules}/version)"
    cd "${srcdir}"
    #sh "${_pkg}.run" --extract-only
    cd "${_pkg}/kernel"
    #_kernver=3.3.3-1-ARCH
    make SYSSRC=/lib/modules/3.3.3-1-ARCH/build module

вот и глюк.
С одной стороны

Armoyt пишет:

_kernver="$(cat /lib/modules/${_extramodules}/version)"

но тут же

Armoyt пишет:

    #_kernver=3.3.3-1-ARCH
    make SYSSRC=/lib/modules/3.3.3-1-ARCH/build module

а в следующей функции опять

Armoyt пишет:

        "${pkgdir}/lib/modules/${_extramodules}/nvidia.ko"

т.е. переменную ты пытаешься определить автоматически, а в сборке явно указываешь её.

" si contuderis stultum in pila quasi tisanas feriente desuper pilo non auferetur ab eo stultitia eius " © Proverbs 27:22

11 (01.05.2012 16:14:38 отредактировано Armoyt)

там в make SYSSRC=/lib/modules/3.3.3-1-ARCH/build module   должна стоять переменная _kernver=3.3.3-1-ARCH, так что всё вроде так...

uname -r
3.3.3-1-ARCH

Главное для пользователя Арча или Debian это не превратить случайно свою систему в Рач или Дебину...

12

а какой драйвер ?

" si contuderis stultum in pila quasi tisanas feriente desuper pilo non auferetur ab eo stultitia eius " © Proverbs 27:22

13

pkgver=256.53

Главное для пользователя Арча или Debian это не превратить случайно свою систему в Рач или Дебину...

14

ну так я же предупреждал что древние драйвера не знают о существовании ядер с номерами 3.Х.Х и поэтому не соберутся никогда .

NVIDIA Corporation
    Last Updated: Fri Aug 27 21:34:08 PDT 2010
    Most Recent Driver Version: 256.53

в то время вышло ядро 2.6.34 вот на нем и собирай, в принципе на любом вплоть до 2.6.39 (на счет 39 не уверен)

" si contuderis stultum in pila quasi tisanas feriente desuper pilo non auferetur ab eo stultitia eius " © Proverbs 27:22

15 (01.05.2012 17:47:06 отредактировано Armoyt)

хм... 290 тогда мучать придёться...

Эффект тот же - модуль не видит ядро.

Главное для пользователя Арча или Debian это не превратить случайно свою систему в Рач или Дебину...

16

дрова были распакованы вручную, потому закомментил кое-что, ну и кое-что ещё пришлось закомментить, чтобы он не качал их каждый раз заново с фтп.

17

Проблема решилась откатом на старые ядро и дрова через кэш пакмана. Но это как-то не так, как я хотел =) Может быть следующий релиз дров nvidia исправить баги с компизом и powermizer - тогда можно будет вернуться на дефолтные пакеты.

Главное для пользователя Арча или Debian это не превратить случайно свою систему в Рач или Дебину...