◯ ちょっと癖のあるLinux、「OpenWrt」でルーターをつくる。
前回紹介したように、Linux(リナックス)ディストリビューションの1つである「OpenWrt(オープンダブルアールティー)」を使えばルーターを手軽に自作できる。ただし一般的なLinuxディストリビューションとは少々導入方法が異なる。どのような手順になるのかを示そう。
ハードウエアは2つ用意した。米Intel(インテル)のCPU(Central Processing Unit:中央演算処理装置)「N100」を搭載した小型パソコン(ミニPC)と、Raspberry Pi(ラズベリーパイ)である。前者はルーター用にするため、LAN(Local Area Network)ポートが2基あるものにした。
OpenWrtは市販の無線LAN(Wi-Fi、ワイファイ)ルーターに組み込むものも用意されているため、ダウンロードすべきファイルにたどり着くまでの階層が深い(図3)。「Downloads」ページから安定版のビルド「Stable Release builds」をクリックすると、これまでの安定版の一覧が表示される(同(2))。
ここから最新の安定版(記事執筆時点では23.05.4)のリンクをクリックし、そこに表示される「targets」をクリック*10する(同(3))。すると対象とする機器が搭載するSoC(System on Chip)やメーカー名などで分類したフォルダーが一覧表示される(同(4))。今回説明しているのはミニPC用なので「x86」を選ぶが、Raspberry Pi用であれば「bcm27xx」を選ぶ。
古いパソコンにも対応している。
x86は32ビットと64ビットの2種類があるので、該当するアーキテクチャーを選ぶ(同(5))。N100は64ビットに対応しているのでここは64をクリックする。
これでようやくイメージファイルに行き着く(同(6))。ここでも幾つかファイルがあるが、「combined」というのが必要なファイルがまとまっているものなのでこれを選択するのが無難だ。なおx86のパッケージには無線LANデバイスのドライバーは入っていないので、無線LANを使う場合は別途入れる必要がある。
combinedをファイル名に含むものでも、「efi」がついていたりいなかったり、「ext4」または「squashfs」と書かれているものもある。まずefiがついているファイルは、BIOS(Basic Input/Output System、バイオス)がUEFI(Unified Extensible Firmware Interface)に対応*11している場合に選ぶ。UEFIは2010年ごろから導入され始めたので、最近のパソコンであればUEFIに対応しているはずだ。パソコンが古いなど、旧来型のBIOSを使っているときはefiがついていないものを選ぼう。
ext4やsquashfsは、OpenWrt動作時に使うファイルシステムを示している。ext4はLinuxで一般的に使われるファイルシステムなので、こちらを選べばよいだろう。squashfsにするとSquashFSというファイルシステムになる。こちらは読み出しのみの圧縮ファイルシステムで、ファームウエアとしてデバイスに書き込む際には有用なものだ。今回のようにパソコンに使うのであればそこまでする必要はないだろう。
起動ドライブに直接書き込む。
次にダウンロードしたファイルを、起動したいデバイスの起動ドライブに書き込む。一般的なLinuxディストリビューションの場合、USB(Universal Serial Bus)ドライブにインストール用のイメージを書き込み、そこにあるインストーラーを起動すると、ホストとなるパソコンにLinuxがインストールされる。
一方OpenWrtの場合は作法が異なり、イメージファイルを起動ドライブに直接書き込む必要がある。従ってミニPCを外付けドライブのないルーター専用アプライアンス的な形で動かしたい場合は、内蔵ドライブを取り出してそこに書き込まなければいけない。
最近のパソコンであれば、たいていはM.2 SSD(Solid State Drive)を搭載している(図4(a))。今回使用したミニPCも同様で、NVM(Non-Volatile Memory)express対応*12のM.2 SSDだった。これを取り外して*13SSD専用USBケースなどに入れてUSBドライブとして利用できるようにすれば、OpenWrtを書き込める(同(b))。
ツールでイメージを書き込む。
イメージを書き込むには専用のツールを使う。ここでは「balenaEtcher*14(バレナエッチャー)」を使った(図5)。同様のツールには「Rufus*15(ルーファス)」などがある。
1点だけ注意すべきところは、balenaEtcherはイメージファイルの圧縮形式として、OpenWrtの配布形式であるgz形式*16に対応していない点だ。gz形式に対応した圧縮展開ツールを使って別途展開*17しておく必要がある。
それ以外はほぼ表示メッセージに従ってボタンをクリックしていくだけで書き込みが完了する。balenaEtcherでは誤って作業中のパソコンのメインドライブを更新してしまわないよう、ドライブの選択時に外付けドライブのみを表示してくれる。こうした親切な設計はありがたい。
シンプルでコマンド操作が基本。
書き込みが完了したら起動だ。内蔵ドライブを取り出して書き込んだ場合はパソコンに戻して設置し直す。外付けUSBドライブにOpenWrtを入れて起動する場合は、BIOSの設定を変えてセキュアブートを無効にして起動デバイスを変更するか、Windows 10/11の設定アプリから「システム」→「回復」を選び、「PCの起動をカスタマイズする」を使ってUSBドライブから起動するように操作する。これでOpenWrtが動くはずだ(図6)。
Wi-Fiルーターに組み込むバージョンを探す場合は、「Table of Hardware」または「firmware selector」というリンクをたどると検索できる。前者は件数単位で区切られた一覧表が表示され、条件を入力すると絞り込める。後者はモデル名などを入力して検索する。こちらは日本語化されている。
UEFI対応のBIOSを単に「UEFI」と呼び、従来型のBIOSを「BIOS」と呼んで区別するケースも多い。
M.2 SSDにはNVMexpress対応のSSDのほか、mSATA(Serial ATA)対応のものがある。コネクターの形状が異なるので要注意だ。
動作を確認したいという程度であれば、外付けのUSBドライブに書き込んでUSBドライブから起動できるようにすればよいだろう。
公式サイトはhttps://etcher.balena.io/。
Microsoft Storeからもダウンロードできる。公式サイトはhttps://rufus.ie/。
UNIX系OSでよく使われているgzipコマンドによって圧縮されたファイル形式。
今回使用したx86用のイメージ(generic-ext4-combined-efi-img.gz)は展開時にエラーが出たが、使用した範囲では問題なかった。