Kernel .config opzioni necessarie


16

Sono interessato a compilare un kernel personalizzato per il pi. Ho la fonte dall'archivio github , che include un obiettivo di creazione per una configurazione predefinita:

make ARCH=arm bcmrpi_defconfig

Ma (come con i normali kernel di distribuzione Linux) questo include molte cose che non avrò mai bisogno e alcune cose che vorrei cambiare.

Quali sono le opzioni che sono effettivamente necessarie per far funzionare varie cose pi-centric comuni?

Risposte:


25

Iniziare con la configurazione predefinita, o quella che sai già funziona, è una buona idea. Attenzione che per il Pi 2 dovresti usare:

make bcm2709_defconfig

Invece di bcmrpi_defconfig.

Si noti che se si desidera evitare di bloccare un'installazione del kernel esistente della stessa versione, impostare Installazione generale -> Versione locale - aggiungere alla stringa di rilascio del kernel su un valore univoco.

Ho usato le etichette attuali da .configqui, senza CONFIG_ ; se stai usando ad es. make menuconfig, puoi trovare l'opzione pertinente con la ricerca (barra /). Queste etichette vengono utilizzate anche nella parte superiore della pagina "Guida" per ciascuna opzione. Si noti che il termine abilita (d) si riferisce a qualcosa che fa apparire un'opzione, distinto dalla selezione effettiva dell'opzione da costruire.

Dove ci sono differenze tra le schede A / B / B + / A + e Pi 2, questo è indicato. In alcuni punti questa è la differenza tra le famiglie Broadcom 2708 e 2709, ma in altri punti Pi 2 utilizza la stessa opzione 2708 (o 2835) delle altre schede.


Sistema

Per A / A + / B / B +:

  • ARCH_BCM2708 (Tipo di sistema -> Tipo di sistema braccio -> Famiglia Broadcom BCM2708)

Per Pi 2:

  • ARCH_BCM2709 (Tipo sistema -> Tipo sistema braccio -> Famiglia Broadcom BCM2709) ... Si trova in fondo all'elenco e non in ordine alfabetico.
  • SMP (Funzionalità del kernel -> Elaborazione multipla simmetrica)
  • NEON (Emulazione in virgola mobile -> Supporto avanzato SIMD (Neon) Extension) E "Supporto per NEON in modalità kernel".

Divisione memoria del kernel:

A causa di problemi con un paio di software legacy , la configurazione predefinita può utilizzare 3G / 1G qui che lascerà il 25% della RAM del Pi 2 non disponibile nello spazio utente. Se sei preoccupato per questo, controlla le caratteristiche del kernel -> Dividi memoria .


scheda SD

Questi non possono essere moduli, ovviamente, poiché sono necessari per accedere /lib/modules; devono essere integrati. Sono nella sezione "Driver di dispositivo" di menuconfig.

  • MMC (supporto scheda MMC / SD / SDIO): necessario per ottenere le opzioni per il driver mmc, ma non sufficiente. All'interno di tali opzioni:
    • MMC_BCM2835 (supporto MMC su BCM2835).
    • MMC_BCM2835_DMA (supporto DMA sul controller Arasan BCM2835): abilitato ma non selezionato da MMC_BCM2835.
    • MMC_SDHCI (supporto dell'interfaccia del controller host digitale sicuro)

Poiché la partizione di root è in genere ext formattata, si desidera anche che sia integrata:

  • EXT4_FS (Il filesystem Extended 4 (ext4)) in "File system". Probabilmente ext2 ed ext3 sono anche una buona idea.

La partizione di avvio è vfat, quindi:

  • VFAT_FS (VFAT (Windows-95) fs support) si trova in "File system -> File system DOS / FAT / NT".

miscellaneo

Queste sono varie cose di cui (quasi certamente) hai bisogno, quindi le ho elencate per prime.

  • VFP (matematica in virgola mobile in formato VFP) in "Emulazione in virgola mobile".
  • UNIX (socket di dominio Unix) in "Supporto di rete". Il software di sistema di base lo richiederà anche se non si sta effettuando alcuna vera rete.
  • BINFMT_ELF (supporto del kernel per i binari ELF) in "Formati binari di Userspace".
  • TTY (Abilita TTY) in "Driver di dispositivo -> Dispositivi carattere"; ciò abilita VT (Terminale virtuale) e UNIX98_PTYS (supporto Unix98 PTY) che è necessario selezionare. VT quindi abilita VT_CONSOLE (supporto per console sul terminale virtuale) e CONSOLE_TRANSLATIONS (abilita traduzioni di caratteri nella console) che dovrebbero anche essere selezionate.
  • PROC_FS , SYSFS e TMPFS in "File system -> File system pseudo".
  • SERIAL_AMBA_PL011 (supporto per porta seriale ARM AMBA PL011) in "Driver dispositivo -> Dispositivi carattere -> Driver seriali" e SERIAL_AMBA_PL011_CONSOLE (Supporto per console su porta seriale AMBA). I sistemi Raspbian si lamenteranno di "/ dev / ttyAMA0: nessun file o directory" senza questo.
  • MAILBOX e BCM2708_MBOX (su kernel 4.x). Questo è Device Driver-> Mailbox Hardware Support e l'opzione BCM 2708 nel sottomenu. Vedi la risposta di zub .

USB

  • USB (supporto per USB lato host), in "Driver di dispositivo -> Supporto USB", abilitando USB_DWCOTG (supporto host sinossi DWC) nella pagina, che dovrebbe anche essere selezionato.
  • USB_ANNOUNCE_NEW_DEVICES (Driver di dispositivo -> Supporto USB -> USB annuncia nuovi dispositivi).
  • USB_DEFAULT_PERSIST (Driver di periferica -> Supporto USB -> Abilita persistenza USB per impostazione predefinita).

Per tastiere e mouse:

  • HID_GENERIC (driver HID generico) in "Driver di dispositivo-> Supporto HID"
  • Quindi in "Supporto USB HID": USB_HID (livello di trasporto USB HID)
  • INPUT_MOUSEDEV (interfaccia mouse) in "Driver di dispositivo -> Supporto dispositivo di input".

Per i dischi rigidi:

  • SCSI (supporto dispositivo SCSI) e poi BLK_DEV_SD (supporto disco SCSI) in "Driver di dispositivo -> Supporto SCSI".
  • USB_STORAGE (supporto di archiviazione di massa USB) in "Driver di dispositivo -> Supporto USB".

Per il tethering dei dispositivi Android, vedi la mia risposta qui .


Ethernet

USB deve prima essere abilitato.

  • NET (supporto di rete), un'opzione di livello superiore; all'interno che ci sono:

    • PACCHETTO (presa pacchetto).
    • INET (rete TCP / IP). Ciò dovrebbe consentire una varietà di impostazioni predefinite relative all'IP che è possibile lasciare.
    • NETFILTER (Framework di filtraggio dei pacchetti di rete), necessario per il firewall del filtro pacchetti "ip tables" del kernel.
  • NETDEVICES (supporto per dispositivi di rete) in "Device Drivers", quindi:

    • NET_CORE (supporto driver di rete principale).
    • USB_NET_DRIVERS (Schede di rete USB) ->
      • USB_USBNET (Framework di rete USB multiuso).
      • USB_NET_SMSC95XX (dispositivi Ethernet 10/100 USB 2.0 LAN95XX basati su SMSC)

Suono

Per abilitare il suono integrato:

  • SUONO (nei driver di dispositivo), quindi:
    • SND (Advanced Linux Sound Architecture) e in quanto:
    • SND_ARM (dispositivi audio ARM) e infine in quel SND_BCM2835 (driver ALSA BCM2835)

video

  • CONFIG_BCM2708_VCHIQ (Driver di dispositivo -> Dispositivi vari -> Videocore VCHIQ).

Non è necessario altro per il supporto di X server; non ci sono opzioni di driver DRI per il SoC del pi.

Se si desidera utilizzare il framebuffer, che consente ad applicazioni come fbie omxplayerdi visualizzare elementi grafici al di fuori di X:

  • FB (Device Devices -> Graphics Support -> Frame buffer Devices -> Support for frame buffer devices), quindi nello stesso menu, FB_BCM2708 (supporto framebuffer BCM2708).

Se lo fai e vuoi il pinguino (o meglio, il lampone) sulla console di avvio, ricorda LOGO (logo di avvio ) in Supporto grafico.

Potresti anche voler esaminare le opzioni in Tipo di sistema -> Broadcom2708 (o 9) Implements .


GPIO / I 2 C

  • BCM2708_GPIO (Tipo di sistema -> Broadcom BCM2708 Implementsations) O per Pi 2, l'opzione BCM2709 corrispondente.
  • GPIO_SYSFS (Driver di dispositivo -> Supporto GPIO) per l' /sys/class/gpiointerfaccia.
  • I2C (Driver dispositivo -> Supporto I2C), che abilita I2C_CHARDEV (interfaccia dispositivo I2C). Quindi in "Supporto bus hardware I2C":
    • I2C_BCM2708 (BCM2708 BSC).

Raspicam

  • MEDIA_CAMERA_SUPPORT (Driver di dispositivo -> Supporto multimediale -> Supporto per telecamere / video grabber).
  • V4L_PLATFORM_DRIVERS ( Driver di dispositivo-> Supporto multimediale -> Dispositivi della piattaforma V4L "). Ciò abilita un sottomenu in cui si desidera selezionare:
    • CONFIG_SOC_CAMERA (SoC Camera Support).
    • CONFIG_VIDEO_BCM2835 (driver dell'interfaccia della telecamera Broadcom BCM2835). Ciò abilita il "driver di interfaccia telecamera MMAL Broadcom BM2835 ( CONFIG_VIDEO_BCM2835_MMAL ) che è necessario selezionare anche.

Sensore termico

Hai una scelta qui; se provi a scegliere entrambi, il primo verrà annullato (anche se puoi crearne uno come modulo, cambiare la configurazione, costruire l'altro e usarli entrambi se vuoi davvero).

  • SENSORS_BCM2835 ( Driver dispositivo-> Supporto monitoraggio hardware-> Driver Broadcom BCM2835 HWMON). Si trova in fondo all'elenco se non si seleziona "Driver termico BCM2835", di seguito. Ti dà accesso alle cose termiche in /sys/devices/platform/bcm2835_hwmon- temp1_inpute temp1_max. Il primo è lo stesso /sys/devices/virtual/thermal/thermal_zone0/temp; quest'ultimo è sempre 85000 (ovvero 85 ° C).
  • THERMAL_BCM2835 ( Driver dispositivo-> Driver generico sysfs termico-> Driver termico BCM2835). Scegli anche Driver di dispositivo-> Supporto per il monitoraggio dell'hardware (ma non il singolo driver in quel menu) in modo che "Esporre i sensori termici come dispositivo hwmon" appaia qui e puoi scegliere quello (4.0.y sembra non avere questo). La scelta di questo annullerà SENSORS_BCM2835, sopra. Ti dà accesso al più facile da ricordare e trovare /sys/class/devices/virtual/thermal/thermal_zone0quali include tempe trip_point_0_temp(lo stesso di temp1_max, sopra). Vari monitor dello spazio utente probabilmente preferiranno questo e potrebbero non funzionare senza di esso.

5

Un commento al grande post di goldilock:

Volevo solo aggiungere una cosa che osservo con il ramo rpi-4.1.y (05376fce25aaab4f47182a5af04928bfa06f30d6): per far funzionare l'USB (questo include Ethernet collegato all'USB), è necessario abilitare anche BCM2708_MBOX (Driver di dispositivo-> Mailbox Hardware Support- > Broadcom BCM2708 Mailbox (vcio)).

Senza questa opzione USB inizia l'inizializzazione ma produce solo un mucchio di messaggi spaventosi come:

[    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 è anche un prerequisito per THERMAL_BCM2835 e per SND_BCM2835 .


2

Video (framebuffer)

Oltre al supporto video, sembra che sia necessario abilitare:

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

Per caricare correttamente il driver del framebuffer. È possibile abilitarlo senza DMA abilitato, ma non verrà caricato.

Wireless integrato

Per disporre di Wireless integrato (RPi 3 e Pi Zero W), è necessario selezionare quanto segue:

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)

0

Potrebbe essere vecchio, ma sono arrivato qui usando la ricerca. Per la scheda SDHC è inoltre necessario

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

altrimenti il ​​kernel rileverà la scheda SDHC, ma nessuna partizione su di essa.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.