24.3 机器无关的内核选项
原文:freebsd-src/main/sys/conf/NOTES,版本 random: allow disabling of entropy harvesting from keyboard & mice。
技巧
可直接剪切/粘贴下面的条目到内核配置文件中。
以
device、options、machine、ident、maxusers、makeoptions、hints等开头的行放入要运行 config(8) 的内核配置中。以
envvar hint.开头的行应放入你的 hints 文件中。参见/boot/device.hints,config(8) 中的hints指令。如果你想进行内核测试构建,请使用
make LINT创建旧式 LINT 文件。此文件是机器无关的内核配置说明。机器相关的说明,请参见
/sys/架构/conf/NOTES。
技巧
NOTES 约定和风格指南:
大段注释应以仅包含注释字符的一行开始和结束。
描述特定对象时,如果存在块注释,应先写块注释。接下来按顺序写 device、options 和 hints 条目。所有 device 和 option 行都必须有注释,且注释不能只是重复 device 或 option 名称。如可能,仅在同一行使用简明注释。设备和子系统的详细说明应放在 man 页中。
options 与选项名之间用一个空格加一个制表符分隔。device 与设备名之间用两个空格加一个制表符分隔。option 或 device 后的注释应在注释字符后加一个空格。要注释掉禁用代码的负选项(因此不应在 LINT 构建中启用),在
options前加#!。
ident LINT这是内核的“标识”。通常应与内核的名称相同。
maxusers 10参数 maxusers 可通过 subr_param.c 中定义的公式控制多个内部系统表的静态大小。
省略此参数或将其设置为 0,系统将根据物理内存自动调整大小。
#hints "LINT.hints" # 查找设备的默认位置静态编译设备连接,而不是使用 /boot/device.hints。
使用以上方法将值编译进内核,以便内核可以通过 getenv()(或者用户空间的 kenv(1))访问。文件格式为 variable=value,详见 kenv(1)。
①:
makeoptions参数可将变量传递给构建区域生成的 Makefile。②:
CONF_CFLAGS提供了一些额外的编译器标志,这些标志会在大多数其他标志之后添加到${CFLAGS}中。在这里,我们使用它来禁止使用非最优的 gcc 内建函数(例如memcmp)。③:
DEBUG是个特殊标志。
下面的做法等同于执行 config -g KERNELNAME,会生成 kernel.debug,该内核带有调试信息 -g,同时还会生成一个普通的 kernel。使用 make install.debug 可以安装调试内核,但通常没有必要,因为调试符号不会被内核加载,在内核中也没有用处。
④:重命名
KERNEL,以便于让你更改内核的默认名称。⑤:
MODULES_OVERRIDE可以用来限制构建的模块列表,仅编译指定的模块。
FreeBSD 进程在使用系统资源时会受到一定限制。更多细节,请参见 getrlimit(2)。每个资源限制都有两个值:“软限制(soft limit)”和“硬限制(hard limit)”。
可以在系统正常运行时修改软限制,而硬限制只能在启动时设定。它们的默认值定义在 sys/架构/include/vmparam.h 中。有两种方式可以修改上述限制:
在内核编译时设置值。下面的选项是一种将该限制提高到 1GB 的方法。通过修改相关参数,还可以进一步提高这些值。
在
/boot/loader.conf中设置可调节参数:kern.maxswzone、kern.maxbcache、kern.maxtsiz、kern.dfldsiz、kern.maxdsiz、kern.dflssiz、kern.maxssiz和kern.sgrowsiz。
/boot/loader.conf 中的设置会覆盖内核配置文件中的任何值。有关更多细节,请参见 sys/kern/subr_param.c 中的函数 init_param1。
BLKDEV_IOSIZE 可设置用户块设备 I/O 使用的默认块大小。
注意
当通过带有非零分区块大小的标签指定块设备时,该值会被标签覆盖。默认值为
PAGE_SIZE。
对于已知可靠的设备,读写操作会被分割成 MAXPHYS 大小的块;对于其他设备,则使用 DFLTPHYS 大小的块。某些应用在使用较大原始 I/O 访问块时性能更好。
注意
某些虚拟内存(VM)参数是从这些值推导出来的,将它们设置得过大可能会导致内核无法启动。
你可将此配置文件实际存储到内核二进制文件中。详见 config(8)。
各种启动参数的编译时默认值
dmesg 启动标签的编译时默认值
默认启动标签;可以使用 loader 可调参数 kern.boot_tag 来覆盖。当前启动的标签也通过 sysctl kern.boot_tag 暴露。
内核静态缓冲区应容纳的最大启动标签大小。BOOT_TAG 及其相关可调参数的最大尺寸。
GEOM 相关。
可以在编译时指定根设备和文件系统类型;如果引导程序无法正确识别根设备,此处提供了备用方案;或在启动内核时指定 RB_DFLTROOT 标志(-r)时来覆盖选项。
调度器
SCHED_4BSD 和 SCHED_ULE 必选其一。这些选项用于选择要编译进内核的调度器。
说明:
SCHED_4BSD使用全局运行队列且没有 CPU 亲和性,这在 SMP 系统中表现不佳。但它具有非常好的交互性和优先级选择能力。SCHED_ULE在许多 SMP 机器上的工作负载下,相比 4BSD 提供了显著的性能优势。它支持 CPU 亲和性、每 CPU 的运行队列和调度器锁。它还对交互性有更强的支持,即使在单处理器机器上也能提供更好的响应能力。SCHED_STATS会在 sysctlkern.sched.stats下保存一些统计信息,有助于调试调度决策。
SMP
SMP 可构建对称多处理器内核。必须指定。
EARLY_AP_STARTUP 可在内核启动过程中更早地释放应用处理器(在设备探测之前),而不是在启动尽头。这个选项是从晚期到早期 AP 启动过渡期间的临时选项。
MAXCPU 定义了系统中能启动的最大 CPU 数量。每种架构通常已经有默认值。
NUMA 可启用内核各子系统中对非一致性内存访问(Non-Uniform Memory Access)策略的支持。
MAXMEMDOM 定义了系统中可启动的最大内存域数量。每种架构通常已有默认值。
ADAPTIVE_MUTEXES 可改变阻塞互斥锁的行为:如果当前持有互斥锁的线程在另一 CPU 上执行,则互斥锁会自旋。此行为默认启用,该选项可用于禁用上述行为。
ADAPTIVE_RWLOCKS 会改变读写锁的行为:如果当前持有读写锁的线程在另一 CPU 上执行,则锁会自旋。此行为默认启用,该选项可用于禁用上述行为。
ADAPTIVE_SX 可改变 sx 锁的行为:如果当前持有 sx 锁的线程在另一 CPU 上执行,则锁会自旋。此行为默认启用,该选项可用于禁用上述行为。
MUTEX_NOINLINE 可强制互斥操作通过调用函数来执行每个操作,而不是对简单情况进行内联。可用于减小内核文本段的大小。
注意
这种行为已被选项
INVARIANT_SUPPORT、INVARIANTS、KTR、LOCK_PROFILING和WITNESS隐式启用。
RWLOCK_NOINLINE 可强制读写锁操作通过调用函数来执行每个操作,而不是对简单情况进行内联。可用于减小内核文本段的大小。
注意
这种行为已被选项
INVARIANT_SUPPORT、INVARIANTS、KTR、LOCK_PROFILING和WITNESS隐式启用。
SX_NOINLINE 可强制 sx 锁操作通过调用函数来执行每个操作,而不是对简单情况进行内联。这可以用于减小内核文本段的大小。
注意
这种行为已被选项
INVARIANT_SUPPORT、INVARIANTS、KTR、LOCK_PROFILING和WITNESS隐式启用。
SMP 调试选项
CALLOUT_PROFILING:启用对 callout(9) 后端使用的 callwheel 数据结构的基础分析。PREEMPTION:允许内核中的线程被优先级更高的[中断]线程抢占。提高交互性,使中断线程能更快运行,而不是等待。FULL_PREEMPTION:指示内核抢占非实时内核线程。主要用于在开发阶段暴露竞态条件和其他 bug。启用会降低性能并增加内核 panic 频率。依赖PREEMPTION选项,不建议开启。SLEEPQUEUE_PROFILING:对保存活动睡眠队列的哈希表及睡眠等待消息频率进行基础分析。TURNSTILE_PROFILING:对保存活动锁队列的哈希表进行基础分析。UMTX_PROFILING:对保存活动锁队列的哈希表进行基础分析。WITNESS:启用 witness 代码,用于检测锁操作期间的死锁和循环。WITNESS_KDB:当发生锁层次违规或线程在休眠前持锁时,进入内核调试器。
WITNESS_SKIPSPIN:禁用对自旋互斥锁的 witness 检查。
LOCK_PROFILING — 锁分析。详情见 LOCK_PROFILING(9)。
MPROF_HASH_SIZE 哈希表大小必须大于缓冲区数量 MPROF_BUFFERS,且应为素数。
为 callout(9) 后端进行分析。
对内部哈希表进行分析。
针对 epoch(9) 的误用进行调试跟踪。
兼容性
旧款 TTY 接口
启用 FreeBSD4 兼容性系统调用。
注意
在通常情况下,
COMPAT_FREEBSD<n>依赖COMPAT_FREEBSD<n+1>、COMPAT_FREEBSD<n+2>等。
启用 FreeBSD 5 兼容性系统调用。
启用 FreeBSD 6 兼容性系统调用。
启用 FreeBSD 7 兼容性系统调用。
启用 FreeBSD 8 兼容性系统调用。
启用 FreeBSD 9 兼容性系统调用。
启用 FreeBSD 10 兼容性系统调用。
启用 FreeBSD 11 兼容性系统调用。
启用 FreeBSD 12 兼容性系统调用。
启用 FreeBSD 13 兼容性系统调用。
启用 FreeBSD 14 兼容性系统调用。
启用 Linux 内核编程接口。
SYSVSHM:启用 System V 风格的共享内存支持。SYSVSEM:启用 System V 风格的信号量支持。SYSVMSG:启用 System V 风格的消息队列支持。
调试
编译时包含内核调试器相关代码。
在系统发生 panic 时,在控制台打印当前线程的调用栈跟踪。
在发生 panic 时不进入调试器。适用于无人值守的操作环境,你可能想通过控制台手动进入调试器,但仍希望系统能够在 panic 后自行恢复。
启用 ddb 调试器后端。
除了符号表示外,还打印符号的数值。
启用远程 gdb 调试器后端。
在列表指针变为无效时(即元素从列表中移除)将其清空。启用成本相对较低。
在列表对象中存储最后一个修改列表对象的调用者的信息。需要额外的内存开销。
SYSCTL_DEBUG 启用将启用一 sysctl 调试树,可用于在控制台上转储已注册 sysctl 节点的内容。因为它会生成过于冗长的控制台输出,可能干扰串行控制台操作,所以默认情况下禁用。
默认启用 textdump,将禁用内核核心转储。
在执行 textdump 时启用额外的调试信息。
NO_SYSCTL_DESCR 会省略 sysctl 节点描述,以节省生成内核的空间。
MALLOC_DEBUG_MAXZONES 可为小于一页的 malloc(9) 分配启用多个 uma 区域。其目的是将不同的 malloc 类型隔离到哈希类别中,这样所有缓冲区溢出和释放后使用(UAF)问题通常只会影响该哈希类别中的 malloc 类型的内存。这纯粹是一款调试工具;通过改变哈希函数并追踪哪个哈希类别被破坏,每个实例的哈希类别交集将指向被滥用的单个 malloc 类型。此时可以使用检查或 memguard(9) 来捕获问题代码。
DEBUG_MEMGUARD 构建并启用 memguard(9),这是内核的替代分配器,用于检测释放后修改(modify-after-free)场景。有关使用的更多信息,请参见 memguard(9) 手册页。
DEBUG_REDZONE 为 malloc(9) 启用缓冲区下溢和缓冲区上溢的检测。
EARLY_PRINTF 可在内核非常早期(在调用 cn_init() 之前)使用一种特殊的 printf(eprintf)。这通常仅用于启动早期调试。通常情况下,它未被定义。这里被注释掉是因为该功能通常不可用,而且所需的 eputc() 也未定义。
KTRACE 启用系统调用跟踪功能 ktrace(2)。为了更好地支持 SMP,KTRACE 使用一个工作线程来异步处理大多数跟踪事件,而不是由生成事件的线程直接处理。这需要预先分配一个用于存储跟踪事件对象的池。选项KTRACE_REQUEST_POOL 指定该池的初始大小。可以在启动时/运行时通过可调参数和 sysctl kern.ktrace_request_pool 调整该池的大小。
KTR 是一款从 BSD/OS 引入的内核跟踪设施。通过选项 KTR 启用。
KTR_ENTRIES定义了循环跟踪缓冲区中的条目数量,可以是任意数字。KTR_BOOT_ENTRIES定义了早期启动期间的条目数量,在 malloc(9) 可用之前使用。KTR_COMPILE定义了要编译到内核中的事件掩码,由<sys/ktr.h>中的常量KTR_*定义。KTR_MASK定义了变量ktr_mask的初始值,该变量在运行时决定要跟踪哪些事件。KTR_CPUMASK决定哪些 CPU 记录事件,位 X 对应 CPU X。作为 KTR_CPUMASK 传入的字符串布局必须匹配一系列位掩码,每个掩码用,分隔(例如:KTR_CPUMASK=0xAF,0xFFFFFFFFFFFFFFFF)。KTR_VERBOSE默认启用将 KTR 事件输出到控制台。此功能可以通过 sysctldebug.ktr_verbose调整,如果未定义KTR_VERBOSE,则默认关闭。
详情请参见 ktr(4) 和 ktrdump(8)。
选项 INVARIANTS 在多个源文件中用于启用对内部结构的额外完整性检查。在默认情况下禁用,因为检查这些条件会额外消耗时间,而这些问题通常仅由编程错误引起。
选项 INVARIANT_SUPPORT 能让我们在编译时加入对部分内部结构的验证支持。INVARIANT_SUPPORT 是启用 INVARIANTS 的前提,因为启用 INVARIANTS 会调用这些函数。其目的是,如果启用了 INVARIANT_SUPPORT,你可以为单个源文件设置 INVARIANTS(通过修改源文件或在命令行指定)。此外,如果你希望构建带有 INVARIANTS 的内核模块,将 INVARIANT_SUPPORT 添加到内核中可以提供所有必要的基础设施,且不会增加额外开销。
选项 KASSERT_PANIC_OPTIONAL 能在 kasserts 被触发时不一定引起 panic。panic 是默认行为,但运行时选项可以将其完全关闭,或者在设定限制下关闭。
选项 DIAGNOSTIC 用于启用额外的调试信息和完整性检查。由于这些额外检查对 INVARIANTS 内核来说开销过大或过于冗杂,因此默认情况下禁用。通常,配置了 DIAGNOSTIC 的内核也会启用 INVARIANTS 选项。
REGRESSION 将启用仅在回归测试中需要的可选内核接口。启用这些接口可能构成安全风险,因为它们允许进程轻松修改运行时环境的某些方面,会重现不太可能或异常(可能通常不可能出现)的场景。
此选项能让某些在运行系统中无法共存的驱动程序共存。它用于能够一次性编译所有内核代码以进行质量保证(例如本文件,其名称即来源于该选项)。
STACK 将启用 stack(9) 功能,可捕获内核栈。若内核编译中包含 DDB(4),stack(9) 也会被自动编译进内核。
选项 NUM_CORE_FILES 指定了特定进程生成核心文件的数量上限,当核心文件格式说明符包含 %I 模式时。由于格式字符串中核心计数只有 1 个字符,可表示的范围为 0-9,因此该选项允许的最大值为 10。该核心文件数量限制可在运行时通过 sysctl debug.ncores 进行调整。
TSLOG 选项可启用事件的时间戳记录,特别是函数的进/出,以便跟踪内核消耗的时间。尤其在早期启动过程中非常有用,因为此时还无法使用 DTrace 等更高级的工具。
TSLOGSIZE选项控制用于存储这些事件的(预分配、固定长度)缓冲区大小(默认:262144条记录)。TSLOG_PAGEZERO选项可启用对pmap_zero_page的 TSLOG;由于它通常会生成过多记录而不太实用,因此必须单独启用。
出于安全考虑,TSLOG 不应在用于生产的系统上启用。
性能监控
驱动程序 hwpmc 可使用 CPU 内置的性能监控计数器进行性能监控。基础内核需要通过 options 条目进行配置,可将 hwpmc 设备编译进内核或作为可加载内核模块来加载。
在特定架构上可能需要额外的配置选项,请参见 hwpmc(4)。
网络接口
协议栈
注意
如果你使用了选项
INET、INET6或同时指定了两者,必须至少指定一个拥塞控制选项,否则将编译失败。GENERIC定义了CC_CUBIC。如果编译了多款拥塞控制,你可能需要指定一个默认值。
default 中的字符串是 cc 模块的名称,在 sysctl 中用于设置默认值。代码将 CUBIC 定义为默认值,或者如果只编译了一个 cc_module,则使用该模块。
IPsec(IP 安全)。要启用 IPSEC,必须在内核配置中同时指定设备加密支持。
IPSEC_SUPPORT 选项并不会直接启用 IPsec,但它能将 IPsec 作为内核模块加载。你仍然 必须 在内核配置中添加设备加密支持。
可选的 TCP 堆栈。
TLS 用于通过 TCP 套接字对数据进行帧封装以及加/解密。
Netlink 内核/用户 <-> 内核/用户 消息传递接口
SMB/CIFS 请求器。NETSMB 启用了对 SMB 协议的支持,它需要选项 LIBMCHAIN 和 LIBICONV。
mchain 库。它可以作为 KLD(可加载内核模块)加载,也可以编译进内核。
libalias 库,用于执行 NAT(网络地址转换)。
SCTP 是一种新型传输协议,由 RFC2960 定义,并由 RFC3309 和 RFC3758 更新,很快还会有新的基础 RFC 和更多扩展。本版本支持所有扩展,包括许多草案(大部分即将成为 RFC)。它是 SCTP 的参考实现,经过了充分测试。
注意
必须同时定义 INET 和 INET6。不必启用 IPv6,但 SCTP 是双栈协议,目前我们还没有拆分 IPv6 和 IPv4,因为一个关联(association)可以同时跨越 IPv6 和 IPv4 地址。
选项 SCTP_SUPPORT 并不会直接启用 SCTP,而是提供将 SCTP 作为可加载内核模块加载所需的支持。
有很多选项:
这个选项可开启各种详细打印功能。它由一个位掩码控制(可以通过 socket 选项和 sysctl 设置)。包含该选项本身不会立即产生日志,必须先设置相应的位。但打印信息可能非常冗长。因此,若未启用该选项,代码就不会进行位检测和打印,这样可以提高运行速度。如果你不是在调试,请不要使用。
上面的所有选项用于开启特定类型的日志记录。你可以监控拥塞窗口(CWND)增长、飞行数据量(flight size)以及各种其他指标。可以查看代码了解更多。我曾用这些日志生成过有趣的图表和曲线 :->
我还没有提交获取和打印日志的工具,但最终会完成。在那之前,如果你需要日志,可以发邮件给我 [email protected]。
基本上,你必须启用 ktr(4) 来使用这些功能,然后通过 sysctl 设置打开或关闭各种日志位。使用 ktrdump(8) 提取日志,再通过显示程序处理,就能生成图表等可视化内容。
OpenFabrics 企业版分发(InfiniBand)。
套接字直接协议(SDP)。
IP over Infiniband (IPoIB),基于 InfiniBand 的互联网协议,参见 wiki/Infiniband。
altq(9)。通过选项 ALTQ 启用钩子的基础部分。各个调度策略必须编译进基本系统,不能在此阶段作为模块加载。ALTQ 需要稳定的 TSC,如果你的 TSC 不稳定或在 CPU 节流时发生变化,则必须同时启用选项 ALTQ_NOPCC。
①:netgraph(4) 系统,是一款网络工具包。使用选项
NETGRAPH启用 netgraph 核心代码。
可以通过下列对应的选项启用各个节点类型;不过这并非严格必要,因为如果节点类型尚未编译进内核,netgraph 会自动加载对应的 KLD 模块。下面的每种类型都有对应的手册页,例如 ng_async(4)。
netgraph 节点类型:
NETGRAPH_ASYNC —— ng_async(4)
NETGRAPH_BLUETOOTH —— ng_bluetooth(4)
NETGRAPH_BLUETOOTH_HCI —— ng_hci(4)
NETGRAPH_BLUETOOTH_L2CAP —— ng_l2cap(4)
NETGRAPH_BLUETOOTH_SOCKET —— ng_btsocket(4)
NETGRAPH_BLUETOOTH_UBT —— ng_ubt(4)
NETGRAPH_BLUETOOTH_UBTBCMFW —— ubtbcmfw(4)
NETGRAPH_BPF —— ng_bpf(4)
NETGRAPH_BRIDGE —— ng_bridge(4)
NETGRAPH_CAR —— ng_car(4)
NETGRAPH_CHECKSUM —— ng_checksum(4)
NETGRAPH_CISCO —— ng_cisco(4)
NETGRAPH_DEFLATE —— ng_deflate(4)
NETGRAPH_DEVICE —— ng_device(4)
NETGRAPH_ECHO —— ng_echo(4)
NETGRAPH_EIFACE —— ng_eiface(4)
NETGRAPH_ETHER —— ng_ether(4)
NETGRAPH_FRAME_RELAY —— ng_frame_relay(4)
NETGRAPH_GIF —— ng_gif(4)
NETGRAPH_GIF_DEMUX —— ng_gif_demux(4)
NETGRAPH_HOLE —— ng_hole(4)
NETGRAPH_IFACE —— ng_iface(4)
NETGRAPH_IP_INPUT —— ng_ip_input(4)
NETGRAPH_IPFW —— ng_ipfw(4)
NETGRAPH_KSOCKET —— ng_ksocket(4)
NETGRAPH_L2TP —— ng_l2tp(4)
NETGRAPH_LMI —— ng_lmi(4)
NETGRAPH_MPPC_COMPRESSION —— ng_mppc(4)
NETGRAPH_MPPC_ENCRYPTION —— ng_mppc(4)
NETGRAPH_NETFLOW —— ng_netflow(4)
NETGRAPH_NAT —— ng_nat(4)
NETGRAPH_ONE2MANY —— ng_one2many(4)
NETGRAPH_PATCH —— ng_patch(4)
NETGRAPH_PIPE —— ng_pipe(4)
NETGRAPH_PPP —— ng_ppp(4)
NETGRAPH_PPPOE —— ng_pppoe(4)
NETGRAPH_PPTPGRE —— ng_pptpgre(4)
NETGRAPH_PRED1 —— ng_pred1(4)
NETGRAPH_RFC1490 —— ng_rfc1490(4)
NETGRAPH_SOCKET —— ng_socket(4)
NETGRAPH_SPLIT —— ng_split(4)
NETGRAPH_TAG —— ng_tag(4)
NETGRAPH_TCPMSS —— ng_tcpmss(4)
NETGRAPH_TEE —— ng_tee(4)
NETGRAPH_UI —— ng_UI(4)
NETGRAPH_VJC —— ng_vjc(4)
NETGRAPH_VLAN —— ng_vlan(4)
vimage(9)(即 VNET(9) 的别名),用于网络栈虚拟化。
网络接口
当启用网络功能时,loop(4) 设备是 必需的。
ether 设备提供了用于处理以太网的通用代码;当需要配置以太网设备驱动时,它是 必需的。
vlan(4) 设备可根据 IEEE 802.1Q 实现以太网帧的 VLAN 标记。
vxlan(4) 设备将根据 RFC7348 实现以太网帧在 UDP 数据包中的 VXLAN 封装。
wlan(4) 设备提供了支持 802.11 驱动的通用代码,包括主机 AP 模式;对于 wi 和 ath 驱动来说,wlan 是 必需的,并且最终将成为所有 802.11 驱动的必需项。
可选设备,依赖 802.11 wlan 模块。
wlan_xauth 设备提供了对外部(即用户态)认证器的支持,用于依赖 wlan 模块并支持 802.1x 和/或 WPA 安全协议的 802.11 驱动。
wlan_acl设备提供了基于 MAC 的访问控制机制,用于在 AP 模式下运行并使用wlan模块的 802.11 驱动。wlan_amrr设备提供了 AMRR 传输速率控制算法。
bpf 设备将启用伯克利数据包过滤器(Berkeley Packet Filter)。启用此选项时需注意法律和管理上的相关后果。DHCP 依赖 bpf。
netmap 设备可实现从用户态对网络设备的内存映射访问,即使在 10Gbit/s 速率下也能实现线速数据包捕获和生成。需要设备驱动支持。支持的驱动有 ixgbe、e1000、re。
disc 设备实现了一个最简网络接口,会丢弃所有发送的数据包,且永远不会接收任何数据包。它用于测试和基准性能评估。
epair 设备实现了一对虚拟的背靠背连接的以太网接口。
edsc 设备实现了一个最简以太网接口,会丢弃所有发送的数据包,且不接收任何数据包。
tuntap 设备实现了 (用户态) PPP、nos-tun(8) 以及类似 pty 的虚拟以太网接口。
gif设备实现了 IPv6 over IPv4 隧道、IPv4 over IPv6 隧道、IPv4 over IPv4 隧道以及 IPv6 over IPv6 隧道。gre设备实现了 GRE(通用路由封装)隧道,遵循 RFC 2784 和 RFC 2890 规范。me设备实现了 IPv4 内的最小封装(Minimal Encapsulation),遵循 RFC 2004 规范。XBONEHACK选项可在多个gif接口上配置相同的地址对。
stf 设备实现了 6to4 封装。
PF 数据包过滤器由三款设备组成:
pf设备提供了/dev/pf以及防火墙代码本身。pflog设备提供了pflog0接口,用于记录数据包。pfsync设备提供了pfsync0接口,用于防火墙状态表的同步(通过网络)。
桥接接口。
通用地址冗余协议(CARP)。更多详情参见 carp(4)。
IPsec 接口。
LAGG 链路聚合接口。
WireGuard 接口。
dummymbuf —— mbuf 修改的 pfil 钩子。
互联网协议簇
①:
MROUTING将启用内核多播数据包转发功能,可与 mrouted 和 XORP 一起使用。②:
IPFIREWALL需要配合程序ipfw使用。③:
IPFIREWALL_VERBOSE会将记录的数据包发送到系统日志。④:
IPFIREWALL_VERBOSE_LIMIT限制匹配条目的日志记录次数。
警告:
IPFIREWALL 默认策略为
deny ip from any to any,如果在启动时未添加放行访问的规则,你将把自己关在门外。建议首次启用此功能时,在/etc/rc.conf中将firewall_type设置为open,然后在确认新内核功能正常工作后,再在/etc/rc.firewall中完善防火墙规则。
⑤:
IPFIREWALL_DEFAULT_TO_ACCEPT会使默认规则(启动时)放行所有流量。请谨慎使用,如果攻击者能入侵你的防火墙机器,他们可能访问你的受保护机器。但如果只是作为按需过滤特定问题的工具,这可能适合你。将默认策略改为allow可以避免内核与 /sbin/ipfw 二进制不同步时被卡住。
IPFIREWALL_PMOD 支持协议修改模块。目前仅支持 TCP MSS 修改。
注意
IPFIREWALL_PMOD这里有问题。原文缺失此条目,应为上游文档缺失。思考题
读者可能希望进一步研究这里的缺失条目
IPFIREWALL_PMOD,请仔细查阅源代码及 Add ipfw protocol modification module ipfw_pmod 等相关提及,并提交 PR 到 FreeBSD src。
MBUF_STRESS_TEST 选项用于启用与 mbuf 函数相关的各种随机故障或极端情况测试。可参见 mbuf(9) 获取可用测试用例列表。
MBUF_PROFILING 启用对系统输出的 mbuf 链(通过相应接口)进行分析的代码,并返回监控参数的对数直方图(例如数据包大小、浪费空间、链中 mbuf 数量)。
静态链接接收过滤器(accept filters)。
TCP_SIGNATURE 为 RFC 2385(TCP-MD5)摘要提供了支持。这些摘要通过 TCP 选项 19 携带。该选项通常用于保护 TCP 会话(例如 BGP),适用于无法或不希望使用 IPsec 的情况。
此功能可以按套接字启用,通过 TCP_MD5SIG 套接字选项实现。
启用此功能需要使用 device crypto,并且需要启用 options IPSEC 或 options IPSEC_SUPPORT。
DUMMYNET 将启用带宽限制器 “dummynet”。此功能还需要 IPFIREWALL。更多信息请参见 dummynet(4) 和 ipfw(8)。在运行 DUMMYNET 时,HZ/kern.hz 应至少为 1000,以确保响应足够及时。
DEBUGNET 选项将启用基础调试/内核 panic 时的网络 API。NETDUMP 和 NETGDB 需要使用 DEBUGNET。
NETDUMP 选项将在内核中启用对 netdump(4) 客户端支持。它可在内核 panic 时将内核转储发送到远程主机。
NETGDB 选项在内核中启用对 netgdb(4) 的支持。它能通过网络将 panic 的内核作为 GDB 远程调试目标。
文件系统
只有根文件系统需要静态编译或预先加载为模块;其他文件系统可在挂载时自动加载。不过,有些人也倾向于静态编译其他文件系统。
注意
UNION 文件系统曾存在缺陷。现在得到了积极维护,尽管仍有一些问题需要解决。
以上选项中,至少选择一项。
以上选项,均为可选。
将 NFS 用作根文件系统(root device)的支持。
软更新(Soft Updates)是一种提高文件系统速度并降低突然关机风险的技术。
UFS 扩展属性(Extended Attributes)可将附加数据与文件关联,用于 ACL、Capabilities 和 MAC 标签。更多信息请参见 src/sys/ufs/ufs/README.extattr。
①:
UFS_EXTATTR:扩展属性可将附加的任意元数据与文件和目录关联,这些元数据既可以从用户态分配和读取,也可以在内核内部操作;参见 extattrctl(8)。②:如果定义了选项
UFS_EXTATTR_AUTOSTART,UFS 会在挂载操作期间搜索文件系统根目录下的.attribute子目录。如果找到了该目录,将自动为该文件系统启用扩展属性支持。
参见 ffs(7)。
对 UFS 文件系统的访问控制列表(ACL)的支持。当前的 ACL 实现依赖底层文件系统的扩展属性支持(UFS_EXTATTR)。更多信息请参见 src/sys/ufs/ufs/README.acls。
UFS 目录哈希(Directory Hashing)可通过消耗一些内存来提高对非常大目录的操作速度。
基于 gjournal(8) 的 UFS 日志支持。
在内核中为基于 md 设备的根文件系统预留空间。此处定义需为文件系统保留的千字节(KB)数。
该定义现为可选项。
若未定义,通过
MFS_IMAGE编译选项传入的根文件系统将在链接阶段自动嵌入内核,其实际大小将完全占用内核空间。若已定义,则会采用旧版内核嵌入文件系统的方式:即先在内核中分配
MD_ROOT_SIZE千字节(KB)的固定空间,后续若通过MFS_IMAGE编译选项传入的文件系统镜像尺寸匹配,将通过dd命令将其写入预留区域。
将 md 设备配置为潜在根设备,支持预加载的 mfs_root 和 md_root 类型镜像。
对该 md 根设备启用写保护,以防止其被以可写的方式进行挂载。
允许从外部内存区域读取 md 镜像。
启用此选项即可支持磁盘配额功能。
若您的设备是仅作为面向 PC 和 Mac 用户的文件服务器(使用 Samba 服务),建议启用此选项,并在支持挂载选项 suiddir 的文件系统上设置用户目录。该设置会使新建文件自动继承目录的属主权限(类似于群组权限)。
注意
若允许这些用户执行程序,将存在安全风险,因此请仅限在纯文件服务器环境中使用(此举可有效避免诸多管理难题)。root 用户拥有的目录不受此限制,且执行权限位会被自动清除。
注意
必须同时为目录设置权限位
suid(详见 chmod(1) 手册)。由于 PC 用户无法查看/设置文件属主,常导致权限冲突。在启用此功能后,相关文件系统会符合用户直觉——"既然是我的目录,那么创建的文件自然归我所有",从而显著减少技术支持需求。
若干 NFS 选项。
新增对著名的 Linux 文件系统 EXT2 的支持。使用此功能需格外谨慎—— ext2 的代码往往滞后于内核更新且缺乏充分测试,因此以读写模式挂载可能存在风险(哪怕以只读模式挂载也可能导致系统崩溃)。
系统内存设备:/dev/mem、/dev/kmem
内核符号表设备:/dev/ksyms。
可选的字符编码转换支持,需配合 LIBICONV 实现。每个选项都需要其基础文件系统及 LIBICONV 库的支持。
POSIX P1003.1B
1993 年 POSIX 标准新增的实时扩展 _KPOSIX_PRIORITY_SCHEDULING 内置了对 _POSIX_PRIORITY_SCHEDULING 的支持。
p1003_1b_semaphores 功能仍处于高度实验阶段,若出现问题,用户需协助参与调试工作。
POSIX 消息队列。
安全策略参数
BSM 审计。
强制访问控制(MAC)。
Capsicum 技术。
时钟
操作粒度由内核选项 HZ 控制(默认频率为 1000 Hz,即调用间隔周期为 1 毫秒)。虚拟机客户系统通常采用数值 100。较低的数值可能会以调度精度为代价来降低系统开销,但自适应定时器代码能减少这种开销。
启用内核 PLL 以使用外部 PPS 信号的功能,该功能在 [x]ntpd(8) 的监管下运行。更多信息请参阅 ntpd 文档:http://www.eecis.udel.edu/~ntp
启用内核中对通用前馈时钟的支持。前馈时钟支持是面向反馈的 ntpd/系统时钟方法的替代方案,需与前馈同步算法(例如 RADclock)配合使用。更多信息请参阅:http://www.synclab.org/radclock
SCSI 设备
SCSI 设备配置。
SCSI 子系统由 SCSI 核心代码、多个高层 SCSI 设备“类型”驱动程序,以及底层主机适配器设备驱动程序组成。主机适配器列表请参阅下文中的 ISA 和 PCI 设备配置章节。
系统可固定 SCSI 设备配置,确保特定总线、目标和 LUN 始终对应同一设备单元。在早期版本中,设备单元号按照 SCSI 总线上探测到的顺序分配。这意味着若移除某磁盘驱动器,可能需重写文件 /etc/fstab;同时新增磁盘时也需谨慎,因为可能会提前探测到新设备,从而窜改原有设备的配置。
系统默认保持此传统行为。设备单元分配将从该设备类型首个非固定单元开始。例如,若将某磁盘固定为 da3,则首个非固定磁盘将被分配为 da4。
设备固定配置语法如上所述。
未明确指定“单元”(SCSI 逻辑单元号)的设备将默认按 LUN 0 处理。
所有 SCSI 设备会根据实际需求分配相应数量的单元。
ch驱动程序用于驱动 SCSI 介质转换器(“自动光盘机”)设备。da驱动程序用于驱动 SCSI 直接存取(“磁盘”)与光学介质(“WORM”)设备。sa驱动程序用于驱动 SCSI 顺序存取(“磁带”)设备。cd驱动程序用于驱动 SCSI 只读直接存取(“光盘”)设备。ses驱动程序用于驱动 SCSI 环境服务(“ses”)及 SAF-TE(“SCSI 可访问容错机箱”)设备。pt驱动程序用于驱动 SCSI 处理器设备。sg驱动程序提供与 Linux SG 驱动兼容的直通 API,可与 Linux 模拟器协同运行 Linux SG 应用程序,也可独立运行为应用移植至 FreeBSD 提供源码级 API 兼容性。
目标模式支持在此部分实现,但仍需 SIM(SCSI 主机适配器驱动程序)提供相应支持。
targ驱动程序以处理器类型设备的形式提供了目标模式支持,其存在旨在提供响应查询命令所需的最小上下文环境。/usr/share/examples/scsi_target目录下提供了展示其余命令支持实现方式的用户应用程序示例。targbh驱动程序提供了目标模式支持,专门用于响应未分配逻辑单元的传入命令。pass驱动程序提供了访问 CAM 子系统的直通 API。
CAM
CAM, Common Access Method storage subsystem(通用访问方法存储子系统),参见 cam(4)。
CAM 调试相关
编译所有调试功能。
要编译进去的调试等级。
在启动时启用的调试等级。
将调试限制在指定的 bus 上。
将调试限制在指定的 target 上。
将调试限制在指定的 lun 上。
在打印每一行调试信息后延迟的时间(微秒)。
并发高功率(start unit)命令的最大数量.
定义后禁用 sense 描述.
定义后禁用 opcode 描述.
SCSI_DELAY: 在总线重置后冻结 SIM(SCSI 适配器)队列的毫秒数,以及在总线设备重置后冻结设备队列的毫秒数。可通过可调参数 sysctl kern.cam.scsi_delay 在启动时和运行时更改该值。
根据提示和存储设备的当前性能,在 I/O 调度器中启用动态决策功能。
通过 sysctl 显示额外的 CAM 设备统计数据.
启用模拟 I/O 故障的功能。
CAM CDROM 只读直接存取(“光盘”)设备
为 changer LUN 保证的最小时间片。
该变量编译默认值为 2 秒。可通过 sysctl kern.cam.cd.changer.min_busy_seconds 进行调整。
每个 changer LUN 的最大时间片,仅在有 I/O 等待其他 LUN 时生效。
该变量编译默认值为 10 秒。可通过 sysctl kern.cam.cd.changer.max_busy_seconds 进行调整。
CAM 顺序访问(“磁带”)设备
读/写/WFM 操作的超时时间,单位为分钟。
空间操作的超时时间,单位为分钟。
回带操作的超时时间,单位为分钟。
擦除操作的超时时间,单位为分钟。
默认针对仅在磁带末端(EOT)存在单个文件标记的型号。
CAM 处理器目标(pt)设备
CAM 处理器目标(pt)设备的超时时间(可选),单位为秒。默认值为 60 秒。
在其他设备(例如磁盘)上进行 SES 直通操作
通常禁用此功能,是因为许多新型SCSI磁盘会报告自身具备 SES(SCSI Enclosure Services)功能,但这可能导致在构建拓扑时与磁盘所在机箱的 SES 设备产生冲突。
iSCSI
iSCSI 可通过网络连接(例如通过 TCP/IP 套接字)访问 SCSI 外设。
杂项设备和选项
BSD 风格兼容的伪 tty。
背靠背(back-to-back)tty 设备。
基于内存(通过 malloc 分配)的磁盘设备。
Snoop 设备 —— 用于查看 pty / vty 等等。
级联磁盘(Concatenated disk)驱动程序
firmware(9) 支持,firmware 映像的加载与管理。
内核端 iconv 库,参见 iconv(3)。
内核消息缓冲区的大小。应为 N × pagesize(内存页大小)。
硬件总线配置
PCI 总线与 PCI 相关选项。
硬件设备配置
对于 ISA,总线所需的提示已列出。PCI、CardBus 和 SD/MMC 是自识别总线,因此不需要提示。
必需设备
这些选项同样适用于其他键盘驱动程序。
定义键盘延迟(对于响应迅速的交互式控制台,可尝试 200、15)。
帧缓冲调试。
启用 syscons 终端仿真器(teken)的实验性功能。
vt 视频控制台驱动程序。
以上选项用于设置最大帧缓冲区大小。
以上选项能让你自定义默认 vt 终端的颜色。
可选设备
SCSI 主机适配器
PMC 的 Adaptec RAID 控制器,第 6/7/8 系列及即将推出的型号。容器接口,需要 CAM。
Adaptec 274x/284x/2910/293x/294x/394x/3950x/3960x/398X/4944/19160x/29160x,aic7770/aic78xx 系列
Adaptec 29320/39320 控制器
Qlogic ISP 1020、1040 和 1040B PCI SCSI 主机适配器
ISP 1240 双 Ultra SCSI,ISP 1080 和 1280(双)Ultra2
ISP 12160 Ultra3 SCSI
Qlogic ISP 2100 和 ISP 2200 1Gb 光纤通道主机适配器
Qlogic ISP 2300 和 ISP 2312 2Gb 光纤通道主机适配器
Qlogic ISP 2322 和 ISP 6322 2Gb 光纤通道主机适配器
isp 相关 hint。
isp 相关 hint。
我们无法获取 u_int64_t 类型,也无法获取以 0x 开头的字符串,因此使用了这个笨拙的变通方法。
Qlogic 主机适配器的固件模块。
第 4 代 LSI-Logic MPT/Fusion(仅适用于 aarch64 和 amd64)。
第 3 代 LSI-Logic MPT/Fusion(仅适用于 aarch64 和 amd64)。
第 2 代 LSI-Logic MPT/Fusion(仅适用于 aarch64 和 amd64)。
LSI-Logic MPT/Fusion 53c1020、53c1030 Ultra4、FC9x9 光纤通道主机适配器。
Symbios/Logic 53C8XX 系列 PCI-SCSI I/O 处理器(仅适用于 aarch64 和 amd64):
53C810
53C810A
53C815
53C825
53C825A
53C860
53C875
53C876
53C885
53C895
53C895A
53C896
53C897
53C1510D
53C1010-33
53C1010-66
只有在设置了此选项时,aic7xxx 驱动程序才会尝试对所有配置了内存映射 I/O 的 PCI 控制器使用内存映射 I/O。不幸的是,这在某些主板上无法工作,因此不能作为默认设置。
转储 ahc 控制器配置 PROM 的内容。
启用 ahc(4) target mode 操作的单元位图。
编译 Aic7xxx 调试代码。
Aic7xxx 驱动调试选项。参见 sys/dev/aic7xxx/aic7xxx.h。
在调试输出中打印寄存器位字段。会使驱动增加约 128KB 的大小。参见 ahc(4)。
编译 aic79xx 调试代码。
Aic79xx 驱动调试选项。会使驱动增加约 215KB。参见 ahd(4)。
在调试时打印可读的寄存器定义。
启用 ahd(4) target mode 操作的单元位图。
dev/isp/(Qlogic SCSI/FC 驱动)相关
dev/isp/(Qlogic SCSI/FC 驱动)相关ISP_TARGET_MODE 可启用 isp(4) target mode 操作。
ISP_DEFAULT_ROLES:默认角色。
none = 0
target = 1
initiator = 2
both = 3(当前不支持)
注意
此项在原文中即如此,不确定是否为一 options。请读者自行研究。
对 825a、875、885 的 HVD 支持。
禁用:0(默认);启用:1。
PCI 奇偶校验检查.
禁用:0;启用:1(默认)。
支持的 LUN 数量。
默认:8,范围:1-64。
Compaq “CISS” RAID 控制器(SmartRAID 5* 系列)
这些控制器带有类 SCSI 的接口,并且依赖 CAM 基础架构。
Compaq Smart RAID、Mylex DAC960 和 AMI MegaRAID 控制器。
仅需添加相关行条目;代码可自动发现,配置其支持的所有控制器。
NVMe
串行 ATA(SATA)主机控制器
兼容高级主机控制器接口(AHCI)。
Marvell 88SX50XX/88SX60XX/88SX70XX/SoC SATA 控制器。
SiliconImage SiI3124/SiI3132/SiI3531 SATA 控制器。
ATA/SATA 直接访问设备(即磁盘)。
以上驱动是 cam(4) 子系统的一部分。它们取代了功能较少的 ata(4) 子系统驱动,且支持相同的硬件。
ATA 驱动支持所有传统的 ATA/ATAPI 控制器,包括 PC 卡设备。
在现代机器上,你只需添加 device ata 这行,即可让系统发现所有 PCI 和 PC 卡 ATA/ATAPI 设备。
还可以通过使用 atacore 驱动,然后再按厂商判断各个总线和芯片组驱动来选择单独的驱动。例如,要构建一个仅支持 VIA 芯片组的系统,可以省略 ata 这行,仅包含驱动 atacore、atapci 和 atavia。
模块化 ATA。
PCI ATA 芯片组。
对于较旧的非 PCI、非 PnPBIOS 系统,需要添加的 hint 行。
串行接口(uart)
uart(4) 串行接口通用驱动程序。
uart(4) 驱动选项。
该 hint 仅应对纯 ISA 设备使用。其他情况下不需要。极不建议使用 hint。
以上三个 hint:当 UART 是系统设备(例如控制台或调试端口),又仅在平台上没有其他方式将信息传递给内核时使用。hint 的单元号(即 0)仅用于将 hint 组合在一起,与探测到的 UART 的单元号无关。
flags 用于支持控制台的串行驱动,例如 uart(4):
0x10:为该单元启用控制台支持。其他控制台标志(如适用)在未设置此标志时会被忽略。启用控制台支持并不意味着该单元是首选控制台。可以通过启动时使用
-h,或在 loader 中设置boot_serial=YES来启用。当前最多仅一个单元可以启用控制台支持;配置文件中第一个设置了该标志的单元为首选。0x80:在 ddb 中将该端口用于串行线路 gdb 支持,也称为调试端口。
串行驱动支持控制台的选项:
BREAK_TO_DEBUGGER:控制台上的 BREAK/DBG 会进入 ddb(如果可用)
Solaris 实现了一种新的 BREAK,由字符序列 CR ~ ^b(先按 回车键,然后按 ~,再按快捷键 Ctrl + B。以下类似) 触发,类似于 Sun 服务器上远程控制台使用的常见模式。
FreeBSD 对此进行了增补:CR ~ ^p 会触发强制 panic,CR ~ ^r 会触发干净重启。
串行通信控制器。
支持 Freescale/NXP Quad Integrated 和 Zilog Z8530 多通道通信控制器
PCI 通用通信驱动。
支持各种多端口 PCI I/O 卡。
网络接口
MII 总线
MII 总线是许多 PCI 以太网卡所必需的,尤其是那些使用 MII 兼容收发器或实现类似 MII 的收发器控制接口的网卡。
在内核配置中添加 device miibus 可引入对通用 miibus API 的支持、对 MII 的 bit-bang 通用支持以及所有 PHY 驱动,含为未被单独驱动专门处理的 PHY 提供的通用驱动。
如果网卡驱动需要特定 PHY 的支持,可以通过添加 device mii、device mii_bitbang,然后再添加相应的 PHY 驱动来实现。
基于通用 MII 总线控制器。bnxt 是 Broadcom NetXtreme-C 和 NetXtreme-E PCIe 10/25/50G 以太网适配器。
基于通用 MII 总线控制器代码的 PCI 以太网卡
技巧
bxeBroadcom NetXtreme II (BCM5771X/BCM578XX) PCIe 10Gb 以太网适配器。条目位于sys/x86/conf/NOTES。该 PCI 以太网卡基于通用 MII 总线控制器代码。
支持基于 Attansic/Atheros L2 PCI-Express FastEthernet 控制器的 10/100Mbps 快速以太网适配器。
支持基于 Attansic/Atheros L1 PCIe 千兆以太网控制器的千兆以太网适配器。
支持 Atheros AR8131/AR8132 PCIe 以太网控制器。
支持 Atheros AR8121/AR8113/AR8114 PCIe 以太网控制器。
注意
athAtheros a/b/g 无线网卡(需要ath_hal和wlan)。此条目在其他位置。
Broadcom NetXtreme II (BCM5706/BCM5708) PCI/PCIe 千兆以太网适配器。
Broadcom BCM4401 以太网适配器。
支持基于 Broadcom BCM570x 系列控制器的千兆以太网适配器,包括 3Com 3c996-T、Netgear GA302T、SysKonnect SK-9D21 和 SK-9D41,以及 Dell PowerEdge 2550 服务器上的嵌入式千兆网卡。
Sun Cassini/Cassini+ 和 National Semiconductor DP83065 Saturn。
支持基于 DEC/Intel 21143 及类似芯片的 PCI 快速以太网适配器,包括 ADMtek AL981 Comet、AN985 Centaur、ASIX AX88140A/AX88141、Davicom DM9100/DM9102、Lite-On 82c168/82c169、Lite-On/Macronix LC82C115 PNIC II 及 Macronix 98713/98713A/98715/98715A/98725 PMAC。替代旧的 al、ax、dm、pn 和 mx 驱动。支持品牌示例:Digital DE500-BA、Kingston KNE100TX、D-Link DFE-570TX 等。
Intel EtherExpress Pro/100B(可以通过 prefer_iomap 环境变量选择 I/O 访问而非内存映射)。
Apple GMAC/Sun ERI/Sun GEM。
JMicron JMC260 快速以太网/JMC250 千兆以太网适配器。
支持基于 Level 1 LXT1001 NetCellerator 芯片的 PCI 千兆以太网适配器,包括 D-Link DGE-500SX、SMC TigerCard 1000 (SMC9462SX) 及部分 Addtron 网卡。
lio: 支持 Cavium 23XX 系列以太网适配器。
mlxfw: Mellanox 固件更新模块。
Mellanox ConnectX-4 和 ConnectX-4 LX IB 与以太网共享代码模块。
Mellanox ConnectX-4 和 ConnectX-4 LX PCIe 以太网适配器。
msk: 支持基于 Marvell/SysKonnect Yukon II 千兆控制器的 PCI 千兆以太网适配器,包括 88E8021、88E8022、88E8061、88E8062、88E8035、88E8036、88E8038、88E8050、88E8052、88E8053、88E8055、88E8056 以及 D-Link 560T/550SX。
Myson 快速以太网 (MTD80X, MTD89X)。
支持基于 National Semiconductor DP83820/DP83821 芯片的 PCI 千兆以太网适配器,包括 SMC EZ Card 1000 (SMC9462TX)、D-Link DGE-500T、Asante FriendlyNet GigaNIX 1000TA/1000TPC、Addtron AEG320T、Surecom EP-320G-TX 和 Netgear GA622T。
Realtek 8139C+/8169/816xS/811xS/8101E PCI/PCIe 以太网适配器。
支持基于 Realtek 8129/8139 芯片的 PCI 快速以太网适配器。该驱动默认使用编程 I/O 访问寄存器,因为内存映射模式在 SMP 硬件上可能导致严重锁死。该驱动还支持 Accton EN1207D “Cheetah” 网卡,使用 MPX 5030/5038 芯片(Realtek 或其仿制品)。D-Link DFE-530TX+ 使用 Realtek 芯片,应使用此驱动,而非 vr 驱动。
Silicon Integrated Systems SiS190/191 快速/千兆以太网适配器。
支持基于 Silicon Integrated Systems SiS 900/SiS 7016 及 NS DP83815 PCI 快速以太网控制器芯片的网卡。
支持 SysKonnect SK-984x 系列 PCI 千兆以太网适配器,包括 SK-9841/9842 单端口(单模/多模光纤)及 SK-9843/9844 双端口(单模/多模)。驱动会自动检测网卡端口数量并将每个端口作为独立网络接口。
Sundance ST201 PCI 快速以太网控制器,包括 D-Link DFE-550TX。
支持基于 Sundance/Tamarack TC9021 系列控制器的千兆以太网适配器,包括 Sundance ST2021/ST2023、Sundance/Tamarack TC9021、D-Link DL-4000 和 ASUS NX1101。
支持基于 VIA VT3043 “Rhine I” 和 VT86C100A “Rhine II” 芯片的多种快速以太网适配器,包括 D-Link DFE520TX、DFE530TX(DFE530TX+ 使用 rl 驱动)、Hawking PN102TX 和 AOpen/Acer ALN-320。
DM&P Vortex86 RDC R6040 快速以太网。
支持 3Com 3c900、3c905、3c905B 和 3c905C(快速)Etherlink XL 网卡及集成控制器,包括部分 Dell Optiplex 和 Dell Precision 台式机的 3c905B-TX 芯片,以及 Dell Latitude 笔记本扩展坞的 3c905-TX 芯片。还支持 3Com 3c980(C)-TX、3Com 3cSOHO100-TX、3Com 3c450-TX。
使用 iflib 框架的 PCI/PCI-X/PCIe 以太网卡
iflib 网络接口驱动框架。
Intel Pro/1000 千兆以太网 82542/82543/82544 系列适配器。
此网卡基于通用 MII 总线控制器代码。
PCI 以太网卡
基于 Chelsio T3 的 1GbE/10GbE PCIe 以太网适配器。
此网卡基于通用 MII 总线控制器代码。
Chelsio T4/T5/T6 系列 1/10/25/40/100GbE PCIe 适配器。
此网卡基于通用 MII 总线控制器代码。
基于 Chelsio T4、T5 和 T6 的 PCIe 虚拟功能。
此网卡基于通用 MII 总线控制器代码。
AMD Am7900 LANCE 和 Am79C9xx PCnet 网卡。
此网卡基于通用 MII 总线控制器代码。
Myricom Myri-10G 10GbE 网卡。
Emulex 10G 适配器(OneConnect Ethernet)。
此网卡基于通用 MII 总线控制器代码。
支持基于 Alteon Tigon 1/2 芯片的 PCI 千兆以太网适配器,包括 Alteon AceNIC、3Com 3c985、Netgear GA620 等。使用此驱动时建议大幅增加 kern.ipc.nmbclusters。
此网卡基于通用 MII 总线控制器代码。
PCI IEEE 802.11 无线网卡
Atheros 相关无线网卡。
所有 AR5212 芯片在与 AR71xx CPU 配合使用时都会出现问题。这些型号存在一个仅会在 AR71xx 上触发致命总线错误的漏洞。漏洞的具体细节不太清楚,但可以在 https://forum.openwrt.org/viewtopic.php?pid=70060 的第 4、5 和 6 页找到一些信息。启用此选项可以应用该解决方法。该解决方法会带来性能损失,但若不启用,设备将完全无法工作。通常卡的 DMA 传输以 128 字节为突发,但在受影响的 CPU 上,只有 4 字节是安全的。
Atheros 相关无线网卡。
Broadcom BCM430和 BCM431 系列无线网卡。
此网卡基于通用 MII 总线控制器代码。
Broadcom BCM43xx 系列无线网卡。
此网卡基于通用 MII 总线控制器代码。
此网卡基于通用 MII 总线控制器代码。
此网卡基于通用 MII 总线控制器代码。mwl 依赖 mwlfw。
Ralink Technology IEEE 802.11 无线适配器。
此网卡基于通用 MII 总线控制器代码。
此网卡基于通用 MII 总线控制器代码。
在 ti(4) 控制器上使用 sf_buf(9) 接口处理 jumbo 缓冲区。
为 ti(4) 驱动固件启用头部拆分(header splitting)选项。此功能仅适用于 Tigon II 芯片,对 Tigon I 芯片无效。该选项需要依赖上面的选项 TI_SF_BUF_JUMBO。
这两个选项分别用于调整 mbuf 集群大小和 mbuf 大小。在将它们的默认值更改为其他值时,需要非常小心处理网卡驱动模块,因为这可能导致内核假定的 mbuf 大小与模块假定的 mbuf 大小不匹配。目前,唯一能够检测这种不匹配的驱动是 ti(4)。
音频设备
通用音频驱动。
snd_*:设备专用驱动
Avance Logic ALS4000 PCI。
ATI IXP 200/300/400 PCI。
CMedia CMI8338/CMI8738 PCI。
Crystal Semiconductor CS4281 PCI。
Crystal Semiconductor CS461x/428x PCI(不含 4281)。
Creative EMU10K1 PCI 和 EMU10K2(Audigy)PCI。
Creative SoundBlaster Live! 和 Audigy。
VIA Envy24 及兼容设备,依赖 snd_spicds。
VIA Envy24HT 及兼容设备,依赖 snd_spicds。
Ensoniq AudioPCI ES137x PCI。
Forte Media FM801 PCI。
Intel 高保真音频(控制器)及兼容设备。
RME HDSP 9632 和 HDSP 9652。
RME HDSPe AIO 和 RayDAT。
Intel ICH AC'97 以及更多集成在芯片组中的音频控制器,例如 nVidia nForce 控制器。
ESS Technology Maestro-3/Allegro PCI。
Neomagic 256 AV/ZX PCI。
ESS Solo-1x PCI。
SPI 编解码器驱动,Envy24/Envy24HT 驱动所需。
Trident 4DWave DX/NX PCI、SiS 7018 PCI 和 Acer Labs M5451 PCI。
USB 音频。
VIA VT8233x PCI。
VIA VT82C686A PCI。
S3 Sonicvibes PCI。
用于非 PnP 声卡的 hint
设备的标志位能向设备提供一些额外信息,这些信息通常会通过 PnP 接口获得。
bit 2..0:次级 DMA 通道;
bit 4:如果主板使用两个 DMA 通道,则设置该位;
bit 15..8:主板类型,覆盖自动检测;如果不知道该填什么,请保持为
0(而且你确实不知道,因为目前不支持此功能)。
调试/测试
启用额外调试代码,包括健全性检查和可能增加的详细输出。
SND_DIAGNOSTIC 类似 INVARIANTS/DIAGNOSTIC,完全不容忍任何不一致。
SND_FEEDER_MULTIFORMAT 默认只编译 16/32 位 feeder。此选项将启用大多数 feeder 转换器(不含 8 位)。
警告
可能导致内核体积膨胀。
SND_FEEDER_FULL_MULTIFORMAT 同上(SND_FEEDER_MULTIFORMAT),但包含 8 位 feeder。
SND_FEEDER_RATE_HP (feeder_rate)将尽可能使用高精度 64 位运算(默认会尽量避免)。可能造成运算速度下降。
SND_PCM_64(仅适用于 i386/32 位架构)通过 64 位整数/运算处理 32 位采样。可略微提升动态范围,但运算速度可能变慢。
SND_OLDSTEREO 仅允许 2 声道,相当于禁用多声道处理。
CardBus(PC 卡总线接口)
实现 YENTA 接口的 PCI / CardBus 桥。
CardBus 插槽。
MMC/SD
MMC/SD 总线。eMMC 芯片需要。
MMC/SD 内存卡。eMMC 芯片需要。
通用 PCI SD 主机控制器。
Realtek SD 卡读卡器(RTS5209、RTS5227 等)。
SMB 总线
系统管理总线(System Management Bus)支持由 “smbus” 设备提供。
通过 smb 设备(/dev/smb*)访问 SMBus,该设备是 smbus 的子设备。
设备支持
通过 /dev/smb* 进行标准 I/O。
SMB 接口支持
smb 总线支持,依赖上方的 smb 设备。
Intel PIIX4(82371AB, 82443MX)电源管理单元。
在 Intel intpm 驱动上控制报警。
Acer Aladdin-IV/V/Pro2 电源管理单元。
Intel ICH SMBus 控制器芯片(82801AA、82801AB、82801BA)。
VIA VT82C586B/596B/686A 及 VT8233 电源管理单元。
AMD 756 电源管理单元。
AMD 8111 SMBus 2.0 控制器。
NVIDIA nForce 电源管理单元。
NVIDIA nForce2/3/4 MCP SMBus 2.0 控制器。
Intel SMBus 2.0 控制器芯片(用于 Atom S1200、C2000)
SMBus 外设设备
DDR3 和 DDR4 DIMM 的资产和温度报告。
I²C 总线
飞利浦 I²C 总线支持由设备 iicbus 提供。
提供 I²C 总线支持,下方的 ic、iic、iicsmb 等设备均依赖于此
支持的设备
I²C 网络接口。依赖 iicbus。
I²C 标准 I/O。依赖 iicbus。
通过 ioctl(8) 在用户空间访问 I²C 从设备。
通过 I²C 桥接的 SMB(使用任意 iicbus 接口的 I²C 到 SMB 桥。)。可通过 SMB 命令进行 I²C I/O。依赖 iicbus。
OpenCores I²C 控制器支持。
OpenCores I²C 控制器的简单轮询驱动。
其他
Bitbang 驱动;在一对 GPIO 引脚上实现 I²C。通用 I²C 位操作(bit-banging)代码(lpbb 所需)。
I²C 总线多路复用器(mux)设备
I²C 多路复用器核心驱动。
通过 GPIO 引脚控制的 I²C 多路复用器硬件。
LTC4305 和 LTC4306 I²C 多路复用器芯片。
I²C 外设设备
模拟器件温度和电压传感器。
德州仪器 ADS101x 和 ADS111x ADC。
Dallas DS1307 RTC 及兼容芯片。
所有 Dallas/Maxim ds13xx 系列芯片。
Dallas DS1672 RTC。
Dallas DS3231 RTC + 温度。
仙童半导体 FAN53555/SYR82x 稳压器。
AT24Cxxx 及兼容 EEPROM。
Intersil ISL12xx RTC。
LM75 兼容温度传感器。
NXP RTC:PCA/PFC212x PCA/PCF85xx 系列。
爱普生 RTC-8583。
Seiko Instruments S-35390A RTC。
矽力杰 SY8106A 降压稳压器。
并行总线接口
并行总线接口由 ppbus 设备驱动。多个设备可同时连接到并行接口,当检测到设备时,可自动将其探测,附加。
支持的接口
ISA 总线并行端口接口。
支持的设备
启用特定芯片组检测(参见 ppc(4) 中的标志)。
IEEE1284 信号协议调试。
使计算机作为 IEEE1284 兼容外设。
避免启动时检测 PnP 并行设备。
打印机驱动调试。
并行芯片组级别调试。
并行网络 IP 接口调试。
pcfclock 驱动详细输出。
最大读取尝试次数(默认 10 次)。
并行打印机。
并行网络接口。
通用 I/O(“Geek Port”)+ IEEE1284 I/O。
每秒脉冲计时接口。
飞利浦官方并行端口 I²C 位操作接口
并行端口时钟驱动。
通用 I/O 引脚(GPIO)
Synopsys DesignWare APB GPIO 控制器。
GPIO 接口及总线支持。
sysctl 控制的背光,基于 GPIO。
通过 GPIO bitbang 实现 I²C。
用于 GPIO 键输入的 kbd(4) 连接层。
LED(4) GPIO 连接层。
GPIO 电源关闭事件处理器。
来自 GPIO 引脚的每秒脉冲输入。
GPIO 引脚的 extres/稳压器连接层。
通过 GPIO bitbang 实现 SPI。
基于 GPIO 引脚的 1-Wire(单总线协议)温湿度传感器。
脉宽调制(PWM)
PWM 接口及总线支持。
用户空间对 PWM 输出的控制访问。
Etherswitch 框架与驱动
etherswitch(4) 以太网交换机框架。
miibus(4) MII 总线功能代理设备。
Atheros 交换机。
IC+ 17x 系列交换机。
Realtek RTL8366 交换机。
多物理层交换机。
内核 BOOTP 支持
使用 BOOTP 获取 IP 地址/主机名
通过 BOOTP 信息挂载 NFS 根文件系统,依赖 NFSCL 和 NFS_ROOT。
使用 NFS v3 协议挂载 NFS 根目录。
为了兼容有缺陷的 bootp 守护程序的变通方案。
指定 fxp0 网络接口运行 BOOTP。
重写 NFS 块大小为 8192
哪怕存在硬件看门狗,仍启用软件看门狗例程。在默认情况下,仅当硬件看门狗不存在时才会启用软件看门狗定时器。
添加软件死锁解析器线程。
设置要分配的 sf_buf 数量。sf_buf 是 sendfile(2) 使用的虚拟缓冲区,用于映射文件虚拟内存页,默认数量约为 16*MAXUSERS+512。通常每个并发文件传输需要约 4 个此类缓冲区。
启用锁机制的额外调试代码。此功能会将获取锁的文件名和行号信息存储在锁结构中,并修改多个函数调用来传递相关数据。除非正在进行锁代码调试,否则此功能完全无用。
注意
该选项会修改内核二进制接口(KBI),需要重新编译所有内核模块。
VirtIO
virtio 条目提供了一种通用总线供设备驱动程序使用。该总线必须与主机通信的接口结合使用。VirtIO 规范定义了多种此类接口,包括 PCI 和 MMIO。
通用 VirtIO 总线(必须启用)。
VirtIO MMIO 接口。
VirtIO PCI 接口。
VirtIO 以太网设备。
VirtIO 内存气球(Balloon)设备。
VirtIO 块设备。
VirtIO 控制台设备。
VirtIO GPU 设备。
VirtIO 熵设备。
VirtIO SCMI 设备。
VirtIO SCSI 设备。
HID(人机界面设备)支持
通用 HID 支持。
启用调试信息。
HID 总线。
HID 到 evdev 映射。
裸访问驱动。
为 /dev/hidraw 安装别名 /dev/uhid。
多触点配置表。
消费者控制。
通用游戏控制器。
HID 键盘。
HID 鼠标。
HID 多点触控(兼容微软标准)。
通用手写笔驱动。
系统控制。
索尼 PS4 DualShock 4 游戏手柄驱动。
FIDO/U2F 认证器。
不为 /dev/u2f/ 安装别名 /dev/uhid,并将驱动名称从 uhid 更改为 u2f。
Xbox 360 游戏手柄驱动。
USB 支持
UHCI 控制器。
OHCI 控制器。
EHCI 控制器。
XHCI 控制器。
SL811 控制器。
通用 USB 代码(USB 必需)。
USB 双批量(Bulk)管道设备。
USB 温度计。
USB LED 灯。
HID 人机接口设备(其他带有按钮和拨盘的设备)。
USB 键盘。
USB 打印机。
USB 大容量存储设备驱动(依赖 scbus 和 da)。
设备端模式的 USB 大容量存储驱动。
Belkin(贝尔金)F5U109 和 Magic Control Technology(茂傑国际)串行适配器的 USB 支持。
USB 调制解调器。
USB 鼠标。
USB 触控板。
eGalax USB 触摸屏。
Diamond(帝盟)Rio 500 MP3 播放器。
HID-over-USB 驱动。
USB 串口
USB 串口支持。
对 Option、Novatel、华为和 Sierra 3G 调制解调器卡的 USB 支持
对基于 Technologies ARK3116 芯片的串行适配器的 USB 支持。
对 Belkin(贝尔金)F5U103 及兼容串行适配器的 USB 支持。
对基于 FT8U100AX 和 FT8U232AM 芯片的串行适配器的 USB 支持。
对某些基于 Windows CE 的串行通信设备的 USB 支持。
对 Prolific(旺玖科技)PL-2303 串行适配器的 USB 支持。
对基于 Silicon Laboratories(芯科科技)CP2101/CP2102 芯片的 USB 串行适配器支持。
USB Visor 和 Palm 设备支持。
对 DDI Pocket PHS 设备的 USB 串行的支持。
USB 以太网
USB 以太网。
ADMtek(上元)USB 以太网设备。支持 LinkSys USB100TX、Billionton USB100、Melco LU-ATX、D-Link DSB-650TX 和 SMC 2202USB。同时也兼容 ADMtek AN986 Pegasus 评估板。
ASIX Electronics(亚信电子)AX88172 USB 2.0 以太网驱动。用于 LinkSys USB200M 及各种其他适配器。
ASIX Electronics(亚信电子)AX88178A/AX88179 USB 2.0/3.0 千兆以太网驱动。
使用基于 USB 的以太网进行通信的设备,特别是符合通信设备类(CDC)以太网规范。支持夏普 Zaurus 掌上电脑、部分 DOCSIS 有线调制解调器及移动电话等设备。
CATC USB-EL1201A USB 以太网设备。支持 CATC Netmate 和 Netmate II,以及 Belkin(贝尔金)F5U111。
Kawasaki(川崎)LSI 以太网设备。支持以下适配器:
LinkSys USB10T
Entrega USB-NET-E45
Peracom 以太网适配器
3Com 3c19250
ADS Technologies USB-10BT
ATen UC10T
Netgear EA101
D-Link DSB-650
SMC 2102USB 和 2104USB
Corega USB-T
Realtek RTL8150 USB 转快速以太网设备。支持 Melco LUA-KTX 和 GREEN HOUSE GH-USB100B。
Davicom(联傑国际)DM9601E USB 转快速以太网设备。支持 Corega FEther USB-TXC。
Realtek RTL8152/RTL8153 USB 以太网驱动程序。
Moschip MCS7730/MCS7840 USB 转快速以太网设备。支持 Sitecom LN030。
Option N.V. 公司的 HSxPA 设备。
Realtek RTL8188SU/RTL8191SU/RTL8192SU 无线驱动程序。
Ralink Technology(雷凌科技)RT2501USB/RT2601USB 无线驱动程序。
Ralink Technology(雷凌科技)RT2700U/RT2800U/RT3000U 无线驱动程序。
Atheros AR5523 无线驱动程序。
Conexant(科胜讯)/Intersil(英特矽尔)PrismGT 无线驱动程序。
Ralink Technology(雷凌科技)RT2500USB 无线驱动程序。
RNDIS USB 以太网驱动。
Realtek RTL8187B/L 无线驱动程序。
ZyDas ZD1211/ZD1211B 无线驱动程序。
Sierra USB 无线设备。
USB 子系统的调试选项。
用于 ukbd 的选项。
用于 uplcom 的选项。
用于 uvscom 的选项。
火线(FireWire)
火线总线代码。
基于火线的 SCSI(依赖 scbus 和 da)。
SBP-2 目标模式(依赖 scbus 和 targ)。
基于火线的以太网(非标准实现!)。
基于火线的 IP 协议(RFC2734 和 RFC3146)。
dcons 哑终端支持(简易控制台设备)
哑终端驱动。
哑终端火线附件。
哑终端缓冲区大小。
哑终端轮询速率。
强制将哑终端作为主控制台。
强制将哑终端设置为 GDB 设备。
加密子系统
此版本是从 OpenBSD 移植的加密框架。当配置 IPSEC 或拥有硬件加密设备时需包含此模块,可加速链接到 OpenSSL 的用户应用程序。
相关驱动程序移植自 OpenBSD,其中包含一些已反馈给 OpenBSD 的简单功能增强。
核心加密子系统支持。
/dev/crypto:用于访问硬件加密设备。
应仅在进行测试或明确知晓需要时才安装 cryptodev 设备。在大多数情况下,该设备并非必需,且可能导致系统性能下降。
FIPS 140-2 熵测试器。
Chelsio T6 加密加速器驱动程序。
SafeNet SafeXcel 1141/1741 加密加速器。
启用调试支持:hw.safe.debug。
启用 rndtest(4)(FIPS 140-2 随机数生成器测试监视器)支持。
嵌入式系统
嵌入式系统可能需要运行 init 以外的程序。
调试选项
启用 newbus 调试。
启用 VFS 锁调试。
启用 sockbuf 最后记录/mb 尾部检查。
启用 net/if_media.c 中的调试功能。
SYSINIT 详细输出
使 mi_startup() 执行的 SYSINIT 过程输出详细信息。该功能在移植新架构时非常实用。若同时启用了 DDB 调试器,将显示函数名称而非地址。若定义值为 0,则详细输出代码会被编译进内核但默认禁用,可通过可调参数 debug.verbose_sysinit=1 启用。
SYSV IPC 内核参数
系统可同时使用的 System V 信号量最大数量。
系统范围内信号量总数。
系统中撤销结构总数。
单个进程可同时使用的 System V 信号量最大数量。
单个 System V 信号量可同时挂起的最大操作数。
单个 System V 信号量可同时挂起的最大撤销操作数。
系统范围内共享内存页面的最大数量。
单个 System V 共享内存区域的最大大小(以字节为单位)。
单个 System V 共享内存区域的最小大小(以字节为单位)。
系统可同时使用的共享内存区域最大数量。
单个进程可同时附加的 System V 共享内存区域最大数量。
设置系统在内核发生 Panic 时自动重启前的等待时间(以秒为单位)。若设置为(-1),系统将无限期等待,直至在控制台上按下任意键。
当文件设置了标志 O_DIRECT 时,尝试绕过缓冲区缓存,将数据直接放入用户空间的缓冲区进行读取操作。读取操作的偏移量和长度必须是物理介质扇区大小的整数倍。
指定交换 I/O 缓冲区数量的下限。这些缓冲区在(除其他情况外)启用内核选项 DIRECTIO 且文件设置标志 O_DIRECT 时,用于绕过缓冲区缓存。
未有文档描述的 lint 检查选项。
注意
为这些选项提供文档并不会被视为冒犯行为。
内核文件锁调试。
System V 兼容消息队列
队列中最大字符数。
注意
此处提供的数值用于测试内核构建。
源代码中的默认值提供了几乎相同的数值。MSGSSZ 必须介于是 8 到 1024 之间的 2 的幂的值。
最大消息队列标识符数量。
最大消息段数量。
消息段大小。
系统中最大消息数量。
缓冲区头数量。
syscons 调试级别。
syscons 渲染调试。
VFS 缓冲区 I/O 调试。
内核栈最大可分配页数。
跟踪线程在内核中使用的最大栈空间。
Adaptec 阵列控制器驱动选项
调试级别:
0:静默模式,仅显示警告信息1:详细模式,显示主要功能点和已完成操作2:极端详细模式,显示循环内的跟踪项等详细信息
资源审计。
资源限制。
未有文档描述的 lint 检查选项。
随机数生成器
可选算法。
将 CSPRNG 算法作为模块加载。
选择此项能以高频率(但可能消耗资源)的方式收集 Slab 分配器的熵值。在极高频率场景下,此功能的价值存疑。
选择此项能以高频率(但可能消耗资源)的方式收集 mbuf 中 m_next 指针的熵值。
注意
除非正在接收超过 4K 的巨型帧或通过 LRO 技术实现持续数据突发,否则
m_next指针通常为 NULL。因此在常规情况下,该操作实际是在向熵池注入零值。即使该指针非空,它也只是指向某个经过 256 字节对齐的 mbuf(其数量范围在数千至数万之间)。因此,哪怕是在最理想情况下,这也是一种劣质的熵源。若未对熵收集进行实际运行时分析,可能会误导用户认为收集到的熵量远超实际值——这将引发另一类安全风险。在高数据包速率场景下,以太网熵收集的成本极其高昂,可能导致高达 50% 的数据包接收丢失率。本选项仅为保持向后兼容性而提供,但无论如何都不建议在任何环境中使用。
通过键盘收集熵值。
通过鼠标收集熵值。
通过 TPM 收集熵值。
用于通过 QEMU 等模拟器启用应用程序执行的模块。
zlib 输入/输出流支持
此选项用于支持生成经过压缩的核心转储文件。
zstd
此选项用于支持 Zstd 压缩的核心转储文件、GEOM_UZIP 镜像,并且在静态链接时是 ZFS 文件系统必需的组件。
BHND(4) 驱动
日志记录阈值级别。
evdev 接口
输入事件设备支持。
传统驱动程序中的 evdev 支持。
启用事件调试消息。
安装字符设备 /dev/uinput。
启用 uinput 调试消息。
加密的内核崩溃转储
加密的内核崩溃转储
串行外设接口(SPI)
SPI 总线支持。
DataFlash 驱动程序。
SPI flash 驱动程序。
用户空间对 SPI 设备的通用访问支持。
spigen 的传统设备名称:为 /dev/spigenX.Y 设备启用传统的别名 /dev/spigenN。
压缩支持
gzip/zlib 压缩/解压缩库。
xz_embedded LZMA 解压缩库。
内核 stats(3) 支持
内核级 stats(3) 支持。
文件系统监控
make(1) 元(meta)模式的文件监控。
英特尔 QuickAssist (QAT) 驱动程序
Intel QuickAssist (QAT) ,英特尔数据保护与压缩加速技术。
禁用 QAT 安全模式。
最后更新于
这有帮助吗?