» »

NVIDIA gonilnik za Linix

NVIDIA gonilnik za Linix

svencbir ::

Rad bi namestil NVIDIA gonilnik v moj Linux sistem (PINGO Linux - temelji na Red Hat9, kernel 2.4.20-27.9). Zato preklopim v ukazni način in zaženem ukaz sh NVIDIA-Linux-x86-1.0-5336-pkg1.run. Nato me obvesti, da prepripravljeni gonilnik za jedro ni bil najden in mi ponudi, da ga poskusi poiskati na internetu. Ker računalnik nima dostopa do interneta, izberem NO. Potem se pojavi okno ki me obvesti da bo potrebno prevajanje gonilnika za jedro. Pojavi se vrstica stanja, zadeva gre mirno od 0 do 100%. Izpiše napako Unable to load the kernel module nvidia.o. Pogledam malo po netu in opazim na moram v terminalu preizkusiti vrstico ls -l /lib/modules/`uname -r`/kernel/drivers/video/nvidia/nvidia.o. Skopiram v terminal in mi napiše da datoteka ni bila najdena.Kaj naj storim? Ponovna namestitev? Še nekaj podatkov, ki bi utegnili pomagati: namestitev je bila polna, popolnoma vsi paketki, kar jih je bilo na DVD-ju, grafična pa je Geforce 2MX 400, 128RAM.

Brane2 ::

a imaš link /usr/src/linux na /usr/src/root_tvoje_verzije_kernela_z_include_sourcei ?

svencbir ::

Ne. Kako to naredim?

Brane2 ::

postaviš se v /usr/src in si pogledaš konkretno ime mape s sourcei, ki bi moralo biti nekaj v stilu "linux-2.x.x"

nato rečeš ln -s linux.2.x.x linux in to je to.

svencbir ::

Izvedem ukaz, pa mi napiše "Preko izbranega imenika ni mogoče pisati"
Prijavljen sem bil kot root.

borchi ::

pol verjetno že maš linux link. samo pogledat morš na kater kernel ti kaže (če jih maš več):

ls -la /usr/src/linux
l'jga

moj_nick ::

ln -sf linux-2.4.* linux

;)
110111001001010001010000

svencbir ::

Borchi, ne, nimam večih izvornih kod (kernel maš verjetno itak sam eden). Imam dve mapi, vendar imata različni ikoni. Prva je linux 2.4 mapica, preko mapice je pa narisana zelena ukrivljena puščica. Druga mapa pa je Linux 2.4.20-27.9, normalna ikona mape.

svencbir ::

Prilagam dnevniški zapis namestitve (nvidia-installer.log). Upam da bo v pomoč. Vsi doslej navedeni nasveti niso delovali. Še zmeraj javlja isto napako.

nvidia-installer log file '/var/log/nvidia-installer.log'
creation time: Sat Jul 24 12:15:20 2004

option status:
license pre-accepted : false
update : false
force update : false
expert : false
uninstall : false
driver info : false
no precompiled interface: false
no ncurses color : false
query latest driver ver : false
OpenGL header files : false
no questions : false
silent : false
XFree86 install prefix : /usr/X11R6
OpenGL install prefix : /usr
Installer install prefix: /usr
kernel source path : (not specified)
kernel install path : (not specified)
proc mount point : /proc
ui : (not specified)
tmpdir : /tmp
ftp site : ftp://download.nvidia.com

Using: nvidia-installer ncurses user interface
-> License accepted.
-> No precompiled kernel interface was found to match your kernel; would you li
ke the installer to attempt to download a kernel interface for your kernel f
rom the NVIDIA ftp site (ftp://download.nvidia.com)? (Answer: No)
-> No precompiled kernel interface was found to match your kernel; this means
that the installer will need to compile a new kernel interface.
-> Kernel source path: '/lib/modules/2.4.20-27.9/build'
-> Performing cc_version_check with CC="cc".
-> Cleaning kernel module build directory.
executing: 'cd ./usr/src/nv; make clean'...
rm -f nv.o os-agp.o os-interface.o os-registry.o nv-linux.o nv_compiler.h *
.d NVdriver nvidia.o
-> Building kernel module:
executing: 'cd ./usr/src/nv; make module SYSSRC=/lib/modules/2.4.20-27.9/bui
ld'...
echo \#define NV_COMPILER \"`cc -v 2>&1 | tail -n 1`\" > nv_compiler.h
cc -c -Wall -Wimplicit -Wreturn-type -Wswitch -Wformat -Wchar-subscripts -Wp
arentheses -Wpointer-arith -Wno-multichar -Werror -O -MD -D__KERNEL__ -DMO
DULE -D_LOOSE_KERNEL_NAMES -DNTRM -D_GNU_SOURCE -D_LOOSE_KERNEL_NAMES -D__KE
RNEL__ -DMODULE -DNV_MAJOR_VERSION=1 -DNV_MINOR_VERSION=0 -DNV_PATCHLEVEL=5
336 -DNV_UNIX -DNV_LINUX -DNV_INT64_OK -DNVCPU_X86 -DREMAP_PAGE_
RANGE_5 -I. -I/lib/modules/2.4.20-27.9/build/include -Wno-cast-qual -Wno-er
ror nv.c
In file included from /lib/modules/2.4.20-27.9/build/include/linux/prefetch.
h:13,
from /lib/modules/2.4.20-27.9/build/include/linux/list.h:6,
from /lib/modules/2.4.20-27.9/build/include/linux/module.h:
12,
from nv-linux.h:52,
from nv.c:14:
/lib/modules/2.4.20-27.9/build/include/asm/processor.h:268:1: warning: "EISA
_bus" redefined
In file included from /lib/modules/2.4.20-27.9/build/include/linux/modversio
ns.h:1038,
from nv-linux.h:48,
from nv.c:14:
/lib/modules/2.4.20-27.9/build/include/linux/modules/i386_ksyms.ver:101:1: w
arning: this is the location of the previous definition
cc -c -Wall -Wimplicit -Wreturn-type -Wswitch -Wformat -Wchar-subscripts -Wp
arentheses -Wpointer-arith -Wno-multichar -Werror -O -MD -D__KERNEL__ -DMO
DULE -D_LOOSE_KERNEL_NAMES -DNTRM -D_GNU_SOURCE -D_LOOSE_KERNEL_NAMES -D__KE
RNEL__ -DMODULE -DNV_MAJOR_VERSION=1 -DNV_MINOR_VERSION=0 -DNV_PATCHLEVEL=5
336 -DNV_UNIX -DNV_LINUX -DNV_INT64_OK -DNVCPU_X86 -DREMAP_PAGE_
RANGE_5 -I. -I/lib/modules/2.4.20-27.9/build/include -Wno-cast-qual -Wno-er
ror os-agp.c
In file included from /lib/modules/2.4.20-27.9/build/include/linux/prefetch.
h:13,
from /lib/modules/2.4.20-27.9/build/include/linux/list.h:6,
from /lib/modules/2.4.20-27.9/build/include/linux/module.h:
12,
from nv-linux.h:52,
from os-agp.c:24:
/lib/modules/2.4.20-27.9/build/include/asm/processor.h:268:1: warning: "EISA
_bus" redefined
In file included from /lib/modules/2.4.20-27.9/build/include/linux/modversio
ns.h:1038,
from nv-linux.h:48,
from os-agp.c:24:
/lib/modules/2.4.20-27.9/build/include/linux/modules/i386_ksyms.ver:101:1: w
arning: this is the location of the previous definition
cc -c -Wall -Wimplicit -Wreturn-type -Wswitch -Wformat -Wchar-subscripts -Wp
arentheses -Wpointer-arith -Wno-multichar -Werror -O -MD -D__KERNEL__ -DMO
DULE -D_LOOSE_KERNEL_NAMES -DNTRM -D_GNU_SOURCE -D_LOOSE_KERNEL_NAMES -D__KE
RNEL__ -DMODULE -DNV_MAJOR_VERSION=1 -DNV_MINOR_VERSION=0 -DNV_PATCHLEVEL=5
336 -DNV_UNIX -DNV_LINUX -DNV_INT64_OK -DNVCPU_X86 -DREMAP_PAGE_
RANGE_5 -I. -I/lib/modules/2.4.20-27.9/build/include -Wno-cast-qual -Wno-er
ror os-interface.c
In file included from /lib/modules/2.4.20-27.9/build/include/linux/prefetch.
h:13,
from /lib/modules/2.4.20-27.9/build/include/linux/list.h:6,
from /lib/modules/2.4.20-27.9/build/include/linux/module.h:
12,
from nv-linux.h:52,
from os-interface.c:26:
/lib/modules/2.4.20-27.9/build/include/asm/processor.h:268:1: warning: "EISA
_bus" redefined
In file included from /lib/modules/2.4.20-27.9/build/include/linux/modversio
ns.h:1038,
from nv-linux.h:48,
from os-interface.c:26:
/lib/modules/2.4.20-27.9/build/include/linux/modules/i386_ksyms.ver:101:1: w
arning: this is the location of the previous definition
os-interface.c:741: warning: `wb_list' defined but not used
cc -c -Wall -Wimplicit -Wreturn-type -Wswitch -Wformat -Wchar-subscripts -Wp
arentheses -Wpointer-arith -Wno-multichar -Werror -O -MD -D__KERNEL__ -DMO
DULE -D_LOOSE_KERNEL_NAMES -DNTRM -D_GNU_SOURCE -D_LOOSE_KERNEL_NAMES -D__KE
RNEL__ -DMODULE -DNV_MAJOR_VERSION=1 -DNV_MINOR_VERSION=0 -DNV_PATCHLEVEL=5
336 -DNV_UNIX -DNV_LINUX -DNV_INT64_OK -DNVCPU_X86 -DREMAP_PAGE_
RANGE_5 -I. -I/lib/modules/2.4.20-27.9/build/include -Wno-cast-qual -Wno-er
ror os-regist
ry.c
In file included from /lib/modules/2.4.20-27.9/build/include/linux/prefetch.
h:13,
from /lib/modules/2.4.20-27.9/build/include/linux/list.h:6,
from /lib/modules/2.4.20-27.9/build/include/linux/module.h:
12,
from nv-linux.h:52,
from os-registry.c:14:
/lib/modules/2.4.20-27.9/build/include/asm/processor.h:268:1: warning: "EISA
_bus" redefined
In file included from /lib/modules/2.4.20-27.9/build/include/linux/modversio
ns.h:1038,
from nv-linux.h:48,
from os-registry.c:14:
/lib/modules/2.4.20-27.9/build/include/linux/modules/i386_ksyms.ver:101:1: w
arning: this is the location of the previous definition
ld -r -o nv-linux.o nv.o os-agp.o os-interface.o os-registry.o
ld -r -o nvidia.o nv-linux.o nv-kernel.o
-> done.
-> Kernel module compilation complete.
ERROR: Unable to load the kernel module 'nvidia.o'. This is most likely
because the kernel module was built using the wrong kernel source files.
Please make sure you have installed the kernel source files for your
kernel; on Red Hat Linux systems, for example, be sure you have the
'kernel-source' rpm installed. If you know the correct kernel source
files are installed, you may specify the kernel source path with the
'--kernel-source-path' commandline option.
-> Kernel module load error: ./usr/src/nv/nvidia.o: unresolved symbol
smp_call_function
./usr/src/nv/nvidia.o: unresolved symbol smp_num_cpus
./usr/src/nv/nvidia.o:
Hint: You are trying to load a module without a GPL compatible license
and it has unresolved symbols. Contact the module supplier for
assistance, only they can help you.
ERROR: Installation has failed. Please see the file
'/var/log/nvidia-installer.log' for details. You may find suggestions
on fixing installation problems in the README available on the Linux
driver download page at www.nvidia.com.

Brane2 ::

Tako kkot rečeno, mislim da moraš narediti bližnjico z imenom linux do mape linux-2.4.xx v /usr/src.

Naredi to najprej, potem pa gremo dalje...

svencbir ::

Brane2, upošteval sem tvoj nasvet in naredil dve stvari. Najprej sem naredil bližnjico in pognal namestitev. Nič. Se spomnim še druge poti. Pobrišem bližnjico. Ustvarim mapo z imenom linux. Skopiram vse datoteke
iz mape linux-2.4.20-27.9. Spet poženem namestitev. Spet nič. :\

jype ::

svencbir: iz dnevniskega izpisa je razvidno, da ti gonilnika ne more naloziti zato, ker je jedro, ki ga poganjas, drugace prevedeno kot jedro, s katerim prevajas modul:


-> Kernel module load error: ./usr/src/nv/nvidia.o: unresolved symbol
smp_call_function
./usr/src/nv/nvidia.o: unresolved symbol smp_num_cpus


Pojdi v /usr/src/linux in pozeni make menuconfig, izkljuci podporo za SMP (vec procesorjev) in poskusi se enkrat prevest NVIDIA gonilnike.

Ali pa poganjaj SMP jedro (verjetno linux-2.4.20-27.9-smp-4G ali kaj podobnega, odvisno od distribucije).

Zgodovina sprememb…

  • spremenilo: jype ()

roscha ::

Možno pa da tudi verzija gcc-ja ni enaka tisti s katero je bilo prevedeno jedro.

Najbolj elegantna rešietev je na novo prevesti jedro in se potem zabavat z Nvidio.

svencbir ::

jype, hvala za pomoč. Zdaj dela. Čeprav me obhajajo zelo močni dvomi. Kaj za boga ima gonilnik za grafično kartico imeti z večprocesorskimi mašinami? Sploh pa sem šele sedaj opazil, da mi je kernel prepoznaval napačen procesor! V nadzornem središču mi je namesto AMD Athlon/Duron
bila označena možnost Pentium 4. Razvijalci malo več resnosti, prosim.

jype ::

Tole bo tehnicno malce bolj zapleten tekst:

1. Kaj ima gonilnik za graficno kartico z vecprocesorskimi masinami:

Ce ima jedro podporo za SMP (Symmetrical Multi Processing), potem ima tudi podporo za APIC (Advanced Programmable Interrupt Controller), to je naprava, ki deli strojne prekinitve med locene procesorje. Implementacija naprave je odvisna od arhitekture, v vseh sodobnih racunalnikih pa je APIC itak vedno tam. Skozi APIC reci delujejo malo pocasneje kot brez njega (v tem primeru so strojne prekinitve "hardwired"), zato se za UP (uniprocessor, enoprocesorske) masine prevaja jedro brez podpore za SMP in APIC. Poleg tega mora SMP jedro paziti na nekatere reci, ki so na enoprocesorskem sistemu nepotrebne, zato jih lahko preskocimo in pridobimo malo hitrosti. Tretja rec, ki ima pomembno razliko med SMP in UP jedrom pa je deljenje vodil.

Ce imas SMP jedro, potem mora modul za graficno kartico paziti, katero kodo izvaja na katerem procesorju ob katerem casu. Dve aplikaciji, ki na SMP racunalniku brez tezav vzporedno riseta po zaslonu (kliceta gonilnik za graficno kartico, recmo X11 in igra ki podpira OpenGL skozi DRI), lahko mocno zmedeta (beri: vsujeta) gonilnik, ki ne ve, da se lahko izvaja hkrati na vecih procesorjih, ce pa gonilnik to ve in se pravilno obnasa (kodi, ki to dopusca, recemo reentrant), pa lahko s tem bistveno pridobis (predvsem zato ker se s tem dobi vecja fleksibilnost pri iskanju write-combining optimizacij, ko cimvec podatkov prenesemo npr. po AGP vodilu v enem samem zaletu). Nekdanji matroxovi gonilniki za Parhelie so imeli ta problem, saj niso delovali na vecprocesorskih sistemih, a so pred slabim letom in pol to popravili, zdaj pa priblizno pol leta ze dejansko deluje.

2. Kako je kernel prepoznaval napacen procesor:

Dvomim, da se je to zgodilo. Najverjetneje je instalacijski program za tvojo distribucijo izbral privzeto jedro, s katerim delajo vsi (i386 kompatibilni) procesorji. V svoji linux karieri se nisem dozivel, da bi bil procesor napacno identificiran, saj je to obicajno le en ukaz na procesorju in ne razumem kako bi lahko sel narobe. Ce te zanima, kaj si o tvojem procesorju misli linux, lahko v ukazni lupini izvedes ukaz "cat /proc/cpuinfo".

3. Rant:

Kaksno resnost pricakujes od razvijalcev? Ce nisi pripravljen odpravit napake, potem si lahko vljudno tiho. Ce te napaka moti, pa je ne znas ali ne zelis odpraviti, obstaja veliko podjetij, ki so ti pripravljena nuditi (placljivo) pomoc pri odpravljanju le-te. Linuxa pac ne mores primerjat z walkmanom, ki ga lahko vrnes v trgovino, ce ti ne dela, ker zanj nisi placal. Ce si placal, potem verjetno imas kaksno pogodbo o podpori prek telefona ali e-maila, ce pa je nimas, pa si je zelis, ti jo lahko ponudim jaz (to je to kar pocnem zdajle). Za bistveno vecji nivo podrobnosti bom moral zal zaracunat, ker casa nimam na pretek. Ce ti nobena izmed moznosti ni vsec, lahko sprogramiras svoj operacijski sistem, ali pa placas kakemu tretjemu podjetju za kak tretji sistem. Izbira je danes ogromna.

foggy_arrow ::

Če Maš naložene tudi windowse naloži gonilnik na particijo kjer so win in potem v linuxu dostopaj do driverja preko windowsa. Pri meni ni šlo drugače
8-)
LP
Let be Computer for your best pal!!

borchi ::

bravo! kk se ti lubi sploh tako bedarijo napisat?
l'jga


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Skoraj že obupal pri inštalaciji Linuxa

Oddelek: Operacijski sistemi
141370 (1189) Brane2
»

nVidia nForce2 under Linux

Oddelek: Operacijski sistemi
81021 (941) BigWhale
»

Linux in NTFS

Oddelek: Operacijski sistemi
331787 (1240) moj_nick
»

LILO -- kako spremeniti boot zaporedje

Oddelek: Operacijski sistemi
171186 (1033) BigWhale
»

Linux RH9 NTFS, ISDN

Oddelek: Operacijski sistemi
122056 (1913) Loki

Več podobnih tem