Çekirdek .config gerekli seçenekleri


16

Pi için özel bir çekirdek derlemekle ilgileniyorum. Ben varsayılan bir yapılandırma için bir hedef içeren github arşivinden kaynak var :

make ARCH=arm bcmrpi_defconfig

Ancak (normal linux dağıtım çekirdeklerinde olduğu gibi) bu, asla ihtiyacım olmayacak birçok şeyi ve değiştirmek istediğim bazı şeyleri içerir.

Çeşitli ortak merkezci şeylerin çalışması için gerçekten gerekli olan seçenekler nelerdir ?

Yanıtlar:


25

Varsayılan yapılandırmayla veya zaten çalıştığını bildiğiniz bir tanesiyle başlamak iyi bir fikirdir. Pi 2 için şunları kullanmanız gerektiğine dikkat edin :

make bcm2709_defconfig

Bunun yerine bcmrpi_defconfig.

Aynı sürümün var olan bir çekirdek yüklemesini hızlandırmak istemiyorsanız, Genel kurulum -> Yerel sürüm - çekirdek yayın dizesine benzersiz bir değere ekleyin .

.configBuradan gerçek etiketleri kullandım , sans CONFIG_ ; Örneğin, make menuconfigarama ile ilgili seçeneği bulabilirsiniz (eğik çizgi /). Bu etiketler ayrıca her seçenek için "Yardım" sayfasının üstünde kullanılır. Enable (d) teriminin , oluşturulacak seçeneği gerçekten seçmekten farklı olarak, bir seçeneğin görünmesine neden olan bir şeyi ifade ettiğini unutmayın .

A / B / B + / A + kartları ile Pi 2 arasında farklar varsa, bu gösterilir. Bazı yerlerde bu Broadcom 2708 ve 2709 aileleri arasındaki farktır, ancak diğer yerlerde Pi 2 diğer panolarla aynı 2708 (veya 2835) seçeneğini kullanır.


sistem

A / A + / B / B + için:

  • ARCH_BCM2708 (Sistem Türü -> Kol Sistem Türü -> Broadcom BCM2708 ailesi)

Pi 2 için:

  • ARCH_BCM2709 (Sistem Türü -> Kol Sistem Türü -> Broadcom BCM2709 ailesi) ... Bu, listenin en altında ve alfabetik sırada değil.
  • SMP (Çekirdek Özellikleri -> Simetrik Çoklu İşleme)
  • NEON (Kayan Nokta Öykünmesi -> Gelişmiş SIMD (Neon) Genişletme desteği) Ve "Çekirdek modunda NEON desteği".

Çekirdek Bellek Bölme:

Birkaç eski yazılımla ilgili sorunlar nedeniyle , varsayılan yapılandırma, Pi 2'nin RAM'inin% 25'ini kullanıcı alanı için kullanılamayacak şekilde 3G / 1G kullanabilir. Bu konuda endişeleriniz varsa, Çekirdek Özellikleri -> Bellek Bölme'yi kontrol edin .


hafıza kartı

Bunlar, modüllere sahip olamazlar /lib/modules. yerleşik olmaları gerekir. Menuconfig dosyasının "Aygıt Sürücüleri" bölümünde bulunurlar.

  • MMC (MMC / SD / SDIO kart desteği): mmc sürücüsü için seçenekler elde etmek gerekir, ancak yeterli değildir. Bu seçeneklerde:
    • MMC_BCM2835 ( BCM2835'te MMC desteği).
    • MMC_BCM2835_DMA (BCM2835 Arasan denetleyicisinde DMA desteği): Etkin ancak MMC_BCM2835 tarafından seçilmedi.
    • MMC_SDHCI (Güvenli Dijital Ana Bilgisayar Denetleyici Arabirimi desteği)

Kök bölüm genellikle dahili biçimlendirildiğinden, yerleşik bölümün de olmasını istersiniz:

  • EXT4_FS (Genişletilmiş 4 (ext4) dosya sistemi) altında "Dosya Sistemleri". Muhtemelen ext2 ve ext3 de iyi bir fikirdir.

Önyükleme bölümü vfat, yani:

  • VFAT_FS (VFAT (Windows-95) fs desteği) "Dosya Sistemleri -> DOS / FAT / NT Dosya Sistemleri" altındadır.

Çeşitli

Bunlar (neredeyse kesinlikle) ihtiyacınız olan çeşitli şeyler, bu yüzden önce onları listeledim.

  • "Kayan nokta öykünmesi" altında VFP (VFP biçiminde kayan nokta matematiği).
  • "Ağ desteği" altında UNIX (Unix alan adı soketleri). Gerçek bir ağ yapmasanız bile, temel sistem yazılımı bunu gerektirecektir.
  • BINFMT_ELF (ELF ikili dosyaları için çekirdek desteği) "Kullanıcı alanı ikili biçimleri" altında.
  • "Aygıt Sürücüleri -> Karakter Aygıtları" altında TTY (Enable TTY); bu, seçmeniz gereken VT (Sanal terminal) ve UNIX98_PTYS (Unix98 PTY desteği) özelliğini etkinleştirir. VT daha sonra seçilmesi gereken VT_CONSOLE (sanal terminalde konsol desteği) ve CONSOLE_TRANSLATIONS (Konsolda karakter çevirilerini etkinleştir) özelliğini etkinleştirir.
  • "Dosya Sistemleri -> Sözde Dosya Sistemleri" altında PROC_FS , SYSFS ve TMPFS .
  • SERIAL_AMBA_PL011 (ARM AMBA PL011 seri port desteği) "Cihaz Sürücüleri -> Karakter Cihazları -> Seri Sürücüler" ve SERIAL_AMBA_PL011_CONSOLE (AMBA seri portundaki konsol desteği) altında . Raspbian sistemleri bu olmadan "/ dev / ttyAMA0: Böyle bir dosya veya dizin yok" dan şikayet edecektir.
  • POSTA KUTUSU ve BCM2708_MBOX (4.x çekirdeklerde). Bu, Aygıt Sürücüleri-> Posta Kutusu Donanım Desteği ve alt menüdeki BCM 2708 seçeneğidir. Zub'un cevabına bakın .

USB

  • "Aygıt Sürücüleri -> USB Desteği" nde USB (Ana Bilgisayar tarafındaki USB desteği), sayfadan USB_DWCOTG'yi (Synopsis DWC ana bilgisayar desteği) etkinleştirerek seçilmelidir.
  • USB_ANNOUNCE_NEW_DEVICES (Aygıt Sürücüleri -> USB Desteği -> USB yeni aygıtları duyurur).
  • USB_DEFAULT_PERSIST (Aygıt Sürücüleri -> USB Desteği -> USB'yi varsayılan olarak etkinleştir seçeneğini etkinleştir).

Klavyeler ve fareler için:

  • "Aygıt Sürücüleri-> HID desteği" içindeki HID_GENERIC (Genel HID sürücüsü)
  • Sonra "USB HID desteği" içinde: USB_HID (USB HID taşıma katmanı)
  • "Aygıt Sürücüleri -> Giriş Aygıtı Desteği" içindeki INPUT_MOUSEDEV (Fare arayüzü).

Sabit sürücüler için:

  • SCSI (SCSI aygıt desteği) ve ardından "Aygıt Sürücüleri -> SCSI Desteği" içindeki BLK_DEV_SD (SCSI disk desteği).
  • "Aygıt Sürücüleri -> USB Desteği" içindeki USB_STORAGE (USB Yığın Depolama desteği).

Android cihazlarını birleştirmek için cevabımı buradan görebilirsiniz .


Ethernet

Önce USB etkinleştirilmelidir.

  • NET (Ağ desteği), üst düzey bir seçenek; içinde:

    • PAKET (Paket soketi).
    • INET (TCP / IP ağı). Bu, bırakabileceğiniz IP ile ilgili çeşitli varsayılanları etkinleştirmelidir.
    • NETFILTER (Ağ paket filtreleme çerçevesi), çekirdek "ip tabloları" paket filtre güvenlik duvarı için gereklidir.
  • "Aygıt Sürücüleri" ndeki NETDEVICES (Ağ aygıtı desteği), ardından:

    • NET_CORE (Ağ çekirdek sürücüsü desteği).
    • USB_NET_DRIVERS (USB Ağ Adaptörleri) ->
      • USB_USBNET (Çok Amaçlı USB Ağ Çerçevesi).
      • USB_NET_SMSC95XX (SMSC LAN95XX tabanlı USB 2.0 10/100 ethernet cihazları)

Ses

Yerleşik sesi etkinleştirmek için:

  • SOUND (Aygıt Sürücülerinde), ardından:
    • SND (Gelişmiş Linux Ses Mimarisi) ve bunun içinde:
    • SND_ARM (ARM ses cihazları) ve son olarak SND_BCM2835 (BCM2835 ALSA sürücüsü)

Video

  • CONFIG_BCM2708_VCHIQ (Aygıt Sürücüleri -> Diğer Aygıtlar -> Videocore VCHIQ).

X sunucusu desteği için başka bir şey gerekmez; pi'nin SoC'si için DRI sürücüsü seçeneği yoktur.

X gibi uygulamaların fbive omxplayergrafiklerin görüntülenmesine izin veren çerçeve arabelleğini kullanmak istiyorsanız :

  • FB (Aygıt Sürücüleri -> Grafik Desteği -> Çerçeve arabellek Aygıtları -> Çerçeve arabellek aygıtları için destek), ardından aynı menüde FB_BCM2708 (BCM2708 çerçeve tamponu desteği).

Bunu yapmak ve önyükleme konsolda (daha doğrusu, ahududu) penguen istiyorsanız, hatırlamak LOGO Grafik Desteği altında (Bootup logosu).

Sistem Türü -> Broadcom2708 (veya 9) Uygulamaları altındaki seçeneklere de bakmak isteyebilirsiniz .


GPIO / I 2 C

  • BCM2708_GPIO (Sistem Türü -> Broadcom BCM2708 Uygulamalar) Veya Pi 2 için karşılık gelen BCM2709 seçeneği.
  • Arabirim için GPIO_SYSFS (Aygıt Sürücüleri -> GPIO Desteği) /sys/class/gpio.
  • I2C sağlar - (> I2C desteği Cihaz Sürücüleri), I2C_CHARDEV (I2C cihaz arabirimi). Sonra "I2C Donanım Veri Yolu desteği" altında:
    • I2C_BCM2708 (BCM2708 BSC).

Raspicam

  • MEDIA_CAMERA_SUPPORT (Aygıt sürücüleri -> Multimedya Desteği -> Kameralar / video tutucu desteği).
  • V4L_PLATFORM_DRIVERS (Aygıt sürücüleri-> Multimedya Desteği -> V4L Platform Aygıtları ") Bu, seçmek istediğiniz bir alt menüyü etkinleştirir:
    • CONFIG_SOC_CAMERA (SoC Kamera Desteği).
    • CONFIG_VIDEO_BCM2835 (Broadcom BCM2835 kamera arayüz sürücüsü). Bu, seçmeniz gereken "Broadcom BM2835 MMAL kamera arabirimi sürücüsünü ( CONFIG_VIDEO_BCM2835_MMAL ) etkinleştirir .

Termal sensör

Burada bir seçeneğiniz var; her ikisini de seçmeye çalışırsanız, birincisi iptal edilir (bir modül olarak oluşturabilir, yapılandırmayı değiştirebilir, diğerini oluşturabilir ve gerçekten istiyorsanız ikisini de kullanabilirsiniz).

  • SENSORS_BCM2835 (Aygıt Sürücüleri-> Donanım İzleme desteği-> Broadcom BCM2835 HWMON Sürücüsü). Bu listenin alt kısmında ise aşağıda, "BCM2835 Termal Sürücü" seçmeyin. /sys/devices/platform/bcm2835_hwmon- temp1_inputve içindeki termal malzemelere erişmenizi sağlar temp1_max. Birincisi aynı /sys/devices/virtual/thermal/thermal_zone0/temp; ikincisi her zaman 85000'dir (yani 85 ° C).
  • THERMAL_BCM2835 (Aygıt Sürücüleri -> Generic Thermal sysfs driver-> BCM2835 Thermal Driver). Ayrıca burada Aygıt Sürücüleri-> Donanım İzleme desteğini (ancak o menüdeki sürücüyü değil) seçin, böylece "Termal sensörleri hwmon aygıtı olarak göster" mesajı görüntülenir ve bunu seçebilirsiniz (4.0.y buna sahip değil gibi görünüyor). Bunu seçmek yukarıdaki SENSORS_BCM2835 öğesinin seçimini kaldırır. /sys/class/devices/virtual/thermal/thermal_zone0Hangi tempve trip_point_0_temp( temp1_maxyukarıda , aynı) içerir hatırlamak ve bulmak daha kolay erişim sağlar . Çeşitli kullanıcı alanı monitörleri muhtemelen bunu tercih eder ve onsuz çalışmayabilir.

5

Goldilock'un harika yazısına bir yorum:

Sadece rpi-4.1.y şubesiyle (05376fce25aaab4f47182a5af04928bfa06f30d6) gözlemlediğim bir şeyi eklemek istedim: USB çalışmasını sağlamak için (buna USB bağlantılı ethernet dahildir), biri de BCM2708_MBOX'u (Aygıt Sürücüleri-> Posta Kutusu Donanım Desteği- > Broadcom BCM2708 Posta Kutusu (vcio)).

Bu seçenek olmadan USB başlatılmaya başlar, ancak yalnızca aşağıdaki gibi bir dizi korkunç mesaj üretir:

[    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 da ön koşuludur THERMAL_BCM2835 ve için SND_BCM2835 .


2

Video (çerçeve tamponu)

Video desteğine ek olarak, etkinleştirmeniz gerektiği anlaşılıyor:

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

Framebuffer sürücüsünü doğru şekilde yüklemek için. DMA etkinleştirilmeden etkinleştirebilirsiniz, ancak yüklenemez.

Entegre Kablosuz

Tümleşik Kablosuz özelliğine (RPi 3 ve Pi Zero W) sahip olmak için aşağıdakileri seçmeniz gerekir:

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

Yaşlı olabilir ama aramayı kullanarak buraya geldim. SDHC kart için ayrıca ihtiyacınız olan

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

aksi takdirde çekirdeğiniz SDHC kartı algılar, ancak üzerinde bölüm yoktur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.