Kernel .config notwendige Optionen

16

Ich bin daran interessiert, einen benutzerdefinierten Kernel für das Pi zu kompilieren. Ich habe die Quelle aus dem Github-Archiv , das ein make-Ziel für eine Standardkonfiguration enthält:

make ARCH=arm bcmrpi_defconfig

Aber (wie bei normalen Linux-Distributionskernen) beinhaltet dies eine Menge Dinge, die ich niemals brauchen werde, und einige Dinge, die ich gerne ändern würde.

Welche Optionen sind tatsächlich erforderlich , damit verschiedene allgemeine pizentrische Dinge funktionieren?

Goldlöckchen
quelle

Antworten:

25

Es ist eine gute Idee, mit der Standardkonfiguration zu beginnen oder mit einer, von der Sie wissen, dass sie bereits funktioniert. Beachten Sie, dass Sie für den Pi 2 Folgendes verwenden sollten:

make bcm2709_defconfig

Anstelle von bcmrpi_defconfig.

Beachten Sie, dass Sie, wenn Sie vermeiden möchten, dass eine vorhandene Kernel-Installation derselben Version überlastet wird, die Option Allgemeines Setup -> Lokale Version - an die Kernel-Release- Zeichenfolge anhängen, um einen eindeutigen Wert festzulegen.

Ich habe die tatsächlichen Etiketten von .confighier verwendet, ohne CONFIG_ ; Wenn Sie zB verwenden, make menuconfigkönnen Sie bei der Suche die entsprechende Option finden (Schrägstrich /). Diese Bezeichnungen werden auch oben auf der Seite "Hilfe" für jede Option verwendet. Beachten Sie, dass sich der Begriff enable (d) auf etwas bezieht, das dazu führt, dass eine Option angezeigt wird, und sich von der tatsächlichen Auswahl der zu erstellenden Option unterscheidet.

Wenn es Unterschiede zwischen den A / B / B + / A + -Platten und dem Pi 2 gibt, wird dies angezeigt. An einigen Stellen ist dies der Unterschied zwischen den Broadcom 2708- und 2709-Familien, an anderen Stellen verwendet der Pi 2 dieselbe 2708- (oder 2835-) Option wie die anderen Karten.


System

Für A / A + / B / B +:

  • ARCH_BCM2708 ( Systemtyp -> Armsystemtyp -> Broadcom BCM2708-Familie)

Für Pi 2:

  • ARCH_BCM2709 ( Systemtyp -> Armsystemtyp -> Broadcom BCM2709-Familie) ... Dies ist ganz am Ende der Liste und nicht in alphabetischer Reihenfolge.
  • SMP (Kernel-Funktionen -> Symmetric Multi-Processing)
  • NEON (Gleitkomma-Emulation -> Erweiterte Unterstützung für SIMD (Neon) -Erweiterungen) und "Unterstützung für NEON im Kernel-Modus".

Kernel-Speicheraufteilung:

Aufgrund von Problemen mit einigen älteren Softwareteilen wird in der Standardkonfiguration möglicherweise 3G / 1G verwendet, sodass 25% des Arbeitsspeichers des Pi 2 nicht für den Benutzer verfügbar sind. Wenn Sie diesbezüglich Bedenken haben, überprüfen Sie Kernel Features -> Memory Split .


SD-Karte

Dies können natürlich keine Module sein, da sie für den Zugriff benötigt werden /lib/modules. Sie müssen eingebaut sein. Sie befinden sich im Abschnitt "Gerätetreiber" von menuconfig.

  • MMC (MMC / SD / SDIO-Kartenunterstützung): Erforderlich, um Optionen für den MMC-Treiber zu erhalten, aber nicht ausreichend. Innerhalb dieser Optionen:
    • MMC_BCM2835 (MMC-Unterstützung für BCM2835).
    • MMC_BCM2835_DMA (DMA-Unterstützung auf dem BCM2835 Arasan-Controller): Aktiviert, aber von MMC_BCM2835 nicht ausgewählt.
    • MMC_SDHCI (Secure Digital Host Controller Interface-Unterstützung)

Da die Root-Partition normalerweise ext-formatiert ist, möchten Sie auch Folgendes einbauen:

  • EXT4_FS (Das Extended 4 (ext4) -Dateisystem) unter "Dateisysteme". Wahrscheinlich sind ext2 und ext3 auch eine gute Idee.

Die Bootpartition ist vfat, also:

  • VFAT_FS (VFAT (Windows-95) fs-Unterstützung) befindet sich unter "Dateisysteme -> DOS / FAT / NT-Dateisysteme".

Sonstiges

Dies sind verschiedene Dinge, die Sie (mit ziemlicher Sicherheit) benötigen. Deshalb habe ich sie zuerst aufgelistet.

  • VFP (Gleitkomma-Mathematik im VFP-Format) unter "Gleitkomma-Emulation".
  • UNIX (Unix Domain Sockets) unter "Netzwerkunterstützung". Grundlegende Systemsoftware erfordert dies, auch wenn Sie keine echten Netzwerke betreiben.
  • BINFMT_ELF (Kernel-Unterstützung für ELF-Binärdateien) unter "Userspace-Binärformate".
  • TTY (TTY aktivieren) unter "Gerätetreiber -> Zeichengeräte"; Dies aktiviert VT (Virtuelles Terminal) und UNIX98_PTYS (Unix98 PTY-Unterstützung), die Sie auswählen sollten. VT aktiviert dann VT_CONSOLE (Unterstützung für Konsole auf virtuellem Terminal) und CONSOLE_TRANSLATIONS ( Aktivieren von Zeichenübersetzungen in Konsole), die ebenfalls ausgewählt werden sollten.
  • PROC_FS , SYSFS und TMPFS unter "Dateisysteme -> Pseudodateisysteme".
  • SERIAL_AMBA_PL011 (Unterstützung des seriellen ARM AMBA PL011-Anschlusses) unter "Gerätetreiber -> Zeichengeräte -> Serielle Treiber" und SERIAL_AMBA_PL011_CONSOLE (Unterstützung der Konsole am seriellen AMBA-Anschluss). Raspbian-Systeme beschweren sich über "/ dev / ttyAMA0: Keine solche Datei oder kein solches Verzeichnis".
  • MAILBOX und BCM2708_MBOX (auf 4.x-Kerneln). Dies ist Device Drivers-> Mailbox Hardware Support und die Option BCM 2708 im Untermenü. Siehe zubs Antwort .

USB

  • USB (Unterstützung für Host- seitiges USB), aktivieren Sie unter "Gerätetreiber -> USB-Unterstützung" USB_DWCOTG (Unterstützung für Synopsis-DWC-Hosts) auf der Seite, die ebenfalls ausgewählt werden sollte.
  • USB_ANNOUNCE_NEW_DEVICES (Gerätetreiber -> USB-Unterstützung -> USB kündigt neue Geräte an).
  • USB_DEFAULT_PERSIST (Gerätetreiber -> USB-Unterstützung -> USB-Persistenz standardmäßig aktivieren).

Für Tastaturen und Mäuse:

  • HID_GENERIC (generischer HID-Treiber) unter "Gerätetreiber-> HID-Unterstützung"
  • Dann in "USB-HID-Unterstützung": USB_HID (USB-HID-Transportschicht)
  • INPUT_MOUSEDEV ( Mausschnittstelle ) unter "Gerätetreiber -> Unterstützung für Eingabegeräte".

Für Festplatten:

  • SCSI (SCSI-Geräteunterstützung) und dann BLK_DEV_SD (SCSI-Festplattenunterstützung) unter "Gerätetreiber -> SCSI-Unterstützung".
  • USB_STORAGE (USB-Massenspeicher-Unterstützung) unter "Gerätetreiber -> USB-Unterstützung".

Informationen zum Anbinden von Android-Geräten finden Sie hier .


Ethernet

USB muss zuerst aktiviert werden.

  • NET (Networking Support), eine Top-Level-Option; darin sind:

    • PACKET ( Paketsockel ).
    • INET (TCP / IP-Netzwerk). Dies sollte eine Vielzahl von IP-bezogenen Standardeinstellungen ermöglichen, die Sie beibehalten können.
    • NETFILTER (Network Packet Filtering Framework), erforderlich für die Paketfilter-Firewall des Kernels "ip tables".
  • NETDEVICES (Network Device Support) in "Device Drivers", dann:

    • NET_CORE (Unterstützung für Netzwerkkerntreiber).
    • USB_NET_DRIVERS (USB-Netzwerkadapter) ->
      • USB_USBNET (Mehrzweck-USB-Netzwerk-Framework).
      • USB_NET_SMSC95XX (SMSC LAN95XX-basierte USB 2.0 10/100-Ethernet-Geräte)

Klang

So aktivieren Sie den Onboard-Sound:

  • SOUND (in Gerätetreibern), dann:
    • SND (Advanced Linux Sound Architecture) und darin:
    • SND_ARM (ARM-Audiogeräte) und schließlich in diesem SND_BCM2835 (BCM2835 ALSA-Treiber)

Video

  • CONFIG_BCM2708_VCHIQ (Gerätetreiber -> Verschiedene Geräte -> Videocore VCHIQ).

Für die Unterstützung von X-Servern ist nichts weiter erforderlich. Es gibt keine DRI-Treiberoptionen für den SoC des Pi.

Wenn Sie den Framebuffer verwenden möchten, mit dem Anwendungen wie fbiund omxplayerGrafiken außerhalb von X anzeigen können:

  • FB (Gerätetreiber -> Grafikunterstützung -> Bildspeichergeräte -> Unterstützung für Bildspeichergeräte), dann im selben Menü FB_BCM2708 (BCM2708-Bildspeicherunterstützung).

Wenn Sie dies tun und den Pinguin (oder besser die Himbeere) auf der Boot-Konsole haben möchten , merken Sie sich LOGO (Bootup-Logo) unter Graphics Support.

Sie können sich auch die Optionen unter Systemtyp -> Broadcom2708 (oder 9) -Implementierungen ansehen .


GPIO / I 2 C

  • BCM2708_GPIO ( Systemtyp -> Broadcom BCM2708-Implementierungen) Oder für den Pi 2 die entsprechende BCM2709-Option.
  • GPIO_SYSFS (Gerätetreiber -> GPIO-Unterstützung) für die /sys/class/gpioSchnittstelle.
  • I2C (Gerätetreiber -> I2C-Unterstützung), wodurch I2C_CHARDEV (I2C-Geräteschnittstelle) aktiviert wird . Dann unter "I2C Hardware Bus Support":
    • I2C_BCM2708 (BCM2708 BSC).

Raspicam

  • MEDIA_CAMERA_SUPPORT (Gerätetreiber -> Multimedia-Unterstützung -> Unterstützung für Kameras / Video-Grabber).
  • V4L_PLATFORM_DRIVERS (Gerätetreiber-> Multimedia-Unterstützung -> V4L-Plattformgeräte "). Dies aktiviert ein Untermenü, in dem Sie Folgendes auswählen möchten:
    • CONFIG_SOC_CAMERA (SoC-Kamera-Unterstützung).
    • CONFIG_VIDEO_BCM2835 (Broadcom BCM2835-Kameraschnittstellentreiber). Dies aktiviert den Broadcom BM2835 MMAL-Kameraschnittstellentreiber ( CONFIG_VIDEO_BCM2835_MMAL ), den Sie ebenfalls auswählen sollten.

Wärmesensor

Sie haben hier die Wahl; Wenn Sie versuchen, beide auszuwählen, wird der erste abgebrochen (obwohl Sie einen als Modul erstellen, die Konfiguration ändern, den anderen erstellen und beide verwenden können, wenn Sie dies wirklich möchten).

  • SENSORS_BCM2835 (Gerätetreiber-> Hardwareüberwachungsunterstützung-> Broadcom BCM2835 HWMON-Treiber). Dies ist am Ende der Liste, wenn Sie unten nicht "BCM2835 Thermal Driver" auswählen. Es gibt Ihnen Zugang zu thermischen Sachen in /sys/devices/platform/bcm2835_hwmon- temp1_inputund temp1_max. Ersteres ist dasselbe /sys/devices/virtual/thermal/thermal_zone0/temp; Letzteres ist immer 85000 (dh 85 ° C).
  • THERMAL_BCM2835 (Gerätetreiber-> Generischer Thermal-Sysfs-Treiber-> BCM2835-Thermal-Treiber). Wählen Sie auch Gerätetreiber-> Hardware-Überwachungsunterstützung (aber nicht den einzelnen Treiber in diesem Menü), sodass hier "Thermosensoren als Hardware-Gerät aussetzen" angezeigt wird und Sie dies auswählen können (4.0.y scheint dies nicht zu haben). Wenn Sie dies auswählen, wird SENSORS_BCM2835 (siehe oben) deaktiviert. Es gibt Ihnen Zugriff auf die leichter zu merken und zu finden, /sys/class/devices/virtual/thermal/thermal_zone0welche enthält tempund trip_point_0_temp(das gleiche wie temp1_maxoben). Verschiedene Userspace-Monitore werden dies wahrscheinlich bevorzugen und funktionieren ohne dies möglicherweise nicht.
Goldlöckchen
quelle
5

Ein Kommentar zu goldilocks großartigem Beitrag:

Ich wollte nur eine Sache hinzufügen, die ich mit dem Zweig rpi-4.1.y beobachte (05376fce25aaab4f47182a5af04928bfa06f30d6): Damit USB funktioniert (dies schließt das über USB verbundene Ethernet ein), muss auch BCM2708_MBOX (Device Drivers-> Mailbox Hardware Support- > Broadcom BCM2708 Mailbox (vcio)).

Ohne diese Option startet USB die Initialisierung, erzeugt jedoch nur eine Reihe von beängstigenden Meldungen wie:

[    1.193854] WARN::dwc_otg_core_reset:5109: dwc_otg_core_reset() HANG! Soft Reset GRSTCTL=80000001
[    1.441137] WARN::dwc_otg_hcd_init:1047: FIQ DMA bounce buffers: virt = 0x9fc0c000 dma = 0x5d5e4000 len=9024

Btw. BCM2708_MBOX ist auch Voraussetzung für THERMAL_BCM2835 und für SND_BCM2835 .

zub
quelle
2

Video (Framebuffer)

Zusätzlich zur Video-Unterstützung müssen Sie Folgendes aktivieren:

Device Drivers ->
  DMA Engine support ->
    BCM2835 DMA engine support (CONFIG_DMA_BCM2835)

Um Framebuffer Treiber korrekt zu laden. Sie können es aktivieren, ohne dass DMA aktiviert ist, aber es kann nicht geladen werden.

Integriertes Wireless

Um Integrated Wireless (RPi 3 und Pi Zero W) nutzen zu können, müssen Sie Folgendes auswählen:

Networking support ->
  Wireless ->
    cfg80211 - wireless configuration API (CONFIG_CFG80211)

Device Drivers ->
  Network device support ->
    Wireless LAN ->
      Broadcom IEEE802.11n embedded FullMAC WLAN driver (CONFIG_BRCMFMAC)
Maxux
quelle
0

Könnte alt sein, aber ich bin über die Suche hierher gekommen. Für die SDHC-Karte benötigen Sie zusätzlich

Device Drivers -> -> MMC block device driver )CONFIG_MMC_BLOCK)

Andernfalls erkennt Ihr Kernel die SDHC-Karte, jedoch keine Partitionen.

Walter Hüttenmeyer
quelle