UP | HOME

设备资源提示

Table of Contents

设备资源提示文件 device.hints 是 FreeBSD 引导过程中的配置文件

系统启动时,boot loader(8) 读取该文件,其内容传递给内核,用于控制内核的引导行为,但也可包含任何内核可调参数值

device.hints 存储了内核启动时使用的配置变量,供设备驱动程序在设备配置过程中使用

device.hints 文件结构

/
├── boot/ 操作系统引导过程中使用的程序和配置文件
│    └── device.hints 设备资源提示文件
└── sys/
     └── ARCH/ 某架构,具体参见内核
          └── conf/ 内核配置相关文件
               ├── GENERIC.hints GENERIC 内核的设备资源提示示例
               └── NOTES 关于内核配置文件和设备资源提示的说明

基本系统中的 device.hints

基本系统中 device.hints 文件的默认内容根据架构的不同而变化:

# 下面的驱动大多数已经被现代计算机所淘汰,或在个人 PC 上较为罕见

# AT 键盘控制器驱动 atkbdc(4) AT 机,1980 年代产物
hint.atkbdc.0.at="isa"  # at:指定设备所连接的总线
hint.atkbdc.0.port="0x060"  # port:即指定设备将使用的 I/O Port 起始地址
hint.atkbd.0.at="atkbdc"
hint.atkbd.0.irq="1"  # irq:要使用的中断线路编号

# PS/2 外设 IBM 兼容鼠标驱动 psm(4),1980 年代产物

#isa
# └── atkbdc0
#       ├── atkbd0
#       └── psm0

hint.psm.0.at="atkbdc"
hint.psm.0.irq="12"

# syscons(4) 传统控制台驱动
hint.sc.0.at="isa"
hint.sc.0.flags="0x100"  # flags:为设备设置标志位

# 串口驱动 uart(4)
hint.uart.0.at="acpi"  # 即设置 COM1
hint.uart.0.port="0x3F8"
hint.uart.0.flags="0x10"
hint.uart.1.at="acpi"  # 即设置 COM2
hint.uart.1.port="0x2F8"

# RTC 驱动(实时时钟 atrtc(4))
hint.atrtc.0.at="isa"
hint.atrtc.0.port="0x70"
hint.atrtc.0.irq="8"

# i8254 可编程间隔定时器(AT 定时器)驱动 attimer(4)
hint.attimer.0.at="isa"
hint.attimer.0.port="0x40"
hint.attimer.0.irq="0"

# 禁用 ACPI CPU throttle 驱动,参见 cpufreq(4)
hint.acpi_throttle.0.disabled="1"  # disabled:设置为 “1” 意味着禁用该设备

# 禁用 Pentium 4 热控制,参见 cpufreq(4)
hint.p4tcc.0.disabled="1"

根据源代码分析,sys/amd64/conf/GENERIC.hints 即为 amd64 架构默认的 device.hints 文件

device.hints 语法

device.hints 采用每行一个变量的格式,语法如下:

hint.驱动.单元编号.关键字="值"

该行用于为驱动程序的指定单元编号设备实例设置资源或属性(注释标记为 #)。其中,

  • 驱动 : 设备驱动名称
  • 单元编号 : 设备驱动的单元编号
  • 关键字 为提示关键字。关键字可以是以下选项:
    • at:指定设备所连接的总线
    • port:指定要使用的 I/O 起始地址
    • irq:指定要使用的中断请求号
    • drq:指定 DMA 通道号
    • maddr:指定设备所占用的物理内存地址
    • flags:为设备设置各种标志位
    • disabled:如果设置为 1,则禁用该设备
hint.atkbdc.0.at="isa"

将驱动 atkbdc AT 键盘控制器 的 设备实例 0 附加 attachISA 总线 ,即指定 0 号 atkbdc 设备位于 ISA 总线上。

第 3 阶段引导加载器

可以在第 3 阶段引导加载器提示符处指定设备提示,将覆盖写在 /boot/device.hints 中的变量

在引导加载器中输入的设备提示仅在当次启动会话中生效,重启后即失效

第 3 阶段引导加载器的语法为:

set hint.驱动.单元编号.关键字=值

使用 set 添加变量,用 unset 删除变量,用 show 查看变量

Next: Sysctl工具 Previous: 用户提权 Home: 系统管理