# $NetBSD: ARIES2_HOWTO.txt,v 1.1 2007/06/09 13:32:04 dsieger Exp $
# <!-- Based on english version: -->
# <!-- NetBSD: ARIES2_HOWTO.txt,v 1.1 2007/06/09 13:32:04 dsieger Exp   -->

この文書では、AR5312 チップを搭載した Atheros AP30 開発ボードにもとづく
Senao 5354AP1 Aries2 アクセスポイント上の NetBSD のセットアップについて
説明します。

ハードウェア構成
----------------

	220MHz で動作する AR5312 プロセッサー (MIPS4Kc コア)
	8MB RAM
	2MB SST 39VF160 フラッシュメモリー
	オンボード 10/100 イーサネット
	オンボード 802.11a wlan デバイス
	オンボード 802.11b/g wlan デバイス
	外部 RS232 ポート (DB9)
	
	警告:
	-----
	Senao からの出荷時には、フラッシュメモリーに vxworks ブートローダーが
	書き込まれています。このマシンをただの文鎮にしてしまうことなく
	安全にフラッシュメモリーを更新する方法が見つけられなかったため、
	フラッシュメモリー用の基本的なドライバーが提供されてはいますが、
	このデバイスは使わないことにします。


必要なこと
----------

Senao マシンの  DB9 ポートに接続できるシリアルポート付きのマシンが必要です。
使用するホストの構成によっては、ヌルモデムも必要な場合があります。

また、Senao マシンのルートファイルシステムを NFS 経由で提供するシステムも必要です。
(上述したフラッシュに関する警告をご覧ください。メモリーディスクを使うこともできますが、
使用可能な 8MB の RAM に収まるのは、ほとんど使い物にならないソフトウェアだけですし、
2MB のフラッシュではなおさらです。)

さらに、カーネルをネットワーク経由で提供する方法も必要です。
この Senao マシンは、TFTP か FTP のいずれかを使ってカーネルをロードすることができます。
おそらく TFTP のほうがよいでしょう。TFTP は、ユーザー名やパスワードを使いませんし、
ホストシステムの設定も、おそらくセキュリティーホールを開けることなくできる程度には簡単だからです。


必要なブート情報を供給するために DHCP サーバーが必要です。
特に、ルートファイルシステムおよび初期 IP 設定は DHCP で収集されます。

また、NetBSD ソフトウェアを構築することができるシステムも必要です。
または、どこからか、構築済みのソフトウェアを入手する必要があります。
(ほとんどのソフトウェアは、たとえば ftp.NetBSD.org で入手できます。)


カーネルのコンパイル
--------------------
AP30 カーネルは NetBSD の evbmips ポートの一部となっています。
他の evbmips マシンとは異なり、AP30 は (すべての Atheros WiSoC と同じく)
ビッグエンディアンモードでしか動きません。
このため、ここでは evbmips-eb ポートを使うことにします。
(ftp.NetBSD.org のディレクトリー名は evbmips-mipseb です。)

カーネルを構築するには、NetBSD システム上で、
更新済みの必要なソース (2006 年 6 月 7 日以降の -current)
が含まれているソースツリーにおいて、以下のコマンドを実行すればできます。

	./build.sh -m evbmips-eb kernel=AP30

これにより、AP30 用のカーネルイメージが以下のファイル名で作成されます。

	src/sys/arch/evbmips/compile/obj/AP30/netbsd

このファイルを、tftp または FTP で取得できる場所に置いてください。
実演のため、TFTP サーバーの /tftpboot/ap30 にこのファイルをコピーするものとします。


ルートファイルシステム
----------------------

このシステム用のルートファイルシステムは、ftp.NetBSD.org サーバーから
"sets" をダウンロードすれば用意できます。リトルエンディアンの sets は
*動きません*ので、かならず evbmips-mipseb を使ってください。
どうしても必要なのは base.tgz と etc.tgz だけですが、
これ以外のものもあってもよいでしょう。

ふつうは、これらは NFS でエクスポートされるディレクトリーの中に展開すれば十分です。
このディレクトリーは、ひとつのアクセスポイントだけに対してエクスポートするようにします
(特に、/etc は共有できません)。また、おそらく root の読み書きを許可するのがよいでしょう。
(ファイルシステムが読み込み専用の場合の次善策として、
メモリーディスクを使うという方法もありますが、
これについてはこの文書では対象としません。)

ルートファイルシステムに対しては、/etc/rc.conf を書き換えるなど、
さらなる設定をおこなってもよいでしょう。

また、スワップファイルを作って NFS でエクスポートすることを、*強く* おすすめします。
NFS 越しのスワップはとてつもなく遅いものですが、
RAM が不足する場合はもっと大変ですし、
RAM が 8MB しかないこのプラットフォームの場合は実際にそうなるでしょう。


DHCP の設定
-----------

DHCP を設定して、基本的な設定値をホストに対して提供する必要があります。
ISC DHCP を使う場合の設定例を以下に示します。

	host ap30 {
	  hardware ethernet 00:02:6f:34:ea:30;
	  fixed-address 192.168.251.17;
	  filename "ap30";
	  option host-name "ap30";
	  option root-path "/export/ap30/root";
	  next-server 192.168.251.21;
	  ddns-updates off;
	}

サーバー (192.168.251.21) は、/export/ap30/root にある AP30 用のルートディレクトリーを
NFS 経由でエクスポートします。

なお、ここでは AP30 の IP アドレスを固定しています。
そうしたほうが NFS のアクセス許可の設定が簡単だからです。
また、このほうが vxworks の設定も若干ですが簡単になります。


配線
----

AP30 のシリアルポートに、端末サーバーまたは端末エミュレーターを動かしているホストを接続します。
デフォルトの設定値は、115200 ボー、8 データビット、パリティーなし、1 ストップビット
(115200,8n1) です。

AP30 のイーサネットポートを、サーバーのあるネットワークに接続します。

もちろん、電源も必要です。


ファームウェアの設定
--------------------

上述のことがすべてできていれば、デバイスの設定をすることができます。
シリアルポートを接続した状態で、電源を入れます。
そして、端末ウィンドウで、ESC キーを押します。
すると、以下のように表示されるはずです。


	ar531x rev 0x00005742 firmware startup...
	SDRAM TEST...PASSED


	Atheros AR5001AP default version 1.4


また、4 秒ほどのカウントダウンが表示されます。カウントダウンの最中に
ESC を押すと、[Boot:] プロンプトが表示されます。
("oot:]" のように、途切れて表示されることもあります。)

"?" を押すと、ブートローダーのヘルプが表示されます。

"p" を押すと、現在の設定が表示されます。
設定を元に戻す必要がある場合に備えて、
初期設定を表示して保存しておくようおすすめします。
フラッシュメモリーには手を加えませんので、
理屈の上では、NetBSD と、標準添付されている元のファームウェアとを切替えることができます。

設定を保存したら、"c" を押して設定値を変更します。

設定例を以下に示します。

boot device          : ae
unit number          : 0 
processor number     : 0 
file name            : ap30
inet on ethernet (e) : 192.168.251.17:0xffffff00
host inet (h)        : 192.168.251.21
flags (f)            : 0x84 

この例では、自動ブートはしないようになり、
カーネルファイル "ap30" を 192.168.251.21 のサーバーから tftp で取得し、
ローカル IP アドレスとして 192.168.251.17/24 を使うようになります。

flags ビットは興味深いものです。
これを使って、ブート時に tftp や ftp を使うよう設定したり、
自動ブートの可否を切替えたり、
proxy arp や bootp の設定をすることまでできるからです。
(最後の二つは確認していません。) 以下はヘルプによる flags です。

 Boot flags:           
   0x02  - load local system symbols (ローカルシステムシンボルをロードする)
   0x04  - don't autoboot (自動ブートしない)
   0x08  - quick autoboot (no countdown) (カウントダウンせずに、すぐ自動ブートする)
   0x20  - disable login security (ログインセキュリティーを無効化する)
   0x40  - use bootp to get boot parameters  (bootp を使ってブートパラメーターを取得する)
   0x80  - use tftp to get boot image (tftp を使ってブートイメージを取得する)
   0x100 - use proxy arp (proxy arp を使う)

0x20 は NetBSD に対しては影響のないものですが、これにより、
(異なるブート設定をしていた場合も)
パスワードなしで保持されているファームウェアにログインすることができます。

0x08 は試したことがありませんし、試さないことをおすすめします。
どうやらこれを使うと、
ファームウェアを元に戻すことができなくなるようです。

TFTP と FTP のいずれも使うことができますが、TFTP を使ったほうがうまくいきました。
FTP は時々問題があるようです -- クライアントの FTP のコードは、
TFTP のコードほど堅固ではないのではないかと思っています。


ブート
------

設定の変更が済んだら、単に "@" コマンドを使い、
変更した設定を使ってブートします。

現在、カーネルにブートオプションを渡す仕組みはありません。
つまり、カーネルに "-v" や "-a" を渡すことはできません。
これはファームウェアの制約によるものであり、これを変えるためには、
中間段階のブートローダーを導入する必要があるでしょう。
今のところ、私はそういうことをする予定はありません。
そのようにしても用途が非常に限られたものになるうえ、
特にこのプラットフォームでは資源が限られているのに、
利用可能なメモリーを減らしてしまうからです。