wiki:OpenWRTAlix

Version 3 (modified by sgk, 10 years ago) (diff)

--

OpenWRTをPC Engines ALIXに入れる

ひさしぶりにOpenWRTをいじっています。目的はAsteriskのPBXを作ることですが、その話はまたそのうち。

ハードウェアは PC Engines ALIXです。 ちょっと非力な感じですが、Asteriskには十分な気がします。

ダウンロード

OpenWRTは、コードネームBackfire、10.03というのがリリースされています。

~% mkdir pbx
pbx% cd pbx
pbx% svn co svn://svn.openwrt.org/openwrt/branches/backfire

これでは、用意されているパッケージは最小限です。 その他のパッケージをビルドできるよう、パッケージの生成方法が書いてあるファイルを持って来ます。

pbx% svn co svn://svn.openwrt.org/openwrt/packages
packages% cd openwrt/packages
packages% ln -s ../../packages/*/* .
packages% cd ..
openwrt% 

ビルドの設定

ビルドの内容を設定します。

openwrt% make menuconfig

設定の抜粋。

  • Target System (x86)
  • Subtarget (Generic)
  • Target Profile (PCEngines Alix)
  • Target Images
    • [ ] ramdisk
    • [*] squashfs
    • [*] Build GRUB images (Linux x86 or x86_64 host only)

あとは、欲しいパッケージを選択する。 OpenWRTのお約束として、Y、N、Mの選択肢には、それぞれ以下の意味があります。

  • Y --- ビルドし、イメージに入った状態にする。
  • N --- ビルドしない。
  • M --- 後からインストールできるパッケージとしてビルドする。

ビルド

openwrt% make

依存関係とかがおかしいときは「make clean」してみるといいかも。

できあがったファイルは、「bin」ディレクトリの下にある。

設定

ネットワーク設定などに限っては、ビルド前の設定でも行うことができます。 でも、どうせ、その他の設定もいろいろいじりたいですから、設定はビルド後に行うことにします。

openwrt% cd bin/x86
x86% 

ちょっと裏技的ですが、qemuを使います。 まず、最終的にインストールするCFと同じサイズか、それより小さいファイルを用意します。 いろいろな方法があるので、お好きな方法でどうぞ。

  • sudo dd if=/dev/sdb of=img bs=10M」 --- CFカードがsdbとして認識されている場合。
  • dd if=/dev/zero of=img bs=10M count=25」 --- だいたい250Mにしてみる場合。

作ったファイルの先頭に、起動イメージを書き込みます。 「先頭に」っていうのが重要。後半をカラのまま空けておきます。 Squashfs自体は読み出し専用なのですが、設定などの変更は、この後半の空き領域に書き込まれるのです。

x86% dd if=openwrt-x86-squashfs.image of=img bs=10M conv=notruc
x86% 

qemuで起動します。 GNOMEとかのデスクトップで実行してください。 GUI無しで起動する方法もありますが、ちょっと面倒です。

x86% qemu -hda img

どういうわけか起動できないことがありますが、何度かやってると起動できます。 原因はよくわかりませんが、8259とかIRQがどうとか言ってます。 気にしないことにします。

最初の起動だけ、ファイルシステムの構築のためにとても時間がかかります。 「Hit return to activate this console.」とか出たら完了。 リターンキーを押すとコマンドプロンプトが現れます。

あとは適宜設定を行って、「halt」コマンドで終了させます。