Pagina 1 di 1

RISOLTO: drive NVIDIA

Inviato: ven 6 ott 2006, 21:57
da ermes
sono alla fase della messa a punto della slk11.
ho scaricato i nuovi drive NVIDIA e non riesco a installarli.
Ecco il messaggio di errore.

________________________________________________________________
ERROR: Unable to determine the version of the kernel sources located in
'/lib/modules/2.6.18/source'. Please make sure you have installed the
kernel source files for your kernel and that they are properly
configured; 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' command line option.
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 http://www.nvidia.com.
________________________________________________________________

ho cercato nel forum e ho trovato un post che rappresentava +/- lo stesso problema, indicava anche la causa (mancanza di un file: versione.h mi pare) ma non dava soluzioni.

qualche anima pia mi sa dire cosa fare ?

Inviato: ven 6 ott 2006, 22:06
da py67
Installa i source del tuo kernel

Inviato: ven 6 ott 2006, 22:09
da ermes
avendo già installato più volte le diverse versioni dei drive NVIDIA l'avevo già già fatto ... ma non funziona.

grazie comunque ! ;)

Inviato: ven 6 ott 2006, 23:01
da urka58
Dal kernel 2.6.18 sono stati leggermente modificati gli header files, in particolare
/usr/src/linux-2.6.18/include/linux/version.h non riporta più la versione del kernel essendo tale variabile spostata in /usr/src/linux-2.6.18/include/linux/utsrelease.h.
Da cui l'impossibilità dell'installer dei driver nvidia di utilizzare gli header per costruire l'interfaccia per il kernel
Dalla versione 1.0-8774 del driver nvidia questo problema dovrebbe essere stato risolto anche se per la verità sul mio sistema pur compilando correttamente in pratica il caricamento del driver mi dava qualche problema. Ho deciso di provare il driver beta 1.0-9625 e tutto funziona perfettamente.
In alternativa questa patch (dal forum nvidia) funziona sul driver 1.0-8762


diff -ru usr/src/nv/conftest.sh usr/src/nv.U072006/conftest.sh
--- usr/src/nv/conftest.sh 2006-05-15 22:42:17.000000000 +0200
+++ usr/src/nv.U072006/conftest.sh 2006-07-20 19:04:30.486659250 +0200
@@ -43,7 +43,8 @@
# Determine the number of arguments expected by remap_page_range.
#

- echo "#include <linux/mm.h>
+ echo "#include <linux/autoconf.h>
+ #include <linux/mm.h>
void conftest_remap_page_range(void) {
remap_page_range();
}" > conftest$$.c
@@ -56,7 +57,8 @@
exit 1
fi

- echo "#include <linux/mm.h>
+ echo "#include <linux/autoconf.h>
+ #include <linux/mm.h>
int conftest_remap_page_range(void) {
pgprot_t pgprot = __pgprot(0);
return remap_page_range(NULL, 0L, 0L, 0L, pgprot);
@@ -71,7 +73,8 @@
exit 0
fi

- echo "#include <linux/mm.h>
+ echo "#include <linux/autoconf.h>
+ #include <linux/mm.h>
int conftest_remap_page_range(void) {
pgprot_t pgprot = __pgprot(0);
return remap_page_range(0L, 0L, 0L, pgprot);
@@ -248,7 +251,8 @@
# tree or at headers shipped for a specific kernel.
# Determine the kernel version using a compile check.
#
- echo "#include <linux/version.h>
+ echo "#include <linux/autoconf.h>
+ #include <linux/version.h>
#include <linux/utsname.h>
int main() {
if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)) {
@@ -341,11 +345,23 @@
# tree or at headers shipped for a specific kernel.
# Determine the kernel version using a compile check.
#
- echo "#include <linux/version.h>
- int main() {
- printf(\"%s\", UTS_RELEASE);
- return 0;
- }" > conftest$$.c
+ FILE="linux/utsrelease.h"
+
+ if [ -f $HEADERS/$FILE -o -f $OUTPUT/include/$FILE ]; then
+ echo "#include <linux/autoconf.h>
+ #include <linux/utsrelease.h>
+ int main() {
+ printf(\"%s\", UTS_RELEASE);
+ return 0;
+ }" > conftest$$.c
+ else
+ echo "#include <linux/autoconf.h>
+ #include <linux/version.h>
+ int main() {
+ printf(\"%s\", UTS_RELEASE);
+ return 0;
+ }" > conftest$$.c
+ fi

$HOSTCC $CFLAGS -o conftest$$ conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
@@ -494,7 +510,8 @@
# Determine if change_page_attr() is present
#

- echo "#include <linux/version.h>
+ echo "#include <linux/autoconf.h>
+ #include <linux/version.h>
#include <linux/utsname.h>
#include <linux/mm.h>
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0)
@@ -520,7 +537,8 @@
# Determine if pci_get_class() is present.
#

- echo "#include <linux/pci.h>
+ echo "#include <linux/autoconf.h>
+ #include <linux/pci.h>
void conftest_pci_get_class(void) {
pci_get_class();
}" > conftest$$.c
@@ -541,7 +559,8 @@
# Determine if remap_pfn_range() is present.
#

- echo "#include <linux/mm.h>
+ echo "#include <linux/autoconf.h>
+ #include <linux/mm.h>
void conftest_remap_pfn_range(void) {
remap_pfn_range();
}" > conftest$$.c
@@ -562,7 +581,8 @@
# Is 'rlim' a member of current->signal?
#

- echo "#include <linux/sched.h>
+ echo "#include <linux/autoconf.h>
+ #include <linux/sched.h>
struct rlimit *conftest_signal_struct_rlim(void) {
return current->signal->rlim;
}" > conftest$$.c
@@ -584,7 +604,8 @@
# aware.
#

- echo "#include <linux/types.h>
+ echo "#include <linux/autoconf.h>
+ #include <linux/types.h>
#include <linux/agp_backend.h>
typedef struct agp_bridge_data agp_bridge_data;
agp_bridge_data *conftest_agp_backend_acquire(struct pci_dev *dev) {
@@ -608,7 +629,8 @@
# it takes.
#

- echo "#include <linux/vmalloc.h>
+ echo "#include <linux/autoconf.h>
+ #include <linux/vmalloc.h>
void conftest_vmap(void) {
vmap();
}" > conftest$$.c
@@ -621,7 +643,8 @@
exit 1
fi

- echo "#include <linux/vmalloc.h>
+ echo "#include <linux/autoconf.h>
+ #include <linux/vmalloc.h>
void *conftest_vmap(struct page **pg, int cnt) {
return vmap(pg, cnt);
}" > conftest$$.c
@@ -635,7 +658,8 @@
exit 0
fi

- echo "#include <linux/vmalloc.h>
+ echo "#include <linux/autoconf.h>
+ #include <linux/vmalloc.h>
#include <linux/mm.h>
void *conftest_vmap(struct page **pg, int cnt) {
return vmap(pg, cnt, 0, PAGE_KERNEL);
@@ -662,7 +686,8 @@
# the inc_use() and dec_use() callback entries.
#

- echo "#include <linux/i2c.h>
+ echo "#include <linux/autoconf.h>
+ #include <linux/i2c.h>
int conftest_i2c_adapter_inc_use() {
return offsetof(struct i2c_adapter, inc_use);
}" > conftest$$.c
@@ -684,7 +709,8 @@
# kernel.
#

- echo "#include <linux/sched.h>
+ echo "#include <linux/autoconf.h>
+ #include <linux/sched.h>
int conftest_sysctl_max_map_count(void) {
return sysctl_max_map_count;
}" > conftest$$.c
@@ -705,7 +731,8 @@
# Does linux/pm.h declare the pm_message_t type?
#

- echo "#include <linux/pm.h>
+ echo "#include <linux/autoconf.h>
+ #include <linux/pm.h>
void conftest_pm_message_t(pm_message_t state) {
pm_message_t *p = &state;
}" > conftest$$.c
@@ -726,7 +753,8 @@
# Determine if pci_choose_state() is present.
#

- echo "#include <linux/pci.h>
+ echo "#include <linux/autoconf.h>
+ #include <linux/pci.h>
void conftest_pci_choose_state(void) {
pci_choose_state();
}" > conftest$$.c
@@ -747,7 +775,8 @@
# Determine if vm_insert_page() is present.
#

- echo "#include <linux/mm.h>
+ echo "#include <linux/autoconf.h>
+ #include <linux/mm.h>
void conftest_vm_insert_page(void) {
vm_insert_page();
}" > conftest$$.c



Ciao

Inviato: ven 6 ott 2006, 23:27
da dapuzz
2.6.18 con 8774 nessun problema, i beta non mi vanno. Ma giustamente sono beta :asd:

Inviato: ven 6 ott 2006, 23:39
da Harp
Non è un problema relativo agli HEADERS?
Installa i tgz presenti in extra/linux-2.6.17.13, tramite il comando upgradepkg --install-new

kernel-generic-2.6.17.13-i486-1.tgz
kernel-headers-2.6.17.13-i386-1.tgz
kernel-modules-2.6.17.13-i486-1.tgz
kernel-source-2.6.17.13-noarch-1.tgz

Inviato: ven 6 ott 2006, 23:42
da dapuzz
a lui li cerca in 2.6.18 quindi mi auguro che abbia ricompilato il kernel, non semplicemente messo il test26 di cui non si hanno nè moduli nè header, nè sources... o mi sbaglio? :badgrin:

Inviato: ven 6 ott 2006, 23:54
da urka58
Installare gli header files di un kernel più recente della versione con cui è stato compilato gcc è una pratica che può portare talvolta a problemi nella compilaziione dei sorgenti, non sempre ...ma qualche volta.
Comunque i driver nvidia o meglio l'interfaccia per il kernel viene compilata utilizzando gli header files dei sorgenti del kernel, non /usr/include/*.
Ciao

Inviato: sab 7 ott 2006, 0:36
da samiel
Io ho messo il kernel 2.6.18
e ho lasciato gli headers del 2.4.33.3
Nessun problema di compilazione

M.

Inviato: sab 7 ott 2006, 1:23
da Harp
samiel ha scritto:Io ho messo il kernel 2.6.18
e ho lasciato gli headers del 2.4.33.3
Nessun problema di compilazione

M.
Questa cosa degli Header mi fa confusione.
Io uso un kernel 2.6. E' meglio usare gli header del 2.6 o è indifferente?

Re: drive NVIDIA

Inviato: sab 7 ott 2006, 9:12
da gohanz
ermes ha scritto:sono alla fase della messa a punto della slk11.
ho scaricato i nuovi drive NVIDIA e non riesco a installarli.
Ecco il messaggio di errore.


ho cercato nel forum e ho trovato un post che rappresentava +/- lo stesso problema, indicava anche la causa (mancanza di un file: versione.h mi pare) ma non dava soluzioni.

qualche anima pia mi sa dire cosa fare ?

Controlla per primo che ci sia un link simbolico in /usr/src chiamato linux che punti alla directory dei sorgenti del kernel in esecuzione!
Devi inoltre controllare i due link simbolici(Build e Source) presenti in /lib/modules/versione-kernel. Devono puntare alla directory dei sorgenti della loro versione di kernel.
Terzo i sorgenti del kernel devono contenere il file .config ed i file object della compilazione.

Inviato: sab 7 ott 2006, 9:47
da ermes
grazie a tutti.
avevo installato gli headers e i sorgenti... tutto regolare quindi.

semplicemente non andavano bene i drive NVIDIA.

ho provato ad installare la versione 1.0-9625 beta NVIDIA e tutto è filato liscio. (la resa mi sambro ottima).

grazie

;)