「インストール方法概説」の編集履歴(バックアップ)一覧はこちら
インストール方法概説 - (2019/08/31 (土) 21:56:09) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
*インストール方法概説
OpenWrtなど純正ではないファームウェアをルーターにインストールする方法は機種によってやり方が様々ですが、
いくつかのパターンに分けられます。ここではその大体の流れを記述します。
だいたいはこのどれかのパターンでインストール/リカバリできると思います。
*●ハードウェア無改造で行う方法
**■Webインターフェースから
***1)アップグレード用ページからそのまま
純正メーカーファームウェアのWeb-GUIのアップグレード用ページからそのままインストールする方法
一番手軽で簡単。
本来は純正ファームウェア側以外はインストールできないようにチェックが入るが、
メーカー独自の構造が解析されていて、純正に準じる構造に作られているためインストールできる。
***2)デバッグ用ページから
通常では入れないデバッグ画面用画面からインストールする方法
デバッグ用画面への入る際に特殊なIDとPasswordを必要とする場合もあり
本来やっている機種チェックなどを迂回するため対応していないファームウェアをインストールできてしまうリスクあり
例)Buffalo WZR-HP-AG300H/WZR-HP-G300シリーズ他
**■ CLIから
標準でtelnet/sshできる機種、デバッグページからtelnetを有効にできる機種の場合、
CLI経由で純正ファームウェアのOSにログインし、OSで用意された機能を使って
***1)純正ファームウェアのCLIから
純正ファームウェアのLinuxコンソールにアクセスし、コマンドを使ってインストールする方法
QSDKなどOpenWrtベースの純正ファームウェアではsysupgradeコマンドがそのまま使えることもある
mtdコマンドやDDコマンドなどでflashメモリに直接書き込む方法もある
メーカー側で意図的にコマンドを無効にしている場合もありいつもできるとは限らない。
**■ bootloaderの機能で
おもに家庭用ルーターの場合、出荷前にファームウェアを入れ替える場合に備えて
機器単体で書き換える仕組みを持ったものが多数ある。
その仕組みを解析して流用し、任意のファームウェアに書き換える方法。
bootloaderさえ起動すればインストールできるので、
他の方法でファームウェアインストールに失敗し、OS起動できない場合にも対応できる。
***1)TFTP clientで
電源ONとともに作業端末からTFTPクライアントを使って ファームウェアを送り込む方法
ルーターの電源ON後のわずかな時間だけTFTPサーバが起動してファームウェアを受け付ける機種がある。
起動時のIPアドレスは固定になっている。
むやみな書き換えを防ぐために、TFTPサーバ起動時は独自のMACアドレスでARPにも応答しない機種の場合は
作業端末側ARPテーブルにスタティックに登録する必要がある。
例)Buffalo BHR-4RV 、 WHR-G30xN、WZR-HP-AG300H/WZR-HP-G30xNHシリーズ等
***2)Webブラウザで
電源ONとともに作業端末からWebブラウザを使って
ルーターの電源ON後にHTTPサーバが起動してファームウェアを受け付ける機種がある。
起動時のIPアドレスは固定になっている。
通常のWebブラウザで可能だがインストール可能な時間が短いのでcURLなどのコマンドラインツールを使う方法もある。
例)Buffalo WZR-600DHP2/WZR-900DHP
***3)外部サーバから
1、2)とは逆に電源ON時に外部サーバからファームウェアを取得しようとする機種がある。
外部TFTPサーバに取得しに行く場合が多いが、NFS/HTTP/FTP などもありうる。
以前は外部から読み込んだら直接ファームウェアを書き換えてしまう場合もあったが
メモリが十分に増えた最近の機種では、
RAMディスク上で動く最小限の「踏み台OS」を起動させ、踏み台OS経由でファームウェアを書き込む場合が多い。
踏み台OSはinitramfs image と呼ぶ場合もある。
WPS/AOSSボタンを押下しながら電源ONした場合に取得しに行く場合が多い。
例)Buffalo WSR-600DHP/WSR-1166DHP/WSR-1166DHP2/WXR-2533DHP等
*●筐体を開けて基板へのアクセスが必要
**■要シリアル接続
基板上のシリアル(UART)ピンにUSB-UART変換アダプタなどを介してシリアル接続する。
基板上に最初からシリアルピンが実装されている場合、スルーホールだけの場合、チップから直接引き出す場合がある
***1)純正ファームウェアのCLIから
純正ファームウェアのLinuxコンソールにアクセスし、コマンドを使ってインストールする方法
QSDKなどOpenWrtベースの純正ファームウェアではsysupgradeコマンドがそのまま使えることもある
mtdコマンドやDDコマンドなどでflashメモリに直接書き込む方法もある
メーカー側で意図的にコマンドを無効にしている場合もありいつもできるとは限らない。
シリアル経由で認証なしでrootプロンプトに入れる場合と、パスワードが必要な場合がある。
***2) bootloaderから
bootloaderにシリアルアクセスして書き換える方法
u-bootやCFEなどのbootloader はflashメモリに書き込む方法を持っている場合がほとんど。
OSアップグレード用コマンドが用意されている場合はそれを利用し、
ない場合は基本的な メモリwrite コマンドで対応する場合がある。
OSではないbootloaderにどのようにファームウェアを転送するかが問題となるが、
以下の方法がある。
・bootloader側でTFTPサーバなどを起動させ、端末からネットワーク経由で送信する方法
・bootloaderからTFTP/FTP/HTTP等の外部サーバにファイルを取得しに行く方法
・USBポートに挿したUSBメモリやメモリカードスロットからファイルシステム経由で
・xmodem 等のバイナリ転送プロトコルを使ってシリアル経由で端末から送信する方法 例)WHR-G54S等
**■ 開発用ハードウェアを使う
***1)基板上のflashメモリに直接書き込む
フラッシュメモリライターを基板上のフラッシュメモリのピンに直接接続してファームウェアを書き込む。
ピン数が8~16と少ないSPIフラッシュなどの場合はメモリクリップを使ってはんだ付けせずに書き込みができる。
NANDフラッシュのように表面実装+多ピンの場合は困難である。
基板上からフラッシュメモリを引き剥がしてフラッシュメモリライターで書き込んだあと、
再はんだ付けして戻す方法があるが、相当なノウハウと実装技術が必要となる。
***2)JATGを使って書き込む
開発時に使うデバッグ用のJTAGポートが基板上にある機種があり、
ここにJTAGプローブと呼ばれる機器を接続し、機器のOSやbootloaderを介さずに
外部からフラッシュメモリを書き換える方法がある
基板上にJTAG用パターンが残されている機種は多いが、
アクセス方法がSoC型番/フラッシュメモリ型番/基板設計に依存するので
高い組込系開発ノウハウが求められる。
開発用の正規品のJTAGプローブと専用ソフトは高額なうえ、
SoCメーカーから秘密保持契約の上で提供される公式のデータシートやマニュアルの情報が必要な場合も多い
電子工作の延長で製作できる簡易版のプローブとOpen-OCD等のOSSなどで対応できる場合もある。
例)Buffalo WHR-G54S / LinkSys WRT-54シリーズ
OpenWrtなど純正ではないファームウェアをルーターにインストールする方法は機種によってやり方が様々ですが、
いくつかのパターンに分けられます。ここではその大体の流れを記述します。
だいたいはこのどれかのパターンでインストール/リカバリできると思います。
*●ハードウェア無改造で行う方法
**■Webインターフェースから
***1)アップグレード用ページからそのまま
純正メーカーファームウェアのWeb-GUIのアップグレード用ページからそのままインストールする方法
一番手軽で簡単。
本来は純正ファームウェア側以外はインストールできないようにチェックが入るが、
メーカー独自の構造が解析されていて、純正に準じる構造に作られているためインストールできる。
***2)デバッグ用ページから
通常では入れないデバッグ画面用画面からインストールする方法
デバッグ用画面への入る際に特殊なIDとPasswordを必要とする場合もあり
本来やっている機種チェックなどを迂回するため対応していないファームウェアをインストールできてしまうリスクあり
例)Buffalo WZR-HP-AG300H/WZR-HP-G300シリーズ他
**■ CLIから
標準でtelnet/sshできる機種、デバッグページからtelnetを有効にできる機種の場合、
CLI経由で純正ファームウェアのOSにログインし、OSで用意された機能を使って
***1)純正ファームウェアのCLIから
純正ファームウェアのLinuxコンソールにアクセスし、コマンドを使ってインストールする方法
QSDKなどOpenWrtベースの純正ファームウェアではsysupgradeコマンドがそのまま使えることもある
mtdコマンドやDDコマンドなどでflashメモリに直接書き込む方法もある
メーカー側で意図的にコマンドを無効にしている場合もありいつもできるとは限らない。
**■ bootloaderの機能で
おもに家庭用ルーターの場合、出荷前にファームウェアを入れ替える場合に備えて
機器単体で書き換える仕組みを持ったものが多数ある。
その仕組みを解析して流用し、任意のファームウェアに書き換える方法。
bootloaderさえ起動すればインストールできるので、
他の方法でファームウェアインストールに失敗し、OS起動できない場合にも対応できる。
***1)TFTP clientで
電源ONとともに作業端末からTFTPクライアントを使って ファームウェアを送り込む方法
ルーターの電源ON後のわずかな時間だけTFTPサーバが起動してファームウェアを受け付ける機種がある。
起動時のIPアドレスは固定になっている。
むやみな書き換えを防ぐために、TFTPサーバ起動時は独自のMACアドレスでARPにも応答しない機種の場合は
作業端末側ARPテーブルにスタティックに登録する必要がある。
例)Buffalo BHR-4RV 、 WHR-G30xN、WZR-HP-AG300H/WZR-HP-G30xNHシリーズ等
***2)Webブラウザで
電源ONとともに作業端末からWebブラウザを使って
ルーターの電源ON後にHTTPサーバが起動してファームウェアを受け付ける機種がある。
起動時のIPアドレスは固定になっている。
通常のWebブラウザで可能だがインストール可能な時間が短いのでcURLなどのコマンドラインツールを使う方法もある。
例)Buffalo WZR-600DHP2/WZR-900DHP
***3)外部サーバから
1、2)とは逆に電源ON時に外部サーバからファームウェアを取得しようとする機種がある。
外部TFTPサーバに取得しに行く場合が多いが、NFS/HTTP/FTP などもありうる。
以前は外部から読み込んだら直接ファームウェアを書き換えてしまう場合もあったが
メモリが十分に増えた最近の機種では、
RAMディスク上で動く最小限の「踏み台OS」を起動させ、踏み台OS経由でファームウェアを書き込む場合が多い。
踏み台OSはinitramfs image と呼ぶ場合もある。
WPS/AOSSボタンを押下しながら電源ONした場合に取得しに行く場合が多い。
例)Buffalo WSR-600DHP/WSR-1166DHP/WSR-1166DHP2/WXR-2533DHP等
*●筐体を開けて基板へのアクセスが必要
**■シリアルコンソール接続で
基板上のシリアル(UART)ピンにUSB-UART変換アダプタなどを介してシリアル接続する。
基板上に最初からシリアルピンが実装されている場合、スルーホールだけの場合、チップから直接引き出す場合がある
***1)純正ファームウェアのCLIから
純正ファームウェアのLinuxコンソールにアクセスし、コマンドを使ってインストールする方法
QSDKなどOpenWrtベースの純正ファームウェアではsysupgradeコマンドがそのまま使えることもある
mtdコマンドやDDコマンドなどでflashメモリに直接書き込む方法もある
メーカー側で意図的にコマンドを無効にしている場合もありいつもできるとは限らない。
シリアル経由で認証なしでrootプロンプトに入れる場合と、パスワードが必要な場合がある。
***2) bootloaderから
bootloaderにシリアルアクセスして書き換える方法
u-bootやCFEなどのbootloader はflashメモリに書き込む方法を持っている場合がほとんど。
OSアップグレード用コマンドが用意されている場合はそれを利用し、
ない場合は基本的な メモリwrite コマンドで対応する場合がある。
OSではないbootloaderにどのようにファームウェアを転送するかが問題となるが、
以下のパターンがある。(bootloaderのつくりに依存)
・bootloader側でTFTPサーバなどを起動させ、端末からネットワーク経由で送信する方法
・bootloaderからTFTP/FTP/HTTP等の外部サーバにファイルを取得しに行く方法
・USBポートに挿したUSBメモリやメモリカードスロットからファイルシステム経由で
・xmodem 等のバイナリ転送プロトコルを使ってシリアル経由で端末から送信する方法 例)WHR-G54S等
**■ 開発用ハードウェアを使う
***1)基板上のflashメモリに直接書き込む
フラッシュメモリライターを基板上のフラッシュメモリのピンに直接接続してファームウェアを書き込む。
OSやbootloaderの仕様に関係なく書き込んでしまえるので、bootloaderを壊してしまった場合も対応できる。
ピン数が8~16と少ないSPIフラッシュなどの場合はメモリクリップを使ってはんだ付けせずに書き込みができる。
NANDフラッシュのように表面実装+多ピンの場合は困難である。
基板上からフラッシュメモリを引き剥がしてフラッシュメモリライターで書き込んだあと、
再はんだ付けして戻す方法があるが、相当なノウハウと実装技術が必要となる。
フラッシュメモリライターはフラッシュメモリチップの型番や規格が決まっているので、対応するものを準備する必要がある。
***2)JATGを使って書き込む
開発時に使うデバッグ用のJTAGポートが基板上にある機種があり、
ここにJTAGプローブと呼ばれる機器を接続し、機器のOSやbootloaderを介さずに
外部からフラッシュメモリを書き換える方法がある
基板上にJTAG用パターンが残されている機種は多いが、
アクセス方法がSoC型番/フラッシュメモリ型番/基板設計に依存するので
高い組込系開発ノウハウが求められる。
開発用の正規品のJTAGプローブと専用ソフトは高額なうえ、
SoCメーカーから秘密保持契約の上で提供される公式のデータシートやマニュアルの情報が必要な場合も多い
電子工作の延長で製作できる簡易版のプローブとOpen-OCD等のOSSなどで対応できる場合もある。
例)Buffalo WHR-G54S / LinkSys WRT-54シリーズ