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に、
日本語環境込みで入るかどうかにチャレンジ (自爆)。
用意した器材は以下のとおり。
- IBM PC-110 (2431-YD1)
- CPU: 486SX
- メモリ: 20Mバイト
- ポートリプリケータなどは不要。本体とACアダプタのみでも可
→デジカメ画像など
- インストール用母艦
- celeronベースのタワーPC。
- FlashReader搭載
ATA Flashを内蔵IDEディスクと同等に扱えるPCカードアダプタ
(ViPowER VP-9064)
→デジカメ画像など
→メーカーのページへ
- カーネル作成、環境設定用ノートパソコン
- PCカードスロット付きの普通のノーパソ
- カーネルをコンパイルしてから、CFにコピーしたり、
インストール後にtelnetで各種設定を行うのに利用
- その他
- FreeBSD 4.3R CD-ROM#1
- PC-110につけるネットワークカード。
corega etherII PCC-T
- ハブ、ケーブル、その他もろもろ
手順
-
まず、インストール母艦にCFを接続し、
Primary Masterディスクとして使えるようにしておきます。
-
とりあえずWindows98 CD-ROMからブートして、
fdisk /mbr してから、DOS領域を2Mだけ確保しておきます。
-
次に、FreeBSD 4.3R インストーラをブートします。
-
インストーラが起動したら、Standard Installを選択して
インストールを行います。
-
スライスの確保では、(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に
-
パーティション設定では、
112Mバイトをルートパーティションとし、
残り8Mバイトをスワップとします。
filsys blocks fstype fsize bsize
ad0s2a 229,376 4.2BSD 8,192 1,024 ルートパーティション一発 (112M)
ad0s2b 17,408 swap - - 残り (8M) をスワップに
-
distributionsでは、Minimal を選択し、
追加で compat3x と compat4x も入れました。
結局、bin, compat3x, compat4x, crypto を入れることになります。
-
MediaはCD-ROMからを選択します。
-
インストールが終了したら、
インストール母艦の電源を切り
(FlashReaderはホットスワップできません)、
CFを外します。
-
外した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.
こんな↑のです。
-
マウントして、ディスク容量を確認すると、
# mount -r /dev/ad8s2a /mnt
# df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/ad1s2a 111119 106609 -4379 104% /mnt
こんな↑感じ。いきなり使用可能量がマイナスです (笑)。
-
次に、この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
となり、ちょっと余裕ができます。
-
次に、/stand も消して canna, canuum, kon2, w3m を
インストールします。なお、空き容量が足りないので、
ja-Canna-3.2.2 を pkg_add することはできません。
tar でバラして必要なファイルだけコピーするという方法をとるか、
あらかじめ自分でコンパイルしておいて、必要なファイルをコピーします。
-
ここまで行うと、空きディスク容量が 2Mバイト程度になります。
-
CFをアンマウントしてから、PC110の本体右側CFスロットにつなぎ、
ブートします。
-
カーネルをうまく読み込みますが、実はこのままではブートしません。
というのも、PC110のCFスロットは、
Primary Slave (ad1) として認識されるのに対し、ここまでの設定では、
ルートファイルシステムがPrimary Master (ad0) となっているからです。
-
というわけで、
「options ROOTDEVNAME=\"ufs:ad1s2a\"」
を組み込んだカーネルコンフィグファイルでカーネルを作りなおします。
→コンフィグファイルの例
-
また、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
とします。
-
これでちゃんとブートしますので、あとは /etc/rc.conf に
ちょろっと手を入れておくだけです。
-
うまくブートしたら、
個人用ディレクトリを作成したりして環境を整えます。
-
本体左側のPCカードスロットにネットワークカードを入れると
ちゃんと使えるので、
作業はノートパソコン側からtelnetでログインして行うと楽ちんです。
-
液晶画面が小さいので、視認性の高いフォントに入れ換えました。
/usr/local/share/fonts/bdf/ ディレクトリに、
ぱうフォントをBDF化してgzip圧縮したものを
8x16rk.bdf.gz, jiskan16.bdf.gzというファイル名で転がしておきます。
-
ブラウザソフトw3mが動きますが、
日本語HTMLドキュメントがほとんどないという寂しい状態なので、
ノートパソコンから /usr/share/doc/ja/books/faq/*.html をコピーします。
1.2Mバイトぐらい消費します。
-
最後に環境設定が終わったあとの容量ですが、
# 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を利用することができるでしょう。