Ha egy device drivert elkészítünk, akkor azt egy speciális (Driver Software Packagenek nevezett) formában terjeszthetjük például mágneslemezen. Az INTERACTIVE UNIX az ilyen formátumú device drivereket automatikusan tudja installálni, ez nagy könnyebbség a felhasználónak. (Errol a formátumról az INTERACTIVE UNIX leírásában olvashatunk.) De a driver fejlesztésénél elég hosszadalmas munka lenne minden egyes tesztverziónál egy DSP formátumú lemezt létrehozni, ezért a következokben bemutatjuk a driver installálásának manuális változatát. Ehhez általában a root néven kell bejelentkezni.
--- - Objectkód létrehozása - ---
Ha a driverünk forráskódja egyetlen C nyelvu programból áll (ennek neve
legyen most Driver.c
, akkor azt a szokásos módon a
cc -c Driver.c
UNIX parancs segítségével fordíthatjuk le. (Bármi lehet a driver neve,
csak az a fontos, hogy a keletkezett objectkód át legyen majd nevezve
a Driver.o
névre.) Ha viszont a driver forráskódja több
C nyelvu programból áll, akkor azokat egyenként a fenti módon kell
lefordítani, és az ld -r paranccsal az így keletkezett
objecteket lehet egy modullá összeszerkeszteni, aminek a neve legyen
Driver.o
.
--- - Masterfileok változtatása - ---
Adni kell a drivernek egy nevet
. (Például a master fileokban ez a
név fogja azonosítani a drivert. A példadriverünknél legyen ez a
név: bcnd, ezt a nevet használjuk a továbbiakban is.)
Kreálni kell egy system file bejegyzést (ez kerül az sdevice
fileba) a következoképp: az /etc/conf/sdevice.d directoryban
hozzunk létre szövegszerkesztovel egy bcnd nevu filet. Ebbe írjuk
a driverhez tartozó sdevice bejegyzést. Legyen ez például a
következo :
bcnd Y 1 0 0 0 0 0 0 0
Az mdevice filet szintén ki kell egészíteni. Ez úgy megy, hogy az
aktuális directoryban létre kell hozni egy Master nevu filet, ami
az új mdevice bejegyzést tartalmazza. Legyen ez a következo :
bcnd - Sic bcnd 0 0 1 4 -1
A következo UNIX shell parancs megváltoztatja az mdevice filet
(úgy, hogy a Master filet az aktuális directoryból törli). (A leírásban
van az, hogy a Master nevu filet a rendszer törli az aktuális
directoryból, amikor a példadrivereket beraktam a rendszerbe, akkor
nekem nem törölte le ezt a filet.)
/etc/conf/bin/idinstall -a -m -k bcnd
Ezután az /etc/conf/cf.d/mdevice fileban nézzük meg a
blokk/karakteres major device numbert, késobb még szükség lesz rá.
--- - Speciális file bejegyzése - ---
Kreálj egy bcnd nevu filet a /etc/conf/node.d directoryban,
és egészítsd ki azt a Node formátumnak megfeleloen. (Vagyis 4 mezo
legyen egy rekordban, és az egyes mezok jelentése a következo :
1.: Driver neve (itt : bcnd)
2.: A device speciális filejának a neve
3.: 'b'
vagy 'c'
betu (blokk/character device drivernek)
4.: Minor device number)
A driverünknél ez a következoképp néz ki :
bcnd bcndm0 c 0
--- - További fileok kreálása - ---
Ha a drivert leteszteltük, és már hibátlanul muködik, akkor a /etc/conf/init.d, a /etc/conf/rc.d és a /etc/conf/sd.d directorykat is a szükséges scriptekkel kiegészíthetjük.
--- - A kernel újralinkelése - ---
Kreálni kell egy /etc/conf/pack.d/bcnd nevu directoryt, és be kell
vinni oda a Driver.o
és a Space.c
nevu fileokat, és
csinálni kell egy másolatot a régebbi UNIX kernelrol a következo
paranccsal :
cp /unix /unix.bak
Majd végre kell hajtani a /etc/conf/bin/idbuild shell scriptet,
ami újralinkeli a kernelt. Ha nem volt hiba, akkor shutdown után a UNIX
rendszert újra betöltve tesztelheto a driver. (A device speciális fileok
csak a következo UNIX reboot után lesznek megkreálva.)