Re: lug-bg: IPX i po tocno kak sa nawyrzani *.h na kernela
- Subject: Re: lug-bg: IPX i po tocno kak sa nawyrzani *.h na kernela
- From: whitefang@xxxxxx (Angel Valkov)
- Date: Sun, 13 May 2001 02:29:54 +0300
On Saturday 12 May 2001 15:57, you wrote:
> Zdraveite
>
> > da...
> > towa e chesto sreshtan problem :))
> > (e ne chak tolkowa chesto)
> > znachi w redhat i mandrake reshawat problema s rpm-ite
> > shtoto pichowete se mychat wmesto tebe ...
>
> A zasto ne dawat sorsowete aide da ne e w CD'to
> ama pone na servera na RedHat ili Mandrake.
Davat gi . Potyrsi paker koito zavyrshva na ".src.rpm" prmerno na rpmfind
Ne e neobhodimo da si na RPM bazirana sistema za da mojesh da buidnesh takyv
paket, no ti triabva nai malkoto rpm za da instalirash source paketa. Ako ne
si na rpm bazirana sistema i niamash rpm mojesh da hvanesh niakoi poznat
koito e na takava. Sled koeto si izkopirash filevote ot
/usr/src/redhat/SOURCES i /usr/src/redhat/SPECS
koito sa 4ast ot paketa. ( vyv vtorata direktoria ima .spec file koito e za
binary-to ) . Vyv pyrvata direktoria triabva da imash drug .spec file na
imato na paketa. Toi ti ukazva kak se buidva paketa ot src paketa.
Za da go buildnesh ne e neobhodimo da e s prm, no shte triabva da
izpylnish ry4no stypkite ot build procesa opisan 4rez .spec file-a.
1.Razarhivirash bazovia tarball.
2.Vyv spec-a ima opisani patch-ovete koito se prilagat ( Te syshto sa nali4ni
vyv direcoriata SOURCES ) i v kakva posledovatelnost. Obryshtai vnimanie na
versiite v kraia na imeto na bazovia paket zashtoto moje da ti se naloji da
preimenuvash na niakolko pyti direktoriata v koiato si razarhiviral bazovia
paket. ( Tova e vyzmojno ako tekushtia paket ne e bil patchnat s patch-ove za
predishni versii koito se otnasiat do nesvyrzani pomejnu si file-ove ) i nai
ve4e spazvai posledovatelnostta opisana v %prep sekciana na .spec file-a
Primerno ako paketa ti se kazva pakageX-2.4.3 i imash patchove syotvetvo
1. patch-blabla-2.1.3.patch
2. patch-blala-2.3.1.patch
3.patch-blabla-glibc2.2-2.4.3.patch
ti triabva slednoto
gzip -cd packageX-2.4.3.tar.gz |tar x
mv packageX-2.4.3 packageX-2.1.3
patch -i patch-blabla-2.1.3.patch -p0 --dry-run // Ako mine OK bez --dry-run
mv packageX-2.1.3 packageX-2.3.1
patch -i patch-blabla-2.3.1.patch -p0 --dry-run // Ako mine OK bez --dry-run
mv packageX-2.3.1 packageX-2.4.3
patch -i patch-blabla-glibc2.2-2.4.3.patch -p0 --dry-run
Sled koeto v %prep section-a na .spec file-a moje da
ima opisani i drugi stypki koito da se predpriemat predi build-a.
Primerno izpylnenie na niakakyv shell script ( normalno sa samo takiva )
i vaprosnia shell script syshto e vklu4en v paketa. Ako ima takiva gi
izpylniavash v posledovatyelnostta v koiato sa opisani v spec-a.
nakrai cd packageX-2.4.3
i go buidvash po opisania v README , INSTALL ili tam kakto i kydeto e opisano
za normalnia src.
Ako si na RPM distro vij kakvo pravi "rpm --buid". tuk moje i da zapecnesh
mnogo zdravo zaradi dependancy-ta ot drugipaketi. Taka 4e az li4no
predpo4itam prednia variant koito osven vsi4ko drugo ti dava i po goliam
kontrol vyrhu neshta kato CFLAGS i -I direktivi ( Ako stava vapros za C kod ).
>
> > compilirat i taka ti go dawat ... sdywkano
> > koeto ne e interesno ... gubi se trypkata :)
>
> De da bese samo trypkata ;-(.
>
Mda ne e samo trypkata obiknoveno polu4avash .386.rpm koito e s
mnogo deps ot drugi paketi. I v slu4ai 4e ne si instalirash cialata
distribucia a otdelni paketi ot razli4ni distribucii shte ima da se
4udish zashto imash tolkova mnogo file-ove "core" nacvykani kade li ne i
zashto programata xxx postoianno ti se crashva.
Ot druga strana ima i predimstva. Vmesto da rovish na gore nadolu po inet-a za
razni "tips" za tova kak go buildnesh i koi versii na koi biblioteki i
programi i s kakvi opcii da sa buidnati iziskva paketa xxx za da se compilira
i raboti. Kato ideia buidvaneto ot src.rpm e po-priemlivo. ot gledna to4ka
na syvmestimost sys nali4nite biblioteki.
> > problema ti s include files ne e che sa napisani nekadyrno
> > a che prosto edin include file iska drug predi sebe si
> > i ako ne si go includenal stawa problema
> > ideqta e che kato includnesh edin
> > toj si prawi #defines koito sledwashtite includowe
> > mogat da polzwat... a nqkoj gi iskat zadylvitelno
> > wivdal sym prilichno napisani includes koito prawqt slednoto:
> >
> > #ifndef NQKOJSI_INCLUDE_H
> > #error please do not include X_H directly ... use Y_H instead
> > #endif
>
> Te wsysnost sa si prawilno napisani samo deto ne sywpadat
> otnositelnite direktorii i reda w koito se pretyrswat.
> Makefile na kernela polzwa tocno toia nomer
> s -I i -I- i preregulira pytistata na gcc.
> Wizdam kakwo prawat no ne uspiawam da shwana ideiata.
> Misla ce opitite w koito se bluskah
> poslednite dwe sedmici sa pogresna strategia.
>
Da kakto Georgi Dancev pisa Ideiata da pipash #include 's hi4
ne e dobra.
Za men nai strannoto v slu4aia e 4e imash 3 file-a ipx.h
Principno neshtata s net i scsi sediat po slednia na4in
Iadroto predostavia "framework" s koito avtorite na
low-level driveri za mrejovi kontroler naprimer si spestiavat
usiliata da pishat kod koito se zanimava neshata prednazna4eni za "protocol
layer"-a. Toest ipx.h ot kernel include direktoriata ti e prednazna4en za
kernel networking drivers. No ne i za User Space programi koito iskat da
polzvat ipx. High level interface-a kym mrejovite funcions pyk se
polzva ot user space programi za da se ulesni pisaneto na takiva
programi. Za high level funciite triabva da imash definiram savsem razli4en
interface. Taka 4e bi sledvalo da imash dublirane ne na interfac-i a
samo na imenata im . V konkretnia sl ipx.h za low-level kernel drivers
ot source-a na iadroto i ipx.h za user space programi koito ne e
4ast ot iadroto a ot C bibliotekata.
Nakratko situaciata e slednata. Bi sledvalo pri "clean" systema da imash
to4no 2 file-a "ipx.h" v include direktoriite v koito se tyrsi po
podrazbirane.
Edinia pri men e v /usr/src/linux/include/net
drugia e 4ast ot libc-to i pri men e v /usr/include/netipx/
Nai veroiatno imash niakakyv "staled" ipx.h ostanal ot stara versia na libc
ili ot drug paket koito e v /usr/include/net.
Pri glibc2.2 iph.h e v /usr/include/netipx
Ako vaprosnite programi sa "user space" te triabva da vklu4at file ot libc-to
Mai v prednite versii toi beshe v "net" a ne v "netipx" . No ne sym siguren
Ako e taka i imash primerno #include <net/ipx.h> ili <netipx/ipx.h>
shte se vlu4i file-a /usr/include/net/ipx.h ako ne si zadal nikakvi
dopylnitelni includes sys -I
Normalno ako buildvash user space programa i tia e napisana kato triabva
i ima nujda ot header-a koito sa 4ast ot iadroto bi triabvalo da imash neshto
ot sorta na #include <linux/ipx.h>
Tova e pri uslovi 4e gcc se vika bez niakvi opcii -I
No v tozi sl. ako ipx.h ot /usr/src/linux/include/linux
kam koiato direktoria vsyshnost triabva da ti e symlink-a /usr/include/linux
( /usr/include/linux -> /usr/src/linux/include/linux )
i toi vklu4va drug header koito e ot kernal tree-to shte se provali ili
ako ima takyv file v /usr/include shte vklu4i greshen file.
Ako polzvash direktivata -I direktoriite koito zadavash s neia imat
"precedence over" default include direktoriata. Taka 4e ako imash
export HPATH=/usr/src/linux/include
gcc -I$HPATH neshto si
shte se vklu4at tezi header ot $HPATH vmesto tezi ot /usr/include
eto ti edi byrz primer za edin sravnitelno prost networking driver koito se
kompilira perfekto sys podhodiashto zadadeni -I ot proizvolna direktoria
direktivi e absolutno ne-compiliruem bez tiah
export HPATH=/usr/src/linux/include
gcc -DMODULE -D__KERNEL__ -I$HPATH -Wall -Wstrict-prototypes -02
-fomit-frame-poiner -pipe -c plip.c
No ako se opitash sys default header path-a vypreki 4e header-ite koito tozi
modul vklu4va direktno se "vijdat" ot default include pytia vodi do slednia
na pryv pogled bylvo4
gcc -DMODULE -D__KERNEL__ -Wall -Wstrict-prototypes -02 -fomit-frame-poiner
-pipe -c plip.c
>
In file included from /usr/include/linux/fs.h:15,
from /usr/include/linux/capability.h:17,
from /usr/include/linux/binfmts.h:5,
from /usr/include/linux/sched.h:9,
from plip.c:93:
/usr/include/linux/net.h:112: parse error before `ssize_t'
/usr/include/linux/net.h:112: warning: no semicolon at end of struct or union
In file included from /usr/include/linux/dcache.h:7,
from /usr/include/linux/fs.h:19,
from /usr/include/linux/capability.h:17,
from /usr/include/linux/binfmts.h:5,
from /usr/include/linux/sched.h:9,
from plip.c:93:
/usr/include/linux/mount.h:32: parse error before `uid_t'
/usr/include/linux/mount.h:32: warning: no semicolon at end of struct or union
/usr/include/linux/mount.h: In function `mntget':
/usr/include/linux/mount.h:38: dereferencing pointer to incomplete type
/usr/include/linux/mount.h: In function `mntput':
/usr/include/linux/mount.h:45: dereferencing pointer to incomplete type
>
Ako poglednesh v /usr/src/linux/Makefile
shte vidish slednoto:
HPATH = $(TOPDIR)/include
i malko po natatyk
CPPFLAGS := -D__KERNEL__ -I$(HPATH)
CFLAGS := $(CPPFLAGS) -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
-fno-strict-aliasing
AFLAGS := -D__ASSEMBLY__ $(CPPFLAGS)
Ta ako iskash da buid-nesh kernel module ne v dyrvoto na kerne-la i ne kato
4ast ot build-a na kernel-a nai malkoto triabva da si ustanavish parilnata -I
direktiva.
Ima oshte edna osobenost. Moje v niakoi file-ove da se include-vat .h file-ve
koito se polu4avat pri
make dep
pri normalen kernel build
Tova e za da se proveri dali configuraciata otgovaria na zavisimostita mejdu
otdeknite moduli.
V taozi sl. moje i daden modul koito iziskva drugi moduli da ne moje na pryv
pogled da se kompilira samostoiatelno kato po povyrhnosten pogled shte te
dovede do izvoda za problem s header-ite.
V tozi sl.
make config - kato vklu4ish modulite ot kioto zavisi vaprosnia
make dep
i kompilacia na vaprosnia modul.
Tova vaji syshto i za niakoi daemo-ni i user space programi
Te se opitvat da vklu4at file-love ot iadroto za da sa sigurni 4e "feature"
e nali4en.
A malkia file s mnogoto #ifdef-ove e to4no takyv koito se polu4ava pri
make config ; make dep
Toi e v include/config/ipx.h
net/ipx.h ot /usr/src/linux/include e interface-a za high-level-a mai v tvoia
sl. to4no tozi file ti trabva ( za daemon-a )
iph.h ot /usr/src/linux/include e za low-level ( da driveri za NIC-ovete )
Dano tova dylgo nesvyrzano obiasnenie ti pomogne ( mnogo se symniavam )
> Koeto kakto Georgi Dancev pisa:
> > #includes da so4at to4no kudeto trqbwa ( koeto v slu4aq e rabotra za
> > cqliq kitaiski narod ) , ne e sigurno 4e segashnite ti .h ste "pasnat" .
>
> Oswen towa i ste e zawisimo tocno s wersiata na kernela za koiato go prawa.
>
> > i towa reshawa problema
> >
> > ako propishesh kernel moduli shte sreshnesh strashno mnogo takiwa probs
>
> I az taka resih w pyrwia moment, obace e taka samo ako direktno
> kato pyrwa stypka dobawia nowia prazen modul direktno w direktoriata
> s drugite sorsowe i go dobawa kato pyrwa stypka w make failowete na
> kernela i *.h ot treti wid "wsysnost te kato ce wyrwiat poweceto po troiki"
> i cak togawa pocna da go izgrazdam modula.
> Towa ste dowede obace do problema seka kompilacia na modula
> da se iska i kompilacia na celia kernel i kato se ima predwid kolko
> prekompilacii probi i redakcii se iskat za otglazdane na nesto
> dori nai elementarno towa ste znaci stotici pyti da prekompiliram kernela.
> " To i taia diwa misyl mi mina prez glawata da go kopna w direktoria na
> kernela i da go dobawa w make faila na kernela ta da polzwam
> negowite nastroiki za tyrsene na *.h - towa oste ne sym go probwal"
>
> Dori i za modul pak bi bilo logicno pyrwo da mu naprawa otdelna
> direktoria i Makefile i cak gogato modula zaraboti da go prekaca
> w make failowete na kernela.
> Koeto na praktika opira pak w systia problem.
> Ne moze toia problem da nema logicno, dobro resenie.
> Edinstwennata pricina IPX paketite da se kompilirat s
> 1.0.** i 1.1.xx kerneli a da ne se kompilirat s 2.x.xx
> e izmeneniata w razpolozenieto na h failowete na kernela
> i reda w koito se includwat.
>
> Ubezdenieto mi ce problema ima razumno resenie idwa ot
> towa ce pri kolekciite s iadra 2.2.xx i nagore
> neminuemo se e nalozilo da se izkarat nowi wersii
> na sicki paketi koito polzwat inklude kym kernela.
> Ne misla ce sa malko de sto e mrezowi demon
> se ste ima nekoi i drug include kym kernela.
> Ne moze da sa gi prenapisali nanowo s iawni pytista
> i li da sa im dobawili kilometricni kompilacii ot redaktirani
> h ot kernela. Ne moze da nema nacin.
> Ne moga da resa koi da e toia hem prost hem da tyrsi kernel h
> demon da izplagiatstwam ot nego.
> Towa ce az cak sega sym se sybudil da go tyrsa otdelno,
> ama strategia triabwa da ima i ne moze nekoi da ne ia znae
> i da nema nesto pisano po wyprosa.
>
> > no za syvalenie s ipx ne sym se zanimawal i ne moga da ti kava kakwo da
> > includnesh ...
>
> To koj az na edna cetwyrt znam. Primerno ipx.h ama koi ot cetirite ;-)
> tozi s gcc iawno ne a ot 3 te s kernela nai sym sklonen na tozi w net
> ama ne sym siguren a onia tretia malkia s ifdefovete i idea si nemam
> kyde e nai podhodiastoto mu miasto.
> Spretnah edna malka programka s nekolko funkciiki prosto za proba
> s iavno posocen pyt kym ipx.h w net na kernela. Samo s nego se kompilira s
> drygite
> rewe za mnogo stranni greski. Towa e dobre ama ako polzwam samo
> funkcii definirani w tozi h ako wikna funkcia deto e w h koito
> ipx.h includwa rewwa ce ne moze da go nameri ako w ipx.h
> oprawa pytia da e iawen kym tozi h to problema se prenasia
> w po-sledwastia h.
>
> Ot Georgi Dancew
>
> >Ste ti trqbwa source na dostatu4no star kernel 1.2.x primerno .
> >symlink
> >/usr/src/linux -> /usr/src/linux-1.2.3/include/linux
> >/usr/include -> /usr/include_old
> >compile paketite .
>
> Onia iadra iskaha pyk redakcia na kernela
> "ne mnogo malki i ne e mnogo prosta"
> ce imase nekoi defekti inace da taka bi triabwalo da stane.
> Towa obace ne bi syziwilo za wseobsto polzwane
> tezi 3 paketa koito smiatam za sywsem nesprawedliwo
> podceneni i zabraweni.
> A te w mnogo slucai sa mnogo po efektiwni i polezni
> ot kombinaciata Samba i TCP/IP osobenno za
> failow server i golemi transweri po ethernet mreza.
> Dori i da niamate nito edin file server.
> A linuxa bezporno "pone za men e nai pylnia
> i perfektno rabotes Gatewey mezdu IPX i TCP/IP
> Prosto kato primer prilagam ifconfig na moita masina.
> Prehwyrlen e w dos txt kato ifconfig.txt.
>
> >No ako naistina nqma nqkoq nova razrabotka po vuprosa za Novell-ski
> >server/client pod Linux e jalko ...
>
> Ti da znaes tekustia kolko e jak 3 nowelski servera s obsto 7 voluma
> okolo 40GB gi mountwam kato dyrvo ne usestam nikakwo zabawiane
> na Linuxa a failowite mi operacii kym tiah sa kato ce po byrzi ot lokalnite
> s diska mi "e pone srawnimi" pri 10 megabitowa mreza.
> Na silckoto otgore mi e i IPX ruter i masinata na koiato seda w momenta
> wizda ostanalite 3 IPX, 1 samo TCP/IP i 1 smesena mrezi mrezi prez linuxa
>
> >To imalo i novi nestica po temata "NetWare for Linux" , ama sa commercial
> > , ne samo RH i Mandrake i tezi susto
> > http://support.caldera.com/caldera/faq
>
> Cel sym dosta reklami za nego no do minalata godina bese
> ne slozis li parata na masata samo s cetene na reklami si ostawas.
> Daze demo ne dawaha, sega ne znam.
> No Mars "Netware servera za Linux" na Martin Stolver
> e prosto prekrasen pylen i bezproblemen ekwiwalent
> na Novell 3.1x.
> Toi mi e 4'tia Novelski server i towa sa realno
> 3 malki demonceta obsta 2,5MB w rama koito masinata
> woobste ne usesta.
> Spored Martin Stolver e malko po neefektiwno ot 3.1x
> i dosta po efektiwno ot 4.xx. Az pone ne go usestam
> kato po neefektiwen ot 3.xx a w sravnenie s 4.xx
> prosto nemam dumi. E ne potdyrza NDS ama
> 90% ot horata si ziweem prekrasno i bez nego.
> "Pod sekret az mraza NDS makar ce e wyrha"
>
> Ot Nikolai Mitev
>
> > Hi!
> >
> :-)
> :
> >Pogledna li IPX-Howto? Tam ima obqsneniq ot kude da si vzeme6
> >source-ovete i kak da gi kompilira6 za razli4ni versii na kernel. Eto
> >ti malko ot TOC-a:
>
> Da za syzalenie poslednia e ot 6 mai 98.
> Dosta neznacitelni drebolii w nego ne sa sywsem werni.
> Nekolko coweka na nekolko mesta sa spretnali
> negowi neoficialni dopylnenia na tema koe kak da
> skyrpim w nowite realnosti.
> Smiatam obace ce bez da sa opraweni sorsowete
> Da mu se prawi nowa redakcia opiswasta
> razni kyrpezi ne e razumno.
>
> Ste mi se nekoi po mlad, po umen i entusiaziran da
> se hwane stowa, pyk i s powece wreme.
> Ce to az uz sym se entusiaziral ama ni edno ot
> gornite 4 ne mi e na niwo ta napravo mi se plasi okoto
> ot obema i sloznostta na rabotata.
>
> >Dano da ne sum govorq gluposti! ;-)
>
> Ne sys sigurnost e werno i seka pomost e dobre dosla.
> A da ne zabraviame ce i ne sme samo nie dwamata
> deto go cetem ta dano i na drugi e polezno ;-)
>
> Pozdravi i blagodaria na wsicki
> Kristo
----------------------------------------
Content-Type: text/plain; charset="windows-1251"; name="ifconfig.txt"
Content-Transfer-Encoding: quoted-printable
Content-Description:
----------------------------------------
===========================================================================
A mail-list of Linux Users Group - Bulgaria (bulgarian linuxers)
http://www.linux-bulgaria.org/ Hosted by Internet Group Ltd. - Stara Zagora
|