Options nécessaires du noyau .config


16

Je suis intéressé à compiler un noyau personnalisé pour le pi. J'ai la source de l'archive github , qui comprend une cible make pour une configuration par défaut:

make ARCH=arm bcmrpi_defconfig

Mais (comme avec les noyaux de distribution linux normaux), cela inclut beaucoup de choses dont je n'aurai jamais besoin, et certaines choses que j'aimerais changer.

Quelles sont les options réellement nécessaires pour faire fonctionner diverses choses pi-centriques courantes?

Réponses:


25

Commencer par la configuration par défaut, ou celle que vous connaissez déjà, est une bonne idée. Attention, pour le Pi 2 , vous devez utiliser:

make bcm2709_defconfig

Au lieu de bcmrpi_defconfig.

Notez que si vous voulez éviter d'encombrer une installation de noyau existante de la même version, définissez la configuration générale -> version locale - ajoutez à la chaîne de version du noyau une valeur unique.

J'ai utilisé les étiquettes réelles d' .configici, sans CONFIG_ ; si vous utilisez par exemple, make menuconfigvous pouvez trouver l'option appropriée avec la recherche (barre oblique /). Ces étiquettes sont également utilisées en haut de la page "Aide" pour chaque option. Notez que le terme enable (d) fait référence à quelque chose qui fait apparaître une option, distinct de la sélection effective de l'option à construire.

En cas de différences entre les cartes A / B / B + / A + et le Pi 2, cela est indiqué. À certains endroits, c'est la différence entre les familles Broadcom 2708 et 2709, mais à d'autres endroits, le Pi 2 utilise la même option 2708 (ou 2835) que les autres cartes.


Système

Pour A / A + / B / B +:

  • ARCH_BCM2708 (Type de système -> Type de système de bras -> Famille Broadcom BCM2708)

Pour Pi 2:

  • ARCH_BCM2709 (Type de système -> Type de système d'armement -> Famille Broadcom BCM2709) ... C'est tout en bas de la liste et non par ordre alphabétique.
  • SMP (Fonctionnalités du noyau -> Multi-traitement symétrique)
  • NEON (Emulation à virgule flottante -> Prise en charge avancée de l'extension SIMD (Neon)) Et "Prise en charge de NEON en mode noyau".

Répartition de la mémoire du noyau:

En raison de problèmes avec quelques logiciels hérités , la configuration par défaut peut utiliser 3G / 1G ici, ce qui laissera 25% de la RAM du Pi 2 indisponible pour l'espace utilisateur. Si cela vous inquiète, vérifiez les fonctionnalités du noyau -> Split mémoire .


carte SD

Ceux-ci ne peuvent pas être des modules, évidemment, car ils sont nécessaires pour accéder /lib/modules; ils doivent être intégrés. Ils se trouvent dans la section "Pilotes de périphérique" de menuconfig.

  • MMC (prise en charge des cartes MMC / SD / SDIO): nécessaire pour obtenir des options pour le pilote mmc, mais pas suffisant. Dans ces options:
    • MMC_BCM2835 (prise en charge MMC sur BCM2835).
    • MMC_BCM2835_DMA (prise en charge DMA sur le contrôleur Arasan BCM2835): activé mais non sélectionné par MMC_BCM2835.
    • MMC_SDHCI (prise en charge de l'interface du contrôleur hôte numérique sécurisé)

Étant donné que la partition racine est généralement au format ext, vous souhaitez également qu'elle soit intégrée:

  • EXT4_FS (Le système de fichiers Extended 4 (ext4)) sous "Systèmes de fichiers". Probablement ext2 et ext3 sont également une bonne idée.

La partition de démarrage est vfat, donc:

  • VFAT_FS (prise en charge de VFAT (Windows-95) fs) se trouve sous "Systèmes de fichiers -> Systèmes de fichiers DOS / FAT / NT".

Divers

Ce sont diverses choses dont vous avez (presque certainement) besoin, donc je les ai énumérées en premier.

  • VFP (calcul en virgule flottante au format VFP) sous "Émulation en virgule flottante".
  • UNIX (sockets de domaine Unix) sous "Prise en charge réseau". Le logiciel système de base en aura besoin même si vous ne faites pas de véritable réseau.
  • BINFMT_ELF ( Prise en charge du noyau pour les binaires ELF) sous "Formats binaires de l'espace utilisateur".
  • TTY (Activer TTY) sous "Pilotes de périphérique -> Périphériques de caractères"; cela active VT (terminal virtuel) et UNIX98_PTYS (prise en charge Unix98 PTY) que vous devez sélectionner. VT active ensuite VT_CONSOLE (Prise en charge de la console sur le terminal virtuel) et CONSOLE_TRANSLATIONS (Activer les traductions de caractères dans la console) qui doivent également être sélectionnées.
  • PROC_FS , SYSFS et TMPFS sous "File Systems -> Pseudo Filesystems".
  • SERIAL_AMBA_PL011 (prise en charge du port série ARM AMBA PL011) sous "Pilotes de périphérique -> Périphériques de caractères -> Pilotes série" et SERIAL_AMBA_PL011_CONSOLE (Prise en charge de la console sur le port série AMBA). Les systèmes Raspbian se plaindront de "/ dev / ttyAMA0: Aucun fichier ou répertoire" sans cela.
  • MAILBOX et BCM2708_MBOX (sur les noyaux 4.x). Il s'agit de Pilotes de périphérique -> Support matériel de boîte aux lettres et de l'option BCM 2708 dans le sous-menu. Voir la réponse de zub .

USB

  • USB (Prise en charge de l'USB côté hôte), dans "Pilotes de périphérique -> Prise en charge USB", permettant USB_DWCOTG (prise en charge de l'hôte Synopsis DWC) en bas de la page, qui doit également être sélectionné.
  • USB_ANNOUNCE_NEW_DEVICES (Pilotes de périphérique -> Prise en charge USB -> USB annonce de nouveaux périphériques).
  • USB_DEFAULT_PERSIST (Pilotes de périphérique -> Prise en charge USB -> Activer la persistance USB par défaut).

Pour les claviers et les souris:

  • HID_GENERIC (pilote générique HID) dans "Pilotes de périphérique -> Prise en charge HID"
  • Puis dans "Prise en charge USB HID": USB_HID (couche de transport USB HID)
  • INPUT_MOUSEDEV (Interface souris) dans "Pilotes de périphérique -> Prise en charge du périphérique d'entrée".

Pour les disques durs:

  • SCSI (prise en charge des périphériques SCSI) puis BLK_DEV_SD (prise en charge des disques SCSI) dans "Pilotes de périphérique -> Prise en charge SCSI".
  • USB_STORAGE (prise en charge du stockage de masse USB) dans "Pilotes de périphérique -> Prise en charge USB".

Pour attacher des appareils Android, voir ma réponse ici .


Ethernet

L'USB doit d'abord être activé.

  • NET (Networking support), une option de haut niveau; à l'intérieur qui sont:

    • PACKET (Packet socket).
    • INET (mise en réseau TCP / IP). Cela devrait permettre une variété de valeurs par défaut liées à l'IP que vous pouvez laisser.
    • NETFILTER (Network packet filtering framework), nécessaire pour le pare-feu du filtre de paquets du noyau "ip tables".
  • NETDEVICES (Network device support) dans "Device Drivers", puis:

    • NET_CORE (prise en charge du pilote de base du réseau).
    • USB_NET_DRIVERS (Adaptateurs réseau USB) ->
      • USB_USBNET (cadre de mise en réseau USB polyvalent).
      • USB_NET_SMSC95XX (périphériques Ethernet USB 2.0 10/100 basés sur SMSC LAN95XX)

Du son

Pour activer le son intégré:

  • SON (dans les pilotes de périphérique), puis:
    • SND (Advanced Linux Sound Architecture) et en ce que:
    • SND_ARM (périphériques audio ARM) et enfin dans ce SND_BCM2835 (pilote BCM2835 ALSA)

Vidéo

  • CONFIG_BCM2708_VCHIQ (Pilotes de périphérique -> Périphériques divers -> Videocore VCHIQ).

Il n'y a rien de plus requis pour la prise en charge du serveur X; il n'y a pas d'options de pilote DRI pour le SoC du pi.

Si vous souhaitez utiliser le framebuffer, qui permet à des applications telles que fbiet omxplayerd'afficher des graphiques en dehors de X:

  • FB (Pilotes de périphérique -> Support graphique -> Périphériques de mémoire tampon de trame -> Prise en charge des périphériques de mémoire tampon de trame), puis dans le même menu, FB_BCM2708 (prise en charge du tampon de trame BCM2708).

Si vous faites cela et que vous voulez le pingouin (ou plutôt la framboise) sur la console de démarrage, n'oubliez pas LOGO (logo de démarrage) sous Support graphique.

Vous pouvez également consulter les options sous Type de système -> Implémentations Broadcom2708 (ou 9) .


GPIO / I 2 C

  • BCM2708_GPIO (Type de système -> Implémentations Broadcom BCM2708) Ou pour le Pi 2, l'option BCM2709 correspondante.
  • GPIO_SYSFS (Pilotes de périphérique -> Prise en charge GPIO) pour l' /sys/class/gpiointerface.
  • I2C (Pilotes de périphérique -> Prise en charge I2C), qui active I2C_CHARDEV (interface de périphérique I2C). Puis sous "Prise en charge du bus matériel I2C":
    • I2C_BCM2708 (BCM2708 BSC).

Raspicam

  • MEDIA_CAMERA_SUPPORT (Pilotes de périphérique -> Prise en charge multimédia -> Prise en charge des caméras / pinces vidéo).
  • V4L_PLATFORM_DRIVERS ( Pilotes de périphérique -> Support multimédia -> Périphériques de la plate-forme V4L "). Cela active un sous-menu dans lequel vous souhaitez sélectionner:
    • CONFIG_SOC_CAMERA (prise en charge des caméras SoC).
    • CONFIG_VIDEO_BCM2835 (pilote d'interface de caméra Broadcom BCM2835). Cela active le "pilote d'interface de caméra Broadcom BM2835 MMAL ( CONFIG_VIDEO_BCM2835_MMAL ) que vous devez également sélectionner.

Capteur thermique

Vous avez le choix ici; si vous essayez de choisir les deux, le premier sera annulé (bien que vous puissiez en créer un en tant que module, changer la configuration, construire l'autre et les utiliser tous les deux si vous le voulez vraiment).

  • SENSORS_BCM2835 ( Pilotes de périphérique -> Prise en charge de la surveillance du matériel -> Pilote Broadcom BCM2835 HWMON). Ceci est au bas de la liste si vous ne sélectionnez pas "Driver thermique BCM2835", ci-dessous. Il vous donne accès à des trucs thermiques en /sys/devices/platform/bcm2835_hwmon- temp1_inputet temp1_max. Le premier est le même /sys/devices/virtual/thermal/thermal_zone0/temp; ce dernier est toujours 85000 (soit 85 ° C).
  • THERMAL_BCM2835 ( Pilotes de périphérique -> Pilote sysfs thermique générique -> Pilote thermique BCM2835). Choisissez également Pilotes de périphérique -> Prise en charge de la surveillance du matériel (mais pas le pilote individuel dans ce menu) afin que "Exposez les capteurs thermiques en tant que périphérique hwmon" apparaisse ici et vous pouvez choisir cela (4.0.y ne semble pas l'avoir). Si vous choisissez cette option, SENSORS_BCM2835 sera désélectionné ci-dessus. Il vous donne accès au plus facile à mémoriser et à trouver /sys/class/devices/virtual/thermal/thermal_zone0qui comprend tempet trip_point_0_temp(le même que temp1_maxci-dessus). Divers moniteurs de l'espace utilisateur le préféreront probablement et pourraient ne pas fonctionner sans.

5

Un commentaire à la grande publication de goldilock:

Je voulais juste ajouter une chose que j'observe avec la branche rpi-4.1.y (05376fce25aaab4f47182a5af04928bfa06f30d6): Pour que l'USB fonctionne (cela inclut l'Ethernet connecté par USB), il faut également activer BCM2708_MBOX (Pilotes de périphérique -> Support matériel de boîte aux lettres - > Boîte aux lettres Broadcom BCM2708 (vcio)).

Sans cette option, l'USB commence à s'initialiser mais ne produit qu'un tas de messages effrayants comme:

[    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 est également une condition préalable pour THERMAL_BCM2835 et pour SND_BCM2835 .


2

Vidéo (framebuffer)

En plus pour le support vidéo, il semble que vous devez activer:

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

Afin de charger correctement le pilote framebuffer. Vous pouvez l'activer sans DMA activé, mais il ne parviendra pas à se charger.

Sans fil intégré

Afin d'avoir Integrated Wireless (RPi 3 et Pi Zero W), vous devez sélectionner les éléments suivants:

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

Peut-être vieux, mais je suis arrivé ici en utilisant la recherche. Pour la carte SDHC, vous avez également besoin

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

sinon votre noyau détectera la carte SDHC, mais aucune partition dessus.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.