AHCI (简体中文) - ArchWiki

Jump to content

# AHCI (简体中文)

From ArchWiki
翻译状态：本文是 AHCI 的翻译。上次翻译日期：2021-04-11。如果英文版本有所更改，则您可以帮助同步翻译。

AHCI, Advanced Host Controller Interface 的缩写，意思是 高级主机控制器接口, 这是一种SATA设备特有的工作模式.通常AHCI需要通过BIOS来开启或关闭，通过BIOS启用AHCI有两大好处：热插拔SATA驱动器（模拟USB驱动器的行为）和NCQ。该特性在 Linux kernel 2.6.19 以后开始提供支持,现在的 Arch 内核会自动加载 ahci 模块.

## 设置BIOS

进入BIOS的方法因主板的不同而不通; 通常, 在启动计算机时按`Del` 就可以进入BIOS，笔记本可能是`F2`。

进入BIOS之后, 找到跟下面类似的选项:

    Enable SATA as: IDE/AHCI

或者:

    SATA: PATA Emulation/Native/Enhanced

选择 `AHCI` 或 `Native`， 保存并退出 BIOS. 如果你没有找到对应的选项请参考主板说明书，因为选项的名字可能不一样。

BIOS修改完之后， Linux 下次启动将会加载 AHCI 驱动。 通过 `dmesg` 命令的输出可以确定是否正常加载:

    SCSI subsystem initialized
    libata version 3.00 loaded.
    ahci 0000:00:1f.2: version 3.0
    ahci 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19
    ahci 0000:00:1f.2: irq 764 for MSI/MSI-X
    ahci 0000:00:1f.2: AHCI 0001.0200 32 slots 6 ports 3 Gbps 0x3f impl SATA mode
    ahci 0000:00:1f.2: flags: 64bit ncq sntf stag pm led clo pmp pio slum part ems
    ahci 0000:00:1f.2: setting latency timer to 64
    scsi0 : ahci
    scsi1 : ahci
    scsi2 : ahci
    scsi3 : ahci
    scsi4 : ahci
    scsi5 : ahci

and for NCQ:

    ata2.00: 625142448 sectors, multi 16: LBA48 NCQ (depth 31/32)

## 问题解决

如果安装 Arch 后 STAT 配置从 IDE 变为 AHCI, AHCI 模块可能无法正确加载。启动时会出现找不到根分区的错误提示。

这时，应该可以用 `failsafe` 启动选项进行启动，启动后请执行 mkinitcpio 重新生成 initramfs 镜像。

## 参阅

- AHCI on Wikipedia
- NCQ on Wikipedia

Category:

- Storage (简体中文)