make ARCH=arm bcmrpi_defconfig
但是(与普通的Linux发行版内核一样),它包括很多我将永远不需要的东西,以及一些我想更改的东西。
使各种常见的以pi为中心的东西工作所需的实际选择是什么?
#1 楼
从默认配置开始,或者您已经知道可以使用默认配置,这是一个好主意。请注意,对于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的RAM的25%留给用户空间。如果您对此感到担心,请检查内核功能->内存拆分。
SD卡
显然,这些不是模块,因为访问
/lib/modules
需要它们;它们必须是内置的。它们在menuconfig的“设备驱动程序”部分中。MMC(MMC / SD / SDIO卡支持):必须获得mmc驱动程序的选项,但是还不够在这些选项中:
MMC_BCM2835(BCM2835上的MMC支持)。
MMC_BCM2835_DMA(BCM2835 Arasan控制器上的DMA支持):启用但未选择由MMC_BCM2835提供。
MMC_SDHCI(安全数字主机控制器接口支持)
由于根分区通常是ext格式化的,因此您也希望构建该分区在:“文件系统”下的EXT4_FS(Extended 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_FS,SYSFS和TMPFS在“文件系统->伪文件系统”下。
“设备驱动程序->角色设备->串行驱动程序”和SERIAL_AMBA_PL011_CONSOLE(支持AMBA串行端口上的控制台)下的SERIAL_AMBA_PL011(ARM AMBA PL011串行端口支持)。如果没有此文件,Raspbian系统将抱怨“ / dev / ttyAMA0:没有这样的文件或目录”。
MAILBOX和BCM2708_MBOX(在4.x内核上)。这是设备驱动程序->邮箱硬件支持,以及子菜单中的BCM 2708选项。请参见zub的答案。
USB
USB(支持主机侧USB),在“设备驱动程序-> USB”中支持”,在页面下方启用USB_DWCOTG(摘要DWC主机支持),也应选择该选项。 br /> 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支持”中的USB_STORAGE(USB大容量存储支持)。
有关如何绑定Android设备,请参阅我的回答这里。
以太网
必须首先启用USB。
NET(网络支持),顶级选项;内部是:
PACKET(数据包套接字)。
INET(TCP / IP网络)。这应该启用您可以保留的各种与IP相关的默认值。
NETFILTER(网络数据包过滤框架),对于内核“ ip table”数据包过滤防火墙是必需的。
“设备驱动程序”中的NETDEVICES(网络设备支持),然后:
NET_CORE(网络核心驱动程序支持)。
USB_NET_DRIVERS(USB网络适配器)->
USB_USBNET(多用途USB网络框架)。
USB_NET_SMSC95XX(基于SMSC LAN95XX的USB 2.0 10/100以太网设备)
< br声音
要启用板载声音:
声音(在设备驱动程序中),然后:
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 / I2C
BCM2708_GPIO(系统类型-> Broadcom BCM2708实现)或对于Pi 2,相应的BCM2709选项。
/sys/class/gpio
接口的GPIO_SYSFS(设备驱动程序-> 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
相同)。各种用户空间监视器可能会更喜欢此方法,并且没有它可能无法工作。#2 楼
对goldilock的精彩文章的评论:只想添加我在rpi-4.1.y分支(05376fce25aaab4f47182a5af04928bfa06f30d6)观察到的一件事:为了使USB正常工作(包括USB连接的以太网),还必须启用BCM2708_MBOX(设备驱动程序->邮箱硬件支持-> Broadcom BCM2708邮箱(vcio))。 />
[ 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_BCM2835和SND_BCM2835的先决条件。
#3 楼
视频(帧缓冲)除了对视频的支持外,您还需要启用以下功能:
Device Drivers ->
DMA Engine support ->
BCM2835 DMA engine support (CONFIG_DMA_BCM2835)
为了正确加载帧缓冲驱动程序。您可以在未启用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)
#4 楼
可能已经老了,但是我是通过搜索找到的。对于SDHC卡,您还需要
Device Drivers ->
-> MMC block device driver )CONFIG_MMC_BLOCK)
否则,您的内核将检测到SDHC卡,但是没有分区。