ICH7 は AHCI をサポートしているので、何か方法があるのではと思って Google 検索(キーワード:ICH7 AHCI setpci)したところ、先人の方が居られ、いじる方法はわかりました。
# setpci -s 0:1f.2 90.b=40末尾の 40 が AHCI モードを指示することになるようです。80 だと RAID モード指示になる。
ただ、この操作を行っても、既にデバイスは ata_piix に掴まれているし、リブートすると元に戻ってしまいます(おそらく BIOS が再設定)。ネット上では grub に setpci 相当をやらせるという方法(OS の起動前にいじる方法)があるようでしたが、ふと、kexec でウォームリブートすれば、setpci で施した設定を保ったままリブートできるのではと思い、やってみたところうまくいきました。
http://docs.oracle.com/cd/E37670_01/E37355/html/ol_setup_kexec.html
こちらの runkexec スクリプトを拝借しまして、
# chown root:root /etc/init.d/runkexec # chmod 755 /etc/init.d/runkexec # service runkexec start # shutdown -r nowで、AHCI に変更成功です。
setpci -s 0:1f.2 90.b=40 service runkexec start shutdown -r now上記内容を含むスクリプト(/root/bin/enable_ahci_and_reboot)でも書いて、運用してみたいと思います。HDD の NCQ 効果は僅かでしょうけど、なんだか得した気分( ̄ー ̄)
2014-09-07追記
grub2 のコマンドラインでは、lspci や setpci が使えるようです。ちょっとびっくり(まさか、そんなことができるとは!)。ICH7 のような古マシンで CentOS 7 を使う人は、わずかとは思いますが、例えば /etc/grub.d/15_enable_ahci に次のように書けば、ウォームリブートなどしなくても、AHCI モード変更できるようです。
#!/bin/sh cat <<EOF setpci -s 0:1f.2 90.b=40 EOF
# chmod 755 /etc/grub.d/15_enable_ahci # grub2-mkconfig -o /boot/grub2/grub.cfg
2014-11-01追記
おそくなりましたが、当該マシンの lspci を確認したところ、82801GR (ICH7R) だったというオチでした。失礼しました。匿名さま、コメントをどうもありがとうございました。