Artikelkategori: Kärnan
Skriven av EddieX 2003-12-12 19:56
url: 

Aktivera devfs

Device filesystem (devfs) i Slack
Devfs är ett virtuellt filystem som lagras i ramminnet varje gång
datorn startas. Och i detta filsystem finner man enbart de enheter
som finns på den lokala maskinen. Vilket gör att man får en bättre
översikt på sina "enheter".


Följande steg kommer jag att ta dig igenom:
1) Installera devfsd.
2) Se till så att kerneln har stöd för devfs.
3) Se till så att filsystemet monteras korrekt.
4) Underssöka / Visa det nya lättare "/dev/".


####################################################
1) Installera devfsd:
Först och främst skall vi ta en backup på det nuvarande innehåll i
"/dev/". För att du enkelt skall kunna gå tillbaka till det gamla
om du nu finner devfs mindre attraktivt.
(#): tar zcpvf dev_backup.tar.gz /dev
Ett alternativ är att du avinstallerar följande paket: devs-2.3.1-noarch-18.
Vilket du gör på följande sätt:
(#):removepkg devs-2.3.1-noarch-18.
För att sedan återskapa din "/dev/" installerar du bara paketet på nytt.
Du kan även köra devfs och fortfarande ha kvar dina gamla enheter men då måste
du hoppa över raden "kommentera ut" i STEG #3.
Efter att du gjort en backup så går vi nu vidare med att installera
devfsd som kommer att sköta "skapandet" av nya "device nodes". Allt
eftersom du aktiverar stöd för nya enheter etc.
I Slackware 9.1 så följer devfsd med vid bas installationen men kolla
för säkerhetens skull att du har det.
(#):ls /var/log/packages/|grep devfsd*
Om inte så finner du det på skivan under katalogen:
cd/slackware/a/devfsd-1.3.25-i386-2.tgz

När du nu har installerat detta så finner du en konfigurationsfil under
/etc/ vid namnet devfsd.conf som innehåller en hel del parametrar för hanteringen
av enheterna.
##########################################

2) Se till så att kerneln har stöd för devfs:
Om du nu kör Slackware 9.1 med medföljande kernel så rekommenderar jag dig att
ladda hem en patch som uppdaterar ditt 2.4.22 källkodträd till 2.4.23.
Varför? Jo för att 2.4.22 lider av en elak exploit.
Nu fortsätter vi oavsett om du patchat eller ej, med att lägga till stödet
för devfs i din kernel.
För att du överhuvudtaget skall kunna lägga till devfs stöd i din kernel måste
du kryssa i följande:

Code maturity level options -->
[*]Prompt for development and/or incomplete code/drivers

När du gjort det så kan du fortsätta med att lägga till följande:

File Systems -->
[*] /dev/file system support (EXPERIMENTAL)
[*] Automatically mount at boot

När du lagt till ovanstående så är det bara att kompilera kerneln och sedan
installera den och lägga till den i din bootloader om du nu kör en sådan.
Kan dock vara bra att köra en bootloader vid ett tillfälle som detta, då
den nybyggda kerneln inte skulle fungera korrekt. Kan man lätt återgå till en
fungerande.
##########################################

3) Se till så att filsystemet monteras korrekt:
Liksom med alla andra filsystem som skall monteras automatiskt vid boot lägger
man till i filen: /etc/fstab eller om man nu vill använda sig av någon annan.
Vad vi skall skriva i fstab ser du _exakt_ här nedan:

devpts /proc proc defaults 0 0

Denna rad skall vi då kommentera ut eftersom devfs även hanterar pts.

Eftersom att filsystemet skapas vid varje start så kommer dina inställningar
på en enhet att nollställas. För att förhindra detta så kan du sätta dina
parametrar till enheten via en databas.
Skapa katalogen: (#):mkdir /dev-state
Sen vid boot så kör du följande: (#):mount --bind /dev /dev-state
Efter det så kör du (#):devfsd /dev.
Dessa två rader ovan skall helst köras _tidigt_ under boot.
Du finner devfsd exekveringen i följande skript:
/etc/rc.d/rc.S Lägg där till mount --bind /dev /dev-state raden innan
devfsd exekveras.

Sen måste du också avkommentera följande rader i din devfsd.conf:

REGISTER ^pt[sy] IGNORE
CREATE ^pt[sy] IGNORE
CHANGE ^pt[sy] IGNORE
DELETE ^pt[sy] IGNORE
REGISTER .* COPY /dev-state/$devname $devpath
CREATE .* COPY $devpath /dev-state/$devname
CHANGE .* COPY $devpath /dev-state/$devname
DELETE .* CFUNCTION GLOBAL LINK unlink /dev-state/$devname
RESTORE /dev-state

Du kan också skriva ett litet finurligt skript som sätter de inställningar
du vill på de valda enheterna vid uppstart av systemet. ex: /etc/rc.d/rc.local :)

För att använda sig av enbart devfs så måste vi ge ett par parametrar till
din bootloader. Men innan vi gör det så skall du starta om systemet med din
devfs aktiverade kernel för annars kommer inte bootloadern att kunna komma åt
dina valda enheter.
Använder du dig av lilo så gör du följande:
append="devfs=only root=/dev/enhet"
I devfs så heter "/dev/hda" istället "/dev/discs/disc0/disc".
"/dev/hda1" --> "/dev/discs/disc0/part1".
Sen får man givetvis ändra så att lilo använder sig av devfs istället för de
vanliga enheterna. Sen är det dags att köra lilo eller vilken bootloader man
nu använder sig av. Och sedan boota om systemet.
##########################################

4) Underssöka / Visa nya lättare /dev.
Om nu allting har gått vägen så ser du nu i /dev/ att det har minskat en del
dock så finns det ju symboliska länkar till vissa av de gamla enheterna för
kompatibilitets skäl. Alla drivrutiner stödjer inte devfs ännu.
Hoppas du haft en trevlig resa och att inga viktiga saker har försvunnit.
×