Kernel .config tùy chọn cần thiết


16

Tôi quan tâm đến việc biên dịch một kernel tùy chỉnh cho pi. Tôi có nguồn từ kho lưu trữ github , bao gồm một mục tiêu tạo cho cấu hình mặc định:

make ARCH=arm bcmrpi_defconfig

Nhưng (như với các bản phân phối linux bình thường), điều này bao gồm rất nhiều thứ tôi sẽ không bao giờ cần, và một số thứ tôi muốn thay đổi.

Các tùy chọn thực sự cần thiết để làm cho những thứ trung tâm phổ biến khác nhau hoạt động là gì?

Câu trả lời:


25

Bắt đầu với cấu hình mặc định, hoặc một cái bạn đã biết đã hoạt động, là một ý tưởng tốt. Lưu ý rằng đối với Pi 2 , bạn nên sử dụng:

make bcm2709_defconfig

Thay vì bcmrpi_defconfig.

Lưu ý rằng nếu bạn muốn tránh ghi đè cài đặt kernel hiện có cùng phiên bản, hãy đặt Cài đặt chung -> Phiên bản cục bộ - nối vào chuỗi phát hành kernel thành một giá trị duy nhất.

Tôi đã sử dụng các nhãn thực tế từ .configđây, sans CONFIG_ ; nếu bạn đang sử dụng, vd, make menuconfigbạn có thể tìm thấy tùy chọn có liên quan với tìm kiếm (dấu gạch chéo về phía trước /). Các nhãn này cũng được sử dụng ở đầu trang "Trợ giúp" cho mỗi tùy chọn. Lưu ý rằng thuật ngữ enable (d) dùng để chỉ một cái gì đó khiến một tùy chọn xuất hiện, khác với việc thực sự chọn tùy chọn sẽ được xây dựng.

Trong trường hợp có sự khác biệt giữa bảng A / B / B + / A + và Pi 2, điều này được chỉ định. Ở một số nơi, đây là sự khác biệt giữa Broadcom 2708 và 2709 gia đình, nhưng ở những nơi khác, Pi 2 sử dụng tùy chọn 2708 (hoặc 2835) như các bảng khác.


Hệ thống

Đối với A / A + / B / B +:

  • ARCH_BCM2708 (Loại hệ thống -> Loại hệ thống cánh tay -> Họ Broadcom BCM2708)

Đối với Pi 2:

  • ARCH_BCM2709 (Loại hệ thống -> Loại hệ thống cánh tay -> Họ Broadcom BCM2709) ... Đây là ở cuối danh sách và không theo thứ tự bảng chữ cái.
  • SMP (Tính năng hạt nhân -> Xử lý đa đối xứng)
  • NEON (Mô phỏng điểm nổi -> Hỗ trợ mở rộng SIMD (neon) nâng cao) Và "Hỗ trợ NEON ở chế độ kernel".

Tách bộ nhớ kernel:

Do có vấn đề với một vài phần mềm cũ , cấu hình mặc định có thể sử dụng 3G / 1G ở đây, điều này sẽ khiến 25% RAM của Pi 2 không có sẵn cho không gian người dùng. Nếu bạn lo lắng về điều này, hãy kiểm tra Tính năng hạt nhân -> Phân chia bộ nhớ .


thẻ SD

Đây không thể là các mô-đun, rõ ràng, vì chúng là cần thiết để truy cập /lib/modules; chúng phải được tích hợp sẵn. Họ đang ở trong phần "Trình điều khiển thiết bị" của menuconfig.

  • MMC (hỗ trợ thẻ MMC / SD / SDIO): Cần thiết để có các tùy chọn cho trình điều khiển mmc, nhưng không đủ. Trong các tùy chọn đó:
    • MMC_BCM2835 (Hỗ trợ MMC trên BCM2835).
    • MMC_BCM2835_DMA (Hỗ trợ DMA trên bộ điều khiển ArCMan BCM2835): Đã bật nhưng không được chọn bởi MMC_BCM2835.
    • MMC_SDHCI (Hỗ trợ giao diện điều khiển máy chủ kỹ thuật số an toàn)

Vì phân vùng gốc thường được định dạng mở rộng, bạn cũng muốn được xây dựng trong:

  • EXT4_FS (Hệ thống tệp mở rộng 4 (ext4)) trong "Hệ thống tệp". Có lẽ ext2 và ext3 cũng là một ý tưởng tốt.

Phân vùng khởi động là vfat, vì vậy:

  • Hỗ trợ fs VFAT_FS (VFAT (Windows-95)) trong "Hệ thống tệp -> Hệ thống tệp DOS / FAT / NT".

Điều khoản khác

Đây là những thứ khác nhau mà bạn (gần như chắc chắn) cần, vì vậy tôi đã liệt kê chúng trước.

  • VFP (toán học dấu phẩy động định dạng VFP) trong phần "Mô phỏng điểm nổi".
  • UNIX (ổ cắm tên miền Unix) trong "Hỗ trợ mạng". Phần mềm hệ thống cơ bản sẽ yêu cầu điều này ngay cả khi bạn không thực hiện bất kỳ kết nối mạng thực sự nào.
  • BINFMT_ELF (Hỗ trợ hạt nhân cho các nhị phân ELF) trong "Định dạng nhị phân không gian người dùng".
  • TTY (Kích hoạt TTY) trong "Trình điều khiển thiết bị -> Thiết bị ký tự"; điều này cho phép VT (thiết bị đầu cuối ảo) và UNIX98_PTYS (hỗ trợ PTY Unix98) mà bạn nên chọn. VT sau đó kích hoạt VT_CONSOLE (Hỗ trợ cho bảng điều khiển trên thiết bị đầu cuối ảo) và CONSOLE_TRANSLutions (Kích hoạt bản dịch ký tự trong bảng điều khiển) cũng nên được chọn.
  • PROC_FS , SYSFSTMPFS trong "Hệ thống tệp -> Hệ thống tệp giả".
  • SERIAL_AMBA_PL011 (Hỗ trợ cổng nối tiếp ARM AMBA PL011) trong "Trình điều khiển thiết bị -> Thiết bị ký tự -> Trình điều khiển nối tiếp" và SERIAL_AMBA_PL011_CONSOLE (Hỗ trợ bảng điều khiển trên cổng nối tiếp AMBA). Các hệ thống Raspbian sẽ phàn nàn về "/ dev / ttyAMA0: Không có tệp hoặc thư mục như vậy" mà không có điều này.
  • MAILBOXBCM2708_MBOX (trên hạt nhân 4.x). Đây là Trình điều khiển thiết bị-> Hỗ trợ phần cứng hộp thư và tùy chọn BCM 2708 trong menu phụ. Xem câu trả lời của zub .

USB

  • USB (Hỗ trợ cho USB phía máy chủ), trong "Trình điều khiển thiết bị -> Hỗ trợ USB", bật USB_DWCOTG (Hỗ trợ máy chủ tóm tắt DWC) xuống trang, cũng nên được chọn.
  • USB_ANNOUNCE_NEW_DEVICE (Trình điều khiển thiết bị -> Hỗ trợ USB -> USB thông báo thiết bị mới).
  • USB_DEFAULT_PERSIST (Trình điều khiển thiết bị -> Hỗ trợ USB -> Bật USB theo mặc định).

Đối với bàn phím và chuột:

  • HID_GENERIC (Trình điều khiển HID chung) trong "Trình điều khiển thiết bị-> Hỗ trợ HID"
  • Sau đó, trong "Hỗ trợ USB HID": USB_HID (lớp vận chuyển USB HID)
  • INPUT_MOUSEDEV (Giao diện chuột) trong "Trình điều khiển thiết bị -> Hỗ trợ thiết bị đầu vào".

Đối với ổ đĩa cứng:

  • SCSI (hỗ trợ thiết bị SCSI) và sau đó BLK_DEV_SD (hỗ trợ đĩa SCSI) trong "Trình điều khiển thiết bị -> Hỗ trợ SCSI".
  • USB_STORAGE (Hỗ trợ bộ lưu trữ USB lớn) trong "Trình điều khiển thiết bị -> Hỗ trợ USB".

Để kết nối các thiết bị Android, xem câu trả lời của tôi ở đây .


Ethernet

USB phải được kích hoạt trước.

  • NET (Hỗ trợ mạng), một tùy chọn cấp cao nhất; bên trong đó là:

    • GÓI (Ổ cắm gói).
    • INET (mạng TCP / IP). Điều này sẽ cho phép một loạt các mặc định liên quan đến IP mà bạn có thể để lại.
    • NETFILTER (Khung lọc gói mạng), cần thiết cho tường lửa lọc gói "bảng ip" kernel.
  • NETDEVICE (Hỗ trợ thiết bị mạng) trong "Trình điều khiển thiết bị", sau đó:

    • NET_CORE (Hỗ trợ trình điều khiển lõi mạng).
    • USB_NET_DRIVERS (Bộ điều hợp mạng USB) ->
      • USB_USBNET (Khung mạng USB đa năng).
      • USB_NET_SMSC95XX (thiết bị ethernet USB 2.0 10/100 dựa trên SMSC LAN95XX)

Âm thanh

Để bật âm thanh trên bo mạch:

  • SOUND (trong Trình điều khiển thiết bị), sau đó:
    • SND (Kiến trúc âm thanh Linux nâng cao) và trong đó:
    • SND_ARM (thiết bị âm thanh ARM) và cuối cùng trong SND_BCM2835 (trình điều khiển ALCM BCM2835)

Video

  • CONFIG_BCM2708_VCHIQ (Trình điều khiển thiết bị -> Thiết bị linh tinh -> Videocore VCHIQ).

Không có gì cần thiết hơn cho hỗ trợ máy chủ X; không có tùy chọn trình điều khiển DRI cho SoC của pi.

Nếu bạn muốn sử dụng bộ đệm khung, cho phép các ứng dụng như fbiomxplayerhiển thị đồ họa bên ngoài X:

  • FB (Trình điều khiển thiết bị -> Hỗ trợ đồ họa -> Thiết bị đệm khung -> Hỗ trợ cho các thiết bị đệm khung), sau đó trong cùng một menu, FB_BCM2708 (hỗ trợ bộ đệm khung BCM2708).

Nếu bạn làm điều này và bạn muốn chim cánh cụt (hay đúng hơn là quả mâm xôi) trên bảng điều khiển khởi động, hãy nhớ LOGO (logo Bootup) trong mục Hỗ trợ đồ họa.

Bạn cũng có thể muốn xem các tùy chọn trong Loại hệ thống -> Triển khai Broadcom2708 (hoặc 9) .


GPIO / I 2 C

  • BCM2708_GPIO (Loại hệ thống -> Triển khai BCM2708 Broadcom) Hoặc đối với Pi 2, tùy chọn BCM2709 tương ứng.
  • GPIO_SYSFS (Trình điều khiển thiết bị -> Hỗ trợ GPIO) cho /sys/class/gpiogiao diện.
  • I2C (Trình điều khiển thiết bị -> Hỗ trợ I2C), cho phép I2C_CHARDEV (giao diện thiết bị I2C). Sau đó, trong phần "Hỗ trợ Bus phần cứng I2C":
    • I2C_BCM2708 (BCM2708 BSC).

Raspicam

  • MEDIA_CAMERA_SUPPORT (Trình điều khiển thiết bị -> Hỗ trợ đa phương tiện -> Hỗ trợ máy ảnh / trình thu video).
  • V4L_PLATFORM_DRIVERS (Trình điều khiển thiết bị- > Hỗ trợ đa phương tiện -> Thiết bị nền tảng V4L "). Điều này cho phép một menu con nơi bạn muốn chọn:
    • CONFIG_SOC_CAMERA (Hỗ trợ máy ảnh SoC).
    • CONFIG_VIDEO_BCM2835 (Trình điều khiển giao diện máy ảnh Broadcom BCM2835). Điều này cho phép "Trình điều khiển giao diện máy ảnh Broadcom BM2835 MMAL ( CONFIG_VIDEO_BCM2835_MMAL ) mà bạn cũng nên chọn.

Cảm biến nhiệt

Bạn có một sự lựa chọn ở đây; nếu bạn cố gắng chọn cả hai, cái đầu tiên sẽ bị hủy (mặc dù bạn có thể xây dựng một cái làm mô-đun, thay đổi cấu hình, xây dựng cái khác và sử dụng cả hai nếu bạn thực sự muốn).

  • SENSORS_BCM2835 (Trình điều khiển thiết bị-> Hỗ trợ giám sát phần cứng-> Trình điều khiển Broadcom BCM2835 HWMON). Đây là ở cuối danh sách nếu bạn không chọn "Trình điều khiển nhiệt BCM2835" bên dưới. Nó cho phép bạn truy cập vào các công cụ nhiệt trong /sys/devices/platform/bcm2835_hwmon- temp1_inputtemp1_max. Cái trước cũng vậy /sys/devices/virtual/thermal/thermal_zone0/temp; cái sau luôn là 85000 (tức là 85 ° C).
  • THERMAL_BCM2835 (Trình điều khiển thiết bị-> Trình điều khiển sysfs nhiệt chung-> Trình điều khiển nhiệt BCM2835). Đồng thời chọn Trình điều khiển thiết bị-> Hỗ trợ giám sát phần cứng (nhưng không phải trình điều khiển riêng lẻ trong menu đó) để "Hiển thị cảm biến nhiệt như thiết bị hwmon" xuất hiện ở đây và bạn có thể chọn điều đó (4.0.y dường như không có điều này). Việc chọn này sẽ bỏ chọn SENSORS_BCM2835, ở trên. Nó cho phép bạn truy cập dễ nhớ hơn và tìm thấy /sys/class/devices/virtual/thermal/thermal_zone0bao gồm temptrip_point_0_temp(giống như temp1_max, ở trên). Các màn hình không gian người dùng khác nhau có thể sẽ thích điều này và có thể không hoạt động mà không có nó.

5

Một bình luận cho bài viết tuyệt vời của goldilock:

Chỉ muốn thêm một điều tôi quan sát với chi nhánh RPI-4.1.y (05376fce25aaab4f47182a5af04928bfa06f30d6): Để có USB làm việc (điều này bao gồm Ethernet USB-kết nối), người ta cũng cho phép BCM2708_MBOX (Device Drivers-> Mailbox Phần cứng Support- > Hộp thư Broadcom BCM2708 (vcio)).

Không có tùy chọn này, USB bắt đầu khởi tạo nhưng chỉ tạo ra một loạt các thông báo đáng sợ như:

[    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 cũng là điều kiện tiên quyết cho THERMAL_BCM2835 và cho SND_BCM2835 .


2

Video (bộ đệm khung)

Ngoài hỗ trợ video, có vẻ như bạn cần bật:

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

Để tải trình điều khiển bộ đệm khung chính xác. Bạn có thể kích hoạt nó mà không kích hoạt DMA, nhưng nó sẽ không tải được.

Tích hợp không dây

Để có Tích hợp không dây (RPi 3 và Pi Zero W), bạn cần chọn các tùy chọn sau:

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

Có thể cũ, nhưng tôi đã đến đây bằng cách sử dụng tìm kiếm. Đối với thẻ SDHC, bạn cần thêm

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

nếu không, kernel của bạn sẽ phát hiện thẻ SDHC, nhưng không có phân vùng nào trên đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.