- リンクを取得
- ×
- メール
- 他のアプリ
はじめに
ミニPC(GMKtec-G2)にOpenWRTを導入していく。
GMKtec-G2にはRealtek製の無線であるRLT8852BEが搭載されているが、
現時点だと公式で用意されているイメージやパッケージにRTL8852BEが用意されていないようなので、カスタムビルドとかいう黒魔術を行うハメになった。(非エンジニアにはキツい)
1. OSのイメージファイルを準備(カスタムビルド)
2. ミニPCへ導入(要USBメモリ)
3. ネットワーク初期設定(WebGUIにアクセスするまで)
OSのイメージファイルを準備(カスタムビルド)
OpenWRTをインストールする際、以下3つの選択肢がある。
1. 公式にあるビルド済みのイメージでインストールする。必要な機能はインストール後にパッケージマネージャーで追加する。
2. イメージビルダーを用いてプリインストールのパッケージを追加した状態のイメージを作成してインストールする。インストール後でもパッケージマネージャーから機能を追加できる。
3. カスタムビルドにより新たに作成したイメージを用いてインストールする。パッケージマネージャーで提供されない機能を追加したい場合はこの手段を用いる。カーネルのバージョンが異なってしまうせいか、パッケージマネージャーで追加できる機能に制限が出てしまう。特にドライバなどカーネルに関連が深いパッケージが軒並み追加できなくなる。
※パッケージマネージャーで提供されないもので、カーネルに深く関連しないものはカスタムパッケージなどを作成して後から追加できるみたい。
パッケージマネージャーで提供されないドライバなどを後から追加するとなると、可能ではあるが現実的ではなく、上記の項目3の方法を取ったほうがまだマシ、ということらしい
今回使うミニPC(GMKtec-G2)はRealtek製の無線、RLT8852BEが搭載されているが、この記事を書いている時点ではパッケージマネージャーでRTL8852BEのドライバーが提供されていない。
そういったものを追加するにはカスタムビルドを行う必要があるとのこと。
カスタムビルドを行うとデメリットととして、公式のイメージとカーネルバージョンが異なってしまう。公式のイメージとカーネルが異なってしまうと、パッケージマネージャーで提供される機能が一部インストールできなくなる。(当たり前かもしれないが、特にkmod系(カーネルモジュール)が追加できなくなる)
また、バージョンアップする際はビルドし直しになる手間もある。
ビルド環境の準備
カスタムビルドの手段を行う場合、ビルド環境を別途用意する必要がある。
今回はWindwosでLinuxが使えるWSLを用いて、Ubuntuによる環境を構築した。
WSLの使用を開始する手順はググればたくさんでてくるので記載を省略する。
(公式ではWSLによるビルド環境は非推奨らしいが、別に動いたからヨシ)
WSLにUbuntuを入れたら、以下ページにあるパッケージをインストールする。
例
sudo apt update sudo apt install build-essential clang flex bison g++ gawk \ gcc-multilib g++-multilib gettext git libncurses-dev libssl-dev \ python3-distutils python3-setuptools rsync swig unzip zlib1g-dev file wget
ソースコードの入手・設定・ビルド
そしたら適当なディレクトリでOpenWRTのソースコードを入手する
git clone https://github.com/openwrt/openwrt.git
cd openwrt/
feedの更新?を行う
(よくはわかっていない。たぶんパッケージの置き場所とかそのリストだと思われる。pdateのほうはネットワークの状態でよく失敗するので、失敗した場合は成功するまでコマンドを実行する。)
./scripts/feeds update -a
./scripts/feeds install -a
ビルドするイメージを設定する
make menuconfig
なんかウィザードが立ち上がる。今回は以下のように設定した。
GMKtec-G2は普通のPCなのでx86で64を選択した。
Target System > x86
Subtarget > x86_64
Target Profile > Generic x86/64
ドライバ関係
Firmware > rtl8852be-firmware
kernel modules > wireless drivers > kmod-rtw89-8852be
Kernel modules > USB Support > kmod-usb-net-asix-ax88179 (buffalo製のUSBのNICを使いたかったため追加した)
無線ユーティリティ関係
Network > WirelessAPD > wpad
WebUIであるluciはデフォルトでは入っていない。後から導入できるが、今導入しておく。
LuCI > 1. Collections > luci
※ 項目を選択する時、<M>ではなくて、<*>の状態にすること。
あとはSAVEしてEXITすればよい。
次にmakeする。以下はコマンドの例(-j8はジョブ数。CPUの性能と相談。めちゃくちゃ時間かかるし、ストレージの容量も何十GBも使う。)
make -j8 V=s
なんかpython関係でエラーが出たため以下を導入したらビルドが通った。
sudo apt install python3-venv
makeが成功したら、openwrt\bin\targets\x86\64にイメージが作成される。
そのままCLIで確認してもよいが、WSLを使っているためwindowsのエクスプローラーからでもアクセスできる。以下にアクセスし、出来上がったイメージを確認してみる。
\\wsl.localhost\Ubuntu
例: \\wsl.localhost\Ubuntu\home\user\openwrt\bin\targets\x86\64
上記ディレクトリ内にある、以下ファイルを使用する。
openwrt-x86-64-generic-ext4-combined-efi.img.gz
ミニPCへの導入
OpenWRTはインストーラーがない(?)ので、DDコマンドなどでイメージをミニPCのSSDに書き込んでいく。
今回はUSB経由で起動したUbuntuからミニPCのSSDにOpenWRTのイメージを書き込んだ。
まずはUbuntuのインストーラー等が入ったUSBメモリをミニPCに接続し、起動する。
「try ubuntu」などを選択してubuntuを起動させる。
OpenWRTをインストールするにあたりミニPC本体のストレージを空にする。
ubuntuにはGpartedが入っていると思うのでそれを使う。
次に「1. OSのイメージファイルを準備(カスタムビルド)」で作成した「openwrt-x86-64-generic-ext4-combined-efi.img.gz」を何らかの手段でUbuntuに転送し、解凍しておく。
そうすると「openwrt-x86-64-generic-ext4-combined-efi.img」が生成される。
以下コマンドにより、ミニPCのストレージ(sda)にOpenWRTのイメージを書き込む。
sudo dd if=openwrt-x86-64-generic-ext4-combined-efi.img of=/dev/sdaこの時点でOpenWRTのインストール自体は完了しているが、このままだとストレージに大量の空き領域が存在している。もったいないと思う場合は次の手順でOpenWRTの使用領域を増やす。
なんかダイアログが出た場合は「OK」→「Fix」でよい。
「/dev/sda2」に割り当てられているのがデータ領域なので、そこを選択して右クリックしてから「Resize/Move」を選択する。
いい感じにできたら右下の「Resize/Move」を押下する。
これでインストール作業は完了したのでrebootなどを実行(USBメモリは適宜抜いておく)してOpenWRTを起動する。
真っ黒い画面で止まったり、しばらく画面が流れなかったりするが、
10分ぐらい経過して上記のような感じになったらEnterを押してあげる。
ネットワーク初期設定(WebUIにアクセスするまで)
WebUIへのアクセスはデフォルトでeth0で192.168.1.1になっている。
変更したい場合は以下コンフィグを編集する。
vi /etc/config/network
変更を適用する時は以下
/etc/init.d/network reload
以下コマンドでIPアドレスの状況を確認
ip a
ifconfig
コメント
コメントを投稿