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を利用することができるでしょう。