# AHCI (简体中文)

From ArchWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
翻译状态：本文是 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 (简体中文)