ご無沙汰しております。
気がつくともうBitcoinが日本円で約80万円ですね、素敵すぎ。
モナコインの祭りには乗れなかってので、とても悔しい日々を送っておりました。買おう買おうとおもって、30円から50円になり、この10月になんといきなり600円まで爆騰。
嗚呼、30円の時に買っておけば・・・と、コイナ-あるある状態でした。
さて、本日はethosで構築したリグを別部屋に移動させたく、無線LANを通じてネットに繋げようと、ドハマリした過程とその解決方法を記していきたいと思います。
まずはethosとはなんぞや、というお話なのですが、これはまた長くなりますので、今回は、とりあえずethosをUSB無線LAN子機繋げて、無線LANで運用したいという方法のみ記していきます。
(追記:「ethosとはなんぞな」というそのまんまな記事をかきましたので、よろしければ御覧ください。)
ethosの詳しい解説や初期設定などは、他の方々がたくさん記事を書いておられますし、私もまた後の記事にて書いていこうと思いますので、お待ち下さい。
(17/12/05:初期設定記事を追加しました。よろしければご覧ください)
まず、私のネットワーク構成からお知らせいたします。
回線:NTTひかり(ONU:PR-500KI)
無線LANルータ:NETGEAR Nighthawk X4S R7800-100JPS 802.11ac 2600Mbps
無線LANルータ子機:NETGEAR A6210-100JPS 11ac/a/b/g/n 867+300Mbps
以上のように、かなりのハイパフォーマンスネットワークになっております。無線LAN環境なのに鬼のように早いです。
しかし、Windowsでは、NETGEARのサイトからドライバをダウンロードしてインストールすれば一発で使えるようになるUSB子機も、ethosではそうは問屋が卸しませんでした。
まず、前提として、ethosはそのベースOSをLinuxのディストリビューションの1つ、Ubuntuから持ってきております。
そして、現在主流となっている最新のUbuntu16系ではなく、Ubuntu14系であるところもハマるポイントです。
(ちなみに、Ubuntuはその元はDebianから来ており、ネットワーク周りについてはとくにDebianからの流れがそのまま残ってます)
さて、Linux系のOSを触ったことがある方ならわかると思いますが、とにかくあとからくっつけるもの(USBやらPCIやらもろもろ)のドライバが無い! ということがよくあります。頻繁にあります。
私もこのUSB子機をぶっ刺したからといって、即使えるとは全く思っていません。もちろんまずはドライバ探しからはじめました。
NETGEARのサイトに行った所、Linux用のドライバはどこを探しても見つかりません。子機名である「A6210」で検索をかけたところ、英語サイトにて、「NETGEARはLinux用のドライバを出す気はさらさらないようだ」とのコメントをいくつも発見。なるほど、公式のLinuxドライバはないということだなと理解。
そこで「NETGEAR A6210 ubuntu14 driver」で検索、いくつか見つかりましたが、
https://github.com/jurobystricky/Netgear-A6210
こちらが直接ドライバを置いてくれていました。
gitの使い方がわからなくても、以下のgit~から始まるコマンドを叩けば、勝手にそのディレクトリにNetgear-A6210ディレクトリが出来上がります。というか、下記コマンドでとりあえずインストールすればOK。
# git clone https://github.com/jurobystricky/Netgear-A6210
# cd Netgear-A6210
# make
# sudo make install
さて、これを通して、とりあえずドライバはインストールできたことになりましたが、ifconfig打っても、いつものeth0が出るだけ、iwconfig打ってもwlan0は無反応。
困った・・・、ということで、先程のgitのREADMEを片っ端から読んでみると、README_STA_usbなるものを発見。
どうやら、このドライバの元になっているのはRalink TechのRT2870 Wireless Lan Linux Driverだと知る。
これらしいなと当たりをつけて読み進んでいくと、
$/sbin/ifconfig ra0 inet YOUR_IP up
というコマンドが・・・。
ra0ってなんぞ? となりながら、とりあえずどうもこれが立ち上げる方法かと思い、走らせると、「Device not found」との非情なお知らせが・・・。
そんなデバイスねぇよということなのだが、じゃあra0ってなんぞやと調べはじめてまたドハマリ。
ここに記しておきますが、ra0は別に使わなくていいです。別のディストリビューションでra0がドライバとしてaliasを切ったりする記述が多かったので、ずっとra0にこだわっていましたが、少なくともehtosに関しては、wlan0で動きます。ra0ではなくwlan0で行ったほうが無難かと。(あまりra0を分かっていないので勝手なこといって申し訳ない)
ra0の呪いを受けたまま、さて先程の方法では動かないとわかり、「ra0 ubuntu14」などでいろいろ調査した所、どうも、wpa_supplicantというパッケージをインストールする必要があるとようやくたどり着きました。
wpa_supplicantはまぁざっくりいえば、WPA形式で無線LANを使用するためのアプリみたいなもんです。(違ってたらごめんなさい)
では、インストールをば。
# sudo apt-get-ubuntu wpa_supplicant
ここで見慣れぬ「apt-get-ubuntu」なるコマンドが出てきましたが、ethosではapt-getが使えません。かわりにapt-get-ubuntuを使えと怒られますので、素直に従いましょう。
(余談ですが、OSの機能を維持するためにapt-getを禁止しているので、OSの根本を変更するようなものをインストールしたりすると、ethosが立ち上がらなくなります。何度かなりました。)
で、このインストールしたwpa_supplicantの設定ですが、まずSSIDとKEYを登録しなきゃいけません。
# sudo wpa_passphrase [SSID] [KEY]
SSIDとKEYに適宜、ご自分の環境のものを書いてください。
そうすると、私の環境では、/etc/wpa_supplicant/下に勝手にwpa_supplicant.confが出来上がり、中には
network={
ssid="[SSID]"
#psk="[SSID]"
psk=a12b3b310af24363b57e20ef10b27a8da535cd8f5bf01b0ad7b63a352bc345b1
}
てな具合にキーが16進数化されていました。
でもって、これを書き加えて
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
network={
ssid="[SSID]"
proto=WPA WPA2
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP WEP104 WEP40
#psk="[SSID]"
psk=a12b3b310af24363b57e20ef10b27a8da535cd8f5bf01b0ad7b63a352bc345b1
}
とします。
上記設定ではWPAでもWPA2でも、WPA-PSKでもTKIPでもなんでもこいです。
これを今度はパーミッション変更します。
# sudo chmod 600 wpa_supplicant.conf
てな具合です。
で、ethosにはNetwork-managerがないので、/etc/network/interfacesを編集します。
# sudo vi /etc/network/interfaces
auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
address your IP
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameserver 192.168.1.1
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
上記の記述をeth0の下に加えてください。
your IPのところにローカルIPを入れてください。192.168系ならgatewayはだいたい1です。第三オクテットはルータによって変わりますが、NETGEARのR7800は1でした。
dns-nameserverもここでデフォルトゲートウェイと同値を指定するだけでOKなようです。
ここで重要な点があります。上記のinterfacesにあるeth0の記述を全部コメントアウトしてください。
具体的には全ての行の始まりに「#」を付けてください。
#iface eth0 inet dhcp
#iface eth0 inet static
#address 192.168.1.28
#netmask 255.255.255.0
#gateway 192.168.1.1
#dns-nameserver 192.168.1.1
こんな感じです。eth0とwlan0の設定を同時に読み込むと、アホになって、ネットに繋がらなくなるようです。
さて、ここまでが前準備。
先程インストールしたドライバである、Netgear-A6210のディレクトリの下os/linuxに入ってください。
# cd /home/ethos/Netgear-A6210/os/linux
config.mkファイルをいじります。
# sudo vi config.mk
# Support Wpa_Supplicant
# i.e. wpa_supplicant -Dralink
HAS_WPA_SUPPLICANT=y
# Support Native WpaSupplicant for Network Maganger
# i.e. wpa_supplicant -Dwext
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y
上記の場所のHAS_WPA_SUPPLICANTとHAS_NATIVE_WPA_SUPPLICANT_SUPPORTを=yにしてください。
どうもwpa_supplicantの立ち上げはralinkではなく、wextを使うようです。元のドライバがralinkのものだったので、ここでもドハマリしました・・・。
これが済んだら、またmakeです。
# make
# sudo make install
これですね。
そして「r」で再起動。
私のところでは、再起動したらwlan0が認識されて動き始めましたが、もし動かない時は、wpa_supplicantを起動するコマンドを打って、きちんと立ち上がるか試してみてください。
# sudo wpa_supplicant -iwlan0 -Dwext -c wpa_supplicant.conf
wpa_supplicantの-iや-Dのパラメタは記述ミスではなく、くっつけて書くそうです。なぜか-cのconfig指定は離れています。
この設定で、基本的には動くはずです。
もはや忘備録になってしまいましたが、現に動いているので良しとします。
実は、ここに示している以外にも、かなりいろいろ試しました。lsmodで出てくるr8169問題なんかも気になって、r8168を入れ直したり(その際もダウンロード先がわからなくなったり・・・)、呪いのra0にaliasを切るため、modprob.d下のファイルにいろいろ書いてみたり。
実はLinuxはWeb系の仕事で使っていただけで、ほとんど決まったコマンドしか使ったことがなく、さらにそれも何年も前の話なので、まずは基本的なコマンドから調べなければならず・・・。
足掛け3日間の苦行となってしまったのでした。
ethosの情報はまだ少ないので、これでethos使いのみなさまの一助となれば、さいわいです。