pslaboが試したことの記録

はてなダイヤリーからはてなブログに引っ越してきました

この日記は現在実行中の減量記録を含む個人的なメモとして始めましたが、最近はコンピュータやガジェット、ハック、セキュリティネタのほうがメインになっております。

iPad3のSIMロックに関する考察とSIM下駄による解除の試みはSoftbank版iPad3にiPhone用のSIM下駄を履かせてみるにいろいろ書いてます。

はてなダイヤリー時代はカテゴリ分けが適当だったのですが、これはそのうち直します。


Raspberry Pi Zero WにLEDEをインストールして自分専用の携帯用WiFiアクセスポイントにする

Raspberry PI Zero W が日本国内でも発売となりましたね。とはいえ、スイッチサイエンスやKSYの販売分は品薄が続いているようで、当分は入手が難しい様子。

自分はというと、PIMORONI から Zero W + Adaptors + Pibow Zero W のセットを買ってみました。この通販サイトは在庫はそれなりに潤沢なようです。

Raspberry Pi Zero Wshop.pimoroni.com

手元に届いたのは日本の技適のマークや番号がシルク印刷されているので各種法令上の問題は多分無いと認識しています。 f:id:pslabo:20170805204721j:plain

さて、Raspberry Pi Zero W を入手した目的なのですが、「出張時に持ち運びが容易なWiFiアクセス」にしようと考えています。この構成を Raspbian で手作業でいろいろやってもよいのですけど、簡単に設定できる管理画面が欲しいので LEDE でやることにします。

なお LEDE というのは openwrt からフォークしたプロジェクトです。openwrt は Pi 3 や Zero W 向けのインストールイメージが現時点 (2017/08時点) では存在しないのですけど、LEDE は Pi 3 や Pi Zero W 向けのインストールイメージが公開されているので、Raspberry Pi で使う場合は LEDE のほうが便利なのです。

準備物

必要なもの

  • Raspberry Pi Zero W
  • HDMIアダプタ
  • USBキーボード
  • microUSB給電ケーブル
  • USB-LANアダプタ

USBキーボードとUSB-LANアダプタを除けばこういうセット品が便利ですけど、若干割高な気がしなくもないです。この金額にもうちょい足せばRaspberry Pi 3 が買えてしまいます。品薄感がもうちょっと減ればもうすこしお手頃な価格になるのかなあ、とも思うのですが、当面は厳しいんでしょうねえ。

あったほうがよいもの

  • USB-HUB

USB-HUB はあったほうがよいです。USBキーボードとUSB-LANアダプタの両方を同時に使うためには絶対に必須。

これが無い場合はコンソール操作のときにキーボードとLANを同時に使えないのでとても面倒なことになります。

作業手順

LEDE は Ethernet + WiFiRaspberry Pi 3 に導入するのはとてもカンタンなのですが、Pi Zero W は Ethernet を含まないのでセットアップのハードルが少々上がります。そこで、作業の手間を省くために uci コマンドを活用することにします。

LEDEは通常はWebの管理画面で設定を行いますが、USB-HUBが無い場合や手持ちのUSB-LANアダプタが認識されない場合はシェル上で uci コマンドを用いて WiFi ルータの機能を有効化するのが一番カンタンなのですよ。

サマリ

  • Raspberry Pi Zero W 向けの LEDE イメージの入手
  • 使用するUSB-LANアダプタ用の追加ドライバの入手と導入
  • uci コマンドによる設定の投入
  • 動作確認

Raspberry Pi Zero W 向けの LEDE イメージの入手

下記のページによると、Pi Zero W 向けの LEDE イメージは snapshot のものがある、ということになっています。

https://lede-project.org/toh/hwdata/raspberrypifoundation/raspberrypifoundation_raspberry_pi_zero_w

しかし実際に探してみると、snapshotの他にも17.01.2 ベースのイメージが下記の場所にありました。

https://downloads.lede-project.org/releases/17.01.2/targets/brcm2708/bcm2708/

ここから lede-17.01.2-brcm2708-bcm2708-rpi-ext4-sdcard.img.gz というファイルをダウンロードして microSDHC に焼いておきます。

焼く手順は通常どおりに dd ですから、この説明は省略します。

使用するUSB-LANアダプタ用の追加ドライバの入手と導入

LEDE のイメージには、私が持っているLANアダプタのドライバは含まれていませんでした。そこで、USB-LAN アダプタの動作に必要なパッケージを予め microSDHC に入れておくことにします。そうすれば、LEDE の起動後にコンソールからの操作でUSB-LAN向けのドライバを導入可能になります。

LEDE 17.01.2 向けの Pi Zero W で利用できるパッケージはここからダウンロードできます。

https://downloads.lede-project.org/releases/17.01.2/targets/brcm2708/bcm2708/packages/

最低限必要なのはここらへんの3つ。

  • kmod-libphy_4.4.71-1_arm_arm1176jzf-s_vfp.ipk
  • kmod-mii_4.4.71-1_arm_arm1176jzf-s_vfp.ipk
  • kmod-usb-net_4.4.71-1_arm_arm1176jzf-s_vfp.ipk

さらにUSB-LANアダプタ固有のパッケージをインストールします。自分の手元にあったUSB-LANアダプタ2種類のドライバは下記の通りでしたので、これも入れておきます。

  • kmod-usb-net-asix-ax88179_4.4.71-1_arm_arm1176jzf-s_vfp.ipk
  • kmod-usb-net-pegasus_4.4.71-1_arm_arm1176jzf-s_vfp.ipk

LEDE を焼いたあとの microSDHC にこれを転送しておきます。

なお、microSDHC には、本記事の後半に記載の「uci を使った設定投入用のスクリプト」も入れておいてください。これをこの時点で入れておくと、いろんな意味で手間が省けるはずです。

さて、LEDE を Pi Zero W で起動したら、上記のファイルをインストールします。ファイルは /boot にあるはずです。これを以下のようにインストールします。

cd /boot
opkg install *.ipk

インストールしたら念のために LEDE を reboot しておきます。

uci コマンドによる設定の投入

LEDE はブラウザからの管理画面で設定できるのですが、Pi Zero W をアクセスポイント化するための設定を行うのは意外にめんどくさいので、ここはサクッとコマンドで設定投入するのがよいだろうと思います。

手元の環境でGUIからの設定を行う前と後で設定内容が変わった箇所を抽出してみると、こんな感じになっておりました。

#!/bin/sh

uci set dhcp.lan.ra_management='1'
uci delete dropbear.@dropbear[0].RootPasswordAuth='on'
uci set network.wan.ifname='eth0'
uci set network.wan.proto='dhcp'
uci set network.wan=interface
uci delete network.lan.ifname='wlan0'
uci set network.lan._orig_bridge='true'
uci set network.lan._orig_ifname='wlan0 wlan0'
uci set network.lan.ipaddr='192.168.4.1'
uci set system.@system[0].conloglevel='8'
uci set system.@system[0].cronloglevel='8'
uci set system.@system[0].log_proto='udp'
uci set wireless.default_radio0.encryption='psk2'
uci delete wireless.radio0.disabled='1'
uci set wireless.radio0.country='JP'
uci set wireless.default_radio0.ssid='[設定するSSID名]'
uci set wireless.default_radio0.key='[WPA-PSKのパスフレーズ]'

これを microSDHC の /boot にスクリプトとして保存しておき、LEDE のコンソールから実行すれば一通りの設定が完了します。SSID名やパスフレーズは適切に設定しておいてください。

またこの設定では LAN 側 (WiFi側) のIPアドレスが 192.168.4.1 になっています。これも適切に変更しておいてください。

設定したら uci commit して reboot してみてください。(uci commit が本当に必要かどうかはちゃんと検証してません)

動作確認

USB-LANアダプタを接続した状態で、設定したSSIDに接続してインターネット通信できていれば基本的にはOKです。

ただしこの状態は LEDE の管理画面のパスワード設定を行っていない状態ですので、パスワードはかならず設定してください。

また、WAN側には管理画面の口が開かないように dropbear の設定を lan に限定しておきましょう。

その他の設定調整

管理画面を日本語化したい場合は luci-i18n-base-ja を追加した上で System の設定から Language を日本語に変更します。