WSR-1166DHP2へOpenwrtのインストール

2024年8月26日月曜日

Openwrt

t f B! P L

Openwrt インストール

市販のルーターにはファームウェアをOpenwrtに置き換えることができる機種があります。その機種に合ったイメージファイルで書き換えるので”インストール”という言い方は正しくなく、flush(書き込み/焼き込み)が正しい表現かもしれません。

Openwrtが各市販ルーターに対応するためにコミュニティの開発者さん達の尽力により実現されています。

Openwrtをフラッシュする手順は機種により異なりますが、下記のような手順が必要です。

  1. 物理的にシリアルケーブルを接続しての操作。
    機種を分解し、配線を半田つけをする必要があるなど、煩雑で難易度が高い。
  2. tftpブートし、他のTFTPサーバーからブートイメージを読み込む。
    フラッシュするための環境構築に多少手間がかかります。
  3. 純正ファームウェアの代わりにOpenwrtのアップグレードファイルを指定する方法。
    純正ファームウェアの更新手順と変わりないので操作が簡単。

私が使用しているBuffalo WSR-1166DHP2は上記2.のTFTPサーバーからブートイメージを読み込む手順でOpenwrt化することが可能です。

[参考]


イメージファイルの入手

Openwrt化に必要な2種類のイメージファイルについて

TFTPブートによるイメージの書き込みを行う際、イメージファイルは2種類必要になります。まず必要最小限の仮のイメージでルーターを起動し、正式なOpenwrtのイメージを送信してアップグレードするという手順です。

ファイルの判別方法

Openwrtのファイルは、機種名、Openwrtのバージョン等でファイル名が構成されています。ファイル名に含まれる”initramfs”/“sysupgradefs”でファイルの目的を判別します。

  • XXXXX_XXXX-initramfs-kernel.bin
    TFTPやシリアル接続で送信して一時的に起動するためのイメージ。これを踏み台にして正式なOpenwrtイメージをフラッシュします。intramfsはメモリ上で起動する一時的な環境で、再起動すると消えてしまいます。
  • XXXXX_XXXX-sysupgrade.bin
    Openwrtの正式なイメージファイルです。”initramfs”が必要なのは市販ルーターの純正ファームをOpenwrt化するときだけです。一度Openwrt化すればsysupgredeの新しいバージョンで直接アップデートできます。

initramfsイメージファイル について

sysupgredeイメージとinitramfsのバージョンは一致させる必要はないようです。公式のイメージファイルであっても起動できないinitramfsイメージがあるようですが、動作実績のあるものを使用し、新しいsysupgradeイメージを適用することもできます。

WSR-1166DHP(2)の場合、「17.01.4のバージョン」が動作実績があるとの情報がいくつかありました。

イメージファイルの選択

Buffalo WSR-1166DHP2をOpenwrt化します。これは内部的にはWSR-1166DHPと同じなのでそのファームウェアを使用します。

  • initramfs は動作実績のある17.01.4を使用します。 https://archive.openwrt.org/releases/17.01.4/targets/ramips/mt7621/lede-17.01.4-ramips-mt7621-wsr-1166-initramfs-kernel.bin
  • WSR-1166DHP2において、Openwrt22.0以降のバージョンでは2.4GhzのWifiが使用できません。19.07のバージョンでは特に不具合はありませんのでこれを使用します。 https://archive.openwrt.org/releases/19.07.10/targets/ramips/mt7621/openwrt-19.07.10-ramips-mt7621-wsr-1166-squashfs-sysupgrade.bin
LEDEとは ※Openwrtコミュニティは一時分裂している時期があり、バージョンの17.XXではフォークプロジェクトの”LEDE”がファイル名になっています。

TFTPサーバーの設定

tftpd-hpaのインストール

私はKubuntu24.0を使用しています。TFTPサーバーを使用するため”tftpd-hpa”をインストールしました

sudo apt install tftpd-hpa

TFTPで送信するファイルの準備

WSR-1166DHPをTFTPブートすると”linux.trx-recovery”というファイルを探しに行くようです。“initramfs”ファイルのファイル名を変更し、TFTPサーバーのディレクトリに配置します。 “tftpd-hpa”のファイル送信用ディレクトリは”/srv/tftp/”というディレクトリなので以下のようにコマンドを実行しました。

sudo cp ~/Documents/Openwrt/lede-17.01.4-ramips-mt7621-wsr-1166-initramfs-kernel.bin /srv/tftp/linux.trx-recovery

念の為 tftpd-hpa を再起動します。

sudo service tftpd-hpa restart

TFPTサーバーのIPアドレス設定 

WSR-1166DHPをTFTPブートさせると、IP:192.168.11.2 のTFTPサーバーを探します。そのためtftpd-hpa が起動しているPCのIPv4アドレスを下記のように設定します。

  • IPアドレス:192.168.11.2 
  • サブネットマスク:255.255.255.0 
  • デフォルトゲートウェイ:192.168.11.1

initramfsイメージ(踏み台OS)のインストール

 TFTPサーバーのPCとWSR-1166のLANポートをケーブルで接続します。 ルーターのAOSSボタンを押しながら電源ボタンを押します。AOSSボタンははなさず押し続け、10秒ほどたって離します。 ルーターのLEDが点滅し、TFTPによりイメージファイルが読み込まれますのでしばらく待ちます。大事をとって3分くらいでしょうか? 私はWireSharkを起動してTFTPがちゃんとやり取りしているか、ファイル送信が完了したかを確認しました。

SSH接続にてsysupgrade(本命OS)イメージの適用

IPアドレス設定をDHCP自動取得に変更

 無事initramfs のイメージでルーターが起動すると、ルーターのIPアドレスが”192.168.1.1”になり、DHCPサーバーも起動します。 PCのIPアドレス設定をDHCP自動取得に変更し、ルーターに接続できるようにします。

SCPによるsysupgradeイメージファイルの送信

SCPはメンテナンスが滞っているためセキュリティ的に非推奨とのことですがローカルでの作業なので使用しました。

scp -oHostKeyAlgorithms=+ssh-rsa -O ./openwrt-19.07.10-ramips-mt7621-wsr-1166-squashfs-sysupgrade.bin root@192.168.1.1:/tmp/
  • Openwrt19.07のSSHは古く、Kubuntu24.04の新しいSSHでは”ssh-rsa”は無効になっているため、”-oHostKeyAlgorithms=+ssh-rsa”オプションを付加します。
  • ”-O ”オプションを付加してSSHプロトコルを明示しないとエラーが出るため必須と思われます。

sysupgradeコマンドによるアップグレードの実行

ルーターにSSH接続を行います。パスワードは設定されていません。

ssh -oHostkeyAlgorithms=+ssh-rsa root@192.168.1.1

sysupgradeにより本命OSをルーターに書き込みます。

sysupgrade -n -F /tmp/{openwrt-19.07.10-ramips-mt7621-wsr-1166-squashfs-sysupgrade.bin 

sysupgrade コマンドを実行すると自動的に先起動し、インストールプロセスが継続されます。ファームウェア書き込み後の起動は少し時間がかかります。5分くらいかかるでしょうか? うまくいくとルーターのOpenwrtが起動します。 ブラウザで”http://192.168.1.1” もしくは “http://openwrt.lan”へアクセスし、LuCI(Openwrt のWeb GUI)が表示されていれば成功だと思います。Summary画面でバージョン等を確認しましょう。 もしうまく行かない場合、手順を確認するか、別のファームウェアイメージファイルを試してみてください。異なるバージョンなら稼働することがあります。

Translate

QooQ