Network Users' Group ``wheel'' / Dai ISHIJIMA's Page / Flash ATAにBSD

最終更新日: 2002/03/26


Flash ATAにFreeBSD


SanDiskの128MバイトCompactFlash、SDCFB-128に FreeBSD 4.3Rをインストールしてみました。

友人に 寄贈 貸してもらった IBM PC-110 (2431-YD1) で、FreeBSDを使えないかと思い、 同時に借りたCompactFlashに、 日本語環境込みで入るかどうかにチャレンジ (自爆)。

用意した器材は以下のとおり。

手順
  1. まず、インストール母艦にCFを接続し、 Primary Masterディスクとして使えるようにしておきます。
  2. とりあえずWindows98 CD-ROMからブートして、 fdisk /mbr してから、DOS領域を2Mだけ確保しておきます。
  3. 次に、FreeBSD 4.3R インストーラをブートします。
  4. インストーラが起動したら、Standard Installを選択して インストールを行います。
    1. スライスの確保では、(DOSを確保した残りである) 120MバイトをFreeBSD領域とします。
      	slice     start     size  sysid
      	-             0       32     -      MBRその他
      	ad0s1        32    4,064  1(FAT12)  とりあえずDOS領域2M
      	ad0s2     4,096  246,784  165(BSD)  残り120MをBSDに
      
    2. パーティション設定では、 112Mバイトをルートパーティションとし、 残り8Mバイトをスワップとします。
      	filsys    blocks  fstype fsize bsize
      	ad0s2a   229,376  4.2BSD 8,192 1,024 ルートパーティション一発 (112M)
      	ad0s2b    17,408  swap   -     -     残り (8M) をスワップに
      
    3. distributionsでは、Minimal を選択し、 追加で compat3x と compat4x も入れました。 結局、bin, compat3x, compat4x, crypto を入れることになります。
    4. MediaはCD-ROMからを選択します。
  5. インストールが終了したら、 インストール母艦の電源を切り (FlashReaderはホットスワップできません)、 CFを外します。
  6. 外したCFを環境設定用ノーパソにつなぎます。 認識時のメッセージは
    	/kernel: pccard: card inserted, slot 0
    	pccardd[105]: Card "SunDisk"("SDP") [5/3 0.6] [(null)] matched "SunDisk" ("/.*/") [(null)] [(null)] 
    	/kernel: ata4 at port 0x240-0x24f irq 3 slot 0 on pccard0
    	/kernel: ad8: 122MB  [980/8/32] at ata4-master BIOSPIO
    	pccardd[105]: ata4: SunDisk (/.*/) inserted.
    
    こんな↑のです。
  7. マウントして、ディスク容量を確認すると、
    	# mount -r /dev/ad8s2a /mnt
    	# df /mnt
    	Filesystem  1K-blocks     Used    Avail Capacity  Mounted on
    	/dev/ad1s2a    111119   106609    -4379   104%    /mnt
    
    こんな↑感じ。いきなり使用可能量がマイナスです (笑)。
  8. 次に、このCFの /kernel*, /modules* を消して、 あらかじめ用意しておいたカスタムカーネルをコピーすると、
    	# mount -r /dev/ad8s2a /mnt
    	# df /mnt
    	Filesystem  1K-blocks     Used    Avail Capacity  Mounted on
    	/dev/ad1s2a    111119    97639     4591    95%    /mnt
    
    となり、ちょっと余裕ができます。
  9. 次に、/stand も消して canna, canuum, kon2, w3m を インストールします。なお、空き容量が足りないので、 ja-Canna-3.2.2 を pkg_add することはできません。 tar でバラして必要なファイルだけコピーするという方法をとるか、 あらかじめ自分でコンパイルしておいて、必要なファイルをコピーします。
  10. ここまで行うと、空きディスク容量が 2Mバイト程度になります。
  11. CFをアンマウントしてから、PC110の本体右側CFスロットにつなぎ、 ブートします。
  12. カーネルをうまく読み込みますが、実はこのままではブートしません。 というのも、PC110のCFスロットは、 Primary Slave (ad1) として認識されるのに対し、ここまでの設定では、 ルートファイルシステムがPrimary Master (ad0) となっているからです。
  13. というわけで、 「options ROOTDEVNAME=\"ufs:ad1s2a\"」 を組み込んだカーネルコンフィグファイルでカーネルを作りなおします。
    コンフィグファイルの例
  14. また、CFに入っている/etc/fstabも「ad0」を使う設定になってるので、 「ad0」→「ad1」に書き換え、
    	# Device                Mountpoint      FStype  Options         Dump    Pass#
    	/dev/ad1s2b             none            swap    sw              0       0
    	/dev/ad1s2a             /               ufs     rw              1       1
    	proc                    /proc           procfs  rw              0       0
    
    とします。
  15. これでちゃんとブートしますので、あとは /etc/rc.conf に ちょろっと手を入れておくだけです。
  16. うまくブートしたら、 個人用ディレクトリを作成したりして環境を整えます。
  17. 本体左側のPCカードスロットにネットワークカードを入れると ちゃんと使えるので、 作業はノートパソコン側からtelnetでログインして行うと楽ちんです。
  18. 液晶画面が小さいので、視認性の高いフォントに入れ換えました。 /usr/local/share/fonts/bdf/ ディレクトリに、 ぱうフォントをBDF化してgzip圧縮したものを 8x16rk.bdf.gz, jiskan16.bdf.gzというファイル名で転がしておきます。
  19. ブラウザソフトw3mが動きますが、 日本語HTMLドキュメントがほとんどないという寂しい状態なので、 ノートパソコンから /usr/share/doc/ja/books/faq/*.html をコピーします。 1.2Mバイトぐらい消費します。
  20. 最後に環境設定が終わったあとの容量ですが、
    	# df
    	Filesystem  1K-blocks     Used    Avail Capacity  Mounted on
    	/dev/ad1s2a    111119   101412      818    99%    /
    	procfs              4        4        0   100%    /proc
    
    となります(^^;
    ブート時のメッセージを表示

上記の手順で、128MコンパクトフラッシュにFreeBSD4.3Rをインストールし、 日本語環境で利用できる状態にすることができました。 ブラウザも入ってますので、ネットワークカードを使えば、 テキストベースではありますが、ネットサーフィンも可能です:-)。 PC110という小さなマシンで最新のFreeBSDが動くのはなかなかに感動的です。
ブラウザでHTMLを表示しているところ
かな漢字変換で日本語入力もばっちり

今回は128MバイトのCFを使いましたが、192M CFでも同様にインストールを 行ってみました。これなら、日本語マニュアル (ja-man*) も楽々入りますし、 かなり使えると思います。 実際には256Mバイトぐらい欲しいところですが (笑)。

幸いにもPC110は、「BIOS的」だけでなく、「FreeBSDにおいても」 コンパクトフラッシュが普通のIDEハードディスクと同等に扱えますので、 上記のような使い方をすることができました。

でも、仮にPCカードコントローラ経由でしかフラッシュATAが使えない (BIOS的にはハードディスクと同等だが、BSD的には同等でない) 環境であったとしても、 ルートファイルシステムをMFS上に確保して、 ブート直後に (/etc/rcなどで) pccardd を動かして、 認識後にあらためてマウントして、それから通常の処理を行えば FreeBSDを利用することができるでしょう。