AHCI

来自 Arch Linux 中文维基

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

选择 AHCINative, 保存并退出 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 镜像。

参阅[编辑 | 编辑源代码]