next up previous contents
Vidare: Nätverksinställningar. Uppåt: Inställningar. Tillbaka: Inställningar.

Systeminställningar.

Innan man ger sig i kast med mer avancerad systemkonfigurering, är det förnuftigt att lära sig, hur systemet är upplagt, och vilka kommandon, som kan användas till att söka efter filer och program. Det är också bra att veta, huruvida man behöver kompilera en kärna och vilka mått och steg, man måste vidta för detta. I detta kapitel bekantar vi oss med, hur systemet är organiserat, samt med dess inställningsfiler. Därefter kan vi gå in på mer avancerade delar av systemet.

Systemöversikt.

Det är viktigt att förstå, hur ett linuxsystem är sammansatt, innan man dyker ner och fördjupar sig i konfigureringen och dess olika synvinklar. Ett linuxsystem skiljer sig avsevärt ifrån ett DOS- eller windowssystem (eller t.o.m en Macintosh), men följande avsnitt skall hjälpa läsaren bekanta sig med upplägget, så att man lätt skall kunna ställa in systemet så pass väl, att det tillgodoser ens egna behov.

Filsystem.

 

Den första märkbara skillnaden emellan Slackware Linux å ena sidan och DOS eller Windows å den andra är filsystemet. För det första använder vi inte enhetsbokstäver till att beteckna olika partitioner. I Linux finns en enda huvudkatalog. Man kan jämföra denna med enhet C: i DOS. Var partition i systemet monteras under en katalog i huvudkatalogen. Det kan liknas vid en hårddisk, som ständigt växer sig större.

Vi kallar huvudkatalogen för rotkatalogen, och den betecknas med ett enkelt, framåtlutat snedstreck (/). Detta kan synas underligt, men det gör faktiskt livet lättare för en, när man vill lägga till mer lagringsutrymme. Antag exempelvis, att lagringsutrymmet på den hårddisk, där katalogen /home är belägen, tar slut. De flesta installerar Slackware på en enda stor partition till rotkatalogen. Nå, eftersom nu en partition kan monteras under vilken som helst katalog, så kan man helt enkelt gå till affären och köpa en ny hårddisk, som man monterar under /home. Då har man så att säga »ympat« på litet mer utrymme till systemet. Allt utan att ha måst flytta omkring särskilt mycket.

Nedan följer beskrivningar av de viktigaste katalogerna omedelbart under rotkatalogen i Slackware.

/bin

Grundläggande användarprogram förvaras här. Dessa utgör minsta möjliga uppsättning program, som behövs, för att man skall kunna använda systemet. Kommandoskal och filsystemskommandon (ls, cp o.s.v.) förvaras här. Katalogen /bin ändrar man vanligtvis inte på efter installationen. I så fall sker det genom paketuppgraderingar ifrån Slackware.

/boot

Filer, som används av Linux Loader (LILO), förvaras här. Inte heller denna katalog förändras mycket efter installationen.gif

/cdrom

Som sagt, alla enheter måste monteras under en katalog under rotkatalogen. Katalogen /cdrom tillhandahålles här såsom monteringsställe för CD-ROM-läsaren.

/dev

Allting i Linux behandlas såsom filer. Det gäller även maskinvaruenheter såsom serieportar, hårddiskar och bildläsare. För att man skall komma åt dessa enheter, måste en särskild sorts fil vara förhanden, vilken kallas för device node. Alla sådana förvaras i katalogen /dev. Detta överensstämmer med bruket i många unixliknande operativsystem.

/etc

Denna katalog innehåller filer för systemkonfigurering. Allting ifrån X-fönstersystemet inställningsfil till användardatabasen och systemets startskript. Med tiden blir systemadministratören väl förtrogen med denna katalog.

/home

Linux är ett fleranvändarsystem. Var användare i systemet får ett konto och en särskild katalog för personliga filer. Denna katalog kallas för användarens »hemkatalog«. Katalogen /home tillhandahålles såsom förval att ha användarnas hemkataloger i.

/lib

Programbibliotek, som är nödvändiga, för att systemet skall kunna fungera, förvaras här. C-biblioteket, den dynamiska laddaren, ncurses-biblioteket och kärnmodulerna hör dit.

/lost+found

När systemet startar, kontrolleras filsystemen med avseende på fel. Om några fel uppdagas, så köres programmet fsck för att undersöka, huruvida några av felen kan rättas till. De rättade delarna av filsystemet skrivs till katalogen /lost+found.

/mnt

Denna katalog tillhandahålles som tillfälligt monteringsställe för arbete på hårddiskar eller löstagbara enheter.

/opt

Katalogens namn står för optional. Den är avsedd för valfria programpaket. Tanken med /opt är den, att om man installerar programpaket under /opt/<programpaket>, så blir det lätt att ta bort dem senare. Slackware distribuerar en del program, som hamnar under /opt (såsom KDE i /opt/kde), men man kan lägga till vad man vill i /opt.

/proc

Denna katalog är ensam i sitt slag. Den är egentligen inte en del av filsystemet, utan utgör ett virtuellt filsystem, som ger tillgång till information ifrån kärnan. Olika upplysningar, kärnan vill förmedla, uppenbaras genom »filer« i katalogen /proc. Man kan även sända information till kärnan genom några av dessa »filer«. Man kan försöka med att kommendera cat /proc/cpuinfo.

/root

Systemadministratören kallas för root och har hemkatalogen /root i stället för /home/root. Skälet är enkelt. Vad skulle hända, om /home låge på en annan partition än / och denna partition inte kunde monteras? Då skulle förstås root vilja logga in och åtgärda problemet. Om då hans hemkatalog hade legat på det skadade filsystemet, så skulle det ha blivit svårt för honom att logga in.

/sbin

Väsentliga, grundläggande program, som root brukar köra och som körs under systemstart, förvaras här. Vanliga användare brukar inte köra program i denna katalog.

/tmp

Katalog för tillfällig lagring. Alla användare har läs- och skrivrätt till denna katalog.

/usr

Detta är den stora katalogen i ett linuxsystem. I stort sett allt övrigt hamnar här: program, dokumentation, källkoden till linuxkärnan och fönstersystemet X. Detta är den katalog, dit man troligast installerar program.

/var

Systemets loggfiler, cachedata och programmens låsfiler förvaras här. Detta är en katalog för data, som ändras ofta.

Efter denna genomgång bör man ha en god känsla för vilka kataloger, som innehåller vad, i filsystemet. Nästa avsnitt skall visa, hur man lätt hittar bestämda filer, så att man inte behöver söka för hand.

Finna filer.

Nu vet vi, vad var katalog innehåller, men detta är likväl inte till så mycken hjälp, när man letar efter något. Man kan visst leta sig igenom alla katalogerna, men det finns snabbare sätt. Slackware har fyra viktiga sökkommandon.

which.

Det första är kommandot which(1). Det brukas vanligen till att snabbt leta upp ett program. Det genomsöker endast sökvägen (enligt variabeln PATH) och svarar med den första förekomst, det stöter på, tillsammans med sökvägen dit. Betrakta detta exempel:

   $ which bash
   /bin/bash
Som synes finnes bash i katalogen /bin. Detta är ett mycket begränsat sökkommando, eftersom det endast följer den sökväg, som står i variabeln PATH.

whereis

Kommandot whereis(1) fungerar på ett liknande sätt som which, men det kan även söka upp manualsidor och källkodsfiler. En sökning med whereis efter bash bör ge detta resultat:

   $  whereis bash
   bash: /bin/bash /usr/bin/bash /usr/man/man1/bash.1.gz
Detta kommando talar inte bara om för oss, var själva programmet finns, utan även var hjälpen (manualsidan) är lagrad. Likväl har detta kommando sina begränsningar. Tänk, om man skulle vilja söka efter en bestämd inställningsfil? Då duger inte which eller whereis.

find

Kommandot find(1) söker efter vad som helst. Antag, att vi vill söka efter systemets xinitrc-fil:

   $ find / -name xinitrc
   ./var/X11R6/lib/xinit/xinitrc
find tar en stund på sig att köra, eftersom det måste genomlöpa hela rotkatalogträdet. Om man kör detta kommando såsom vanlig användare, så får man förmodligen en del felmeddelanden om vägrad åtkomst till kataloger, vilka endast root har sökrätt i. Men find har hittat vår fil, så det blev bra. Hade det bara varit en smula snabbare … 

locate

Kommandot locate(1) genomsöker hela filsystemet, precis som find, men det letar i en databas i stället för att söka i det egentliga filsystemet. Denna databas är uppriggad så, att den av sig själv uppdateras dagligen klockan 04:40, för att man skall ha en någorlunda färsk fillista att söka i. Man kan uppdatera databasen för hand genom att köra updatedb(1) (först måste man använda kommandot su för att tillfälligt få rättigheter som root eller nobody). Här följer ett exempel:

   $ locate xinitrc   # Vi behöver inte bli root först
   /var/X11R6/lib/xinit/xinitrc
   /var/X11R6/lib/xinit/xinitrc.fvwm2
   /var/X11R6/lib/xinit/xinitrc.openwin
   /var/X11R6/lib/xinit/xinitrc.twm
Nu fick vi mer än vi letade efter, och snabbt gick det. Med dessa kommandon skall man kunna finna vad man än letar efter i sitt linuxsystem.

Katalogen /etc/rc.d.

Systemets startfiler finns i katalogen /etc/rc.d. Slackware använder ett upplägg för systeminitieringsfilerna, vilket liknar BSD-systemens. Var uppgift (task) eller körnivå (runlevel) har sin egen rc-fil. Detta ger en välordnad uppbyggnad, som är lätt att underhålla.

Systemstart.

Det första program, som börjar köras under Slackware, förutom linuxkärnan, är init(8). Detta program läser filen /etc/inittab(5) för att se, hur systemet skall köras. Det kör skriptet /etc/rc.d/rc.S för att förbereda systemet innan det går in i önskad körnivå (runlevel). Filen rc.S gör det virtuella minnet verksamt, monterar filsystemen, rensar upp i vissa loggkataloger, initierar plug'n'play-enheter, laddar kärnmoduler, konfigurerar PCMCIA-enheter, ställer in serieportar och kör SystemV-initieringsskript (ifall sådana finnes). Uppenbarligen har rc.S mycket på tallriken, men här följer en lista över några av de skript, som rc.S anropar för att fullgöra sitt arbete:

rc.S

Detta är det egentliga systeminitieringsskriptet.

rc.modules

Laddar kärnmoduler. Saker och ting såsom nätverkskort, PPP-stöd, ljudkort, skrivarport m.m. laddas här. Om detta skript i samma katalog hittar en fil vid namn rc.netdevice och denna är körbar, så köres även det senare skriptet.

rc.pcmcia

Avkänner och ställer in PCMCIA-enheter, som kan förekomma i systemet. Detta kommer särskilt väl till pass för användare av bärbara datorer, som förmodligen har ett PCMCIA-modem eller dito nätverkskort.

rc.serial

Ställer in serieportarna genom att köra setserial-kommandon.

rc.sysvinit

Letar upp SystemV-initieringsskript för önskad körnivå (runlevel) och kör dem. Detta diskuteras mer ingående nedan.

Initialiseringsskript för olika körnivåer.

Efter att systeminitieringen är färdig, fortsätter init med initiering för vald körnivå. En körnivå beskriver ett tillstånd, som maskinen skall köra i. Låter detta som något överflödigt? Nåja, körnivån talar om för init, huruvida man vill ta emot inloggningar av flera användare eller enbart en enda användare, huruvida man vill ha tillgång till nätverkstjänster och huruvida man vill låta X-fönstersystemet eller agetty(8) hantera inloggningarna. Nedan uppräknade filer definierar de olika körnivåerna i Slackware Linux.

rc.0

Stanna systemet (runlevel 0). Såsom förinställning är denna fil länkad till filen rc.6.

rc.4

Fleranvändarstart (multiuser startup, runlevel 4), men i fönstersystemet X11 med någon av de grafiska inloggningshanterarna KDM, GDM eller XDM.

rc.6

Starta om systemet (runlevel 6).

rc.K

Enanvändarstart (single user mode, runlevel 1).

rc.M

Fleranvändarstart (multiuser mode, runlevel 2 och 3), men med den standardmässiga textbaserade inloggningen. Detta är förinställd körnivå i Slackware.

Nätverksinitiering.

Körnivåerna 2, 3 och 4 startar även nätverkstjänster. Följande filer ombesörjer nätverksinitiering:

rc.inet1

Skapas av netconfig. Denna fil står för konfigurering av nätverksgränssnittet.

rc.inet2

Köres efter rc.inet1 och sätter igång grundläggande nätverkstjänster.

rc.atalk

Sätter igång AppleTalk-tjänster.

rc.httpd

Sätter igång webservern Apache.

rc.samba

Sätter igång fil- och skrivardelning för Windows-maskiner.

rc.news

Sätter igång newsservern.

Kompatibilitet med System V.

Kompatibilitet med initiering enligt System V har införts i Slackware 7.0. Många andra linuxdistributioner begagnar detta slag av systeminitiering i stället för den BSD-liknande, som Slackware använder. Vid SystemV-init är grunden den, att var körnivå (runlevel) får en egen underkatalog till sina initieringsskript, medan den BSD-liknande Slackware-initieringen har ett enda initieringsskript för var körnivå.

Skriptet rc.sysvinit letar upp SystemV-initieringsskript, som kan finnas i /etc/rc.d, och kör dem, ifall de passar in i körnivån. Detta är användbart i samband med vissa kommersiella programvarupaket, som installerar SystemV-initskript.

Andra filer.

Nedan beskrives de övriga systeminitieringsskripten. Deras körning utlöses vanligen ifrån något av de tidigare nämnda huvudskripten, så att man inte behöver göra något annat med dem än att redigera innehållet.

rc.cdrom

Om detta skript är verksamt (filen körbar), så kommer det att söka efter en CD-ROM-skiva i CD-ROM-enheten och montera denna under /cdrom, om det hittar någon.

rc.gpm

Startar gpm, general purpose mouse services, musdrivaren för textläge utanför X. Gör det möjligt att kopiera och klistra in med hjälp av musen även i textläge.

rc.ibcs2

Startar stöd för Intel Binary Compatibility. Detta behövs endast, om man avser köra program, som kompilerats för SCO UNIX eller andra kommersiella UNIX för maskiner med intelprocessorer. Det behövs inte för linuxprogram.

rc.font

Laddar ett skärmtypsnitt, man valt för textläget utanför X.gif

rc.local

Innehåller särskilda startkommandon för det egna systemet. Denna fil är tom omedelbart efter en färsk installation, eftersom den är förbehållen lokala systemadministratörer. Detta skript köres efter det, att all annan initiering redan har ägt rum.

Startskripten blir verksamma, genom att man gör dem körbara (exekverbara) med kommandot chmod. Omvänt görs de overksamma, genom att man avlägsnar exekveringsrätten från filerna. Upplysningar om, hur man använder chmod, står på s. gif.

Att välja kärna.

Kärnan är den del av operatsystemet, som ger maskinvaruåtkomst, processtyrning och systemstyrning över huvud. Kärnan innehåller stöd för olika maskinvaruenheter, så att det är ett viktigt steg att välja rätt kärna för sitt system.

Slackware levereras med omkring sextio förkompilerade kärnor att välja emellan. Var och en av dem innehåller förutom en standarduppsättning drivare även stöd för olika mer speciell maskinvara. Man kan köra en av de förkompilerade kärnorna eller också kan man bygga sin egen kärna ur källkoden. Hur man än gör, måste man förvissa sig om, att kärnan innehåller stöd för den maskinvara, man faktiskt har i systemet.

Katalogen /kernels på Slackware-CD:n.

De förkompilerade slackwarekärnorna finns i katalogen /kernels på Slackware-CD:n eller via FTP från Slackwares huvudkatalog. Vilka kärnor, som finns tillgängliga, växlar efter hand som nya kommer ut, så dokumentationen i denna katalog under huvudkatalogen är alltid den säkraste källan. Katalogen /kernels har underkataloger för var tillgänglig kärna. Underkatalogerna har samma namn som deras motsvarande startdiskett. I var och en av underkatalogerna skall man finna följande filer:

Fil Ändamål
System.map Systemtillordningsfilen för denna kärna
bzImage eller zImage Själva kärnan
config Källkodskonfigureringsfilen för denna kärna

När man valt en kärna, kopierar man System.map och config till katalogen /boot och kärnan till filen /vmlinuz Därefter installerar man LILO genom att köra /sbin/lilo(8) för den nya kärnan, och så startar man om systemet. Konstigare än så är det inte att installera en ny kärna.

De kärnor, vars namn slutar på ».i«, är IDE-kärnor. Det vill säga, att de inte innehåller något stöd för SCSI i själva kärnan. De kärnor, vars namn slutar på ».s«, är SCSI-kärnor. De innehåller allt IDE-stöd, som finns i kärnorna på ».i«, plus SCSI-stöd.

Att kompilera en kärna ur källkoden.

Frågan »bör jag kompilera en kärna för mitt system?« ställes ofta av nya användare. Svaret är ett bestämt kanske. Det finns få tillfällen, när man måste kompilera en för systemet skräddarsydd kärna. De flesta kan använda en förkompilerad kärna och laddbara kärnmoduler för att uppnå ett fullt fungerande system. Däremot kommer man att vilja kompilera en kärna för sitt system, om man förnyar kärnan till versioner, som vi f.n. inte erbjuder i Slackware, eller om man har lappat källkoden (anbringat en patch på den) för att få stöd för särskilda maskinvaruenheter, vilka inte ingår i den vanliga kärnkällkoden.

Det är inte så särskilt svårt att bygga en ny kärna. Såsom första steg skall man förvissa sig om, att källkoden till kärnan är installerad i systemet. Man skall försäkra sig om, att man har installerat paketen i K-serien. Man behöver även ha D-serien installerad: nämligen C-kompilatorn, GNU make och GNU binutils. Rent allmänt är det klokt att ha hela D-serien installerad, om man avser ägna sig åt något slags programutveckling. Nu är vi redo att bygga vår kärna:

   $ su -
   Password:
   # cd /usr/src/linux
Det första steget är att försätta kärnans källkod i sitt utgångsläge. Därför kommenderar vi:

   # make mrproper

Nu kan man konfigurera kärnan för sitt eget system. Den nuvarande kärnan erbjuder tre sätt att åstadkomma detta. Det första är det ursprungliga textbaserade systemet med frågor och svar. Det ställer ett antal frågor och sedan bygger det en konfigureringsfil. Detta tillvägagångssätt medför den svårigheten, att man måste börja om igen ifrån början, i fall man väljer fel någonstans. Den i allmänhet föredragna metoden är den menystyrda. Slutligen finns även ett konfigureringsverktyg för X. Man väljer det, man själv föredrar, och använder motsvarande kommando:

   # make config       (textversion, frågor och svar)
   # make menuconfig   (textversion med menyer)
   # make xconfig      (X-version, fungerar endast i X)

 figure691
: Menyversion av kärnkonfigureringsprogrammet.

Nya användare tycker förmodligen, att menuconfig är lättast att använda. Det har inbyggd hjälp, som förklarar olika delar av kärnan. När kärnan konfigurerats, stänger man konfigureringsprogrammet. Det skriver då de konfigureringsfiler, som behövs. Nu kan vi förbereda källkodskatalogträdet på att bygga en ny kärna:

   # make dep
   # make clean

Nästa steg är att kompilera kärnan (översätta programtexterna till maskinspråk och sätta ihop dem till en enda maskinbegriplig programfil). Först försöker man använda nedanstående kommando för att skapa en zImage. Det misslyckas, om kärnan blir för stor. Ingen fara, man kan ändå bygga kärnan med kommandot för att skapa en bzImage.

   # make zImage  (försök detta först)
   # make bzImage (försök detta, om make zImage misslyckas)

Detta kan ta en stund; hur lång stund beror på processorhastigheten. Under tiden visas några meddelanden ifrån kompilatorn. När kärnavbilden är byggd, skall sådana delar av kärnan byggas, man vid konfigureringen valt att kompilera såsom moduler:

   # make modules

Nu kan vi installera kärnan och modulerna. Det gör man med följande kommandon:

   # make modules_install
   # mv /vmlinuz /vmlinuz.old
   # cat arch/i386/boot/zImage > /vmlinuz
   # mv /boot/System.map /boot/System.map.old
   # cp System.map /boot/System.map

Man ersätter här zImage med bzImage, om man måst bygga en stor kärna. Man får redigera /etc/lilo.conf och lägga till ett avsnitt, som gör det möjligt att starta på den gamla kärnan, om den nya inte skulle fungera. Därefter installerar man det nya startblocket genom att köra /sbin/lilo. Sedan kan man starta om med den nya kärnan.

Att använda kärnmoduler.

Kärnmoduler är ett annat namn på sådana maskinvarudrivare, som kan stoppas in i en kärna under drift. De möjliggör utvidgande av maskinvarustödet i kärnan, utan att man behöver välja en helt annan kärna eller kompilera en egen.

Moduler kan dessutom laddas in och avlägsnas när som helst, även när systemet är i drift. Detta gör det lätt för systemadministratörer att förnya bestämda drivare. En ny modul kan kompileras, den gamla avlägsnas och en ny laddas, alltsammans utan att man behöver omstarta maskinen.

Modulerna förvaras i katalogen /lib/modules/<kärnversion>. De kan laddas vid start genom filen rc.modules. Denna fil är rikligt kommenterad och erbjuder exempel för de flesta maskinvarukomponenter. Om man vill se en förteckning över de moduler, som för närvarande är aktiva, kan man använda kommandot lsmod(1):

   # lsmod
   Module                  Size  Used by
   parport_pc              7220   0
   parport                 7844   0  [parport_pc]

Här ser man, att vi bara har parallellportsmodulen laddad. När man skall ta bort en modul, använder man kommandot rmmod(1). Moduler kan laddas med kommandot modprobe(1) eller insmod(1). modprobe(1) är vanligen säkrare, eftersom det även laddar sådana moduler, som den begärda modulen är beroende av.

Många användare behöver aldrig ladda eller avlägsna moduler för hand. De använder kärnans autoloader för modulhanteringen. För att kunna göra detta skall man ta bort kommentartecknet (#) före /sbin/kerneld(8) i filen /etc/rc.d/rc.modules, och så sätter autoladdaren igång vid systemstart. Den tar hand om laddning och avlägsnande av moduler, efter hand som man begär dem. En begäran är därvid det samma, som att man försöker använda enheten i fråga.

Ytterligare upplysningar om dessa kommandon finns på deras respektive manualsidor samt i filen rc.modules.

Sammanfattning.

Efter genomgång av detta kapitel bör man vara förtrogen med kommandon för genomsökning av filsystemet och med inställningsfilerna i katalogen /etc. Dessa färdigheter har man mycken nytta av, medan man lär sig mer om systemet. Vidare bör man nu veta, hur man skall konfigurera och kompilera en linuxkärna av källkoden.


next up previous contents
Vidare: Nätverksinställningar. Uppåt: Inställningar. Tillbaka: Inställningar.


Denna översättning ifrån engelskan är utförd av Erik Jonsson <[email protected]> efter Slackware Linux Essentials, officiell handbok för Slackware Linux.

Denna översättning tillhandahålles liksom engelskspråkiga originalet enligt villkoren i GNU General Public License (GPL).
Uppgifterna om författarnas och översättarens namn får ej avlägsnas, utplånas eller eljest göras oläsliga.
Förvaras åtkomligt.
Bäst före: senaste ändringsdatum.
Äldre versioner bör förstöras.
Senast ändrad Tue Oct 24 09:36:13 CEST 2000

Hela boken finns här även beredd för utskrift i PDF-filen slwhbk.pdf.

http://www.slackware.com/http://www.sslug.dk/Ser bra ut i vilken vävläsare som helst.


Generaldepoten — Emil Tusens Kulturpalats.
Om goda kagor och torra kakor (»cookies«).

Innehåll:

Litteraturförteckning

Om goda kagor och torra kakor (»cookies«).