Vine3.1でVIA VT6421 SATA/PATAコントローラを使う


玄人志向のSAPARAID-PCIに繋いだPATAのHDDにVine3.1をインストールしてみたのでメモ。
普通に繋いでVine3.1のインストールディスクで起動してみても、ドライバが無いので認識しない。(そうでなければわざわざこんなメモを残す必要も無い)

ドライバディスクを作成する

  1. ドライバのダウンロードと解凍

    VIAのサイトからドライバvia_raid_linux_v100_20040412.zipをダウンロードし、とりあえず/tmpに置いて解凍しておく。
     $ cd /tmp
     $ wget http://downloads.viaarena.com/LinuxApplicationNotes/Apr04/via_raid_linux_v100_20040412.zip
     $ unzip via_raid_linux_v100_20040412.zip
    
  2. カーネルソースの準備

    ドライバのコンパイルにはカーネルのソースが必要なので用意する。
    1. 適当なサイトからVine3.1のカーネル2.4.27-0vl7のSRPMをダウンロードする。
       $ wget http://example.com/kernel-2.4.27-0vl7.src.rpm
      
    2. カーネルのソースを取り出す。
       $ rpm -Uvh kernel-2.4.27-0vl7.src.rpm
       $ rpmbuild -bp --buildroot=/tmp ~/rpm/SPECS/kernel-2.4.27-0vl7.spec 
      
      これで/tmp/linux-2.4.27にカーネルのソースが展開される。
    3. カーネルの.configを用意する。
       $ cd /tmp/linux-2.4.27
       $ cp configs/kernel-2.4.27-i386.config .config
      
    4. ここで/tmp/linux-2.4.27/Makefileを書き換えて、4行目を"EXTRAVERSION = -0vl7BOOT"にする。
    5. 書き換えたら、
       $ make oldconfig; make dep; make modules
      
      として、必要なファイルを生成する。(実は、最後のmake modulesでは途中で止めても必要なファイルが生成されているが。)
  3. インストーラ用ドライバのコンパイルとディスク作成

    1. まず、/tmp/VIA_RAID_Linux_V100/driver/MakefileのKERNDIRとKERNEL_VERを以下のように書き換える。
        KERNELDIR=/tmp/linux-2.4.27
        KERNEL_VER=2.4.27-0vl7BOOT
      
    2. Makeする。
       $ cd /tmp/VIA_RAID_Linux_V100/driver
       $ make
      
    3. dd.shの一部を書き換える。定数BASEを書き換え、mkdosfsをフルパスにする。
       BASE=2.4.27-0vl7BOOT
       mkdosfs を /sbin/mkdosfs にする
      
    4. ディスクイメージを作る。
       $ sudo dd.sh
      
    5. FDに書き込む。
       $ sudo dd if=./driverdisk/viamraid.img of=/dev/fd0
      
  4. 通常版(非インストーラ用)ドライバのコンパイル

    1. ここで/tmp/linux-2.4.27/Makefileを書き換えて、4行目を"EXTRAVERSION = -0vl7"にする。(BOOTを取り除く)
    2. 書き換えたら、
       $ make oldconfig; make dep; make modules
      
      として、必要なファイルを生成しなおす。
    3. さらに、/tmp/VIA_RAID_Linux_V100/driver/MakefileのKERNEL_VERを書き換え、4行目をKERNEL_VER=2.4.27-0vl7にする。
    4. Makeしてドライバのファイルviamraid.oを作る。
       $ cd /tmp/VIA_RAID_Linux_V100/driver
       $ make
      
    5. 出来たviamraid.oをFDにコピーしておく。
       $ sudo mount /dev/fd0 /mnt/floppy
       $ sudo cp viamraid.o /mnt/floppy/
      
    6. これでドライバディスクが完成。

Vineのインストール

作成したドライバディスクを使ってインストールをする。
  1. インストーラのliloの起動時に、"expert"を選ぶ
  2. ドライバディスクを求められたら、作成したFDを入れてドライバを読ませる
  3. 普通にインストール
  4. 最後に"congraturations"の画面が出たら、Ctrl+Alt+F2でコンソールに落ちる
  5. ドライバのインストールとinitrdの作成を行う。
     # chroot /mnt/sysimage
     # mount /dev/fd0 /mnt/floppy
     # cp /mnt/floppy/viamraid.o /lib/modules/2.4.27-0vl7/kernel/drivers/scsi/
     # umount /mnt/floppy
     # /sbin/mkinitrd -f --preload scsi_mod --preload sd_mod --with viamraid /boot/initrd-2.4.27-0vl7.img 2.4.27-0vl7
    
  6. /etc/lilo.confを書き換えてinitrdを使うようにする。 カーネルのオプションに"initrd=/boot/initrd-2.4.27-0vl7.img"を追加する。 liloを更新。
     # /sbin/lilo
    
  7. Ctrl+Alt+F7でGUIに戻り、インストーラを終了
  8. 再起動すればきちんと起動してくれる、はず。

Kernelの更新

kernel-2.4.30以降またはkernel-2.6.11以降でVT6421がサポートされたらしいので、 VineSeedのkernel24-2.4.31-0vl3.i686.rpmに入れ替えてみた。
が、残念ながらsata_viaドライバでは現時点ではSATAだけでPATAをサポートしていないので不可。
SATAのHDDならばこの方法で可能と思われる。(SATAのHDDが手元に無いので未確認)
  1. kernel-2.4.31-0vl3.i686.rpmをダウンロードする
  2. カーネルをインストールする
     # rpm -ivh --nodeps kernel-2.4.31-0vl3.i686.rpm
    
    --nodeps無しでは、coreutilsが無いという依存関係のエラーが出るので、--nodepsを付けて回避する。
  3. /etc/modules.confの
     alias scsi_hostadapter viamraid
    
    となっている行をコメントアウトして、
     alias scsi_hostadapter sata_via
    
    という行を加える
  4. initrdを作成する
     # /sbin/mkinitrd /boot/initrd-2.4.31-0vl3.img 2.4.31-0vl3 --with sata_via
    
  5. /etc/lilo.confを書き換える
  6. 再起動
  7. sata_viaドライバが読み込まれてVT6421を認識するが、PATAに繋がっているHDDは認識しない。残念。

[藤田研究室 トップページへ]
[memorandumへ戻る]

SASAKI Shunsuke