内核.config必要选项


16

我对为pi编译自定义内核感兴趣。我有来自github档案库的源代码,其中包括默认配置的make目标:

make ARCH=arm bcmrpi_defconfig

但是(与普通的Linux发行版内核一样),这包括很多我不需要的东西,以及一些我想更改的东西。

使各种以pi为中心的常见功能实际需要的选项是什么?

Answers:


25

从默认配置开始,或者您已经知道可以使用默认配置,这是一个好主意。请注意,对于Pi 2,您应该使用:

make bcm2709_defconfig

代替bcmrpi_defconfig

请注意,如果要避免破坏现有的相同版本的内核安装,请将常规设置->本地版本-附加到内核发行版字符串的值设置为唯一值。

我在.config这里使用了实际的标签,没有CONFIG_;如果使用的是make menuconfig,则可以在搜索中找到相关选项(正斜杠/)。这些标签还用于每个选项的“帮助”页面的顶部。请注意,术语enable(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(浮点仿真->高级SIMD(Neon)扩展支持)和“在内核模式下支持NEON”。

内核内存拆分:

由于一些旧版软件存在问题,因此默认配置可能在此处使用3G / 1G,这将使Pi 2的25%RAM留给用户空间。如果您对此感到担心,请检查内核功能->内存拆分


SD卡

显然,这些不能是模块,因为它们需要访问/lib/modules;它们必须是内置的。它们位于menuconfig的“设备驱动程序”部分中。

  • MMC(MMC / SD / SDIO卡支持):必须获得mmc驱动程序的选件,但还不够。在这些选项中:
    • MMC_BCM2835BCM2835上的 MMC支持)。
    • MMC_BCM2835_DMA(BCM2835 Arasan控制器上的DMA支持):已启用,但未被MMC_BCM2835选择。
    • MMC_SDHCI(安全数字主机控制器接口支持)

由于根分区通常是ext格式的,因此您还需要内置分区:

  • “文件系统”下的EXT4_FS(扩展4(ext4)文件系统)。ext2和ext3可能也是一个好主意。

引导分区是vfat,因此:

  • VFAT_FS(VFAT(Windows-95)fs支持)位于“文件系统-> DOS / FAT / NT文件系统”下。

您(几乎可以肯定)需要这些各种各样的东西,因此我首先列出了它们。

  • “浮点仿真”下的VFP(VFP格式的浮点数学)。
  • UNIX(Unix域套接字)在“网络支持”下。即使您没有进行任何实际的联网,基本系统软件也将需要此功能。
  • “用户空间二进制格式”下的BINFMT_ELF(对ELF二进制文件的内核支持)。
  • TTY(启用TTY)在“设备驱动程序->字符设备”下;这将启用您应选择的VT(虚拟终端)和UNIX98_PTYS(支持Unix98 PTY)。然后,VT启用应该选择的VT_CONSOLE(在虚拟终端上支持控制台)和CONSOLE_TRANSLATIONS(在控制台中启用字符翻译)。
  • PROC_FSSYSFSTMPFS在“文件系统->伪文件系统”下。
  • “设备驱动程序->角色设备->串行驱动程序”和SERIAL_AMBA_PL011_CONSOLE(支持AMBA串行端口上的控制台)下的SERIAL_AMBA_PL011(ARM AMBA PL011串行端口支持)。如果没有此选项,Raspbian系统将抱怨“ / dev / ttyAMA0:没有这样的文件或目录”。
  • 邮箱BCM2708_MBOX(在4.x的内核)。这是设备驱动程序->邮箱硬件支持,以及子菜单中的BCM 2708选项。请参阅zub的答案

USB

  • USB(对主机端USB的支持),在“设备驱动程序-> USB支持”中,在页面下方启用USB_DWCOTG(Synopsis DWC主机支持),也应选择该选项。
  • USB_ANNOUNCE_NEW_DEVICES(设备驱动程序-> USB支持-> USB宣布新设备)。
  • USB_DEFAULT_PERSIST(默认情况下,设备驱动程序-> USB支持->启用USB持久)。

对于键盘和鼠标:

  • 设备驱动程序-> HID支持中的HID_GENERIC(通用HID驱动程序)
  • 然后在“ USB HID支持”中:USB_HID(USB HID传输层)
  • “设备驱动程序->输入设备支持”中的INPUT_MOUSEDEV(鼠标接口)。

对于硬盘驱动器:

  • SCSI(SCSI设备支持),然后是“设备驱动程序-> SCSI支持”中的BLK_DEV_SD(SCSI磁盘支持)。
  • “设备驱动程序-> USB支持”中的USB_STORAGE(支持USB大容量存储)。

要绑定Android设备,请在此处查看我的答案


乙太网路

必须先启用USB。

  • NET(网络支持),一个顶级选项;里面是:

    • PACKET(数据包插槽)。
    • INET(TCP / IP网络)。这将启用您可以保留的各种IP相关默认值。
    • NETFILTER(网络数据包过滤框架),是内核“ ip表”数据包过滤防火墙所​​必需的。
  • NETDEVICES(网络设备支持),在“设备驱动程序”中,然后:

    • NET_CORE(网络核心驱动程序支持)。
    • USB_NET_DRIVERS(USB网络适配器)->
      • USB_USBNET(多用途USB网络框架)。
      • USB_NET_SMSC95XX(基于SMSC LAN95XX的USB 2.0 10/100以太网设备)

声音

要启用板载声音:

  • 声音(在设备驱动程序中),然后:
    • SND(高级Linux声音体系结构),其中:
    • SND_ARM(ARM声音设备),最后在该SND_BCM2835(BCM2835 ALSA驱动程序)中

视频

  • CONFIG_BCM2708_VCHIQ(设备驱动程序->其他设备-> Videocore VCHIQ)。

X服务器支持不再需要任何支持。pi的SoC没有DRI驱动程序选项。

如果要使用帧缓冲区,它允许诸如fbi和的应用程序omxplayer在X之外显示图形:

  • FB(设备驱动程序->图形支持->帧缓冲设备->支持帧缓冲设备),然后在同一菜单中FB_BCM2708(支持BCM2708帧缓冲)。

如果执行此操作,并且希望在启动控制台上使用企鹅(或更确切地说,是树莓),请记住图形支持下的LOGO(启动徽标)。

您可能还需要查看“ 系统类型”->“ 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)。

拉斯皮卡姆

  • 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(设备驱动程序->邮箱硬件支持- > 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

顺便说一句。BCM2708_MBOX还是THERMAL_BCM2835SND_BCM2835的先决条件。


2

视频(帧缓冲)

除了视频支持,您还需要启用以下功能:

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

为了正确加载framebuffer驱动程序。您可以在未启用DMA的情况下启用它,但是它将无法加载。

集成无线

为了拥有集成无线(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卡,但上面没有分区。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.