Kompilieren des Kernels mit Standardkonfigurationen


8

Annahmen:

  • Die Platform:
    anisha@linux-dopx:~/> uname -a
    Linux linux-dopx 2.6.34-12-desktop #1 SMP PREEMPT 2010-06-29 02:39:08 +0200 x86_64 x86_64 x86_64 GNU/Linux

  • Der heruntergeladene Kernel ist der neueste stabile von kernel.org.

  • Wir lassen die Standardeinstellungen in den Optionen von beibehalten (keine Änderungen vornehmen) make menuconfig.
  • Geben Sie einfach make, make install, grub-update, und starten neu.

Müssen wir nun nach diesen Annahmen noch einige zusätzliche Änderungen an Dateien vornehmen oder einige zusätzliche Treiber kompilieren, um einen fehlerfreien Neustart sicherzustellen?

Wenn ja, von welchen Dingen hängen diese Änderungen ab?

EDIT 1:

anisha@linux-dopx:/> sudo /sbin/lspci -n
00:00.0 0600: 8086:29c0 (rev 10)
00:02.0 0300: 8086:29c2 (rev 10)
00:1b.0 0403: 8086:27d8 (rev 01)
00:1c.0 0604: 8086:27d0 (rev 01)
00:1c.1 0604: 8086:27d2 (rev 01)
00:1d.0 0c03: 8086:27c8 (rev 01)
00:1d.1 0c03: 8086:27c9 (rev 01)
00:1d.2 0c03: 8086:27ca (rev 01)
00:1d.3 0c03: 8086:27cb (rev 01)
00:1d.7 0c03: 8086:27cc (rev 01)
00:1e.0 0604: 8086:244e (rev e1)
00:1f.0 0601: 8086:27b8 (rev 01)
00:1f.1 0101: 8086:27df (rev 01)
00:1f.2 0101: 8086:27c0 (rev 01)
00:1f.3 0c05: 8086:27da (rev 01)
01:00.0 0200: 10ec:8136 (rev 01)

Antworten:


7

Es wird nicht nur eine bloße empfohlen make menuconfig. Die erforderliche Konfiguration hängt von drei Dingen ab:

 the hardware being used
 the features used by the OS/distribution
 the features by you (file-systems, raid, ..etc)

Die aus meiner Sicht empfohlene "Standard" -Konfiguration lautet also:

cd your_kernel_src
cp /boot/your-distribution-config .config
make localmodconfig
make menuconfig

Siehe auch Kernel-Konfiguration für Distributionen . Der erste Absatz:

Das Konfigurieren eines Kernels war früher ein recht unkomplizierter Prozess, bei dem nur Kenntnisse darüber erforderlich waren, welche Hardware unterstützt werden muss. Im Laufe der Zeit sind die Dinge im Allgemeinen komplexer geworden, aber Distributionen haben ihre eigenen Abhängigkeiten zu bestimmten Kernelfunktionen hinzugefügt - Abhängigkeiten, die für normale Benutzer schwierig herauszufinden sein können. Dies veranlasste Linus Torvalds, einen RFC-Vorschlag zum Hinzufügen verteilungsspezifischer Kernel-Konfigurationsoptionen vorzulegen.


1
Um es kurz zu machen: Es gibt keine funktionierende "Standard" - oder "genau das, was Linus beabsichtigt hat" -Kernkonfiguration. Wenn Sie nur herunterladen und kompilieren, ohne etwas zu konfigurieren, wird erwartet, dass Sie einen defekten und / oder kaum funktionierenden Kernel haben.
Bahamat

Die Standardkonfiguration ist genau das. Es war alles, was Linus zu dieser Zeit lief. Holen Sie sich die Konfiguration für Ihre Distribution und verwenden Sie diese als Ausgangspunkt.
vonbrand

danke für die antwort, ich versuche einem buch writing linux driversmit dem 2.6 kernel zu folgen . I Meine Fedora 24-Konfiguration enthält viele ungültige Werte für den 2.6-Kernel. Irgendwelche Vorschläge, welche Konfiguration verwendet werden soll, um den 2.6-Kernel zu installieren?
Gideon

3

Echte Hardware / Distributionen funktionieren mit defconfig wahrscheinlich nicht richtig

Wie in dieser Antwort erwähnt , wird alles, was nicht von der Distribution oder dem Hardwareanbieter angegeben wird, höchstwahrscheinlich auf subtile oder weniger subtile Weise fehlschlagen, z.

  • Möglicherweise erstellen Sie keine Treiberunterstützung für wichtige Hardware
  • Pakete der Distribution basieren möglicherweise auf einer Funktion des Kernels, die Sie nicht erstellt haben und die fehlgeschlagen ist

Abgesehen von bestimmten Konfigurationen ist es für Anbieter normal, große Patchsets auf den Vanillekernel anzuwenden, selbst Ubuntu tut dies beispielsweise.

Insbesondere für Ubuntu / Debian habe ich beschrieben, wie der unterstützte Kernel aus dem Quellcode kompiliert wird: /ubuntu/281763/is-there-any-prebuilt-qemu-ubuntu-image32bit-online/1081171# 1081171 Das Ändern dieser stabilen Kernelbasis ist das Vernünftigste, was Sie in diesem Fall tun können.

QEMU arbeitet mit defconfig

Eine Sache, defconfigdie gut funktioniert, ist das Booten auf QEMU, getestet auf Kernel v4.20, QEMU 2.12.

Hier ist ein vollautomatisches Beispiel mit Buildroot .

Wie unter diesem Link angegeben, benötigen Sie die folgenden Optionen, um von der Festplatte zu starten:

CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_BLK=y

obwohl sie für initrd nicht benötigt werden.

Für die Kreuzkompilierung zu einem anderen Bogen, z. B. aarch64, benötigen Sie:

make ARCH=arm64 defconfig

Aber wie erklärt hier , obwohl arm64 bootet auf QEMU, erzeugt er einen Super aufgeblähten Kernel, und Sie wollen wahrscheinlich etwas mehr minimal zB ausrollen , wie hier beschrieben .

Was make defconfigmacht genau?

Wir können leicht erkennen, welche Konfigurationsdatei mit einem ausführlichen Build verwendet wurde:

make V=1 defconfig

welche Ausgaben auf v4.19:

make -f ./scripts/Makefile.build obj=scripts/basic
rm -f .tmp_quiet_recordmcount
make -f ./scripts/Makefile.build obj=scripts/kconfig defconfig
scripts/kconfig/conf  --defconfig=arch/x86/configs/x86_64_defconfig Kconfig

Daraus schließen wir, dass die verwendete Datei arch / x86 / configs / x86_64_defconfig sein muss .

Siehe auch: /programming/41885015/what-exactly-does-linux-kernels-make-defconfig-do

make helpzeigt auch andere interessante Standardziele wie alldefconfigund savedefconfigdie nützlich sein können.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.