Gebäude /lib/modules/$(uname -r)/build während dem kompilieren eines Kernels
Ich bin cross-compiling kernel 3.4.0 für ein embedded-Gerät. Dann würde ich das gerne installieren compat-wireless-Treiber, die erforderlich /lib/modules/3.4/build
Verzeichnis und sub-Dateien. Könnte jemand erklären, wie kann ich dieses Verzeichnis so, dass wenn ich INSTALL_MOD_PATH=newmodules make modules_install
es laden würde /lib/modules/$(uname -r)/build
- Verzeichnis? Ich wäre dankbar für eine klare Erklärung.
Ich bin mit debian-Distribution. Ich weiß, ich kann installieren Sie die kernel-Header von apt-get install linux-headers-$(uname -r)
, aber ich bezweifle, es wäre eine gute Idee, da die kernel-Quellen möglicherweise nicht identisch sein.
InformationsquelleAutor sven | 2013-05-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Normalerweise /lib/modules/$(uname -r)/build ist ein soft-link auf das Verzeichnis, in dem ausgeführt die bauen. Also die Art und Weise, dies zu tun ist einfach eine
in das build-Verzeichnis der kernel-wo /einige/root ist, wo Sie möchten, dass Ihre cross-kompilieren Stücke bis zum Ende. So erstellen Sie einen link zu Ihrer kernel-build-path in /einige/root/lib/modules/$(uname -r) ... stellen Sie sicher, dass.
Wenn Sie jetzt bauen die compat_wireless Treiber angeben, der kernel-build-Verzeichnis im Makefile als //root mit der KLIB_BUILD variable (Lesen Sie das Makefile)
dies sollte den trick tun für Sie.
BEARBEITEN
In Antwort auf Ihren Kommentar unter:
Halten "newmodules" außerhalb der kernel-Verzeichnis, es ist eine schlechte Idee, um es in das kernel-Verzeichnis. also mkdir newmodules irgendwo wie /home/foo oder /tmp oder sowas. Dies ist einer der Gründe, die Ihr bauen link hochgeschraubt
.../Build ist ein soft-link /zum/kernel/build/Ort wird es nur kopieren, mehr als ein soft-link. Sie müssen auch die Kopie über dem eigentlichen kernel-source /kernel-build-Verzeichnis auf Ihrer microSD -, mit dem gleichen relativen Speicherort. Zum Beispiel,
Sagen wir mal dein kernel-source ist in:
Ihre kernel-build-Verzeichnis:
Ihre newmodules (nach 1.) in:
Also unter /tmp/newmodules/sehen Sie die installierten Module in einem Baum wie:
wenn Sie ein ls -al in diesem Verzeichnis, Sie werden sehen, dass die build ist ein soft-link:
Nun lassen Sie uns sagen, dass Ihre microSD ist gemountet unter /mnt/microSD
dann müssen Sie die folgenden
Jetzt haben Sie alle die Inhalte, die Sie brauchen, um über Ihre embedded-Umgebung. Ich nehme an, Sie tun das compat_wireless bauen auf Ihre Ziel-system eher als die cross-kompilieren?
HINWEIS
Wenn Ihr kernel-build ist der gleiche wie der kernel-Quellen kopiert dann nur noch über den kernel-source und ignorieren die
linux-3.5.0-build
in Kopie Anweisungen obenmkdir newmodules;
make modules_install INSTALL_MOD_PATH=newmodules
dannmake modules KLIB_BUILD=newmodules/lib/modules/3.4.0/build
. Ich sehe die Dateien unter .../build-Verzeichnis auf dem Rechner wo ich die cross-Kompilierung des Kernels. dann lade ich den kernel und die Module auf einer microSD-Karte (cp -r newmodules/* /mnt/miniSD4/). Wenn ich die Stromversorgung des embedded-Boards ,ls -al /lib/modules/3.4.0/build
keine Ausgabe, nichtsAktualisierung der Antwort
InformationsquelleAutor Ahmed Masud
Dies ist ein Alter, aber einige Leute, die diese Informationen benötigen.
Ich habe viele Stunden damit verbracht, um herauszufinden, wo
build
Ordner herkommt, und warum es nur einen link, wenn ich meinen eigenen kernel kompilieren. Endlich kapiert;Linux-kernel meist nur links die
build
undsource
Ordner, um die Quelle Ordner.Aber!
Arch linux (wohl auch einige andere Distributionen auch); Sie hat eine manuelle Skript zum löschen von links, und das hinzufügen von (gefilterten) Dateien zu
build
Ordner.https://git.archlinux.org/svntogit/packages.git/tree/trunk/PKGBUILD?h=packages/linux
Habe ich extrahiert das script funktioniert standalone (im kernel source tree) hier: https://gist.github.com/furkanmustafa/9e73feb64b0b18942047fd7b7e2fd53e
InformationsquelleAutor Furkan Mustafa