# $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" を渡すことはできません。 これはファームウェアの制約によるものであり、これを変えるためには、 中間段階のブートローダーを導入する必要があるでしょう。 今のところ、私はそういうことをする予定はありません。 そのようにしても用途が非常に限られたものになるうえ、 特にこのプラットフォームでは資源が限られているのに、 利用可能なメモリーを減らしてしまうからです。