Kompilera 2.4-kärna
Nedan beskrivs hur du konfiguerar, kompilerar och installerar en 2.4-kärna.Notera att du bör köra med minst en 2.4.4-kärna eftersom det i de tidigare 2.4-kärnorna finns ett säkerhetshål i ip_conntrack_ftp för ftp-svarstrafik. Nytt i nyare 2.4-kärnor finns förutom stöd för fler nätverkskort, IO-kort och watchdogkretsar även stöd för bluetooth.
Om du använder en 2.4-kärna äldre än 2.4.12 och använder MAC-modulen för matchning av MAC-adresser (ethernetadresser) behöver du patcha filen ipt_mac.c. på grund av ett säkerhetshål. Använder du en 2.4-kärna och har brandväggsregler men inga som matchar mot MAC-adresser eller kör en 2.4.12-kärna eller nyare behöver du inte oroa dig. Patchen som ska appliceras är följande:
--- linux-2.4.9/net/ipv4/netfilter/ipt_mac.c Tue Oct 2 18:50:56 2001 +++ linux-2.4.9-ipt_mac-fix/net/ipv4/netfilter/ipt_mac.c Tue Oct 2 19:32:20 2001 @@ -20,7 +20,7 @@ /* Is mac pointer valid? */ return (skb->mac.raw >= skb->head - && skb->mac.raw < skb->head + skb->len - ETH_HLEN + && (skb->mac.raw + ETH_HLEN) <= skb->data /* If so, compare... */ && ((memcmp(skb->mac.ethernet->h_source, info->srcaddr, ETH_ALEN) == 0) ^ info->invert));
Vet du inte hur man applicerar en patch öppna filen /usr/src/linux/net/ipv4/netfilter/ipt_mac.c och ändra raden (bör vara rad 23 eller däromkring) från
&& skb->mac.raw < skb->head + skb->len - ETH_HLENtill
&& (skb->mac.raw + ETH_HLEN) <= skb->data
Minustecken i patchen ovan betyder ändra från/ta bort
och plustecknet betyder ändra till/lägg till. I det här fallet är det
ändra från && skb->mac.raw < skb->head + skb->len - ETH_HLEN
till && (skb->mac.raw + ETH_HLEN) <= skb->data
När det är gjort kompilera och installera kärnan.
Om du kör IRC-trafik genom din brandvägg bör du köra med kärna 2.4.18-pre9 eller senare på grund av ett säkerhetshål i ip_conntrack_irc.c. Se Bugtraqrapporten om security advisory linux 2.4.x ip_conntrack_irc från 2002-02-27.
Konfigurering
Det första som ska göras är att konfigurera kärnan och tala om vad som ska finnas med i kärnan. Om du kör i fönstermiljö (X-window System) och vill köra konfigurationen i ett separat fönster gör du:
make xconfig
Om du istället vill köra konfigurationen med konsolgrafik gör du:
make menuconfig
Menuconfig ser ut enligt följande:
Nedan visas xconfig men menuconfig fungerar snarlikt.
make xconfig startar ett menybaserat grafisk konfigurationsgränssnitt. Här visas exempel på hur det kan se ut. Klicka på bilderna för att få en större bild.
Programmet är menybaserat. Om du är osäker om
någonting välj help och läs texten. I de flesta av
hjälptexterna föreslår de vad du ska göra om du
är osäker. I menyn innebär
att valet är bortvalt,
att det är valt och kommer att läggas in i kärnan,
att det kommer att kompileras som en modul.
Huvudmenyn i xconfig ser ut på följande sätt:
|
||
---|---|---|
0) Gå uppifrån och ned i huvudmenyn och gå in på alla undermenyer eller välj Next för att gå till nästa meny. |
|
1) Välj bort Code maturity level options såvida inte du vill kunna välja saker som är under utveckling. |
|
|
|
|
||
2) Slå på "Enable loadable module support" om du använder moduler. Slå på version information on all module symbols för att slippa kompilera om modulerna vid byte av kärna. Vill du att kärnan ska kunna ladda moduler automatisk när den behöver dem måste Kernel module loader aktiveras. Konfiguration av moduler görs i /etc/modules.conf (se nedan). |
|
3) Välj att kompilera kärnan för 586 (Pentium) eller bättre beroende på vad du har för processor. Välj bort "Math emulation" såvida inte du har en gammal processor som saknar matteprocessor (vissa modeller av 386 och 486). Symetric multiprocessorstöd är till för de datorer som har fler än en processor. |
|
|
|
|
||
4) Under "General Setup" görs inställningar av om datorn ska ha nätverksstöd, PCI-stöd (de flesta PC-datorer har PCI-buss) |
|
5) Stöd , support för olika typer av programformat (det gamla a.out och det nuvarande ELF). Se till att ELF är valt annars kommer inga Linuxprogram att fungera. Advanced Power Management BIOS support är stöd för att spara ström i till exempel bärbara datorer. |
|
|
|
|
||
6) Slå på PCMCIA/PC-card-stöd om du har det i din dator. PCMCIA/PC-card är kreditkortsstora kort som är väldigt vanliga i bärbara datorer. |
|
7) MTD är stöd för flashkort. Dessa kort används främst i inbyggda system. |
|
|
|
|
||
8) Slå på parallportsupport och PC-style för att få stöd för den vanliga parallellporten. I nyare 2.4-kärnor finns stöd för multi io-kort med både serieportar och parallellportar. Har du ett sådant kort bör du välja stöd för den. |
|
9) "Plug and Play support" gör att kärnan kan konfigurera vissa kort. I nyare 2.4-kärnor finns även stld för plug and play BIOS, PNPBIOS. |
|
|
|
|
||
10) Under block devices slå på stöd för diskttstationen (floppy). |
|
11) Mycket av det övriga under block devices kan slås av. Loopbacksupport är stöd för att montera in imagefiler (råkopior) av disketter CD-skivor etc. |
|
|
|
|
||
12) I Linux går det att sätta upp RAID-system (flera hårddiskar som ger redundans). I Linux finns numera även stöd för logiska volymer, LVM. Vill du experimentera med RAID och LVM slår du på stöd för dessa här. |
|
13) Ska datorn vara ansluten till ett nätverk måste nätverksstöd slås på. I de flesta fall innebär nätverk ett nätverk med TCP/IP-trafik. Här går det även att aktivera stödet för brandväggsskydd (iptables). |
|
|
|
|
||
14) Om du vill köra multicasttrafik ska du slå på
den eller kompilera in den som modul. Såvida inte din dator
ska agera router ska "IP: advanced router" slås
av. Ska datorn agera router (och
kanske brandvägg) ska FORWARD_IPV4
i filen /etc/sysconfig/network sättas till
true om datorn ska kunna agera router (FORWARD_IPV4=true).
Alternativt gör du |
|
15) Fortsätt med "Network options" . Stöd
för TCP syn cookie är bra att ha. Det ger ett visst
skydd mot SYN-flood-attacker. Stödet måste sedan
aktiveras i samband med boot genom att göra |
|
|
|
|
||
16) Fortsätt med IP: Netfilter Configuration. För att få stöd för iptables måste iptables-support slås på. Dessutom måste programpaketet iptables installeras om det inte redan finns installerat (rpm -q iptables). Om brandväggsregler ska kunna sättas upp för svarstrafik till den trafik vi etablerar måste Connection tracking (vid maskering) och connection state match kompileras in i kärnan eller kompileras som modul. FTP-protocol support behövs för att filöverföringar med ftp ska fungera. |
|
17) Resten av brandväggsstödet, NAT, masquerading, TOS etc. låter vi kompileras som moduler. |
|
|
|
|
||
18) IPv6-brandväggsstöd kan kompileras in i kärnan, eller som modul, om behov av det finns. |
|
19) QoS står för Quality of Service och innebär att datorn prioriterar viss nätverkstrafik högre än annan trafik. |
|
|
|
|
||
20) Slå på denna om du har ett telefonkort i datorn. |
|
21) ATA/IDE är stöd för de mycket vanliga IDE-hårddiskarna. |
|
|
|
|
||
22) Säg Y på Enhanced IDE/MFM/RLL och IDE/ATA-2 om du använder IDE-diskar och har ditt root-filsystem på en av IDE-diskarna. |
|
23) Välj Y eller M för SCSI om du har ett SCSI-kort i din dator. |
|
|
|
|
||
24) Välj ditt SCSI-kort. |
|
25) Om du har en PCMCIA/SCSI-adapter slår du på stödet för det här och väljer aktuellt SCSI-kort. |
|
|
|
|
||
26) IEEE 1394, Firewire är en högprestandaseriebuss. |
|
27) Intelligent Input/Output (I2O) är stöd för drivrutiner delade i två delar en operativsystemsdel, OSM, och en hårdvaruberoende del, HDM. Om du är osäker säg N. |
|
|
|
|
||
28) Om du har ett nätverkskort i datorn säg Y på Network Device Support. |
|
29) Välj det nätverkskort du har i din dator. Bland undermenyerna finns stöd för vanliga ISA/PCI 10/100Mbits-kort, 1000 Mbits-kort, trådlösa nät, token ring, WAN-kort och PCMCIA-kort. I nyare 2.4-kärnor har det tillkommit |
|
|
|
|
||
30) Om du har en amatörradio kopplad till din Linuxdator finns det stöd för det. |
|
31) IrDA är protokoll som används över infrarödlänkar. |
|
|
|
|
||
32) Här kan du slå på stöd för infrarödlänk om du har en sådan i din dator. Det är ganska vanliga med IR-länkar i bland annat bärbara datorer. |
|
33) Om det sitter ett ISDN-kort i din dator väljer du stöd för det här. Det ska ej förväxlas med ett vanligt nätverkskort kopplat till en ISDN-router. |
|
|
|
|
||
34) Om du har en gammal CD-spelare finns det stöd även för den. |
|
35) Input core support innebär stöd för USB HID som t.ex. att ha ett USB-tangentbord som konsoltangentbord. |
|
|
|
|
||
36) Virtual terminal och console on virtual terminal behövs för att få virtuella konsoler i din Linux. Som manualen säger kan du inte göra så mycket utan virtuella konsoler. 8250/16550 UART är hårdvaran till den vanliga serieporten. |
|
37) Direct Rendering Infrastructure är en nyhet i XFree86 version 4. Här är kerneldelen av den. Läs mer i hjälpen och dokumentationen till XFree86. Förutom det kan du välja stöd för olika grafikkort. |
|
|
|
|
||
38) I2C är en långsam seriebuss som används i många micro controller-baserade system. |
|
39) Välj vilken typ av mus som finns ansluten till datorn. |
|
|
|
|
||
40) Om du har en joystick ansluten bör du här ställa in vilken typ av joystick det är. |
|
41) Watchdog är stöd för att automatisk boota
om datorn om den har hängt sig. Det kan skötas helt i
mjukvara eller med hjälp av hårdvara. Till den behövs
en devicefil, /dev/watchdog, som skapas med hjälp av |
|
|
|
|
||
42) Om du har en bandare ansluten till floppy-kontrollkortet bör du säga y här och sedan göra inställningar för det. |
|
43) PCMCIA serial innebär seriella PCMCIA-enhet som till exempel modem. Cardbus är en nyare och bättre variant på CPMCIA/PC-card. |
|
|
|
|
||
44) Multimediadevices är TV-kort och radiokort till datorer. Aktivera stödet om du har ett sådant kort och gå ner i undermenyn för TV-kort respektive radiokort och välj stöd för de kort du har. |
|
45) Fortsätt vidare till filsystem. Quota är ett system för att sätta upp gränser för hur mycket disk användare får göra av med. Kernel automounter är stöd i kärnan för att automatiskt montera NFS-filsystem (nätverksfilmonteringar). Reiserfs är ett journalfilsystem som kan användas istället för till exempel ext2 på en hårddiskpartition. Ett journalfilsystem för journal över ändringar i filsystemet. Vid krasch kan fortfarande de sista data som skrivs till fil försvinna men själva filsystemet förblir intakt tack vare journalfilen. Andra journalfilsystem som finns till Linux är IBM:s jfs och SGI:s xfs. |
|
|
|
|
||
46) Några av de filsystem som stöds i Linux är DOS/FAT, VFAT, NTFS (endast läsning, stödet för skrivning är experimentellt), ISO9660 (CD-filsystem), extended second filesystem (ext2, det vanliga linuxfilsystemet), proc-filsystem (ett speciellt filsystem som linux använder) mfl. . Lägg in stöd för DOS FAT och DOS fs för att få stöd för DOS-disketter och DOS-diskar. Lägg in VFAT-stöd för att komma åt Windowsdiskar i datorn. Lägg gärna in stöd för ISO9660 och Joliet-utökning (långa filnamn) för att kunna hantera CD-skivor. |
|
47) För att kunna köra linux behövs proc (används av /proc) och second extended filesystem (ext2). |
|
|
|
|
||
48) För att kunna nätverksmontera NFS-filsystem behövs stöd för NFS. |
|
49) Om du har hårddiskar i din Linuxdator där diskarna är partitionerade i andra system än linux eller windows, tex. Macintosh, Ultrixsystem, Atari etc. kan du behöva slå på stöd för den aktuella partitionstypen. |
|
|
|
|
||
50) Om du vill ha stöd för DOS-filer med svenska tecken i filnamnen behöver du slå på Codepage 850 (utanför bild). På samma sätt om du vill ha stöd för svenska tecken i filnamn från till exempel windows och CD med svenska tecken i filnamn behövs stöd för NLS ISO 8859-1. |
|
51) Slå på stödet för VGA-textkonsol. Du vill ha det. |
|
|
|
|
||
52) Framebufferstödet är experimentellt. Det ger möjlighet för applikationer att via ett väldefinierat gränssnitt komma åt grafikkorts framebuffers. Om du är osäker säg n. |
|
53) Om du har ett ljudkort i datorn slå på ljudstöd och välj rätt ljudkort. Lämpligtär att lägga stödet som modul till kärnan. |
|
|
|
|
||
54) Numera finns även bra stöd för USB. Slå på det om du har USB i din dator. |
|
55) Såvida inte du är en kernelhacker (utvecklare av linuxkärnan) slå av Magic SysRq key. |
|
|
|
|
||
56) Spara alla inställningar och avsluta. |
|
57) Därefter är det dags att kompilera kärnan
men först måste du
köra |
|
|
Menyprogrammet säger som avslutning:
Saving your kernel configuration... *** End of Linux kernel configuration. *** Check the top-level Makefile for additional configuration. *** Next, you must run 'make dep'.
Beroenden
Vi gör som menyprogrammet föreslog
make dep
Kompilering av kärnan
Därefter är det dags att kompilera kärnan. Det görs med
make bzImage
Nu kan du gå och ta en fika.
Installera kärnan
Kopiera filen /usr/src/linux/arch/i386/boot/bzImage till katalogen /boot och passa på och ge den ett nytt namn. Exempel:
cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.4.4-minom det är en 2.4.4-kärna.
Kopiera därefter filen /usr/src/linux/System.map till /boot/System.map-2.4.4 .
cp /usr/src/linux/System.map /boot/System.map-2.4.4
Radera /boot/System.map och sätt upp en länk /boot/System.map som pekar på /boot/System.map-2.4.4 .
rm /boot/System.map ln -s /boot/System.map-2.4.4 /boot/System.map
Öppna filen /etc/lilo.conf i en editor. Från början kanske den innehöll följande:
boot=/dev/hda map=/boot/map install=/boot/boot.b prompt timeout=50 default=linux image=/boot/vmlinuz-2.2.12-20 label=linux initrd=/boot/initrd-2.2.12-20.img read-only root=/dev/hda1
Skapa en ny post för den nya kärnan utan att ta bort posten för den gamla kärnan. Den gamla kärnan kan behövas om det blev någonting fel med den nya kärnan. Det är lätt att råka välja någonting fel och då är det bra att fortfarande kunna boota den gamla kärnan. Ge den nya kärnan en bra etikett (label). /etc/lilo.conf ser efter ändring ut så här:
boot=/dev/hda map=/boot/map install=/boot/boot.b prompt timeout=50 default=linux # Nya kärnan image=/boot/vmlinuz-2.4.4-min label=linux read-only root=/dev/hda1 # Gamla kärnan image=/boot/vmlinuz-2.2.12-20 label=linux-old initrd=/boot/initrd-2.2.12-20.img read-only root=/dev/hda1
Spara filen och kör därefter programmet lilo.
lilo
När lilo körs talar om vad den har skriver, där stjärnan visar att linux är defaultboot
Added linux * Added linux-old
Nu är det bara att boota om för att ta den nya kärnan i drift. Om moduler används kan det dock vara bra att kompilera och installera dessa också först (se nedan).
Kompilera moduler
Modulerna kompileras med
make modules
Installation av moduler
Modulerna installeras med
make modules_install
In- och urladdning av moduler
När kärnan är installerad och modulerna kompilerade och installerade och datorn ombootad med den nya kärnan är det dags att börja använda modulerna. Innan modulerna kan användas bör man göra
depmod -a
För att kunna använda en modul, tex opl3sa2, måste den laddas in vilket görs med
modprobe opl3sa2
För att lista laddade moduler skriv
/sbin/lsmod
När en modul inte längre används kan den laddas ur vilket görs med
modprobe -r opl3sa2
För att tala om vilken modul som ska användas som drivrutin för viss hårdvara kan inställningar behöva göras i /etc/modules.conf .
Om första nätverkskortet är av typen eepro100 och modulen eepro100 är den som ska användas kan man skriva in följande i /etc/modules.conf för att kärnan ska hitta rätt modul.
alias eth0 eepro100
Nu går det att använda eth0 istället för eepro100 så till modprobe går det att skriva
modprobe eth0
Om kärnan är inställd på att automatiskt ladda moduler den behöver kan den hitta rätt modul tack vare inställningarna i /etc/modules.conf
Copyright © 2010-2024
Kjell Enblom.
This document is covered by the GNU Free Documentation License, Version 1.3
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".