ASUS P5W DH Deluxe 975X+ICH7R の SATA ハードディスクの認識 (2007/06/06)

マザーボード ASUS P5W DH Deluxe 975X+ICH7R のマシンに Debian/GNU Linux sid をインストールしました.CPU は Intel Core 2 Extreme 2.93GHz です.以前にもIntel ICH7R におけるシリアルATAコントローラについてで書きましたが,ハードディスクが /dev/sda か /dev/sdc のどちらに認識されるかどうかがよく分からない,という問題がありました./dev/sdc に認識される確率が高かったため,/dev/sdc で認識されるものとして設定していました.しかし,cfdisk などでパーティション構成を見ようとすると,/dev/sda を指定しなければならず,おかしな状況に落ち入っていました.

/dev/sdc にハードディスクが認識されるとき,/dev/sda と /dev/sdb がリムーバブルハードディスクとして認識されます.実際,dmesg で関連する部分のログを見ると,

  Vendor: Generic   Model: STORAGE DEVICE    Rev: 9317
  Type:   Direct-Access                      ANSI SCSI revision: 00
  Vendor: Generic   Model: STORAGE DEVICE    Rev: 9317
  Type:   Direct-Access                      ANSI SCSI revision: 00
usb-storage: device scan complete
sd 0:0:0:0: Attached scsi removable disk sda
sd 0:0:0:1: Attached scsi removable disk sdb
...
  Vendor: ATA       Model: ST3320620AS       Rev: 3.AA
  Type:   Direct-Access                      ANSI SCSI revision: 05
SCSI device sdc: 625142448 512-byte hdwr sectors (320073 MB)
となっています.できれば,シリアルATAのハードディスクを /dev/sda に認識してもらいたいものです.

そこで当初,イーサネットカードのデバイス名を割り当てるに書いたように,udev を用いてハードディスクを /dev/sda として割り当ててもらえないかと考えました.しかし,結果的にうまくいきませんでした.

次に,デバイスの認識の順番であるので,/etc/modules か /etc/mkinitrd/modules を変更すればよいのではないかと考えました.より早く読みこまれると思われる /etc/mkinitrd/modules を変更することにしました.その手順は次のとおりです.

  1. /etc/mkinitrd/modules に次の2行を書き加えます.

    ata_piix
    ahci
    

    ahci はシリアルATAコントローラの設定で BIOS で AHCI (Advanced Host Controller Interface) のモードを選択している場合,書き加えたほうが無難です.

  2. initrd のイメージを作成します.

    # mkinitrd -o /boot/initrd.img-2.6.21-2-amd64 2.6.21-2-amd64
    

    なお,書き込んだ内容は次のように確認します.

    # mount -o loop /boot/initrd.img-2.6.21-2-amd64 /mnt
    

    そして,/mnt/loadmodules の中身を見ます.

    modprobe -k  ata_piix
    modprobe -k  ahci
    modprobe -k  unix 2> /dev/null
    modprobe -k  usb-storage
    modprobe -k  sd_mod
    

    このように,ata_piix や ahci が先に読み込まれるのが確認できます.

  3. /etc/fstab をマウントするデバイスを /dev/sdc から /dev/sda に変更します.

    ...
    /dev/sda5 /     ext3 defaults,errors=remount-ro 0 1
    /dev/sda2 /boot ext3 defaults                   0 2
    ...
    
  4. 再起動します.

以上の結果,/dev/sda がハードディスクとして認識されるようになりました.以下は,dmesg の出力です.

  Vendor: ATA       Model: ST3320620AS       Rev: 3.AA
  Type:   Direct-Access                      ANSI SCSI revision: 05
SCSI device sda: 625142448 512-byte hdwr sectors (320073 MB)
...
sd 0:0:0:0: Attached scsi disk sda
...
  Vendor: ATA       Model: Config  Disk      Rev: RGL1
  Type:   Direct-Access                      ANSI SCSI revision: 05
SCSI device sdb: 640 512-byte hdwr sectors (0 MB)
...
sd 1:0:0:0: Attached scsi disk sdb
...
  Vendor: Generic   Model: STORAGE DEVICE    Rev: 9317
  Type:   Direct-Access                      ANSI SCSI revision: 00
sd 4:0:0:0: Attached scsi removable disk sdc
  Vendor: Generic   Model: STORAGE DEVICE    Rev: 9317
  Type:   Direct-Access                      ANSI SCSI revision: 00
sd 4:0:0:1: Attached scsi removable disk sdd

(追記 2007/07/27) linux-image-2.6.18-4-amd64 のときは,/etc/mkinitrd/modules に achi を書き込まなくても,initrd.img のロードするモジュールに achi が含まれていましたが,linux-image-2.6.21-2-amd64 から /etc/mkinitrd/modules に achi を書き込まなければ,achi をロードしてくれませんでした.その場合,Kernel panic で起動停止しますので,/etc/mkinitrd/modules に achi を書き加えるほうが無難かと思います.


梅原 大祐 / UMEHARA Daisuke umehara@kit.ac.jp
Last modified: 2020/05/01 15:37
Total Access Count