Using
Linux and V-TOWNS
for FM V-TOWNS
FMV-TOWNS における Linux
FM V-TOWNS と Linux - Linux(ATモード) ―
HOME 1st. Release 2001/11/06 / Last update. 2007/05/05 (JST)

FMV-TOWNS は、PC/AT互換機にPCI の TOWNS ボードを
中心とし TOWNS アーキテクチャを実装したマシンです。
もともと、FM TOWNS は、FM-R をベースとしているので、
かなり特徴的なマシンです。

  Table Of Contents     FM V-TOWNS について     Linux(AT モード)     Linux/TOWNS(TOWNSモード)     TOWNSモード関連(miscellaneous)  

    3. PC/AT互換機として使用する


    ATモードでの Linux について

    TOWNS MODE スイッチを OFF として PC/AT互換機として互換機として使用するときは、 AT用の Linux が、使用できます。
    私は、実際に Plamo-2.2.1/2.1/2.0/1.4.4 と Vine-2.0 をインストールしてみました。


    3.1 LAN カードと Linux 2.2 系カーネル


    FMV-183/184互換の(および、その前身の FMV-181/182)LAN カードは、比較的、 以前から Linux への対応が行われていて 2.0 系カーネルでは、正常に使用できて いました。しかしながら、2.2系のカーネルでは、この LAN カードを使用できません でした。

    私が調べた限り、解決策としては、以下の2つが、あります。(2000/10/21)

    • 2.0 系カーネルに戻して使用する。
    • 2.0.x 系カーネルでは、正常に動作します。
    • 修正された、 FMV-181/2/3/4 対応の AT1700 用 LAN ドライバを使用する。

    • こちらのドライバと 2.2.14 カーネルで組み合わせて使用してみましたが、正常に 使用できました。私の場合、こちらのドライバを使用する際には、I/O, IRQ を 指定する必要がありました。LAN カードのドライバディスクで、使用する I/O アドレスと IRQ を変更することができますので、現在の設定を確認しておく必要 が、あります。(私の場合は、2.0 系の ifconfig -a で、確認しました。)

      /etc/modules.conf への追加例(I/O ポートアドレス=0x240, IRQ = 10 の場合)
      alias eth0 at1700
      options at1700 io=0x240 irq=10

    この FMV-18x 用の修正が、カーネルソースに取り込まれることを期待したいのですが…。
    2.4系で、どのようになっているかは、把握していません。


    3.2 Sound Blaster


    Plamo Linux でも、/etc/moduels.conf にもコメントアウトされているが、 用意されている設定なので、ごく一般的な設定のようですが、以下の設定で Sound Blaster が、使用できるようになります。

    (既に用意されていたので、本当に適切な設定なのか調べていなかったりします。)

    /etc/modules.conf への追加例
    alias char-major-14 sb
    options sb io=0x220 irq=5 dma=1 dma16=5 mpu_io=0x330

    3.3 Linux/TOWNS パッチ


    最近の Linux/TOWNS のパッチを適用した Linux ソースコードは、PC/AT互換機での コンパイルも考えて作られています。 Linux/TOWNS のパッチを適用した場合、PC/AT互換機でも FM TOWNS のパーティション 情報を利用できるようになります。FM V-TOWNS で、外付 SCSI ハードディスクを使用する場合、Linux/TOWNS パッチを適用した方が、利用範囲 も広がるので便利でしょう。

    TownsOS の区画設定では、割当できない 2GB 超のパーティションを作成することも できるので、Linux/TOWNS 用の fdisk も用意しておくといいでしょう。



    3.4 TOWNS モード区画と FM シリーズのパーティションテーブル


    FM V-TOWNS では、IDE HDD の内部に TOWNS モード区画を作成して、その部分を SCSI HDD に見立てて使われています。
    TOWNS モード区画の内部は、FM シリーズで使用されているパーティション テーブルで構成されています。

    Linux では、DOS のパーティションテーブル以外も扱えますが、TOWNS モード 区画は、AT互換機の DOS パーティションテーブルの中の区画として構成されます。

    この TOWNS モード区画が、Linux からどのように見えるかと、その利用方法に ついて書きます。


    3.4.1 TOWNS モード区画と Linux版 fdisk

    PC/AT互換機の DOS/Windows と同様に Linux にも、ハードディスクの区画設定 を行う fdisk コマンドがあります。
    このコマンドで、パーティションテーブルを表示する「-l」オプションを指定 して IDE のプライリマリ HDD(/dev/hda) の内容表示の実行例を示します。
    (Linux では、IDE HDD は、/dev/hd?、SCSI HDD は、/dev/sd? のデバイス・ ファイルとして取り扱われます)

    fdisk による HDD(/dev/hda) のパーテョションテーブルの表示例
    vtowns:/home/digit# fdisk -l /dev/hda
    
    ディスク /dev/hda: ヘッド 64, セクタ 63, シリンダ 621
    ユニット = シリンダ数 of 4032 * 512 バイト
    
     デバイス ブート   始点      終点  ブロック   ID  システム
    /dev/hda1   *         1       463    933376+   6  FAT16
    /dev/hda2           464       620    316512   fe  LANstep
    

    上記の例では、HDD 内の 1番目の区画(/dev/hda1) として Windows95 用 区画が、 ID=0x06 の FAT16 領域 で確保されていて、 それ以外の 2番目の区画(/dev/hda2) が ID=0xfe の LANstep 区画 と 認識されています。

    TOWNS モード区画を含むパーティションテーブルの内容表示は、Linux 標準の fdisk では、表示できません。


    3.4.2 TOWNS モード区画と Linux/TOWNS 版の fdisk

    Linux/TOWNS には、FM シリーズのパーティションテーブルの区画設定可能な fdisk も作られています。AT版の Linux でも、動かすことはできます。

    以下に、上記の TOWNS モード区画 を指定してパーティション テーブルの一覧を表示させた例です。
    (なお、以下の例では、TOWNS 対応 fdisk は、fdisk.towns リネームして いる事とします)

    TOWNS 対応 fdisk による /dev/hda2 内の TOWNSモード区画内の区画情報表示
    vtowns:/home/digit# fdisk.towns -l /dev/hda2
    
    Disk /dev/hda2 (TOWNS disk label): 1 heads, 633024 sectors, 1 cylinders
    Units = セクタ数 of 1 * 512 bytes
    
      デバイス Boot    Start       End    Blocks   Id  System        Name
    /dev/hda21  *          3    260098    130048    1  MS-DOS        TownsOS V2.1L51
    /dev/hda22        260099    393218     66560    1  MS-DOS        DIC
    /dev/hda23        393219    618498    112640    1  MS-DOS        USER_AREA
    <<EMPTY>>         618499    633024      7263    0  Empty
    

    上記の例では、/dev/hda21〜/dev/hda23 として使用できるように見えるが、 実際に認識されているかどうかは、別で、実際とは異なります。

    今回は、fdisk.towns -l /dev/hda2 として、区画内の パーティションテーブルを表示させていますが、本来は、 fdisk -l /dev/hda の様に使うため単純に区画内の位置と 引数で指定されたデバイス名を単純に組み合わせて区画を示すデバイス名を 作っているように思えます。


    3.4.3 Linux が認識している区画

    これまでは、fdisk コマンドが認識している区画情報を示してきました。
    以下のコマンドで OS が、認識しているパーティションテーブルを表示させる事ができます。

    vtowns:/home/digit# cat /proc/partitions 
    major minor  #blocks  name
    
       8     0    2119141 sda
       8     1    2118509 sda1
       8    16   29316672 sdb
       8    17    4195312 sdb1
       8    18    4195328 sdb2
       8    19    4194304 sdb3
       8    20    4194304 sdb4
       8    32   12619152 sdc
       8    33    4193280 sdc1
       8    34    4193280 sdc2
       8    35    4193280 sdc3
       3     0    1251936 hda
       3     1     933376 hda1
       3     2     316512 hda2
       3    64   30015216 hdb
       3    65    4200966 hdb1
       3    66       8032 hdb2
       3    67    4200997 hdb3
       3    68          1 hdb4
       3    69      88326 hdb5
       3    70    2104483 hdb6
       3    71    4200966 hdb7
       3    72    4200966 hdb8
    

    上記の中で、sd? や hd? は、ディスク全体を示しているのでパーティションとは、 言えないかも知れません。

    Linux/TOWNS のパッチを適用していて CONFIG_FM_PARTITION=y としているので、SCSI パーティション内の FM シリーズのパーティションテーブル (sdc1,sdc2,sdc3) が、認識できています。

    しかし、(3.4.2 の様にすると) TOWNS用 fdisk で認識する事ができる TOWNS モード区画 (hda2) 内のパーティションは、OS 側では認識できていません。 そのため、TOWNS モード区画内のパーティションは、マウントして使用する事も できません。


    3.4.4 Linux で TOWNS モード区画内のパーティションを認識可能にする

    TOWNS モード区画は、PC/AT互換機用のパーティションテーブルの1つの区画であり、 その中に FM シリーズ用のパーティションテーブルが作られています。
    この構成は、拡張パーティションに似ています。Linux が、サポートしている他の パーティションテーブル(BSD で言うところのディスクラベル)には、同様の構成 になっているものもあります。
    また、Linux/TOWNS のソースは、TOWNS で使われている区画を使用するため修正が 行われています。

    上記のパーティションを認識させる部分のソースコードを参考にすると、 Linux で TOWNS モード区画を利用可能にすることが、できます。
    以下に、V-TOWNS の TOWNS モード区画への対応パッチを示します。


    V-TOWNS の TOWNS モード区画への対応パッチ
    ファイル名 vtowns-fm-partition.patch.bz2 (2,866 bytes)
    (md5sum: f4b78c40f62554dcc5cb9ec9f201a0a5)
    作成方法 # cd /usr/src
    # bzip2 -cd vtowns-fm-partition.patch.bz2 | patch -p 0
    (古い、パッチコマンドなら patch -p0 となります)
     このパッチは、Linux-2.2.20 カーネルソースを展開して、Linux/TOWNS パッチの lt-2220-01.patch.bz2 を適用後に、あててください。
    bash# make {config|oldconfig|menuconfig|xconfig}

     で、以下のようにしてください。

    CONFIG_TOWNS = N …………………… FM V-TOWNS のATモードで使用するため
    CONFIG_EXPERIMENTAL = Y ……………
    CONFIG_FM_PARTITION = Y …………… FM シリーズのパーティションテーブルを有効化
    CONFIG_VTOWNS_FM_PARTITION = Y … 今回のパッチを有効化する


    このパッチを適用し TOWNS モード区画が、認識できるようになると 起動時の「Partition check:」や「cat /proc/partitions」の表示も 変化します。
    以下に、起動時の「Partition check:」は、区画がどのように認識されたかが、 分かりやすいので、その表示例を示します。

    このパッチ適用後の OS が認識するパーティションテーブルの例
     Partition check:
      sda: sda1
      sdb: sdb1 sdb2 sdb3 sdb4
      sdc: sdc1 sdc2 sdc3
      hda: hda1 hda2 < hda5 hda6 hda7 >
      hdb: hdb1 hdb2 hdb3 hdb4 < hdb5 hdb6 hdb7 hdb8 >
    

    この例では、hda2 が、TOWNS モード区画で、その内部にある FM シリーズの パーティションテーブル内の区画が、 hda5 hda6 hda7 です。
    ちなみに、hdb の hdb5 hdb6 hdb7 hdb8 は、拡張パーティション内の区画です。

    この2つを比べると、このパッチによってTOWNS モード区画内の区画は、 拡張パーティション内の区画と同じような取り扱いがされている事が分かります。

    なお、このメッセージは、起動後でも dmesg コマンドや /var/adm/messages を 参照する事で確認できます。


    3.4.5 TOWNS モード区画に関するその他の情報

    • 参考文献

      • FM V-TOWNS 拡張計画

      • FM V-TOWNS に添付のマニュアルです。周辺機器の節即や設定、添付ソフトの 再インストール方法などが書かれています。
        本来の TOWNS モード区画の確保の方法や IDE HDD の増設なども書かれています。
      • LINUX デバイスドライバ

      • O'REILLY(株式会社オライリージャパン) から出ている Linux デバイスドライバについてまとめられた本です。
    • TOWNS用 fdisk と FM シリーズ区画

    • TOWNS用 fdisk を使用すると、TOWNS モード区画内の FM シリース用の パーティションテーブルを表示や修正する事が可能です。
      ただ、パーティションテーブルを作成することは、できないようで、 Linux/TOWNS の fdisk で、TOWNS モード区画を作成した直後に TOWNS モード区画内の区画設定を行うことはできません。
      (いったん、TownsOS で区画設定を行うなどの対策が必要です。)

    • パーティションテーブルの解析について

    • ここでは、fdisk でパーティションテーブルが見えるため fdisk の表示を用いて 説明していますが、ディスク上でどのように記録されているかを調べる場合には、 fdisk より、dd コマンドを用いて調べる方が、現実的です。
      実際、パッチのテストの際には、dd や jhd でパーティションテーブルの 16進数ダンプリストを表示させて調べています。

      以下に例を示します。
      dd によるパーティションテーブルのダンプリスト表示例
      SCSI HDD(/dev/sd? ここでは、/dev/sdc) のパーティションテーブルを表示する場合
      # dd if=/dev/sdc bs=512 skip=1 count=1 | jhd -jv
      # dd if=/dev/sdc bs=512 skip=1 count=1 | od -v -t x1

      IDE HDD のTOWNS モード区画(/dev/hd?? ここでは、/dev/hda2) の中の パーティションテーブルを表示する場合
      # dd if=/dev/hda2 bs=512 skip=1 count=1 | jhd -jv
      # dd if=/dev/hda2 bs=512 skip=1 count=1 | od -v -t x1

      od は、標準コマンドですが、jhd は、そうではないためそのままでは、使えない 可能性もあります。


    3.5 その他の話


    私は、上記のパッチの他に reiserfs, DVD 関係のパッチと UDF モジュールを 組み込んでいます。実際のところ reiserfs は、使用していません。

    パッチの適用やソースに若干の手を入れる順番は、できるだけ一般的なパッチから 適用するのが、いいと思います。

    1. reiserfs パッチ(linux-2.2.19-reiserfs-3.5.33-patch.bz2)
    2. dvd_scsi_patch パッチ(私が試したときは、dvd_scsi_patch-2.2.17 を 2.2.19 に適用しました。(修正したかどうかは、忘れました… が、修正が必要だったはず。下記の捕捉部分を参照)
    3. Linux/TOWNS パッチ(lt-2219-01.patch.bz2)
    4. AT-1700 の FMV-18x 用修正が行われたソースコード

    なお、UDF モジュール部分(udf-0.9.0.tar.gz)のコンパイルは、カーネルとは、 別に行えるので、順番はいつでもいいでしょう。

    捕捉:Linux-2.2.20 の場合
    1. オリジナルカーネルソース(linux-2.2.20.tar.bz2)を展開する
    2. reiserfs パッチ(linux-2.2.19-reiserfs-3.5.34-patch.bz2)

    3. (2001/11/11(JST) 現在で、確認したところ linux-2.2.20 用は、無いのなので 2.2.19 用を適用して試しています。reiserfs は、使用していませんが、 パッチの適用は、特に問題無く行えるようです。)
    4. dvd_scsi_patch パッチを適用

    5. 私が試したときは、dvd_scsi_patch-2.2.17 を patch コマンドで適用すると一部、 適用に失敗し reject されます。このときは、2.2.19 のときに修正していたソース から差分をとって適用しました。
      (修正自体は、ごくわずかなので特に問題なくで手で修正できると思います。)
    6. Linux/TOWNS パッチ(lt-2220-01.patch.bz2)
    7. AT-1700 の FMV-18x 用修正が行われたソースコードへ置き換え

    8. at1700.c は、TOWNS 用の修正が入っていますが、上記のものへ置き換えても 問題なくコンパイルできました。

about:V-TOWNS