# Neuen Kernel kompilieren

## horstenpeter

Hallo,

ich würde gerne auf einen 2.6 Kernel umsteigen, 1. aus Spaß und 2. weil mein Soundkartentreiber will daß ich soundcore in den Kernel kompiliere und nicht als Modul. 

Jetzt hab ich das aber noch nie gemacht und hab keine Ahnung wie ich vorgehen soll..

Hole ich mir die Sourcen von Kernel.org oder in einem gentoo- paket ? Läuft das mit emerge oder wie ?

Bekomme ich Probleme weil ich letztens beim emerge --update portage nen Fehler bekommen habe und ich evt gcc nicht up-to-date habe ?

Was muss ich beim Konfigurieren beachten ?

Wäre für Eure Hilfe sehr dankbar !

----------

## Poppenpopper

Also dein gcc sollte schon funktionieren, sonst wird das glaube ich nichts...

 :Wink: 

Die originalsourcen von kernel.org sind normalerweise die vanilla-sources (siehe auch die sehr gute Installationsanleitung zu Gentoo)

Diese kannst Du emergen, allerdings sind die 2.6er noch bei den development-sourcen zu finden. Am besten erst mal den Portage Tree aktualisieren mit 

```
emerge sync
```

Nun kannst du sie z.B. mit 

```
emerge development-sources
```

die aktuell freigegebene Version herunterladen und entpacken.

Anschließend  mit 

```
cd /usr/src/linux(kernelversion)
```

 und 

```
make menuconfig 
```

den Kernel konfigurieren. Was Du auf jeden Fall einkompilieren musst steht in der Installationsanleitung zu gentoo (auch wo du alles genau findest). Auch die weitere Vorgehensweise ist dort sehr gut beschrieben, also halte dich am besten daran. 

Wenn Du dann noch Fragen hast, dann kannst Dich gerne melden!

Grüße

LarsLast edited by Poppenpopper on Sun Mar 14, 2004 6:02 pm; edited 3 times in total

----------

## dertobi123

z.B. emerge gentoo-dev-sources installiert einen 2.6er Kernel mit einigen Patches (Forcedeth, Bootsplash); einige weitere 2.6er Sourcen im Tree sind auch im Kernel Guide [1] gelistet.

Der gcc muss nicht der aktuellste sein, zu beachten ist lediglich, dass die module-init-tools installiert sind/werden, da sich das Modulhandling in 2.6 geändert hat. Wichtig ist auch die Ausgaben zu verfolgen, die am Ende des mergen der gentoo-dev-sources angezeigt wird.

[1] http://www.gentoo.de/doc/de/gentoo-kernel.xml

----------

## psyqil

http://gentoo.de/doc/de/handbook/handbook.xml?part=1&chap=7 wär doch mal was für den Anfang, dann 'make menuconfig' in Ruhe von oben nach unten durchgehen und dabei in die Hilfen gucken, da steht meistens bei, was Sinn macht...

Und lies Dir durch, was portage Dir sagen will nach dem emergen... :Razz: 

Edit: Ich bin sooooo langsam   :Sad: 

----------

## dertobi123

 *Poppenpopper wrote:*   

> 
> 
> ```
> emerge -p /usr/portage/sys-kernel/development sources/development-sources-2.6.4.ebuild
> ```
> ...

 

Von solchen Konstrukten (Pfad zum ebuild) ist nur abzuraten, da Portage dabei "übergangen" wird und nicht alle notwendigen Einträge z.B. in /var/cache/edb/world erstellt werden. Ein einfaches 'emerge development-sources' ist weniger zu tippen  :Wink:  und führt zum gleichen Ziel.

----------

## Poppenpopper

wieder was gelernt (dachte bei der direkten Ansprache über das ebuild File würde Portage nicht übergangen werden),

allerdings für bei mir 

```
emerge development-sources
```

 dazu, dass  sys-kernel/development-sources-2.6.4_rc1 und nicht 2.6.4 emerged wird...

Ich werde aber mal lieber mein Posting weiter oben ändern, für die Leute die nur bis zum 2. Beitrag lesen...   :Wink: 

Grüße

Lars

----------

## Sas

Das liegt daran, dass das ebuild für 2.6.4 noch maskiert ist. Also musst du es mittels 

```
ACCEPT_KEYWORDS="~x86" emerge development-sources
```

installieren.

----------

## psyqil

Oder 

```
sys-kernel/development-sources ~x86
```

in /etc/portage/package.keywords eintragen.  :Very Happy:  Ich liebe dies Funktion, mit portage-2.0.50 hat bei mir zum ersten Mal ein emerge -UD world funktioniert!

----------

## Poppenpopper

öhhhm.... die /etc/portage/package.keywords existiert leider bei mir nicht, wie kann ich die herbekommen? Oder soll ich sie einfach nur anlegen?

Grüße

Lars

----------

## psyqil

Letzteres... :Razz: 

```
# mkdir /etc/portage

# echo "sys-kernel/development-sources ~x86" >> /etc/portage/package.keywords
```

Last edited by psyqil on Mon Mar 15, 2004 12:56 am; edited 1 time in total

----------

## Poppenpopper

super danke! Du bist auch immer wach oder?  :Wink: 

Gruß

Lars

----------

## psyqil

Außer ich schlafe, und das tue ich eigentlich täglich, wenn auch nicht notwendigerweise nachts...ich mach zwar keinen Schichtdienst mehr, aber Sympathisant von Delta-t war ich schon immer  :Razz: 

----------

## horstenpeter

OK danke für Eure Hilfe soweit. 

Zwei Fragen noch:

1. Wie kann ich denn checken ob mein gcc in Ordnung ist, und welche Version das ist (damit ich keine Versionskonflikte bekomme, hatte ich schonmal)

2. Wie lange dauert das etwa auf einem Athlon 700 mit 256 MB RAM ?

----------

## Sas

Was meinst du mit "ob gcc in Ordung ist"?

Die Version kannst du dir mit "gcc --version" oder "emerge -p gcc" anzeigen lassen.

Was die Kompilierdauer betrifft würde ich auf maximal 30 Minuten tippen, ist aber nur grob geschätzt, da ich so ein System nicht habe.

----------

## psyqil

1. gcc -v (wobei ich nicht genau weiß, was Du befürchtest...)

2. ~ 45 min?

----------

## horstenpeter

...ich hatte letztens ein Problem beim emerge --update portage. Ich glaube der Abbruch des Kompilierens war während des Kompilierens von gcc. Jetzt frag ich mich ob das evt. nicht funktionsfähig ist...

----------

## Sas

Nein nein, erst nachdem ein Paket vollständig und fehlerfrei kompiliert wurde, wird es ins laufende System eingegliedert, du musst dir im Falle eines Fehlers also keine Sorgen machen.

----------

## horstenpeter

OK bin dann soweit....aber:

ACCEPT_KEYWORDS="~x86" emerge development-sources

führt bei mir dazu daß

http://gentoo.oregonstate.edu/distfiles/linux-2.6.3.tar.bz2

heruntergeladen wird !

 :Question: 

----------

## Sas

Hast du vielleicht vorher ein "emerge sync" vergessen?

----------

## psyqil

Wann war denn Dein letzter emerge sync?

Edit: Zweiter! Jetzt ratet doch mal, wo ich herkomme...  :Evil or Very Mad: Last edited by psyqil on Mon Mar 15, 2004 6:56 pm; edited 1 time in total

----------

## horstenpeter

sorry leute  :Smile:  jupp jetzt stimmts. dachte mein emerge sync von vor 1 1/2 wochen wär noch aktuell.

----------

## amne

Aureal Vortex unter 2.6 von diesem Thread abgespalten.

----------

## horstenpeter

Erwischt  :Smile: 

Ungewöhnlich, daß man in einem Forum die Anzahl Threads erhöht statt sie zu beschränken  :Smile: 

OK habe meinen neuen Kernel kompiliert. Funktioniert auch alles ganz gut soweit, zwei Fehlermeldungen bekomme ich aber noch,

erstens: DMA für meine Festplatte ist deaktiviert (keine Ahnung warum)

zweitens: eth0 konnte nicht initialisiert werden, netmount konnte nicht gestartet werden

----------

## psyqil

1. Schau doch in der Config nochmal, das aktiviert sich bei den ATAPI-Settings als 

```
Generic PCI bus-master DMA support
```

und 

```
Use PCI DMA by default when available 
```

2. Hm! Was soll denn das schon wieder? Welche Karte? Was sagt 

```
dmesg|grep eth
```

Hat's von der LiveCD funktioniert? Input! Input!

----------

## horstenpeter

1. die sind beide an.

2. Karte laut dmesg|grep (unterm 2.4.20 kernel) :

eth0: RealTek RTL-8029 found at 0xe400, IRQ 10, 00:00:E8:8C:EA:F8.

eth0: no IPv6 routers present

im Kernel ist nur support für RTL-8139 Karten drin, 8029 find ich aber nirgends.

----------

## psyqil

1. Ok...woher weißt Du denn, das es deaktiviert ist? Stört das erstmal? Hdparm kann helfen:

```
hdparm -d1 /dev/hda
```

2. 

```
<*>     PCI NE2000 and clones support (see help)
```

Die Suchfunktion ist cool!  :Razz: 

----------

## horstenpeter

1. Der Kernel meldet das beim hochfahren.

obs nervt, muss sich herausstellen, ist auf jeden Fall unelegant, und das mag ich nicht.

2. Definitiv ja.

----------

## psyqil

 *horstenpeter wrote:*   

> 1. Der Kernel meldet das beim hochfahren.
> 
> obs nervt, muss sich herausstellen, ist auf jeden Fall unelegant, und das mag ich nicht.

 Unelegant ist es, die Kernelmeldung für sich zu behalten  :Confused: 

```
cerebella root # dmesg|grep DMA

  DMA zone: 4096 pages, LIFO batch:1

NFORCE2: 0000:00:09.0 (rev a2) UDMA133 controller

    ide0: BM-DMA at 0xf000-0xf007, BIOS settings: hda:DMA, hdb:DMA

    ide1: BM-DMA at 0xf008-0xf00f, BIOS settings: hdc:DMA, hdd:DMA

hda: 156301488 sectors (80026 MB) w/2000KiB Cache, CHS=65535/16/63, UDMA(100)

hdd: 80043264 sectors (40982 MB) w/2048KiB Cache, CHS=65535/16/63, UDMA(100)

hdb: ATAPI 50X CD-ROM drive, 128kB Cache, UDMA(33)

hdc: ATAPI 40X CD-ROM CD-R/RW drive, 2048kB Cache, UDMA(33)

```

So sieht das bei mir aus. Hast Du im BIOS denn DMA an?

----------

## horstenpeter

OK ich meld mich morgen mit den Details, aber die Kernelmeldung sagt nicht wirklich viel mehr aus....jetzt muss ich mal pennen, vielen Dank für die Hilfe soweit!

----------

## psyqil

Ich hoffe, Dein Kopf raucht und braucht die Ruhe  :Very Happy:  Guts Nächtle!

----------

## horstenpeter

Sodele!

Hier die vielsagende Kernel-Meldung:

The DMA on your primary harddisk is turned off.

This may really slow down the fsck process.

Im BIOS ist DMA mal zumindest nicht ausgeschaltet (steht auf Auto)

----------

## horstenpeter

.(bump)

----------

## Sas

https://forums.gentoo.org/viewtopic.php?t=126543&highlight=hdparm+dma

https://forums.gentoo.org/viewtopic.php?t=77451&highlight=hdparm+dma

https://forums.gentoo.org/viewtopic.php?t=67467&highlight=hdparm+dma

----------

## horstenpeter

OK soweit wieder alles eingestellt und würde gerne kompilieren...Will er aber nicht:

```

bash-2.05b# make && make modules_install

  HOSTCC  scripts/modpost.o

  HOSTLD  scripts/modpost

make[2]: `scripts/fixdep' is up to date.

  HOSTLD  scripts/kconfig/conf

scripts/kconfig/conf -s arch/i386/Kconfig

optimize  &&  ?

optimize  &&  ?

optimize  &&  ?

optimize  &&  ?

#

# using defaults found in .config

#

  SPLIT   include/linux/autoconf.h -> include/config/*

make[1]: `arch/i386/kernel/asm-offsets.s' is up to date.

  CHK     include/linux/compile.h

  CC      drivers/ide/pci/amd74xx.o

  LD      drivers/ide/pci/built-in.o

  LD      drivers/ide/built-in.o

  CC      drivers/net/ne2k-pci.o

  CC      drivers/net/8390.o

  LD      drivers/net/built-in.o

  LD      drivers/built-in.o

  GEN     .version

  CHK     include/linux/compile.h

  UPD     include/linux/compile.h

  CC      init/version.o

  LD      init/built-in.o

  LD      .tmp_vmlinux1

  KSYM    .tmp_kallsyms1.S

  AS      .tmp_kallsyms1.o

  LD      .tmp_vmlinux2

  KSYM    .tmp_kallsyms2.S

  AS      .tmp_kallsyms2.o

  LD      vmlinux

  AS      arch/i386/boot/setup.o

arch/i386/boot/setup.S: Assembler messages:

arch/i386/boot/setup.S:167: Warning: value 0x37ffffff truncated to 0x37ffffff

  LD      arch/i386/boot/setup

  OBJCOPY arch/i386/boot/compressed/vmlinux.bin

  GZIP    arch/i386/boot/compressed/vmlinux.bin.gz

  LD      arch/i386/boot/compressed/piggy.o

  LD      arch/i386/boot/compressed/vmlinux

  OBJCOPY arch/i386/boot/vmlinux.bin

  BUILD   arch/i386/boot/bzImage

Root device is (3, 4)

Boot sector 512 bytes.

Setup is 2538 bytes.

System is 2010 kB

Kernel: arch/i386/boot/bzImage is ready

  Building modules, stage 2.

  MODPOST

  INSTALL drivers/net/dummy.ko

if [ -r System.map ]; then /sbin/depmod -ae -F System.map  2.6.4; fi
```

----------

## Sas

Was denn? Hat doch geklappt.

----------

## amne

Ein bisschen kurz, hast du vielleicht den Kernel nicht konfiguriert bzw die alte .config mit make oldconfig importiert?

----------

## horstenpeter

Habe meine Änderungen gemacht, gespeichert und make && make modules_install. auch kein make oldconfig gemacht. Komisch.

----------

## horstenpeter

Ich hab das Ding jetzt einfach mal installiert. Funktioniert, eth0 geht und DMA ist auch an. Tausend Dank an alle Helfer !

----------

