できること

第27回「スマートフォンからラズベリーパイを触ろう!(2)VNCオートラン編」

raspberrypi27_main2
VNCを使ってスマホからラズベリーパイを触ろう!第2回目は、オートランの設定です。ラズベリーパイ公式サイトのドキュメントの後半、「Automation and run at boot」の項を進めていきます。

オートランの実装に向けて、先にIPアドレスを固定しておきましょう。固定IPにしておけば、VNCアプリから毎回ワンタッチで接続可能になりますね!
今回、新しいRaspbianをインストールし直してからスタートしたのですが、Wi-Fiの設定方法が以前と少々変わっていたので、まずはネットワーク接続からご紹介します!

 

Wi-Fiの設定

2015-05-05リリースのRaspbian(ver.3.1.8)を新しくインストールしたところ、Wi-Fi設定ツールである「WIFI Config」が見当たりません……どうやら仕様が変わってしまったようです。

raspberrypi27_img01

図1

ネットワーク設定を探していると、デスクトップの右上にこんなマークを発見!

raspberrypi27_img02

図2

アイコンをクリックすると、ネットワークの一覧が表示されます。Wi-Fi接続されている場合は、一番上の行のように、緑色のチェックマークが付いて表示されます。

raspberrypi27_img03

図3

一覧の中から接続したいネットワーク名を選んでクリックすると、パスワードを入力する画面が表示されます。

raspberrypi27_img04

図4

接続が完了するまで少し時間がかかる事がありますが、図4のようなアイコンに変われば、接続完了!うまくいかない場合は、Wi-Fiアダプタを抜き差ししてみましょう。

raspberrypi27_img05

図5

ちなみに有線接続だと図5のようなアイコンになります。接続中は、アイコンの2つのディスプレイの中が点滅するアニメーションが見られます。右下の×マークが消えたら、接続完了です!

 

IPアドレスの固定

VNCのオートランを実現するために、固定IPアドレスを設定してみましょう!
本体はラズベリーパイ2 model B、OSは2015年5月5日リリースの「RASPBIAN ver.3.1.8」を使用しています。(※ネットワーク環境やOSのバージョンによっては、手順が異なる場合があります)

raspberrypi27_img6

図6

図6は、現状のネットワークの状態です。「wlan0」というネットワークに接続されており、「192.168.0.9」というIPアドレスが自動で割り当てられています。

ネットワークの設定ファイルは「 /etc/network/interfaces 」にあります。編集する前にバックアップを取っておくと安全です。
ファイルをコピーするには「cp」コマンドを使用します。第1引数がコピー元のファイルパス、第2引数がコピー先のファイルパスです。たとえば、同じディレクトリに「interfaces_backup」という名前でコピーする場合は下記のようになります。

sudo cp /etc/network/interfaces /etc/network/interfaces_backup

設定にうつる前に、下準備がもうひとつ。IPアドレスを固定するには、「サブネットマスク」と「デフォルトゲートウェイ」の値が必要となります。

raspberrypi27_img07

図7

ラズベリーパイからではうまく取得できなかったので、今回は同じネットワーク内にあるWindowsマシンから調べました。図7は、Windows8で「ネットワーク接続の詳細」を表示したところです。このネットワークでは、「サブネットマスク」は「255.255.255.0」、「デフォルトゲートウェイ」は「192.168.0.1」でした。
「ネットワーク接続の詳細」画面は、Windows7・Windows8の場合は、コントロールパネル内の「ネットワークと共有センター」から「ローカルエリア接続(またはWi-Fi)の状態」をクリックすると表示されるポップアップ画面の「詳細」ボタンから確認できます。

情報が揃ったところで、ラズベリーパイから設定ファイルを編集します。

sudo nano /etc/network/interfaces

raspberrypi27_img08

図8

設定ファイルを開いてみると、図8のようになっていました。ファイルの中身は、環境によって異なる可能性がありますので、1つ1つ確認しながら調整していきましょう。
今回設定するのは、先程調べた「wlan0」の情報になります。

/etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
allow-hotplug eth0
iface eth0 inet manual

auto wlan0
iface wlan0 inet static
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
address 192.168.0.99
netmask 255.255.255.0
gateway 192.168.0.1

修正箇所は4つ。11行目の「address」に固定IPとして設定したいIPアドレスを、12行目の「netmask」と13行目の「gateway」には先程調べたネットワークの値を設定します。それぞれの値は、環境に合わせて設定してください。そして、9行目の「manual」となっていた部分を「static」に変更しました。
※固定IPを設定する場合は、設定するIPがルーターの他のPCや接続機器と競合しないように気をつけてください。

ラズベリーパイを再起動して、設定したIPアドレスが有効になっていれば成功です!

ip a

raspberrypi27_img09

図9

 

オートラン設定

ラズベリーパイ公式サイトのドキュメントの後半「Automation and run at boot」に沿って進めていきます。この項では、VNCのサーバーソフトを起動するための2種類の方法が紹介されています。1つ目は、任意のタイミングで実行させるためのシェルスクリプト、2つ目は、ラズベリーパイ起動時に自動で実行させるためのスクリプトです。ここでは、2つ目に掲載されている「オートラン」の設定をご紹介します。

raspberrypi27_img10

図10

スクリプトの行数が多いので、ブラウザでドキュメントのページを開いて、LX Terminalと並べて、コピー&ペーストしながら進めると楽になります。

起動時実行用のスクリプトファイルを作成します。
root権限が必要となるため、「sudo su」コマンドを実行してから、ファイルの作成場所である /etc/init.d/ にカレントディレクトリを移動させます。

sudo su
cd /etc/init.d/

次は、ファイルを作成します。nanoエディタで、ファイルの存在しないパスを指定すると、ファイルが新規作成されます。中身は次のように記述します。

nano vncboot

ファイルの中身は、公式サイトに掲載されているコードをコピー&ペーストして、ファイルを完成させましょう。

/etc/init.d/vncboot

### BEGIN INIT INFO
# Provides: vncboot
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start VNC Server at boot time
# Description: Start VNC Server at boot time.
### END INIT INFO

#! /bin/sh
# /etc/init.d/vncboot

USER=pi
HOME=/home/pi

export USER HOME

case "$1" in
 start)
  echo "Starting VNC Server"
  #Insert your favoured settings for a VNC session
  su - pi -c "/usr/bin/vncserver :0 -geometry 1280x800 -depth 16 -pixelformat rgb565"
  ;;

 stop)
  echo "Stopping VNC Server"
  /usr/bin/vncserver -kill :0
  ;;

 *)
  echo "Usage: /etc/init.d/vncboot {start|stop}"
  exit 1
  ;;
esac

exit 0

ファイルができたら、アクセス権限の設定を行ないます。「755」は、「全てのユーザーが実行可能で、管理者のみが書き込み可能」という権限です。

chmod 755 vncboot

ファイルの準備はここまで!あとは、自動実行のための設定を済ませれば完了です!

update-rc.d /etc/init.d/vncboot defaults

raspberrypi27_img11

図11

結果が2行表示されました。

update-rc.d: using dependency based boot sequencing

この文字列が表示されたら成功!なのですが、

update-rc.d: error: unable to read /etc/init.d//etc/init.d/vncboot

こっちが表示されたら、もう一度コマンドを実行する必要があります。ということで、最後のコマンドを実行します。

update-rc.d vncboot defaults

実行すると、先程の実行結果の1行目と同じ文字列(update-rc.d: using dependency based boot sequencing)が表示され、今度はエラーが表示されずに終了しました。
これで準備完了!ラズベリーパイを再起動しましょう。

raspberrypi27_img12

図12

オートランに成功すると、起動時の画面で、図12のように「New ‘X’ desktop is raspberrypi:0」と表示されます。
iPhoneのVNCビューアーで、「192.168.0.99:0」にアクセスします。接続できれば成功です!

raspberrypi27_img13

図13

スクリプトの中でディスプレイのサイズを指定してるので、iPhoneでの初期表示はこのようになりました。

ちなみに、正しく設定できていれば、電源コードを差し込んだだけの、ログイン前の状態でも接続できるようになります。これで、ディスプレイもマウスもキーボードも使用することなく、ラズベリーパイが使えます!

 

まとめ

2回にわたってVNC編をお送りしました!
オートランを実装したことで、ログインの手間が減り、より手軽にラズベリーパイを触れるようになりました。電源を入れるだけでデスクトップ画面がすぐに見られるので、本当にスマホアプリのような感覚で使用することができます。

個人的には、ラズベリーパイで新しいものができたら「上司に席まで来てもらう」だったのが、「スマホを持って上司の席まで走っていく」に変わって、新しいラズパイライフがおくれそうです。笑。

次回は、こちら!
Web Server And WordPress | Raspberry Pi Learning Resources
raspberrypi28_main

ラズベリーパイ公式サイトで、おもしろそうなドキュメントを発見!イラストのこどもたちは何をしているかというと……ラズベリーパイの中でワードプレスにアクセス中なんです!
ということで、次回はラズベリーパイの中で動くブログシステムを作ります!

アバター画像

プロフィール:プログラミング暦通算4年、最近IT業界に舞い戻ってきたプログラマーです。女子です。

Arduinoでスマートウォッチを作ろう