Šta je novo?

Linux i problem sa instalacijom!!!!

Tamo gde si nasao source kernela, na tom istom cd-u treba da imas i gcc*.rpm pakete. Instaliraj ih "rpm -Uvh gcc*.rpm", ali samo ako nemas gcc instaliran. Bilo sta od 2.95-35 pa na gore je dobro.

Ako utvrdis da imas gcc instaliran (opisah prethodno kako), ili ga instaliras ponovo, ne obracaj paznju na to sto source kuka za ovaj dependacies. U tom slucaju samo na kraju rpm instalacione komande dodas "--nodeps" i gotova prica.

Gde sad da svlacis 25 MB za osnovni paket.
 
e vidi ovo ...nasao sam na disku fajl gcc-2.96-98.i386.rpm i zadao mu komadu rpm -ivh gcc-2.96-98.i386.rpm i on mi odgovori ovo
error: failed dependencies:
binutils >= 2.11.90.0.8-3 is needed by gcc-2.96-98
cpp = 2.96-98 is needed by gcc-2.96-98
glibc-devel is needed by gcc-2.96-98
[root@localhost root]#
 
Pa lepo ti je rekao 🙂

To znaci da kod instalacije linuxa uopste nisi izabrao "development" pakete, a trebalo bi (ocigledno).

glibc je jedna od najvaznijih biblioteka linuxa. Nju imas instaliranu sigurno. On ovde trazi, medjutim, dodatnu, develop verziju te biblioteke.

Dakle, na tom istom cd-u potrazi rpm pakete glibc-devel, binutils, ... sve za sta se buni da nemas. Instaliras ih na isti nacin, samo je mozda u ovom slucaju bolje da ih instaliras sa "rpm -Uvh ..." -> ako postoje vec instalirani i stariji su, bice apgrejdovani na tu noviju verziju, a ako ne prostoje, bice prosto instalirani.

Dakle, lepo "rpm -Uvh glibc-develop*.rpm binutils*.rpm" itd. Pa kad vidis da se vise ne buni, potegni gcc.

Note1: da se ne bi zamlacivao sa odvojenom instalacijom pojedinih paketa, koristi * kao dzoker. Dakle, kada treba da instaliras gcc, da ne bi kucao posebno "rpm -ivh gcc-2.96-85.rpm" pa "rpm -ivh gcc-obj-2.96-85.rpm" itd, kucaj lepo "rpm -ivh gcc*.rpm". Tako ces znati da nisi ni jedan gcc paket propustio, pa se nece buniti kasnije.

Note2: za instalaciju source-a kernela se moglo pristupiti forsiranoj instalaciji sa "--nodeps" switchem, posto su to obicni sourceovi i/ili vec buildovani binarni fajlovi koje ces ionako da rekompajliras. Medjutim, kod instalacije gcc-a ili glibc-a ili neke trece tako vazne stvari, dobro obrati paznju na dependancies. Ono za sta javi da fali, to instaliraj prvo, pa se vrati na dalju instalaciju. Zbog takvih stvari i postoji taj "dependancies".
 
e kazi mi samo kako da provalim sa kojim imenom mi je oznacen dos particija , kako cd a kako flopy???????
ono dali je dos hdb1 ili hdb2 .......a kako cd??
 
e uspeo sam sve lepo da instaliram nasao sam na disku i
cpp-2.96-98.i386.rpm
glibc-devel-2.2.4-13.i386.rpm
binutils-2.11.90.0.8-9.i386.rpm
e sad kod glibc mi je trazio kernel-headers koje sam nasao takodje na disko i to kernel-headers-2.4.7-10.i386.rpm i sve se lepo instalirao
medjutim kada sam se vratio nazad da zavrsim instalaciju NVIDIA_kernel i kada sam lupio make izbacio je ovo
[root@localhost NVIDIA_kernel-1.0-2960]# make
cc -c -Wall -Wimplicit -Wreturn-type -Wswitch -Wformat -Wchar-subscripts
-Wparentheses -Wpointer-arith -Wcast-qual -Wno-multichar -O -MD
-D__KERNEL__ -DMODULE
-D_LOOSE_KERNEL_NAMES -D_X86=1 -Di386=1 -DUNIX -DLINUX -DNV4_HW -DNTRM
-DRM20 -D_GNU_SOURCE -DRM_HEAPMGR -D_LOOSE_KERNEL_NAMES -D__KERNEL__
-DMODULE -DNV_MAJOR_VERSION=1 -DNV_MINOR_VERSION=0 -DNV_PATCHLEVEL=2960
-I. -I/usr/src/linux/include -Wno-cast-qual nv.c
In file included from nv.c:22:
/usr/include/linux/modversions.h:1:2: #error Modules should never use
kernel-headers system headers,
/usr/include/linux/modversions.h:2:2: #error but rather headers from an
appropriate kernel-source package.
/usr/include/linux/modversions.h:3:2: #error Change
-I/usr/src/linux/include (or similar) to
/usr/include/linux/modversions.h:4:2: #error -I/lib/modules/$(uname
-r)/build/include
/usr/include/linux/modversions.h:5:2: #error to build against the
currently-running kernel.
make: *** [nv.o] Error 1


jel sam trebao mozda da instaliram neku drugu verziju kernela???
 
Nisi trebao instalirati drugu verziju kernela, treba sve da radi i sa ovom. Mozda si mogao preskociti instalaciju ovih kernel headera, ali 'ajde, sta da se radi.

Kada se skine sa interneta i raspakuje novi kernel (ili instalira sa instalacionog CD-a), taj novi kernel vec sadrzi headere. Dakle, ako sam raspakovao kernel 2.4.18 u /usr/src/linux-2.4.18 direktorijum, headeri kernela se nalaze u /usr/src/linux-2.4.18/include.

Ono sto mene malo iritira (i sto je mozda ovde problem bio) jeste to sto po instalaciji linuxa (nisam siguran da li je to u svim distroima) u /usr/src diru, instalacija napravi jedan soft-link pod nazivom "linux" koji (satro) pokazuje na moj instalirani kernel. Zasto me to iritira ? Pa zato sto po skidanju i raspakivanju novog kernela (recimo da sam neku verziju vec imao instaliranu), tar.gz arhiva raspakuje pokusavajuci da u /usr/src kreira poddirektorijum "linux" i tu nalece na postojeci soft-linu "linux" i krene sve lepo da se overwrituje preko postojeceg sourcea kernela, i onda nastaje ovakav svinjac. Najbolje je obrisati soft-link "linux" (prepoznaje se po tildi ispred u mc-u ili po "strelici" kada se izdiruje sa "ll"), a svaki source kernela preimenovati tako da sadrzi u imenu i verziju. Dakle, ako sam raspakovao 2.4.18, on ce kreirati subdir "linux" i to treba preimenovati u "linux-2.4.18" pre nego sto se nesto dalje sa njime radi.

Prvo, drajver se instalira ovde sa "make install", ne sa cistim "make".

Drugo, kada izdvojimo ove poruke, lepo i vrlo jasno pise sta je kompajler/make prijavio:

"Modules should never use
kernel-headers system headers,
but rather headers from an
appropriate kernel-source package.
Change -I/usr/src/linux/include (or similar) to
-I/lib/modules/$(uname -r)/build/include
to build against the currently-running kernel.
"

Kada imas instaliran neki kernel, sve drajvere koji su instalirali u obliku modula (tj nisu uvezani u kernel direktno) se instaliraju u poseban direktorijum. Dakle, ako imam instaliran pomenuti kernel 2.4.18, moduli su locirani u /lib/modules/2.4.18 diru.
Gore jasno pise sta mu smeta i sta treba uraditi. Skripta trazi hedere iz ovakvog direktorijuma. Sa "uname -r" se saznaje koja verzija kernela se ima, pa se tako saznaje ime subdira u /lib/modules. Kada si otkucao "make", lepo si dobio:

cc -c -Wall -Wimplicit -Wreturn-type -Wswitch -Wformat -Wchar-subscripts
-Wparentheses -Wpointer-arith -Wcast-qual -Wno-multichar -O -MD
-D__KERNEL__ -DMODULE
-D_LOOSE_KERNEL_NAMES -D_X86=1 -Di386=1 -DUNIX -DLINUX -DNV4_HW -DNTRM
-DRM20 -D_GNU_SOURCE -DRM_HEAPMGR -D_LOOSE_KERNEL_NAMES -D__KERNEL__
-DMODULE -DNV_MAJOR_VERSION=1 -DNV_MINOR_VERSION=0 -DNV_PATCHLEVEL=2960
-I. -I/usr/src/linux/include -Wno-cast-qual nv.c

Dakle, ovaj narandzasti include path (iza -I) "/usr/src/linux/include" treba zameniti sa "/lib/modules/$(uname -r)/build/include".

EDIT:
Kada kazem 'treba zameniti', mislio sam na "editovati make skriptu i zameniti ove includ pathove". Slazem se, mogla je nvidia to i malo elegantnije da uradi, ali sta da sa radi. I sami su na pocetku skripte napisali da ona i nije neko umetnicko delo.
 
Nazad
Vrh Dno