ルータをハードオフで買った ○10点

この記事は シス研 Advent Calendar 23日目 のはずだった記事です。

こんばにちは、puhitakuです。
前回の記事は中華アンプ工場に勤務する[要出典]醤油差し君の記事と先輩の記事でした。
投下するのに最適なネタはちょいちょいあるのですがそちらについては個人ブログで書きたいので、今回は部内でも数少ない「ハードもやる勢」としてハードとソフトの入り混じったネットワークルータのお話をさせていただきたいと思います。
「前置きを飛ばしてルータの話だけ読みたい!」という方は下の見出し”高度な組み込みシステム 「ネットワークルータ」”まで飛んでください。

組み込みシステム

身近にある電気機器には、小さなコンピュータであるマイコン(Micro computer)が載っています。近年では電気製品であれば大方マイコンが入っていると考えて差し支えないです。こういった最終製品に組み込まれ特定の機能を実現するコンピュータシステムを「組み込みシステム」といいます。

最終製品でのニーズに合わせてカスタマイズされるため、組み込みの世界には多様な形態のコンピュータがあります。言葉を変えると、型番が変われば2つとして同じシステムは無いともいえます。分類しようと思えばきりがないのですが、組み込みシステムは開発する対象から大きく幾つかに分けることができます:

  1. 特定用途向けIC (ASIC)
  2. プログラマブルロジックデバイス (CPLD, FPGA)
  3. 組み込み向けRISC CPU (OSなし)
  4. 組み込み向けRISC CPU (OSあり)
  5. 組み込み向けCISC CPU (OSあり)

下へ行くほど必要な知識や感覚が一般的なPCと近くなります。

1は用途に完璧に即したフルカスタマイズチップで、回路が固定されるために生産後に動作の変更ができません。そのかわり最も高速に動作します。

2は言わば「プログラムで書き換えられるロジック回路」で、汎用CPUほどの自由さはないですが高速なデバイスを作ることができます。最近ではMicrosoftが自社の検索エンジンBingのサーバにFPGAを組み込んだことが有名ですね。

3,4は汎用RISC CPU (比較的シンプルな構造のCPU)で動くプログラムや回路を開発します。MMU(メモリ管理ユニット)があればLinuxカーネルなど本格的なOSが動きますが、MMUのないシステムの相手をすることもよくあります。クロスコンパイルすれば好きなプログラムが動かせるため、個人的にはこれが一番いじって面白い組み込みシステムだと思います。

5はただの小さいPCです。Intel Atomとかのシステムがこれに該当しますが、実はAtomとかだけかというとそうではなく、つい最近発売されたIntel Edisonなんかは超低消費電力・小型ながらx86のプログラムやLinuxが動くマイコンとして脚光を浴びています。とても欲しいので誰か買ってください。

高度な組み込みシステム 「ネットワークルータ」

さて、やっと本番に入りました。いやはや好きな分野なので手前で語りすぎました(笑)
皆さんはネットワークルータといえば、普段触れることもなくお部屋の隅に鎮座しているあれを思い出しますよね。ネットワーク基盤を支える”縁の下の力持ち”たるルータですが、あの中身のコンピュータの存在を意識したことがある方は少ないと思います。

普段私達の使っているコンピュータはHDDやSSDからOS(例: Windows, Linux, Mac etc.)を読み込んで動いています。一方の組み込みシステムにおけるOSは多くの場合内臓の不揮発メモリに格納され、「ファームウェア (Firmware)」と呼ばれているものはこのメモリの中身を指します。

激アツい組み込み機器 「ネットワークルータ」

ルータで動くソフトウェアを格納するファームウェアは、いろいろな方法で書き換えることが可能です。
ルータにWebブラウザでアクセスしてアップグレードするのが公式の方法ですが、実はファームウェアのヘッダを偽装したり、基板にシリアルを直結してブートローダを止めることで好き放題することができちゃうんですね。
好き放題した結果がこちら:
2014-11-23 21.54.39

見る影もないですが、一応これはルータです[要出典]
何をしている様子なのかというと、これはルータの基板(右の大きい方)についているシリアル信号を、Arduino(左の小さい方)に搭載されているUSB→シリアル変換チップを通してパソコンとやりとりしている様子です。ルータの基板の上を2本またがっているのがそれで、この2本だけでルータに搭載されているLinuxにログインして操作することができます。

画面の中で動いているのは、OpenWrtと呼ばれるLinuxディストリビューションで、ルータで動かすことを主軸に開発されている数少ないLinuxです。
激アツですよね?OpenWrtのロゴが見えるだけで胸熱ですよね!?!?

楽しい趣味コンピュータ「ネットワークルータ」

ファームウェアを入れ替えてしまえば、ルータは立派なコンピュータに昇格します(元からLinuxそのものは入ってるんですけどね)。
というのも、OpenWrtにはopkgというパッケージ管理システムが搭載されていて、OpenWrtのリポジトリに存在するたくさんのパッケージを好きにインストールすることができます。Pythonとかも動かせますよ!

実際にやった例として、私が度々写真上げたりプレゼンしたりしてる「ルータでUSB DACを鳴らす」というのをお見せしたいと思います。
2014-12-23 22.03.08

コマンドラインインターフェースだけで使える音楽プレーヤ「cmus」をまずopkgでインストールしておき、画像中央のSDカードをマウントしてから中の音楽を再生します。USB DACを鳴らしSDカードを読み書きするためにいくつかカーネルモジュールをインストールすれば、ルータからのびたDACやスピーカからひとりでに音が鳴り出す謎システムを構築することができます。

おわりに

書きたいことを全部書くことができず大変もどかしいですが、この記事を読んだ皆さんに組み込み機器で遊ぶ楽しさが伝われば嬉しいです。
BuffaloのNASにDebianを入れてPCモニタまでつないじゃう人など、世の中にはいろんな人がいます。

わたしもそんなふうなやばいひとになるためにがんばりたいとおもいます。(小並感)
それでは!


コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください