View previous topic :: View next topic |
Author |
Message |
UTgamer Veteran
Joined: 10 Aug 2003 Posts: 1326 Location: Troisdorf (Köln) Deutschland
|
Posted: Tue Oct 23, 2007 9:47 am Post subject: |
|
|
Erst mal ein großes Lob an die Ersteller dieser Wikis Frankyboy und Misterjack.
Über das Gentoo Wiki werden wenigstens mal alle Punkte auf Deutsch abgefasst, bisher hatte ich zum Beispiel diese engl. Seite wenn ich mal etwas nachschlagen wollte: http://kernelnewbies.org/Linux_2_6_20 Aber jetzt kenne ich auch das Gentoo Wiki zum schnellen Nachschlagen, welches sogar vollständiger ist.
Ich habe 1998 meinen ersten Kernel 2.0.35-1 auf einem Suse 5.3 mit Hilfe zweier Telefonate da die Anleitung aus dem Handbuch fehlerhaft war bei einem Informatikstudenten geben lassen. Seither baue ich alle meine Kernel selbst.
Solche Informationen sind für mich dabei echt Gold Wert:
http://www.heise.de/open/artikel/83933
http://www.heise.de/open/artikel/88020
http://www.heise.de/open/artikel/91816
http://www.heise.de/open/artikel/96001
ftp://ftp.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.21 (Changelog-Beispiel für Treibersuche)
http://kerneltrap.org/node/8082 (Über Artikel oder Suchmachine solche Informationen hinzufinden)
http://www.pro-linux.de/news/2007/11125.html (Sowas lese ich dann zusätzlich als Kurzzusammenfassung)
Alle unnötige Module fliegen bei mir raus, da sie erstens eine Sicherheitslücke darstellen, zweitens unnötig die Kompilierzeit erhöhen und drittens den Startvorgang unnötig verzögern, ja viertens sogar baue ich fast alles monolytisch in den Kernel bis auf wirklich selten genutzte Module für HW die vorhanden aber meist ungenutzt rumliegt wie Zaurus, ieee1394, parport, nls_cp850, gameport, pcspkr oder das Muß nVidia. _________________ AMD Phenom II x4 >> CFLAGS="-march=amdfam10 -O2 -mmmx -msse3 -mfpmath=sse,387 -pipe -ffast-math" is stable and here in use.
Did Intel produce at any time bugfree HW?
http://www.urbanmyth.org/microcode/
http://www.heise.de/newsticker/meldung/91748 |
|
Back to top |
|
|
psyqil Advocate
Joined: 26 May 2003 Posts: 2767
|
Posted: Tue Oct 23, 2007 11:52 am Post subject: |
|
|
Es heißt monolithisch. Das hab ich Dir schonmal gesagt!
Ich würde mich freuen, wenn ich z.B. eine Knoppix starten könnte und darauf ein Programm imstande wäre, anhand der tatsächlich geladenen Module eine Config zu erstellen, in der ich nicht hunderte von Einträgen händisch löschen müßte. Oder gibt's sonst eine Möglichkeit, beispielsweise alle NICs mal schnell zu deaktivieren, um dann die eine Karte, die jetzt tatsächlich verbaut ist, selber rauszusuchen? |
|
Back to top |
|
|
UTgamer Veteran
Joined: 10 Aug 2003 Posts: 1326 Location: Troisdorf (Köln) Deutschland
|
Posted: Tue Oct 23, 2007 1:15 pm Post subject: |
|
|
Hab Erbarmen, ich hoffe das ichs beim nächsten mal nicht wieder vergesse, Standard habe ich ja auch mal schwer erlernt.
psyqil wrote: | Ich würde mich freuen, wenn ich z.B. eine Knoppix starten könnte und darauf ein Programm imstande wäre, anhand der tatsächlich geladenen Module eine Config zu erstellen, in der ich nicht hunderte von Einträgen händisch löschen müßte. Oder gibt's sonst eine Möglichkeit, beispielsweise alle NICs mal schnell zu deaktivieren, um dann die eine Karte, die jetzt tatsächlich verbaut ist, selber rauszusuchen? |
Volle Zustimmung, diese Handarbeit kostet ja soviel Zeit das es wirklich nicht jeder machen kann. Bei I2O oder solchen Dingen bin ich je nach Chipsatz auch immer am schwimmen und teste es oft durch einfaches ausprobieren, ob beim weglassen dann irgendetwas nicht funktioniert (TV Ein-/Ausgang oder so was). _________________ AMD Phenom II x4 >> CFLAGS="-march=amdfam10 -O2 -mmmx -msse3 -mfpmath=sse,387 -pipe -ffast-math" is stable and here in use.
Did Intel produce at any time bugfree HW?
http://www.urbanmyth.org/microcode/
http://www.heise.de/newsticker/meldung/91748 |
|
Back to top |
|
|
MalleRIM Guru
Joined: 23 Jul 2007 Posts: 563 Location: China
|
Posted: Thu Nov 01, 2007 11:23 am Post subject: |
|
|
STiGMaTa_ch wrote: | MalleRIM wrote: | Genkernel passt nämlich weder den Kernel auf dein System an, noch stellt es eine sinnvolle Grundkonfiguration her. |
Interpretier doch nicht einfach dein Wunschdenken in die Funktionen eines Tools. Wo bitte steht geschrieben, dass Genkernel das können soll?
Quote: | Genkernel is a script available with Gentoo Linux designed to allow users who are not previously used to compiling a kernel to generate a kernel that will autodetect their hardware in the same fashion as the Gentoo LiveCD's. |
|
Das war eine Antwort auf den Post davor - ich weiß, wofür Genkernel gut ist. |
|
Back to top |
|
|
hoschi Advocate
Joined: 19 Jul 2003 Posts: 2517 Location: Ulm, Germany, Europe
|
Posted: Thu Nov 01, 2007 7:13 pm Post subject: |
|
|
Sourcecode wrote: | Was ich dazu meine?
Gentoo ist keine Distri für einen Linux Anfänger, ich kann von jemandem der Gentoo verwendet Grundlegende Linux Kentnisse vorrausetzen und dazu gehört auch wie man nen Kernel Kompilliert (zumindest Gentoo geht davon aus das der User Linux nicht erst seit gestern benutzt und sich in der Konsole zurechtfindet)
Meiner Meinung kann das alles so bleiben. |
Nein.
Die grossen Features von Gentoo sind die absolute saubere und ausfuehrliche Installationsanleitung in der Shell und die hohe Flexiblitaet. Ein KlickiBunti-Installer gehoert nicht dazu, eine sehr aktuelle und saubere Kernelanleitung dagegen schon.
Die ausfuehrliche Anleitung zum allen wichtigen Kerneloptionen gibt es hier:
http://de.gentoo-wiki.com/Kernel_manuell_kompilieren
Leider nur in Deutsch, ein aehnlich saubere Beschreibung gibt es leider nicht mal auf Englisch im Web. Schon gar nicht von offizieller Seite _________________ Just you and me strogg! |
|
Back to top |
|
|
Suizid n00b
Joined: 26 Dec 2007 Posts: 15
|
Posted: Wed Dec 26, 2007 11:33 pm Post subject: |
|
|
Hallo zusammen,
da ich Linux mal näher kennen lernen wollte habe ich mir vo ein paar Tagen mal Gentoo heruntergeladen und angefangen es zu installieren.
Auch mit Erfolg
Jedoch bin ich nicht so ganz zufrieden was meinen Kernel angeht, schon garnicht als ich auf diese Forendiskusion gestoßen bin.
Vor allem das was platinumviper geschrieben hat interessiert mich schon näher.
Da stellt sich mir die Frage, wenn man das /usr/src/linux Verzeichnis nicht zum Kernel bauen nutzen soll und ich es mit den Variablen machen soll, könnte ich doch auch einfach dieses Verzeichnis in den Variablen benutzen oder?
Vielleicht hab ich auch nicht ganz verstanden worum es geht, werd mir das heute nochmal in Ruhe ansehen.
Grüße |
|
Back to top |
|
|
mv Watchman
Joined: 20 Apr 2005 Posts: 6749
|
Posted: Fri Dec 28, 2007 9:50 pm Post subject: |
|
|
Suizid wrote: | Da stellt sich mir die Frage, wenn man das /usr/src/linux Verzeichnis nicht zum Kernel bauen nutzen soll und ich es mit den Variablen machen soll, könnte ich doch auch einfach dieses Verzeichnis in den Variablen benutzen oder? |
Ja, aber das wäre ziemlich sinnfrei. Der enscheidende Punkt ist auch nicht so sehr die KERNEL_DIR-Variable sondern die KBUILD_OUTPUT-Variable, also dass Du ganz streng die Kernel-Quellen und die bei der Compilierung/Konfiguration erzeugten Files trennst. Das hat mehrere Vorteile: - Du bist ruckzuck wieder bei einem "blanken" Kernel-Baum (angeblich geht das zwar auch mit "make mrproper", aber merkwürdigerweise bleiben da doch immer noch andere Files zurück).
- Du kannst problemlos mehrere Kernel-Versionen (z.B. für andere Rechner) hintereinander kompilieren.
- Wenn es ums Testen geht, kannst Du "mal schnell" das Kompilat "merken", neu kompilieren, und bei Misserfolg "zurückschalten", ohne die Source kopieren zu müssen.
- Du musst nicht root sein, um den Kernel zu kompilieren.
Zur KERNEL_DIR-Variable ist zu sagen, dass die letzte Komponente des Directories nach dem Auflösen von Symlinks den Namen des Kernels (also z.B. linux-2.6.xx-gentoo-ry) enthalten sollte, da die Gentoo eclasses dieses zur Bestimmung der aktuellen Kernel-Version benötigen (sonst werden die Ebuilds von Gentoo wie z.B. nvidia-drivers u.ä. nicht wissen, in welches Directory sie die Module installieren sollen).
Ein Beispiel: Ich benutze squashfs+aufs (Initskript-Methode), um das Directory /usr/src/kernel zu komprimieren aber beschreibbar zu halten. Meine Variablen KERNEL_DIR und KERNEL_OUTPUT zeigen immer unverändert auf /usr/src/kernel/source bzw. /usr/src/kernel/build. Das erste "Directory" ist aber nur ein Symlink auf linux-2.6.xx-gentoo-ry (natürlich mit jeweils an den aktuellen Kernel angepasstem xx-gentoo-ry; bei einem Upgrade der Kernel-Sourcen mit Portage verschiebe ich den von Portage installierte Baum manuell nach /usr/src/kernel geschoben und passe den Symlink an - den danach toten /usr/src/linux-Link lösche ich jeweils. Die jeweils alte Version der Kernel-Sourcen kann ich löschen, weil das "Backup" ja noch im jeweils alten sqfs-File vorhanden ist; natürlich sollte das oben erwähnte init-Skript so konfiguriert sein, von diesem File mindestens jeweils noch die vorherige Version beizubehalten). Das zweite Directory (/usr/src/kernel/build) gehört dem Nutzer, mit dem ich später den Kernel kompiliere (natürlich habe ich mir ein Script geschrieben, das als root aufgerufen wird, und zum Kompilieren ccache setzt und den Benutzer wechselt, danach wieder root wird, um die Module zu installieren...).
Der Grund, weshalb ich die Verschiebe-Aktion nach /usr/src/kernel/linux-2.6.xx-gentoo-ry mache, ist einfach, dass ich das gesamte /usr/src/kernel so auf einen Schlag komprimiere: Im laufenden Betrieb kostet mich so der Kernel-Baum einschließlcih der .o-Files gerade mal eine sqfs-Datei von ca. 85MB Länge.
Um jetzt die ursprüngliche Frage zu beantworten, die in diesem Setting lautet: Warum KERNEL_DIR=/usr/src/kernel/source und letzteres als Symlink machen, wenn man doch gleich den Link /usr/src/linux umsetzen könnte?
Dafür hatte ich zwei Gründe: - Der unwichtigere Grund: So wird der Symlink im komprimierten /usr/src/kernel mitabgespeichert. Das ist vor allem dann praktisch, wenn man mal die sqfs-Datei durch eine andere ersetzt, was man mit sqfs+aufs ja problemlos zur Laufzeit machen kann (z.B. mache ich das, wenn der neue Kernel nicht läuft, oder wenn ich die sqfs von einem meiner anderen Systeme übernehme). In so einem Fall kann man dann nicht "vergessen", den Symlink umzubiegen, weil er ja "automatisch" mitverändert wird.
- Der wichtigere Grund: Fehlerhafte Tools (z.B. war das bei einigen alten Ebuilds der Fall) können nicht einfach ihre .o-Files nach /usr/src/linux-kompilieren: Solche Tools liefern dann einen Fehler statt "versehentlich" .o-Files o.ä. in den "blanken" Kernel-Baum (statt nach KERNEL_OUTPUT) zu schreiben.
|
|
Back to top |
|
|
Suizid n00b
Joined: 26 Dec 2007 Posts: 15
|
Posted: Sat Dec 29, 2007 9:26 am Post subject: |
|
|
Danke mv.
Also setze ich nochmal neu auf und mach es diesmal richtig.
Der /usr/src/linux symlink kann getrost gelöscht werden?
Hab auch noch etwas gefunden zu dem Thema http://linuxgazette.net/issue62/tag/4.html
Gruß |
|
Back to top |
|
|
xraver Veteran
Joined: 20 Aug 2003 Posts: 1083 Location: Halberstadt
|
Posted: Sat Dec 29, 2007 11:17 am Post subject: |
|
|
Gab es nicht mal eine Zeit lang auch die kernelDocs in Deutsch?
IMHO hatte ich unter SuSe mal sowas gesehen. Ist aber lange her und war unvollständig.
Bei den vielen Änderungen ist eine "saubere" Doku in Deutsch auch nicht ganz so einfach.
Und es ist auch egal ob Sheduler nun in de oder en vorhanden sind.
Wer dan englischen Begriff nicht kennt, wird mit dem deutschen auch nicht viel mehr anfangen können.
Ich kompiliere mir meinen Kernel schon seit meinen ersten Linuxstunden selbst.
Ist zwar heute kein Muss mehr, aber man weiss eben was man hat.
Was dem Kernel in Gentoo betrifft, ich habe zwar nie Genkernel benutzt - aber ich glaube das er gut funktioniert und für einen Änfänger einfach zu benutzen ist. Und wenn man schon "Freak" genug ist um Gentoo zu benutzen, dann kann man sich auch ein wenig in die Kernelkonfiguration einfuchsen. Was an Hardware in ihren Rechnern steckt werden ja wohl die meisten wissen.
In dem Sinne, frohes kompilieren und einen guten Rutsch ins neue Jahr. |
|
Back to top |
|
|
Suizid n00b
Joined: 26 Dec 2007 Posts: 15
|
Posted: Sun Dec 30, 2007 7:01 pm Post subject: |
|
|
Also irgend etwas mach ich eindeutig falsch.
Also ich habe mir die Verzeichnise /usr/kernel/source und /usr/kernel/build erstellt
In /kernel/source befindet sich noch das Verzeichnis mit den kopierten Kernel Files und ein symlink auf dieses (current).
In /kernel/build befindet sich noch ein symlink (current) auf ein Verzeichnis mit dem Namen der Kernelversion.
In der make.conf habe ich die Variablen KERNEL_DIR und KBUILD_OUTPUT gesetzt.
KERNEL_DIR=/usr/kernel/source/current
KBUILD_OUTPUT=/sr/kernel/build/current
Also jetzt in das Verzeichnis /usr/kernel/source/current
Mit make menuconfig alles einstellen und speichern.
make O=/kernel/out/current oldconfig
In dem Kernel Verzeichnis findet sich danach .config.old sollte das dann nicht im Output Verzeichnis liegen?
Wenn ich jetzt make -j8 O=/kernel/out/current all aufrufe bekomme ich die Meldung, dass das Kernel Verzeichnis nicht sauber sei und ich es mit mrpropper bereinigen soll.
(Habe eben nochmal alles bereinigt und den Befehl mit oldconfig ausgelassen dann ist es kein Problem.)
Irgendwie bin ich jetzt Ratlos, ist es überhaupt richtig die Variablen KERNEL_DIR und KBUILD_OUTPUT in der make.conf zu setzen?
Wenn jemand noch ein paar Infos dazu hat wäre ich ihm echt dankbar. |
|
Back to top |
|
|
mv Watchman
Joined: 20 Apr 2005 Posts: 6749
|
Posted: Sun Dec 30, 2007 8:20 pm Post subject: |
|
|
Suizid wrote: | KERNEL_DIR=/usr/kernel/source/current
KBUILD_OUTPUT=/sr/kernel/build/current |
Typo? /usr/kernel/build/current
Quote: | Also jetzt in das Verzeichnis /usr/kernel/source/current
Mit make menuconfig alles einstellen und speichern. |
Nein. Das O="${KBUILD_OUTPUT}" brauchst Du bei jedem einzelnen make-Kommando (weshalb sich ein Skript empfiehlt), also hier Code: | make O="${KBUILD_OUTPUT}" menuconfig |
Quote: | make O=/kernel/out/current oldconfig
In dem Kernel Verzeichnis findet sich danach .config.old sollte das dann nicht im Output Verzeichnis liegen? |
Ja, alle .config* und .o-Files sollten dort liegen. Wenn Du - wie empfohlen - nicht root bist und ${KBUILD_OUTPUT} aber Dir gehört (KERNEL_DIR hingegen nur root und auch nur von root beschreibbar ist) kannst Du auch gar nicht "versehentlich" (wie etwa bei Deinem ersten Kommando) nach ${KERNEL_DIR} schreiben.
Dadurch, dass Du jetzt temporäre Files in ${KERNEL_DIR} hast (was eigentlich nicht hätte passieren dürfen) könnte ich mir vorstellen, dass das Kernel make-System etwas durcheinanderkommt. Aber möglicherweise war die Ursache ein Typo? (/usr scheint im obigen Pfad zu fehlen).
Quote: | ist es überhaupt richtig die Variablen KERNEL_DIR und KBUILD_OUTPUT in der make.conf zu setzen? |
Ich setze sie in der Shell Profile-Datei ("export" davor natürlich nicht vergessen). Der Grund dafür ist aber hauptsächlich, dass ich auf diese Variablen auch in meinem "Kernel-Bau-Script" zugreife. |
|
Back to top |
|
|
Suizid n00b
Joined: 26 Dec 2007 Posts: 15
|
Posted: Sun Dec 30, 2007 8:37 pm Post subject: |
|
|
Danke mv.
KBUILD_OUTPUT=/sr/kernel/build/current sollte natürlich KBUILD_OUTPUT=/usr/kernel/build/current heisen, sorry Tipfehler.
Nochmal zu den Variablen.
Also dann in die /etc/profile export KBUILD_OUTPUT=/usr/kernel/build/current?
Muss dann aber immernoch mit dem O= Befehl übergeben werden?
EDIT:
Also geklappt hat es jetzt. Lag wohl an dem fehlenden O= bei make manuconfig.
Bleibt noch ein Problem:
Ich habe es aber auch mal versucht nicht als root zu machen, wenn ich dann z.B make O=/usr/kernel/build/current menuconfig aufrufe bekomme ich die Fehlermeldung die Datei ../scribte/basic/fixdep.d kann nicht erstellt werden. Ist auch richtig so, ich habe ja auch keine Schreibrechte.
Aber wieso will er jetzt die Dateien im KERNEL_DIR anlegen? (Als ich es als root ausgeführt hatte sind die Dateien, nach beenden von menuconfig, auch automatisch wieder gelöscht worden) |
|
Back to top |
|
|
mv Watchman
Joined: 20 Apr 2005 Posts: 6749
|
Posted: Mon Dec 31, 2007 4:26 pm Post subject: |
|
|
Suizid wrote: | Muss dann aber immernoch mit dem O= Befehl übergeben werden? |
Ja. Nur die Gentoo-Ebuilds werden KBUILD_OUTPUT automatisch berücksichtigen, nicht das Kernel-Makefile.
Quote: | Ich habe es aber auch mal versucht nicht als root zu machen, wenn ich dann z.B make O=/usr/kernel/build/current menuconfig aufrufe bekomme ich die Fehlermeldung die Datei ../scribte/basic/fixdep.d kann nicht erstellt werden. |
Bist Du sicher, dass /usr/kernel/build/current auf ein von Dir beschreibbares Directory zeigt?
Code: | $ export KBUILD_OUTPUT=$HOME/my_kernel
$ mkdir $KBUILD_OUTPUT
$ cd $KERNEL_DIR
$ make O=$KBUILD_OUTPUT menuconfig
HOSTCC scripts/basic/fixdep
HOSTCC scripts/basic/docproc
... | Alle Dateien werden in $HOME/my_kernel erstellt, wie es sein soll (auf $KERNEL_DIR hat der Benutzer, mit dem ich Obiges ausgeführt habe, gar keine Schreibrechte). |
|
Back to top |
|
|
Suizid n00b
Joined: 26 Dec 2007 Posts: 15
|
Posted: Sun Jan 06, 2008 4:56 pm Post subject: |
|
|
Du hattest Recht. Habe vergessen in den Unterordnern auch die nötigen Berechtigungen zu setzen.
Danke! |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|