RaspberryPi2/3をGW-450D2で5GHz WiFi対応にしてみた(RASPBIAN STRETCH LITE版)

3Dプリンタサーバとして使っていたRaspberryPi2が、ある日突然応答しなくなりました。

どうやらSDカードが寿命を迎えたらしい・・・。

2年程前に作ったイメージファイルからのリストアも考えましたが、RASPBIANがメジャーバージョンアップしてJESSIEからSTRETCHになったという事もあり、今回はゼロからのクリーンインストールをすることにしました。

勿論、物ぐさ太郎として、今回もキーボードもモニタも繋がずにセットアップしております。

こういう作業って、たまにやっておかないと忘れてしまうのよね。(^^;)

ということで、今回は自分への備忘録としてセットアップおさらい記事です。

以前のPi ZeroとJESSIE LITEでの記事はコチラ↓

Pi Zero rev1.3をGW-450D2で5GHz WiFi対応にしてみた(RASPBIAN JESSIE LITE版)
RaspberryPiの超小型バージョンのPi Zeroを5GHz無線LAN対応にしてみました。

スポンサーリンク

対象環境

対象ハードウェア: RaspberryPi 2/3、GW-450D2

今回はARMv7コアのRaspberry Pi 2/3で試してます。

最近は「日本製」なんてのもあるのね。

尚、ARMv6コアのPi Zeroだと別な手法が必要かもしれません。(いずれ試してみようと思います)【2017/09/18追記】Pi Zeroで試してみました。コチラを参照下さい。

5GHz WiFiな無線LANドングルはお馴染みの11ac対応GW-450D2です。(旧版のGW-450Dでも動きました)

microSDカードは信頼?の東芝製 8GBです。

64GBも当たり前なこのご時世になぜ8GBかというと、環境構築したSDをWin32DiskImagerでイメージごとNASへバックアップしておりまして、SDの容量デカいとその分NASのストレージを圧迫するので環境構築時は出来るだけ小さい容量が望ましい・・・という事情です。

ちなみに、Win32DiskImagerでのイメージ書き込みで復元する際に、SD容量小→大の書き込みは可能。(当然、逆はNG)

なので、後から実用する予定の16GBや32GBのSDに、バックアップしておいた8GBのイメージを書き込んで、RASPBIAN上で容量拡張する手法を取ってます。(容量拡張は raspi-config 内のメニューより実行可能です)

対象RASPBIAN: STRETCH LITE

2017/8月、2年サイクルのメジャーバージョンアップとしてRASPBIAN STRETCHがリリースされています。

ということで、今回は最新のSTRETCHを使う事にします。(9/6時点では、8/16付け版が最新でした)

事前に公式↓からダウンロードしておいてください。

尚、LITE版なのは、個人的にGUIデスクトップ環境は使う予定が無いので、出来るだけ軽くしたいという事情からです。

カーネルは同じでしょうから、RASPBIAN STRETCH WITH DESKTOP版でも同じ手法が使えるとは思います。(試してはないですが。。)

作業概要

当ブログへリンクを下さったコチラ↓の記事内容がきっかけです。

カーネルのフルビルド無しで、モジュールビルドする方法があるんですねぇ。(情報有難うございました)

ただ、日が経ってVerなどの環境が変わったせいか、先の記事通りだと若干躓いた部分もあったので、改めて自分用におさらいとして下記に纏めてみました。

大雑把な流れはこんな感じです。

  1. microSDカードへRASPBIAN STRETCH LITEを書き込む
  2. 有線LANでSSH接続して初期設定
  3. Linuxソースのダウンロードと関連モジュールのビルド
  4. ドライバソースへのパッチ当てとビルド&インストール
  5. 無線LANの接続設定

所用時間はPi2で1時間強といったところでした。カーネルフルビルドするより圧倒的に速い。凄い!!

尚、前置きでも書きましたが、物ぐさ太郎の矜持として、RaspberryPiへは何も繋がず、キーボード、モニタレスでセットアップ作業しております。(だって、モニタ繋ぐの面倒なんだもん)

なので、事前にRaspberryPiの有線LANでのIPアドレス、無線LANドングルGW-450D2のIPアドレスは把握しておく必要が有ります。 ルーターなどで、MACアドレスからIPを固定割り当てする様にしておけば問題ないでしょう。

では、作業を始めましょう。

microSDカードへRASPBIAN STRETCH LITEを書き込む

イメージファイルの書き込み

公式からダウンロードしたRASPBIANをmicroSDカードへ書き込みます。

私は、イメージ書き込みには「Win32DiskImager」というアプリを使っておりますが、使用方法が分からない場合は、コチラ↓を参考に。

RaspberryPi3をモニター・キーボードレスセットアップしてみた
さて、ケースも無事出来ましたので、RaspberryPi3のセットアップを行おうと思います。 いつもは、RaspberryPi用にHDMIモニタとUSBドングル付きのコードレスキーボード&マウスを用意するのですが、今回は敢えてモニタもキーボードもマウスも用意せず、何も無しのイキナリPCからの遠隔だけでセットアップしてみようと思います。(単に物ぐさなだけw)

SSH接続の為の事前準備

最近のRASPBIANでは、そのままだとSSH接続が使えない状態になっています。(セキュリティ対策の一環??)

コチラによると、microSDカードの/boot/直下にsshという名前で拡張子無しの空ファイルを作っておけば、RaspberryPiで起動させた際に自動的にSSH接続が有効になるみたいなので、PCから外す前にファイルを作っておきましょう。

有線LANでSSH接続して初期設定

有線LANを繋いで起動させ、PCからSSH接続する

先程イメージファイルを書き込んだmicroSDカードを対象のRaspberryPiへセットし、有線LANを繋いだ状態で起動させます。

(写真では気が早くGW-450D2も繋いでおりますが、繋いだまま作業しても問題なしです)

ちなみに、左の木製(MDF)ケースと右の3Dプリンタ製ケースは、当ブログで公開しているオリジナルのPiケースです。

コチラ↓の記事で紹介しておりますので、ご興味あれば是非見て行ってください。(共にデータ公開中です)

レーザーカッターでRaspberryPi2/3用のケースを作成してみた(SVGデータ公開有り)
レーザーカッターの使いこなしはまだまだですが、習作としてオリジナルのRaspberryPiケースを作ってみました。
RaspberryPi3用のケースを作成してみた(STLデータ公開有り)
FABOOL Laser Miniの制御をWindowsPCからRaspberryPiへ移行すべく、RaspberryPi3を追加発注したところ、RaspberryPi3ではmicroSDスロットの仕様が変更されていることに気付きました。 という事で、今回はRaspberryPi3のケースを作った話です。

閑話休題、作業を続行しましょう。

事前に判明している有線LANのIPアドレスに対し、PCからTera TermなどのターミナルソフトでSSH接続します。(正しいIPアドレスで、先のSSH有効化処置を行ってあれば、ちゃんと繋がる筈です)

ターミナルソフトが分からない方は、コチラ↓を参考に。

RaspberryPi3をモニター・キーボードレスセットアップしてみた
さて、ケースも無事出来ましたので、RaspberryPi3のセットアップを行おうと思います。 いつもは、RaspberryPi用にHDMIモニタとUSBドングル付きのコードレスキーボード&マウスを用意するのですが、今回は敢えてモニタもキーボードもマウスも用意せず、何も無しのイキナリPCからの遠隔だけでセットアップしてみようと思います。(単に物ぐさなだけw)

初期設定を行う

SSH接続で初期ユーザー「pi」でログインしているものとします。

下記コマンドで初期設定を行います。

$ sudo raspi-config

下記の項目を修正してください。

[Change User Password]

「pi」ユーザーのパスワードをデフォルトのまま使うのは、セキュリティリスクとなります。

後ほど、ユーザー名を「pi」から変更する作業なども行いますが、初期工程は「pi」ユーザーで進めますので、最初にデフォルトパスワードを変更しておきましょう。

[Localisation Options] ->[Change Locale]

「en_us.UTF-8」「ja_jp.UTF8」「ja_jp.EUC-JP」を追加して、

default system localを「ja_ja.UTF8」に変更します。

[Localisation Options] ->[Change Timezone]

「Asia」→「Tokyo」を選択。

[Localisation Options] ->[Change WiFi Country]

「JP Japan」を選択。

以上の項目を修正したら、Finishを選んで再起動しましょう。

一通りアップデートを掛ける

再起動後、もう一度「pi」ユーザーでSSH接続します。(パスワード変更した場合は新しいパスワードを入れて下さい)

まずは、下記コマンドで一通りアップデートをしておきます。

$ sudo apt-get update
$ sudo apt-get -y dist-upgrade
$ sudo rpi-update

rebootを促されるので、一応再起動しておきましょう。

$ sudo reboot

もう一度「pi」ユーザーでSSH接続し、下記コマンドで必要なプログラムをインストールします。

$ sudo apt-get install gcc make bc screen ncurses-dev git

Lunixソースのダウンロードと関連モジュールのビルド

カーネルバージョンを確認する

下記コマンドでカーネルのバージョンを確認します。

$ uname -r

2017/09/06時点では、「4.9.47-v7+」と返ってきました。

カーネルソースと関連モジュールを用意する

作業フォルダへ移動します。

$ cd /usr/src

カーネルソースを取得します。もし先に「uname -r」で確認したカーネルバージョンが4.9系列じゃなければ、赤字部分をバージョンに合う様に修正しましょう。

$ sudo wget https://github.com/raspberrypi/linux/archive/rpi-4.9.y.tar.gz

一緒に、モジュールチェックファイルも取得します。

$ sudo wget https://github.com/raspberrypi/firmware/raw/master/extra/Module.symvers

先程取得したカーネルソースを展開します。(赤字部分は先程のバージョンに合う様に修正しましょう)

$ sudo tar xvfz rpi-4.9.y.tar.gz

シンボリックリンクを作成します。(赤字部分は先程のバージョンに合う様に修正しましょう)

$ sudo ln -s /usr/src/linux-rpi-4.9.y/ /lib/modules/`uname -r`/build

モジュールビルド用フォルダに移動します。

$ cd /lib/modules/`uname -r`/build

makeコンフィギュレーションを初期化します。

$ sudo make mrproper

暫し待たされます・・・。

ちなみに、コチラによると、このコマンド中のmrproperというのは、欧州で知られてるMr.Properというクリーニング製品の名前にちなんだものだそうです。「cleanより綺麗になる」という意味合いなのかな?(笑)

config.gzを準備します。

$ sudo modprobe configs

コンフィギュレーションを作成します。

$ sudo sh -c 'gzip -dc /proc/config.gz > .config'

バージョンチェックで刎ねられない様に、作成したコンフィギュレーションを修正する。(赤字部分は先程のカーネルバージョンに合う様に修正しましょう)

$ sudo sed -i 's/CONFIG_LOCALVERSION="-v7"/CONFIG_LOCALVERSION="-v7+"/' /lib/modules/`uname -r`/build/.config

ちなみに、参考にさせて頂いた記事にはこの作業はありませんでしたが、私の環境では後半のismodの工程でERRORが返ってきましたので、コチラ↓を参考にこの対策を追加しました。

尚、この対策でバージョンを合わせるだけでは不十分らしく、モジュールチェックファイルを入手してから、コンフィギュレーションの作成をする様も手順変更してあります。(本記事は修正後の手順になってます)

関連ファイルをmakeします。

$ sudo make modules_prepare

暫し待たされます・・・。

ドライバソースへのパッチ当てとビルド&インストール

Planex公式ドライバを入手する

コチラ↓から、GW-450DのPlanex公式Linux用ドライバをダウンロードします。

取得したzipファイル中の「mt7610u_wifi_sta_v3002_dpo_20130916.tar.bz2」を、RaspberryPiへscpコマンドなどで転送します。 (Tera Termの場合は、対象のzipファイルをターミナルウィンドウへドラッグアンドドロップするとダイアログが出ますので、SCPボタンをクリックすればファイルが転送されます)

デフォルトだと、/home/pi/に転送されますので、確認します。

$ cd /home/pi
$ ls

「mt7610u_wifi_sta_v3002_dpo_20130916.tar.bz2」がちゃんと存在するか確認した後、解凍します。

$ sudo tar xvjf mt7610u_wifi_sta_v3002_dpo_20130916.tar.bz2

Planex公式ドライバのソースにパッチをあてる

このPlanexドライバはそのままでは使えず、ソースファイルの修正が必要なのですが、修正用パッチを公開されてる方がいらっしゃいますので、有り難く使わせて頂く事にします。ありがたや~

ドライバ修正パッチを取得します。

$ git clone https://gist.github.com/moutend/cb35a37297910c99d3e2 gist

そのままだと、何故か$HOMEパスが通らないので、パッチを一部修正します。

$ vi ./gist/patch.sh

下記1行を追加して上書き保存します。

HOME=/home/pi

ドライバ修正パッチを実行します。

$ sudo ./gist/patch.sh

gcc-4.8を準備する

ドライバのコンパイルにはgcc-4.8あるいは4.9が必要です。

ただ、gcc-4.9だとエラーチェックが厳しくてコンパイルが通らない模様。参考にさせて頂いた記事では、4.9でも通る様にソース修正されてる様です。凄い!!

「なんだか負けたような気がする」という拘りは凄く共感出来るのですが、私は物ぐさな気持ちの方が勝ってしまいまして・・・gcc-4.8でも通るなら良いか・・・ということで、本記事では4.8のままとしています。 悪しからずご了承下さい。m(__)m

ということで、gcc-4.8を取得します。

$ sudo apt-get -y install gcc-4.8

続いて、gcc-4.8の優先度を変更します。

$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 60

ちゃんと、gcc-4.8が優先になったかを確認します。

$ gcc --version | head -n 1

2017/09/06時点では、「gcc (Raspbian 4.8.5-4) 4.8.5」と返ってきました。

ドライバをビルドし、ロードする

ドライバのファイルがあるディレクトリへ移動します。

$ cd ./mt7610u_wifi_sta_v3002_dpo_20130916/

続いて、make。

$ sudo make

ちょっと待たされます。 Pi3だと4分程度、Pi2だと10分程度待たされました。

インストールします。

$ sudo make install

モジュールをロードします。

$ sudo insmod /lib/modules/`uname -r`/kernel/drivers/net/wireless/mt7650u_sta.ko

カーネルの依存関係情報の更新。

$ sudo depmod -a

エディタで、/etc/modulesに追記します。

$ sudo vi /etc/modules
末尾に以下の1行を追加して、上書き保存します。
mt7650u_sta

以上で、ドライバのインストール完了です。

続いて、無線LANの接続設定を行います。

無線LANの接続設定

ネットワーク設定を行う

繋ぎたい無線LANの「SSID」と「パスフレーズ」を用意し、下記コマンドを実行します。(赤字は自身の環境に置き換えて実行してください)
$ sudo sh -c 'wpa_passphrase SSID パスフレーズ >> /etc/wpa_supplicant/wpa_supplicant.conf'

尚、このwpa_passphraseコマンドは、パスフレーズを暗号化してくれるのは良いのですが、何故か暗号化されてない平文のパスフレーズをそのまま併記してくれるとても親切且つ危険なコマンドなので、作成された「wpa_supplicant.conf」ファイルの平文部分を削除しておいた方が良いです。

なので、エディタで平文部分だけ削除します。
$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
#psk=”xxxxx”の行を削除して、上書き保存します。

「/etc/network/interfaces」に追記します。
$ sudo vi /etc/network/interfaces
私は下記だけ追記しています。 環境によってはステルス設定など色々あるかと思いますので、お好みに合わせて編集してください。
auto ra0
allow-hotplug ra0
iface ra0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

以上で設定完了です。

一旦、シャットダウンさせます。
$ sudo shutdown -h now

有線LANを外し、無線LANのIPアドレスに対しSSH接続してみましょう。
ケーブルがmicroUSBだけになって、スッキリですね。 こうでなくては!!

上手く接続出来たら、SDカードのイメージバックアップを忘れずにしておきましょう。
間違えてwriteしないように。 バックアップするときはreadですから。(;^ω^)

おまけ:セキュリティ対策とスピードテスト

以降は、お好みにあわせて実施して下さい。

最近はRaspberryPiを狙ったハッキングなども行われている様です。
ですので、幾つかの対策を行っておきます。

rootパスワード設定

初期状態では未設定なので、rootパスワードを設定しておきましょう。
$ sudo passwd root
ルート(管理者権限)の新しいパスワードを入力しましょう。

ユーザー名「pi」をオリジナルのユーザー名へ変更

「pi」ユーザーを削除して、新しいユーザーを追加でも良いのですが、piフォルダには色々なモノが入っている様で、経験上不都合が起こることが多いです。
なので、「pi」ユーザーの削除ではなく、ユーザー名の変更で対処することにします。

まず、SSHのコンフィグファイルを編集して、rootでのログインを可能にします。
$ sudo vi /etc/ssh/sshd_config
下記を1行追加します。(コメントアウトされてる分はそのままでOK)
PermitRootLogin yes
編集後、上書き保存します。

SSHサービスを再起動させます。
$ sudo service ssh restart

「pi」ユーザからログアウトします。
$ exit

改めて、SSH接続し、今度はユーザー名「root」でログインします。
パスワードは先程設定したモノを入力しましょう。

ログイン出来たら、ユーザー名「pi」を新しいユーザ名へ変更します。(自身のユーザー名に合わせて、赤字の部分を差し替えて実行して下さい)
# usermod -l newuser pi
# usermod -d /home/newuser -m newuser
# groupmod -n newuser pi

続いて、先程編集したSSHのコンフィグファイルを元に戻し、rootでのログインを不可にします。
# vi /etc/ssh/sshd_config
先程追加した下記1行を削除します。
PermitRootLogin yes
編集後、上書き保存します。

SSHサービスを再起動させます。
# service ssh restart

「root」ユーザからログアウトします。
# exit

改めて、SSH接続し、「root」と「pi」でログイン出来なくなっていることを試しておきましょう。
続いて、新しく作ったユーザー名でログイン出来ることを確認しておきましょう。パスワードは「pi」ユーザーの時に変更したままでOKです。

続いて、SSHのポート番号を変更・・・しても良いのですが、スキャンすりゃ分かってしまうということなので、そのままでもアリでしょう。 お好みにあわせて実施して下さい。

以上で、取り敢えず最低限のセキュリティ対策は完了です。
もっと細かく対策したい場合は、色々調べてみましょう。

スピードテスト

折角、5GHz WiFiに接続したんですから、どれくらい速度出てるのか確認したいのが人情というもの。

コチラ↓の過去記事でその辺触れてますので、ご参考に。

Pi Zero rev1.3をGW-450D2で5GHz WiFi対応にしてみた(RASPBIAN JESSIE LITE版)
RaspberryPiの超小型バージョンのPi Zeroを5GHz無線LAN対応にしてみました。

【2017/09/19追記】

Pi2、Pi3それぞれで試してみました。

<Pi2&GW-450D2の場合>

Download: 81.95 Mbit/s
Upload: 85.33 Mbit/s

<Pi3&GW-450D2の場合>

Download: 94.75 Mbit/s
Upload: 87.12 Mbit/s

Pi2でもPi3でもそんなに値は変わりませんね。

謝辞

参考にさせて頂いた諸々のサイトリンクです。

カーネルのフルビルド無しでモジュールビルドする方法を参考にさせて頂きました。

初期にSSH接続出来ない際の対応方法として、参考にさせて頂きました。

insmodで「insmod: ERROR: could not insert module ・・・:Invalid module format」のエラーが出て困り果てた際に、参考にさせて頂きました。

Planexドライバのパッチを公開されている方、有り難く活用させて頂きました。

セキュリティ対策について、参考にさせて頂きました。

有難うございました。m(__)m

Raspberry Pi 3

microSD 8GB 東芝製

GW-450D2

スポンサーリンク

この記事をシェアする

  • このエントリーをはてなブックマークに追加

このブログをフォローする