# [gelöst]Could not find a Makefile in the kernel source dir

## Beelzebub_

Aktuellisieren habe ich folgende Fehlermeldung, welche mich verwirrt..

```
 * Determining the location of the kernel source code

 * Found kernel source directory:

 *     /usr/src/linux

 * Could not find a Makefile in the kernel source directory.

 * Please ensure that /usr/src/linux points to a complete set of Linux sources

 * Unable to calculate Linux Kernel version for build, attempting to use running version

 * Checking for suitable kernel configuration options...

 * getfilevar_noexec requires 2 variables, with the second a valid file.

 *    getfilevar_noexec <VARIABLE> <CONFIGFILE>

 *   CONFIG_ZONE_DMA:    is not set when it should be.

 * getfilevar_noexec requires 2 variables, with the second a valid file.

 *    getfilevar_noexec <VARIABLE> <CONFIGFILE>

 *   CONFIG_MTRR:    is not set when it should be.

 * getfilevar_noexec requires 2 variables, with the second a valid file.

 *    getfilevar_noexec <VARIABLE> <CONFIGFILE>

 *   CONFIG_SYSVIPC:    is not set when it should be.

 * getfilevar_noexec requires 2 variables, with the second a valid file.

 *    getfilevar_noexec <VARIABLE> <CONFIGFILE>

 * Please check to make sure these options are set correctly.

 * Failure to do so may cause unexpected problems.

```

Bitte um Hilfe, danke schon mal.

----------

## Finswimmer

Please ensure that /usr/src/linux points to a complete set of Linux sources 

Nutzt du evtl Gentoo-sources und das Verzeichnis wurde in der Zwischenzeit von portage teilweise gelöscht, da eine neue Version installiert wurde und die alte rausgeflogen ist?

----------

## Beelzebub_

Ja ich nutze gentoo-sources und ich denke deine Vermutung ist richtig. Wie biege ich das wieder hin?

----------

## Max Steel

einfach remergen  :Wink: 

Ich denke mal du hast eine neuere Version installiert 8durch ein Update) und vor kurzem ein --depclean durchlaufen lassen das dir deine ältere, verwendete Version, rauswarf.

Dadurch blieb der Ordner erhalten (wegen den object-files und der .config) aber alles andere (Makefiles, Sourcefiles, Header) flog raus.

Also entweder Kernel updaten, oder alte Version nochmal mergen.

----------

## Beelzebub_

nach 

```
 emerge -a gentoo-sources
```

 trat der Fehler erneut auf. Habe ich was vergessen?

----------

## Finswimmer

Schau dir mal die Versionen an. Ich denke, dass eine neuere installiert wurde.

Kopier die .config aus dem aktuellen /usr/src/linux Verzeichnis in den neuesten Kernel und installier dort den Kernel ganz gewohnt. Vorher machst du ein "make silentoldconfig". Dann übernimmt er alle aktuellen Einstellungen; bei den neuen sagt er automatisch Nein.

(Das war der Grund, warum ich die Kernel so nicht mehr mag...Ich will nicht, dass Portage mir einfach meinen aktuellen Kernel löscht...)

----------

## Josef.95

 *Beelzebub_ wrote:*   

> nach 
> 
> ```
>  emerge -a gentoo-sources
> ```
> ...

 

Die gentoo-sources sind sloted verfügbar, sprich es können durchaus mehrere Versionen installiert werden. Ein re-emergen ohne versionsangabe wird nur die aktuelle Version neu installieren. Schau doch mal nach ob du diese Version überhaupt nutzt, diese Version eingerichtet ist, und der /usr/src/linux Symlink auch auf diese zeigt.

Um zu schauen was verfügbar und installiert ist siehe zb mit 

```
eix --installed gentoo-sources
```

 Zudem schaue welche Source Verzeichnisse da sind, und auf welche der Symlink gesetzt ist 

```
 ls -l /usr/src/
```

 Und schau mit 

```
uname -r
```

 welcher Kernel aktuell läuft.

 *Finswimmer wrote:*   

> ... (Das war der Grund, warum ich die Kernel so nicht mehr mag...Ich will nicht, dass Portage mir einfach meinen aktuellen Kernel löscht...)

  Sofern man sich die gewünschte Version mit Slotangabe mit ins word aufnimmt, wird depclean diese auch nicht deinstallieren.

----------

## franzf

 *Josef.95 wrote:*   

>  *Finswimmer wrote:*   ... (Das war der Grund, warum ich die Kernel so nicht mehr mag...Ich will nicht, dass Portage mir einfach meinen aktuellen Kernel löscht...)  Sofern man sich die gewünschte Version mit Slotangabe mit ins word aufnimmt, wird depclean diese auch nicht deinstallieren.

 

Huch? Das sollte mMn. ein übler Bug sein. Angenommen ich schreib ein Programm in gtkmm:2.4 (kein anderes durch den Paketmanager installiertes Programm hat gtkmm in den DEPs), habe aber damals nur "gtkmm" installiert (also ohne SLOT-Angabe), würde das bedeuten, dass beim (automatischen!) Update auf gtkmm:3.0 der 2.4er SLOT deinstalliert wird. Das darf so nicht sein.

IMHO sollte "sys-kernel/gentoo-sources" im worldfile ALLE Slots einschlißen und nicht nur den neuest möglichen.

Ich verwende paludis und das vehält sich "korrekt".

----------

## Beelzebub_

```
 Installed versions:  3.5.4(3.5.4)^bs(01:12:34 30.09.2012)(-build -deblob -symlink) 3.6.0(3.6.0)^bs(00:40:02 08.10.2012)(-build -deblob -symlink)

     Homepage:            http://dev.gentoo.org/~mpagano/genpatches

     Description:         Full sources including the Gentoo patchset for the 3.5 kernel tree

```

3..5.4 und 3.6.0 sind installiert (Blau markiert)

```
 ls -l /usr/src/

insgesamt 12

lrwxrwxrwx  1 root root   18  2. Sep 17:27 linux -> linux-3.5.3-gentoo

drwxr-xr-x 20 root root 4096 25. Sep 17:53 linux-3.5.3-gentoo

drwxr-xr-x 25 root root 4096 30. Sep 01:13 linux-3.5.4-gentoo

drwxr-xr-x 24 root root 4096  8. Okt 00:40 linux-3.6.0-gentoo

```

```
 uname -r

3.5.3-gentoo

```

----------

## Josef.95

 *franzf wrote:*   

>  *Josef.95 wrote:*    *Finswimmer wrote:*   ... (Das war der Grund, warum ich die Kernel so nicht mehr mag...Ich will nicht, dass Portage mir einfach meinen aktuellen Kernel löscht...)  Sofern man sich die gewünschte Version mit Slotangabe mit ins word aufnimmt, wird depclean diese auch nicht deinstallieren. 
> 
> Huch? Das sollte mMn. ein übler Bug sein. Angenommen ich schreib ein Programm in gtkmm:2.4 (kein anderes durch den Paketmanager installiertes Programm hat gtkmm in den DEPs), habe aber damals nur "gtkmm" installiert (also ohne SLOT-Angabe), würde das bedeuten, dass beim (automatischen!) Update auf gtkmm:3.0 der 2.4er SLOT deinstalliert wird. Das darf so nicht sein.
> 
> IMHO sollte "sys-kernel/gentoo-sources" im worldfile ALLE Slots einschlißen und nicht nur den neuest möglichen.
> ...

 

Hm nein, portage deinstalliert nicht ungefragt Slots, es sei denn dies wird explizit in einem Ebuild gefordert - zb durch soft oder hart-Blocker.

In deinem Beispiel würde gtkmm:2.4 auch von portage nicht deinstalliert werden, auch dann nicht wenn es mittlerweile gtkmm:3.0 gibt.

Das "Problem" ist eher der Admin, der --depclean unüberprüft machen lässt, oder nicht sauber definierte Abhängigkeiten auf einen benötigten Slot. Slots die nicht irgendwo (zb im ebuild, oder im world) als Abhängigkeit definiert/gesetzt sind, werden beim depclean halt zum deinstallieren vorgemerkt. Das ist ja auch der Sinn von depclean, und auch OK so  :Smile: 

Wenn man zb bei den gentoo-sources den gewünschten Slot nicht mit in wold aufnimmt , dann wird ein --depclean halt alle Versionen bis auf die aktuelle deinstallieren - denn es gibt ja bei den Sources normal kein dep auf einen bestimmten Slot.

Fazit: Entweder den benötigten Slot sauber als dep setzen (zb durch aufnahme in world) oder beim --depclean aufpassen  :Wink: 

(btw, man kann beim --depclean auch von vornherein  --exclude gentoo-sources mit angeben)

----------

## Josef.95

 *Beelzebub_ wrote:*   

> 
> 
> ```
>  Installed versions:  3.5.4(3.5.4)^bs(01:12:34 30.09.2012)(-build -deblob -symlink) 3.6.0(3.6.0)^bs(00:40:02 08.10.2012)(-build -deblob -symlink)
> 
> ...

  Jo, dein Symlink zeigt auf Sources die gar nicht mehr installiert sind (daher auch die Fehlermeldung).

Nutze doch am besten die aktuelle, und auch schon installierte Version. Wozu hast du die denn installiert, wenn du sie gar nicht nutzt  :Wink: 

----------

## haegar87

Die einfachste Lösung wäre wohl den Kernel auf 3.6.0 zu wechseln.

Der (ganz grobe) Ablauf wäre mittels 

```
eselect kernel
```

 auf den neuen zu wechseln (Symlink wird geändert) anschließend config kopieren und kernel neu bauen.

Dann ein Neustart und fertig  :Wink: 

MfG

haegar87

----------

## Beelzebub_

Ich bin mir nicht sicher wohin ich die .config kopieren soll. Von /usr/src/linux nach ?

----------

## Josef.95

 *Beelzebub_ wrote:*   

> Ich bin mir nicht sicher wohin ich die .config kopieren soll. Von /usr/src/linux nach ?

  Die .config wird im Source Verzeichnis erwartet (sofern du sie wieder nutzen möchtest).

Nutze am besten auch den  Gentoo Linux Kernel Upgrade Guide

----------

## Max Steel

 *Beelzebub_ wrote:*   

> Ich bin mir nicht sicher wohin ich die .config kopieren soll. Von /usr/src/linux nach ?

 

Je nachdem ob du den genkernel-weg oder den manuellen weg gegangen bist musst du jetzt 2 unterschiedliche Wege bestreiten:

Der Manuelle Weg geht wie folgt:

Aus deinem aktuellen Source-Verzeichnis /usr/src/linux-'uname -r'

zum aktuellsten /usr/src/linux-3.6.0-gentoo

also: cp /usr/src/linux-'uname-r'/.config /usr/src/linux-3.6.0-gentoo

danach:

eselect kernel set 3

jetzt cd /usr/src/linux-3.6.0-gentoo

und nun die Kompile-Orgie:

make oldconfig

make -j4

make install modules_install

Jetzt nurnoch deinen Bootloader ggf. anpassen (Ich nutze den Link /boot/vmlinuz --> vmlinuz-'uname -r' dazu den make install immer passend auf die aktuelle Version setzt, übrigens)

Aber mal so gefragt: verwendest du evtl genkernel? Dann ist es für dich jetzt einfacher:

Auswahl neuer Kernel und danach genkernel zum bauen auffordern.

eselect kernel set 3

genkernel --oldconfig --makeopts=-j4 --verbose all

----------

## Beelzebub_

Vielen Dank für die Antwort.

Ich verwende den Gen-Kernel nicht.  :Wink: 

Edit: Den Bootloader anpassen? Ich denke ich kopiere den kernel nach /boot/kernel

----------

## Max Steel

Dann machst du halt statt make install modules_install nur make modules_install && cp arch/x86/boot/bzImage /boot/kernel (oder so ähnlich,,, hab ich lang nicht mehr gemacht *gg*)

----------

