• 1
  • 2
2007-10-01, 20:14
  #13
Medlem
Modulerna tillhör kärnan och brukar ligga någonstans kring /lib/modules/`uname -r`
Hur dom laddas, automatiskt eller via någon konfigurationsfil beror på konfiguration av kärnan.

(uname -r kan användas för att ta reda på vilken version av kärnan man kör, har jag för mig(har inte tillgång till linux just nu)

Med kärnan brukar jag avse enbart själva bzImage( som brukar bli till efter make och som sedan kopieras till /boot) och inte modulerna, System.map men det är möjligt att jag är helt ute och cyklar.

/proc/config.gz är en gzippad kopia av den .config som användes för att kompilera den kärna som just nu körs. Mao ser den olika ut beroende på vilken kärna du bootat och kör. Men /proc/config.gz finns enbart om detta valts i konfigurationen för aktuell kärna.

Det är ganska smidigt att utgå från /proc/config.gz när man vill laborera med konfigurationen kring kärnan, t ex ändra eller lägga till något.

Ungefär såhär något kan det se ut för mig om jag skall uppgradera till en ny version av kärnan eller bara ändra lite och testa lite, göra en ny kärna osv.

cd /usr/src/linux-<version>
make mrproper # rensa bort onödiga filer
zcat /proc/config.gz > .config #kopiera existerande konfiguration
make menuconfig # använder sig av .config, dvs existerande konfiguration
make
# och eventuellt
make modules_install # moduler behöver alltså inte kopieras manuellt
# kopiera bzImage och System.map till /boot och ev döpa om dom och symlänka samt ändra i lilo.conf och köra lilo -v

Här står förresten lite kort om /proc/config.gz
http://www.linuxinsight.com/proc_config.gz.html

Så ett tips kan vara: om kärna A fungerar och denna startat och det finns en /proc/config.gz utgå då ifrån denna när du kompilerar kärna B
Citera
2007-10-02, 20:38
  #14
Medlem
Mekanisks avatar
Försöker mig på en sammanfattning. Rätta mig om jag har fel.

Kod:
make menuconfig
Man väljer drivrutiner för den hårdvara man har och funktioner man vill använda. Vill man kunna avladda/ladda en drivrutin/funktion väljer man den som modul.
usr/src/linux-<version>/.config skapas.

Kod:
make
/proc/config.gz skapas och ligger kvar tills nästa kärna, där man valt att skriva över den, byggs. I config.gz sparas konfigurationsinformationen för kärnan. Om man ska börja fippla och greja med kärnan bör man i menuconfig välja att inte spara till config.gz. Detta för att man senare ska kunna plocka fram en fungerande kärnkonfiguration om man klantar sig.
Kärnan byggs och sparas i /usr/src/linux-<version>/arch/<arkitektur>/boot/bzImage (gäller iaf Gentoo, vet inte hur det är i de andra distributionerna). bzImage:n kopieras till /boot och döps till önskat namn, förslagsvis kernel-<version>. Man får såklart inte glömma bort att uppdatera sin bootloader, ex Grub.
System.map skapas. System.map används av kärnan för att kunna koppla adresser till symboler och tvärtom (källa).

Kod:
modules_install
Om man vill kan man installera eventuella nya moduler. Gissar att detta är användbart om man ska fortsätta pilla utan att starta om med den nykompilerade kärnan.

Filer man stöter på:
usr/src/linux-<version>/.config
fil där konfigurationsinformationen sparas mellan kommandona make menuconfig och make. Gissar att den används som mall för /proc/config.gz om man valt att skapa en sådan.

proc/config.gz
Konfigurationsinformationen för kärnan. Om man ska börja fippla och greja med kärnan bör man i menuconfig välja att inte spara till config.gz. Detta för att man senare ska kunna plocka fram en fungerande kärnkonfiguration om man klantar sig.

initramfs - /boot/initramfs-<version>
Används för drivrutiner till exempelvis kontrollerkort för att bootloadern ska hitta kärnan (boot-disken är kopplad till kontrollerkortet).

Tror det här är mitt längsta inlägg någonsin.
Citera
2007-10-03, 11:11
  #15
Medlem
Citat:
Ursprungligen postat av Mekanisk
Kod:
make
/proc/config.gz skapas och ligger kvar tills nästa kärna, där man valt att skriva över den, byggs.

Nej, så fungerar det inte. /proc är ett virtuellt filsystem som inte finns på någon disk, utan är ett sätt att läsa och skriva värden i den nu körande kärnan. Därför skrivs aldrig några hela filer till /proc. Den config.gz som du kan hitta i /proc finns alltså inbyggd i den nu körande kärnan.
Citera
  • 1
  • 2

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in