เคอร์เนล. config ตัวเลือกที่จำเป็น


16

ฉันสนใจที่จะรวบรวมเคอร์เนลที่กำหนดเองสำหรับปี่ ฉันมีแหล่งที่มาจากไฟล์เก็บถาวร githubซึ่งรวมถึง make make สำหรับการกำหนดค่าเริ่มต้น:

make ARCH=arm bcmrpi_defconfig

แต่ (เช่นเดียวกับเคอร์เนล distro linux ปกติ) สิ่งนี้มีหลายสิ่งหลายอย่างที่ฉันไม่ต้องการและบางสิ่งที่ฉันต้องการเปลี่ยน

มีตัวเลือกอะไรบ้างที่จำเป็นต้องใช้เพื่อทำให้สิ่งต่างๆ

คำตอบ:


25

เริ่มต้นด้วยการกำหนดค่าเริ่มต้นหรือสิ่งที่คุณรู้ว่าใช้ได้อยู่แล้วเป็นความคิดที่ดี ระวังว่าสำหรับ Pi 2คุณควรใช้:

make bcm2709_defconfig

bcmrpi_defconfigแทน

โปรดทราบว่าหากคุณต้องการหลีกเลี่ยงการติดตั้งเคอร์เนลที่มีอยู่ในเวอร์ชันเดียวกันให้ตั้งค่าการตั้งค่าทั่วไป -> เวอร์ชันท้องถิ่น - ผนวกเข้ากับสตริงการปล่อยเคอร์เนลเป็นค่าที่ไม่ซ้ำกัน

ฉันใช้ป้ายกำกับจริงจาก.configที่นี่แล้วCONFIG_ ; หากคุณใช้เช่นmake menuconfigคุณสามารถค้นหาตัวเลือกที่เกี่ยวข้องพร้อมกับการค้นหา (ฟอร์เวิร์ดสแลช/) ป้ายกำกับเหล่านี้ยังใช้ที่ด้านบนของหน้า "ความช่วยเหลือ" สำหรับแต่ละตัวเลือก โปรดทราบว่าคำเปิดใช้งาน (d)หมายถึงสิ่งที่ทำให้ตัวเลือกปรากฏแตกต่างจากการเลือกตัวเลือกที่จะสร้าง

หากมีความแตกต่างระหว่างบอร์ด A / B / B + / A + และ Pi 2 จะมีการระบุ ในบางแห่งสิ่งนี้เป็นความแตกต่างระหว่างตระกูล Broadcom 2708 และ 2709 แต่ในที่อื่น ๆ Pi 2 ใช้ตัวเลือก 2708 (หรือ 2835) เดียวกันกับบอร์ดอื่น ๆ


ระบบ

สำหรับ A / A + / B / B +:

  • ARCH_BCM2708 (ประเภทระบบ -> ประเภทระบบแขน -> ตระกูล Broadcom BCM2708)

สำหรับ Pi 2:

  • ARCH_BCM2709 (ประเภทระบบ -> ประเภทระบบแขน -> ตระกูล Broadcom BCM2709) ... นี่คือที่ด้านล่างสุดของรายการและไม่เรียงตามตัวอักษร
  • SMP (คุณลักษณะเคอร์เนล -> การประมวลผลแบบสมมาตรหลายส่วน)
  • NEON (Floating Point Emulation -> การสนับสนุนส่วนขยาย SIMD ขั้นสูง (นีออน) ขั้นสูง) และ "รองรับ NEON ในโหมดเคอร์เนล"

Kernel Memory Split:

เนื่องจากปัญหาเกี่ยวกับซอฟต์แวร์รุ่นเก่าสองสามตัวการกำหนดค่าเริ่มต้นอาจใช้ 3G / 1G ที่นี่ซึ่งจะปล่อยให้ 25% ของ RAM ของ Pi 2 ไม่สามารถใช้งานได้กับพื้นที่ผู้ใช้ หากคุณมีความกังวลเกี่ยวกับเรื่องนี้ตรวจสอบKernel คุณสมบัติ -> หน่วยความจำแบบแยกส่วน


การ์ด SD

เหล่านี้ไม่สามารถจะเป็นโมดูลอย่างเห็นได้ชัดเนื่องจากพวกเขามีความจำเป็นในการเข้าถึง/lib/modules; พวกเขาจะต้องมีในตัว พวกเขาอยู่ในส่วน "ไดรเวอร์อุปกรณ์" ของ menuconfig

  • MMC (รองรับการ์ด MMC / SD / SDIO): จำเป็นต้องมีตัวเลือกสำหรับไดรเวอร์ mmc แต่ไม่เพียงพอ ภายในตัวเลือกเหล่านั้น:
    • MMC_BCM2835 (รองรับ MMC ใน BCM2835)
    • MMC_BCM2835_DMA (รองรับ DMA ในคอนโทรลเลอร์ BCM2835 Arasan): เปิดใช้งาน แต่ไม่ได้เลือกโดย MMC_BCM2835
    • MMC_SDHCI ( รองรับ Secure Host Host Interface Interface)

เนื่องจากพาร์ติชันรูทมักจะมีการจัดรูปแบบเป็นส่วนขยายคุณจึงต้องการที่อยู่ภายใน:

  • EXT4_FS (ระบบไฟล์ Extended 4 (ext4)) ภายใต้ "ระบบไฟล์" น่าจะเป็น ext2 และ ext3 เป็นความคิดที่ดีเช่นกัน

พาร์ติชันสำหรับเริ่มระบบคือ vfat ดังนั้น:

  • VFAT_FS ( รองรับ VFAT (Windows-95) fs) อยู่ภายใต้ "ระบบไฟล์ -> ระบบไฟล์ DOS / FAT / NT"

เบ็ดเตล็ด

นี่คือสิ่งต่าง ๆ ที่คุณต้องการ (เกือบจะแน่นอน) ดังนั้นฉันจึงระบุไว้ก่อน

  • VFP (คณิตศาสตร์รูปแบบลอยตัวรูปแบบ VFP) ภายใต้ "การจำลองจุดลอยตัว"
  • UNIX (ซ็อกเก็ตโดเมน Unix) ภายใต้ "การสนับสนุนเครือข่าย" ซอฟต์แวร์ระบบพื้นฐานจะต้องใช้สิ่งนี้แม้ว่าคุณจะไม่ได้ทำการเชื่อมต่อเครือข่ายใด ๆ ก็ตาม
  • BINFMT_ELF (รองรับเคอร์เนลสำหรับ ELF ไบนารี) ภายใต้ "รูปแบบไบนารีของผู้ใช้ Users"
  • TTY (เปิดใช้งาน TTY) ภายใต้ "ไดรเวอร์อุปกรณ์ -> อุปกรณ์ตัวละคร"; สิ่งนี้ทำให้VT (Virtual terminal) และUNIX98_PTYS (Unix98 PTY รองรับ) ซึ่งคุณควรเลือก จากนั้นเปิดใช้งานVT_CONSOLE (รองรับคอนโซลบนเทอร์มินัลเสมือน) และCONSOLE_TRANSLATIONS (เปิดใช้งานการแปลอักขระในคอนโซล) ซึ่งควรเลือกด้วย
  • PROC_FS , SYSFSและTMPFSภายใต้ "ระบบไฟล์ -> ระบบแฟ้มหลอก"
  • SERIAL_AMBA_PL011 (สนับสนุนพอร์ตอนุกรม ARM AMBA PL011) ภายใต้ "ไดรเวอร์อุปกรณ์ -> อุปกรณ์ตัวอักษร -> ไดรเวอร์แบบอนุกรม" และSERIAL_AMBA_PL011_CONSOLE (การสนับสนุนสำหรับคอนโซลบนพอร์ตอนุกรม AMBA) ระบบ Raspbian จะบ่นเกี่ยวกับ "/ dev / ttyAMA0: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว" หากไม่มีสิ่งนี้
  • MAILBOXและBCM2708_MBOX (บน 4.x เมล็ด) นี่คือDevice Drivers-> การสนับสนุนฮาร์ดแวร์กล่องจดหมายและตัวเลือก BCM 2708 ในเมนูย่อย ดูคำตอบของ Zub

ยูเอสบี

  • USB (รองรับ USB ด้านโฮสต์) ใน "ไดรเวอร์อุปกรณ์ -> การสนับสนุน USB" เปิดใช้งานUSB_DWCOTG (รองรับการสรุปโฮสต์ DWC แบบย่อ) ลงในหน้าซึ่งควรเลือกด้วย
  • USB_ANNOUNCE_NEW_DEVICES (ไดรเวอร์อุปกรณ์ -> การสนับสนุน USB -> USB ประกาศอุปกรณ์ใหม่)
  • USB_DEFAULT_PERSIST (ไดรเวอร์อุปกรณ์ -> การสนับสนุน USB -> เปิดใช้งาน USB คงอยู่ตามค่าเริ่มต้น)

สำหรับคีย์บอร์ดและเมาส์:

  • HID_GENERIC (ไดรเวอร์ HID ทั่วไป) ใน "ไดรเวอร์อุปกรณ์ -> รองรับ HID"
  • จากนั้นใน "การสนับสนุน USB HID": USB_HID (เลเยอร์การขนส่ง USB HID)
  • INPUT_MOUSEDEV (ส่วนต่อประสานเมาส์) ใน "ไดรเวอร์อุปกรณ์ -> สนับสนุนอุปกรณ์อินพุต"

สำหรับฮาร์ดไดรฟ์:

  • SCSI (การสนับสนุนอุปกรณ์ SCSI) และจากนั้นBLK_DEV_SD (การสนับสนุนดิสก์ SCSI) ใน "ไดรเวอร์อุปกรณ์ -> การสนับสนุน SCSI"
  • USB_STORAGE ( รองรับ USB Mass Storage) ใน "ไดรเวอร์อุปกรณ์ -> รองรับ USB"

สำหรับอุปกรณ์ Android tethering ดูคำตอบของฉันที่นี่


อีเธอร์เน็ต

ต้องเปิดใช้งาน USB ก่อน

  • NET (การสนับสนุนเครือข่าย) ตัวเลือกระดับบนสุด; ภายในที่:

    • PACKET (ซ็อกเก็ตแพ็คเก็ต)
    • INET (เครือข่าย TCP / IP) นี่ควรเปิดใช้งานค่าเริ่มต้นที่เกี่ยวข้องกับ IP ที่หลากหลายซึ่งคุณสามารถออกได้
    • NETFILTER (กรอบงานการกรองแพ็กเก็ตเครือข่าย) จำเป็นสำหรับเคอร์เนล "ip tables" ไฟร์วอลล์ตัวกรองแพ็คเก็ต
  • NETDEVICES (รองรับอุปกรณ์เครือข่าย) ใน "Device Drivers" จากนั้น:

    • NET_CORE (รองรับไดรเวอร์เครือข่ายหลัก)
    • USB_NET_DRIVERS (อะแดปเตอร์เครือข่าย USB) ->
      • USB_USBNET (กรอบเครือข่าย USB อเนกประสงค์)
      • USB_NET_SMSC95XX (SMSC LAN95XX ที่ใช้ USB 2.0 10/100 อุปกรณ์อีเธอร์เน็ต)

เสียง

วิธีเปิดใช้งานเสียงออนบอร์ด:

  • SOUND (ในไดรเวอร์อุปกรณ์) จากนั้น:
    • SND (Advanced Linux Sound Architecture) และใน:
    • SND_ARM (อุปกรณ์เสียง ARM) และสุดท้ายในSND_BCM2835 (ไดรเวอร์ ALSA BCM2835)

วีดีโอ

  • CONFIG_BCM2708_VCHIQ (ไดรเวอร์อุปกรณ์ -> อุปกรณ์เบ็ดเตล็ด -> Videocore VCHIQ)

ไม่จำเป็นต้องมีอะไรเพิ่มเติมสำหรับการสนับสนุนเซิร์ฟเวอร์ X ไม่มีตัวเลือกไดรเวอร์ DRI สำหรับ SoC ของ pi

หากคุณต้องการใช้ framebuffer ซึ่งอนุญาตให้แอปพลิเคชันเช่นfbiและomxplayerแสดงกราฟิกด้านนอกของ X:

  • FB (ไดรเวอร์อุปกรณ์ -> การสนับสนุนกราฟิก -> อุปกรณ์บัฟเฟอร์เฟรม -> การสนับสนุนอุปกรณ์เฟรมบัฟเฟอร์) จากนั้นในเมนูเดียวกันFB_BCM2708 (การสนับสนุนเฟรมบัฟเฟอร์ BCM2708)

หากคุณทำสิ่งนี้และต้องการเพนกวิน (หรือมากกว่านั้นคือราสเบอร์รี่) บนคอนโซลการบูตให้จำโลโก้ (โลโก้บูทอัพ) ภายใต้การสนับสนุนกราฟิก

นอกจากนี้คุณยังอาจต้องการที่จะดูที่ตัวเลือกภายใต้ชนิดของระบบ -> Broadcom2708 (หรือ 9) การใช้งาน


GPIO / I 2 C

  • BCM2708_GPIO (ประเภทระบบ -> การติดตั้ง Broadcom BCM2708) หรือสำหรับ Pi 2 ตัวเลือก BCM2709 ที่สอดคล้องกัน
  • GPIO_SYSFS (ไดรเวอร์อุปกรณ์ -> รองรับ GPIO) สำหรับ/sys/class/gpioอินเตอร์เฟส
  • I2C (ไดรเวอร์อุปกรณ์ -> รองรับ I2C) ซึ่งเปิดใช้งานI2C_CHARDEV (ส่วนต่อประสานอุปกรณ์ I2C) ภายใต้หัวข้อ "การสนับสนุนฮาร์ดแวร์บัส I2C":
    • I2C_BCM2708 (BCM2708 BSC)

Raspicam

  • MEDIA_CAMERA_SUPPORT (ไดรเวอร์อุปกรณ์ -> การสนับสนุนมัลติมีเดีย -> การสนับสนุนกล้อง / ตัวจับวิดีโอ)
  • V4L_PLATFORM_DRIVERS ( ไดรเวอร์อุปกรณ์ -> การสนับสนุนมัลติมีเดีย -> อุปกรณ์แพลตฟอร์ม V4L ") ซึ่งทำให้เมนูย่อยที่คุณต้องการเลือก:
    • CONFIG_SOC_CAMERA (การสนับสนุนกล้อง SoC)
    • CONFIG_VIDEO_BCM2835 (ไดรเวอร์อินเตอร์เฟสกล้อง Broadcom BCM2835) สิ่งนี้จะเปิดใช้งาน "ไดรเวอร์อินเตอร์เฟสกล้องของ Broadcom BM2835 MMAL ( CONFIG_VIDEO_BCM2835_MMAL ) ที่คุณควรเลือก

เซ็นเซอร์ความร้อน

คุณมีทางเลือกที่นี่; หากคุณพยายามเลือกทั้งสองอย่างอันแรกจะถูกยกเลิก (แม้ว่าคุณจะสามารถสร้างหนึ่งเป็นโมดูลเปลี่ยนการกำหนดค่าสร้างอื่น ๆ และใช้พวกเขาทั้งสองถ้าคุณต้องการ)

  • SENSORS_BCM2835 ( ไดรเวอร์อุปกรณ์ -> การสนับสนุนการตรวจสอบฮาร์ดแวร์ -> ไดรเวอร์ Broadcom BCM2835 HWMON) นี่คือด้านล่างของรายการหากคุณไม่ได้เลือก "BCM2835 Thermal Driver" ด้านล่าง มันจะช่วยให้คุณเข้าถึงสิ่งที่ความร้อนใน/sys/devices/platform/bcm2835_hwmon- และtemp1_input temp1_maxอดีตคือเดียวกัน/sys/devices/virtual/thermal/thermal_zone0/temp; หลังอยู่เสมอ 85000 (เช่น 85 ° C)
  • THERMAL_BCM2835 ( ไดรเวอร์อุปกรณ์ -> ไดร์เวอร์ความร้อน sysfs ทั่วไป -> ไดรเวอร์ความร้อน BCM2835) เลือกไดรเวอร์อุปกรณ์ -> สนับสนุนการตรวจสอบฮาร์ดแวร์ (แต่ไม่ใช่ไดรเวอร์แต่ละตัวในเมนูนั้น) เพื่อให้ "แสดงเซ็นเซอร์ความร้อนเป็นอุปกรณ์ hwmon" ปรากฏขึ้นที่นี่และคุณสามารถเลือกได้ (4.0.y ดูเหมือนจะไม่มีสิ่งนี้) การเลือกสิ่งนี้จะยกเลิกการเลือก SENSORS_BCM2835 ด้านบน มันช่วยให้คุณเข้าถึงสิ่งที่ง่ายต่อการจดจำและค้นหา/sys/class/devices/virtual/thermal/thermal_zone0ซึ่งรวมถึงtempและtrip_point_0_temp(เช่นเดียวกับtemp1_maxข้างบน) จอภาพของผู้ใช้พื้นที่ต่าง ๆ อาจจะชอบสิ่งนี้และอาจไม่ทำงานหากไม่มี

5

ความคิดเห็นที่โพสต์ที่ยอดเยี่ยมของ goldilock:

แค่อยากจะเพิ่มสิ่งหนึ่งที่ผมสังเกตกับสาขา RPI-4.1.y (05376fce25aaab4f47182a5af04928bfa06f30d6): เพื่อให้มีการทำงาน USB (ซึ่งรวมถึงอีเธอร์เน็ตที่เชื่อมต่อ USB) หนึ่งที่มีการเปิดใช้งานBCM2708_MBOX (อุปกรณ์ Drivers-> กล่องจดหมายฮาร์ดแวร์ Support- > กล่องจดหมาย Broadcom BCM2708 (vcio)

หากไม่มีตัวเลือกนี้ USB จะเริ่มต้น แต่จะสร้างข้อความที่น่ากลัวเช่น:

[    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ยังเป็นสิ่งที่จำเป็นสำหรับTHERMAL_BCM2835และSND_BCM2835


2

วิดีโอ (framebuffer)

นอกจากการรองรับวิดีโอดูเหมือนว่าคุณต้องเปิดใช้งาน:

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

เพื่อที่จะโหลดไดร์เวอร์ framebuffer อย่างถูกต้อง คุณสามารถเปิดใช้งานโดยไม่เปิดใช้งาน DMA แต่จะไม่สามารถโหลดได้

ไร้สายในตัว

ในการมี Integrated Wireless (RPi 3 และ Pi Zero W) คุณต้องเลือกสิ่งต่อไปนี้:

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

อาจจะแก่ แต่ฉันถึงที่นี่โดยใช้การค้นหา สำหรับการ์ด SDHC ที่คุณต้องการเพิ่มเติม

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

เคอร์เนลของคุณจะตรวจจับการ์ด SDHC แต่ไม่มีพาร์ติชันอยู่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.