![](https://seccdn.libravatar.org/avatar/bd06eaf8c0c4561e5015d0353d364811.jpg?s=120&d=mm&r=g)
* Bernd Brodesser -- Thursday 05 April 2001 23:29:
* Melchior FRANZ schrieb am 05.Apr.2001:
Es ist weder "linux-like", noch sinnvoll. Ueblich vielleicht ... Linus hat sich bereits mehrmals ueber diese schlechte Angewohnheit beschwert. Seiner Meinung nach gehoeren die Kernelsources ueberhaupt nicht nach /usr/src und schon gar nicht soll ein Link /usr/src/linux auf die Quellen des laufenden Kernels gesetzt werden. Dieser Link soll, wenn ueberhaupt, auf die Quellen des Kernels zeigen, gegen die die libc gelinkt ist. Und auch das ist eigentlich eine schlechte Angewohnheit, die die libc-Autoren eingefuehrt haben. Auch darueber hat sich Linus schon mehrmals beklagt ...
Und wie ist es richtig?
Vor langer, langer Zeit war es tatsaechlich so, dass der Kernel nach /usr/src/linux gehoerte, oder in ein anderes Verzeichnis in /usr/src mit einem Link /usr/src/linux darauf. Die libc dagegen hatte eine Kopie von allen Linux-Headern in /usr/include/linux, und zwar fuer die Linux-Version, gegen die sie gelinkt war. Das muss so sein, weil man ja (ausser ueber das /proc Dateisystem) nie mit dem Kernel direkt kommuniziert, sondern ueber die Systemfunktionen der libc. Und =die= aendern sich nicht, nur weil man einen neuen Kernel installiert hat. Dann aber begannen die boesen libc-Programmierer aus Faulheit(!), die benoetigten Linux-Header nicht mehr in den eigenen Code aufzunehmen, sondern sie linkten einfach auf /usr/src/linux/include/linux. Linus beanstandete das, aber die Antwort war (sinngemaess): "Der Kernel aendert sich ja so oft -- da kommt man mit dem Kopieren ja gar nicht mehr nach." Da Linus die libc-Programmiere nicht ueberzeugen konnte, obwohl seine Argumente nun wahrlich nicht zu widerlegen sind, legte Linus fest, dass der Platz fuer den Kernel fortan =nicht= mehr festgelegt ist. Nach Linus soll man den Kernel irgendwo aufbewahren und uebersetzen. Im eigenen Homeverzeichnis oder in /usr/local oder ... Dadurch koennte die libc-Programmierer nicht mehr dorthin linken und muessten endlich die Sache wieder bereinigen. Ausserdem gehoeren die Verzeichnisse in /usr/srd traditionsgemaess root, was zur Folge hat, dass die meisten Leute den Kernel als root uebersetzen. Und das ist ein voellig unnoetiges Risiko. Auch der gcc ist nur ein Programm und kann Fehler enthalten und so im schlimmsten Fall das System ruinieren. Man braucht aber fuer die Uebersetzung des Kernels keine root-Rechte, nur fuer seine Installation. Ein weiteres Argument fuer Linus ... Dass etwa bei der ALSA-Konfiguration nicht automatisch auf /usr/src/linux zugegriffen wird, sondern das Verzeichnis mit dem Kernel angegeben werden muss, ist kein Zufall. Kernelmodule brauchen natuerlich Zugriff auf die Header des Kernel mit dem sie verwendet werden sollen. Und einen standardisierten Platz dafuer gibt es eben nicht mehr. m. PS: Alles AFAIK und AFAIR (aus der Zeit, wo ich noch die Kernelliste gelesen hab'). Und mein Kernel ist auch noch in /usr/src, aber /usr/src/linux linkt nicht mehr darauf. Und irgendwann werde ich auch ...