Edited at

Raspberry Pi セットアップ(書き込み~SSH設定まで)

Raspberry Pi セットアップ(書き込み~SSH設定まで)



注意

(2018/12追記)

本記事の記述は、一部古くなっており、非推奨の事項があります。

新規にRaspberry Pi をヘッドレス(モニタ無しで)セットアップする場合、

PiBakery

の利用をオススメします。

OSイメージのダウンロードや、ネットワーク初期設定、任意のスクリプト実行など、

イメージのカスタマイズが簡単に行えます。

image.png

(追記終わり)



はじめに

この記事は、JAWS-UG関西のイベントJAWS-UG関西IoT専門支部 ✕ SORACOM-UG関西「JAWS DAYS 2017 IoTハンズオン再演 ~可視化祭~」のハンズオン用資料として作成しています。

また、こちらの記事を下敷きとしています。

本ハンズオンでは、Raspberry pi(以降、ラズパイ)を設定し、使えるようになるまでの手順をまとめます。

各自のRaspberry Piのバージョン、PC端末の機能に違いがあるため、

本手順では、下記の色のラベルを各手順に記載します。

自分の該当する色のラベルを確認して進めてください。

・全環境共通

■■■ ALL ■■■

・Raspberry Piのバージョン

■■■ Raspberry Pi 2 ■■■  ■■■ Raspberry Pi 3 ■■■

・PCのネットワーク

■■■ 有線LANアリ ■■■  ■■■ 無線LANのみ ■■■


初期セットアップ 
■■■ ALL ■■■

ラズパイの初期セットアップを行うには、下記の方法があります。

①HDMIが接続可能なモニタと・USBマウス/キーボードを繋ぐ

②PCとシリアルケーブルで繋いでコンソール接続する

③PCと有線LAN、DHCP+SSHで繋ぐ。

本ハンズオンでは、③の手法(PCとラズパイを直結)でセットアップを行います。

※1.シリアルケーブルを持っている方は、②の方法で実施してもOKです。

※2.PCに有線LANのネットワークカードが無い場合は、③の方法が実施できません。

その場合は、メンターが②の方法で、無線LANのセットアップのみ設定します。


必要な機材の準備 
■■■ ALL ■■■

まずは必要なものを準備します。以下のものをご用意ください。


  1. PC(Windows/Mac※)

  2. RaspberryPi 2 Model B

  3. micro SDカード(8GB以上推奨)

  4. micro SDカードリーダー

  5. Wi-Fiドングル

  6. USBシリアル変換ケーブル

  7. micro USBケーブル

  8. USB ACアダプタ

  9. LANケーブル


[Step 1.] OSイメージのダウンロード 
■■■ ALL ■■■

本ハンズオンでは、OSイメージはダウンロード済みであることが前提となります。

もし、ダウンロードできていない場合は、下記手順にて準備します。

本家のダウンロードサイトから必要なOSイメージをダウンロードします。

多数のイメージが公開されていますが、今回は、Rasbianを選択します。

「RASPBIAN JESSIE WITH PIXEL 2017-04-10」

を用います。

ダウンロードしたイメージがZIPの場合は、ツールで解凍しておいてください。

※Linuxでも可能ですが、以降ではWindowsとMac向けにのみ記載します。


[Step 2.] OSイメージをSDカードに書き込む 
■■■ ALL ■■■

micro SDカードリーダーをPCに接続し、SDカードを差し込みます。SDカードリーダーとSDカードが認識されているかを確認ください。認識されていない場合は、micro SDカードリーダーの説明書を参考にドライバーのインストールや初期設定を行ってください。

次に、OSイメージをSDカードに書き込みます。

OSイメージをSDカードへ書き込む方法はいくつかありますが、ここではWindows/Macについてそれぞれ例を挙げておきます。


Windowsの場合



  1. Win32 Disk Imagerをダウンロードし、インストールします。

  2. アプリを起動すると以下の画面が出ますので、"Image File"に先ほどダウンロードしたOSイメージを、"Device"にはSDカードが刺さっているドライブを指定します。Deviceは間違わないようにご注意ください!

w32image.jpg

3. Writeボタンを押して書き込みを開始します。書き込みにある程度時間がかかりますので、完了するまで待ちます。


Macの場合

1.ApplePi Bakerをダウンロードし、インストールします。

2. アプリを起動すると以下の画面が出ます。SDカードが認識されていると、"Pi-Crust"に表示されますので、選択します。選択先は間違わないようにご注意ください!

スクリーンショット 2016-03-15 23.58.15.png


3. "Pi-Ingredients"の"..."ボタンを押して、先ほどダウンロードしたOSイメージを選択します。"Pi-Crust"で選択しないとボタンが有効にならないので注意ください。

4. Restore Backupボタンを押して書き込みを開始します。書き込みにある程度時間がかかりますので、完了するまで待ちます。


※SDカードがうまく認識しないときは

SDカードフォーマッターを使ってフォーマットしてみるといいかもしれません。


SSHを有効化する 
■■■ ALL ■■■

2016年11月頃以降のRaspbianイメージから、セキュリティを考慮してデフォルトではSSHが無効になっています。ボリュームの/直下にsshという名前の空ファイルを作成すると起動時にSSHが有効になります。

(公式のアナウンス)


The boot partition on a Pi should be accessible from any machine with an SD card reader, on Windows, Mac, or Linux. If you want to enable SSH, all you need to do is to put a file called ssh in the /boot/ directory. The contents of the file don’t matter: it can contain any text you like, or even nothing at all. When the Pi boots, it looks for this file; if it finds it, it enables SSH and then deletes the file.


Macの場合は、SDカードをマウントして、ターミナルで下記コマンドを実行すればOKです。

bash

$ touch /Volumes/boot/ssh

Windowsではエクスプローラーから、拡張子無しの 「ssh」 ファイルを作成すればOKです。


[Step 3.] RaspberryPiを起動する 
■■■ ALL ■■■


  • OSインストール済みのmicro SDカードを差し込みます

    Slack for iOS Upload3.png



  • ACアダプタに接続されたmicro USBケーブルを差し込みます

    Slack for iOS Upload2.png



  • 緑色のLEDが点滅していることを確認します

    7993b43a-9270-ac18-0e0e-540034a2e403.jpg


[Step 4-①.]Raspberry Piへの初期接続 


[Step 4-①.]パターン① USBシリアル変換ケーブルの設定
■■■ 無線LANのみ ■■■


Raspberry Pi 3の場合の追加設定 
■■■ Raspberry Pi 3 ■■■

RaspberryPi 3はWi-Fi内蔵で便利になりましたが、デフォルトではUSBシリアル変換ケーブルが使用できません。

でも、ちょっと一手間を加えると従来通りUSBシリアル変換ケーブルが使用できるようになります。

[1] 設定を変更する

* PCにmicro SDカードをマウント(読み込み)します

* config.txtをテキストエディタで開きます。不用意に他のファイルを開くとRaspberryPiが起動しなくなるおそれがあるので注意しましょう

boot 2016-07-24 12-33-43.png

* config.txtの最後尾に以下を追記して保存します

dtoverlay=pi3-miniuart-bt

スクリーンショット 2016-07-24 17.21.33.png


共通手順
■■■ ALL ■■■

まずはUSBシリアル変換ケーブルの設定を行います。

注意! ラズパイを起動させている場合、一度電源をOFFにしてから結線してください!

使用するUSBシリアル変換ケーブルに対応するドライバーをインストールしてください。

製品名
Winドライバ
Macドライバ

PL2303HX内蔵USBシリアル変換ケーブル
PL2303 Windows Driver Download
PL2303 Mac OS X Driver Download

FTDI USBシリアル変換アダプター
Virtual COM Port Drivers
Virtual COM Port Drivers

<参考>PL2303(HXがついてない)は、Windows8や10のドライバーがないので注意ください。Windows8や10で使用される場合はPL2303HXDとHXDがついているものを購入ください。Macについては、PL2303も使用できます。

(追記1)PL2303HXDですが、Windows8、10をサポートしているはずなのですが、うまく動かないようなので、FTDIのものを選ぶのをお勧めします。

(追記2)PL2303HXDですが、Windows8、10での対処法についての情報を以下にまとめました。

Windows8/10でPL2303HDXのドライバーが動作しない場合の対応方法について

つぎに、ケーブルをラズパイのGPIOに接続します。

GPIOとは以下のようにピンが並んでいる部分のことです。

2016-03-16 00-39-15.642.jpg

左上から、右、次の列の左、右、、、の順で1、2、3、、、と番号がついています。

つまり、

(1) (2)

(3) (4)

(5) (6)

...

となっています。

接続に必要なのは次の3本です。

GPIOピン番号
名称
接続先

6
Ground
GND

8
TXD(UART)
RX

10
RXD(UART)
TX

※PL2303HX内蔵USBシリアル変換ケーブルの場合の線の色

ケーブルによっては4本線が出ているかもしれませんが、残りの1本(5Vの電源線、赤い線の場合が多い)は使用しません。

あと、RXとTXがひっくり返って接続されている(一般的にクロスといいます)のにも注意ください。


[Step 5-①.] Rasbianの起動とログイン

さぁ、次はラズパイを起動してみましょう。

まず、OSイメージを書き込んだSDカードをラズパイに差します。その後、mirco USBケーブルをUSB ACアダプタを差し、ラズベリーパイに接続すれば起動が開始されます。

次に、シリアルからのログインです。


Windowsの場合

いくつか方法がありますが、ここではTeraTermを使用した例で説明します。

1. TeraTermをインストールします。

2. デバイスマネージャーを開き、"ポート(COMとLPT)"の項目を確認します。USBシリアル変換ケーブルが認識されていると、この項目に表示されます。そこにあるシリアルポート(COMXXという形式、XXは数字)を覚えておきます。

3. TeraTermを起動します。何も設定されてない場合は、"新しい接続"のダイアログが表示されます。もし、設定される場合は、メニューの"ファイル(F)"から"新しい接続(N)..."を選択すると同じダイアログが表示されます。

new_con.jpg  

4. "シリアル"を選択し、"ポート(R)"で先ほどデバイスマネージャーで確認したシリアルポートを選択して、OKボタンを押します。

5. 次に、通信速度の設定をします。メニューの"設定(S)"から”シリアルポート(E)..."を選択しすると、"シリアルポート設定"のダイアログが表示されます。この中の、ボー・レートを115200に設定して、OKボタンを押します。

brate.jpg

6. 起動ログもしくは、ログインプロンプトが表示されれば成功です。


Macの場合


  1. ターミナルを起動します。

  2. "ls /dev/tty.*"と入力します。 USBシリアル変換ケーブルが認識されていると、/dev/tty.usbXXXというファイルが見つかると思います。(XXXはケーブルによって異なります)

  3. "screen /dev/tty.usbXXX 115200"と入力します。

  4. 起動ログもしくは、ログインプロンプトが表示されれば成功です。


[Step 4-②.]パターン② 有線LAN+インターネット共有の設定  
■■■ 有線LANアリ ■■■ 

Raspberry Piの有線LANの設定は、デフォルトではDHCPのクライアントとして動作します。

そのため、DHCPサーバとなれる機器と有線LANで接続できれば、

初期接続が可能になります。(別途、SSHを有効にしている前提です。)

ここでは、Windowsおよびmacの標準機能である「インターネット共有(ICS)」を用いて、

PC端末自体をDHCPサーバ(兼ルータ)として設定します。

参考:

インターネット共有の設定(Windows7)

MacとRaspberry piをインターネット共有でつないでみる

Raspberry PiとMac or Windows PCを有線で直接繋いでさくっとSSH接続する

前提:

PCにネットワークアダプタ(NIC)が2つ以上必要です。

例:

 NIC1:無線LANアダプタ …インターネット側

 NIC2:有線LANアダプタ …配下ネットワーク側(今回はラズパイをこちらに繋ぐ)

共有元となるインターネット側(NIC1)は、種別を問いません。

・無線LANで接続していてもいいですし、

・別の有線LANのNICがある場合や、

・スマートフォンとUSB接続でテザリングしているアダプタでも問題ありません。


Windowsの場合

1. PC側のNIC2(有線LANアダプタ)とラズパイの有線LANアダプタをLANケーブルでつなぎます。

2. NIC1のプロパティを開き、「共有」タブを開きます。

3. 「ネットワークの他のユーザーに~」のチェックをつけます。

4. 直下の「ホームネットワークの選択」欄で、NIC2を選択します。

5. コマンドプロンプトで「ipconfig /all」を実行し、インターネット共有のIPが設定されていることを確認します。


ipconfig /all


PC端末のNIC2は固定で「192.168.137.1」になります。

ラズパイ側は「192.168.137.XXX」ですが、毎回不定です。

本手順の最後にある、ネットワーク上での識別方法を確認してください。


macの場合

こちらの記事を参考にします。

MacとRaspberry piをインターネット共有でつないでみる

公式)macOS Sierra: Mac 上のインターネット接続を共有する

以下、引用

ここではMacとRaspiを有線で接続する方法を記述したいとおもいます。

接続した時の図は下記

12177845_925364404208869_1191390079_n.jpg

※USBで電源供給、ThunderboltでEthernet接続している

では以下から順を追って説明します。


システム環境設定を開く

まず、アプリケーションから「システム環境設定」を開きましょう

下記のような画面が開くので、上から3段目「共有」をクリックします

スクリーンショット 2015-10-25 18.24.32.png


インターネット共有の設定を行う

MacとRaspiをLANケーブルで直接した状態で下記のような設定を行ってください。

スクリーンショット 2015-10-25 18.32.29.png

インターネット共有で「共有する接続経路」をWi-Fi

相手のコンピューターが使用するポートを「Thunderbolt Ethernet」

とそれぞれ設定します。

(ここの設定は個々人の環境に合わせて設定してください)

設定が適用されると、RaspiにIPアドレスが払い出されています。


RaspiのIPアドレスを調べよう

RaspiのIPアドレスを調べるため「コンソール」アプリを立ち上げましょう

「アプリケーション」の「その他」の中に「コンソール」があります

コンソールの画面が開けたら、下記の順番で操作を行い、Raspiのアドレスが観れます。大抵192.168.2.2となっているようです。

スクリーンショット 2015-10-25 18.38.02.png


[Step 5-②.] RaspberryPiにSSHで接続する 
■■■ ALL ■■■

PCからSSHで接続するには、RaspberryPiのIPアドレスが必要です。IPアドレスを調べる手順は前項を参照して下さい。

デフォルトのログインアカウントは下記の通りです。

ID pi

PW raspberry


Mac


  • 標準で入っているターミナルを起動します


    スクリーンショット 2016-08-01 20.13.24.png


  • 次のコマンドを実行します(xx.xx.xx.xxはRaspberryPiのIPアドレス)


$ ssh pi@xx.xx.xx.xx


  • 初回接続時は下記のように尋ねられるので、yesを入力します

The authenticity of host '192.168.0.7 (192.168.0.7)' can't be established.

ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)?



  • ...password:と表示されたらraspberryを入力します。パスワードは入力しても何も表示されません。

    下図のような表示になったらログイン成功です

    スクリーンショット 2016-08-01 20.19.44.png


Windows

今回はターミナルソフトとしてインストール不要のPuTTYを使用します。

※前項までの手順で、TeraTermをインストールしている場合は、そちらでも構いません。


PuTTYをダウンロードする

ダウンロードはこちら

デスクトップ等にダウンロードして、下図のアイコンをダブルクリックすれば起動します。

キャプチャ.PNG


PuTTYでSSH接続する


  • PuTTYを起動します

  • RaspberryPiのIPアドレスを入力して[Open]をクリックします

    b4818159-7cbd-99ef-3107-845f01eeb814.png



  • 初回接続時のみ下図が表示されるので[はい]をクリックします

    PuTTY Security Alert 2016-08-01 13.51.59.png




  • Login as:と表示されたらpi
    ...password:と表示されたらraspberry
    を入力します。パスワードは入力しても何も表示されません

    34a18d44-435b-77bd-3cc4-9e76bd738e6f.png



  • 下図のような表示になったらログイン成功です

    1ff18ed5-a68d-badc-8bcf-b58ec5b94acf.png




[Step 6.] 初期設定  
■■■ ALL ■■■

ログインIDとパスワードはデフォルトで以下になります。

ログインID:pi

パスワード:raspberry

基本、この状態でも普通に使用できます。

以下にいくつかの設定方法を記載しますので、好みに応じて設定してみてください。


設定ツールの起動

コマンドを入力して、設定ツールを立ち上げます。


$ sudo raspi-config


以下のような画面が表示されます。

raspi-config.jpg

上下キーでメニューの選択、TABキーで<Select>/<Finish>/メニューの項目の選択が行え、Enterキーで決定となります。

終了は、<Finish>を選択してEnterキーを押します。


パスワードを変更する

RaspberryPiを常時起動させておく場合は、セキュリティを考慮してpiユーザーのパスワードを変更しましょう。

上記のraspi-configで「 Change User Password」を選ぶか、

もしくは下記のコマンドを実行します。

新しいパスワードを聞かれたら同じものを2回入力します。

$ sudo passwd pi

Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

最近ではRaspberry Piのみを狙うマルウェアも出現しています。

USBドングルを付けて直接グローバルIPが付与される場合、踏み台にされる危険がより高くなりますので、パスワードの変更を強く推奨します。


タイムゾーンの変更

タイムゾーンでは時間帯の指定を行います。デフォルトではUTC(協定世界時)となっており、日本標準時(JST)と9時間の差があります。

タイムゾーンを日本標準時にするには、


"5 Internationalisation Options"


を選択し、以下の画面を表示します。raspi-config-2.jpg

次に、


"I2 Change Timezone"


を選択し、"Asia" -> "Tokyo"を選択してください。


Wifi設定の変更

Wifiで使用できるチャンネルは国によって異なります。そのため、Wifiを使う予定のある人は、以下の設定を行っておいてください。


"I4 Change Wi-fi Country


を選択し、"JP Japan"を選択してください。

その他の項目については、必要に応じて設定ください。

ロケールを変更することで、エラー表示等を日本語で表示させることも可能ですが、別途フォントのインストールが必要なため今回は行いません。

どうしてもという方は、Raspberry Pi 2の文字コードを変更する(日本語の設定)等のサイトを参考にトライしてみてください。


[Step 7.] Wifi設定 
■■■ ALL ■■■

この状態でも、EthernetにケーブルをつなげればDHCPでIPを取得して接続できます。

ここでは、Wifiの設定方法について簡単に記載します。

WPA2-PSKとWEPの2通りの方法を記載しますので、接続するアクセスポイントに合わせて設定してください。


WPA2-PSKの場合

想定するWifiの条件は以下です。SSIDおよびパスフレーズは適宜読み替えてください。

項目名
想定値

セキュリティ
WPA2-PSK

ステルス機能
オフ

IP割り当て
DHCP

SSID
sample

パスフレーズ
samplepasswd

まず、Wifiアダプタが認識されているか確認します。Wifiアダプタをラズパイに差して、


$ iwconfig


と打って、以下のようにwlan0が表示されれば、Wifiアダプタは認識されています。ただし、まだ通信はできません。

image

以下のコマンドを実行します。


$ wpa_passphrase sample samplepasswd


すると以下のような文字列が出力されます。


network={

  ssid="sample"

  #psk="samplepasswd"

  psk=528c5d46ff88fa51740bca0173a86e94dd45f1b9af2043448f40f649accbc0a5

}


この情報をコピーしておきます。

次に、/etc/wpa_supplicant/wpa_supplicant.confをスーパーユーザ権限で編集して、上記でコピーした値を追加します。


$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf


もしくは、


$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf


とすると以下の画面が表示されます。

image

この最後にコピーした値を追加します。

image

6行目にコメントでパスフレーズが書かれていますので、実運用ではこの行は削除した方がセキュリティ的によいです。

この後、再起動すればwifiが有効になっているはずです。

※今回のハンズオン会場での設定は、レジュメにも記載しています。 


WEPの場合

WEPはセキュリティが低いので、出来れば避けたいですが、PocketWifi等でWEPが必須の場合があるので記載しておきます。

想定するWifiの条件は以下です。SSIDおよびパスフレーズは適宜読み替えてください。

項目名
想定値

セキュリティ
WEP

ステルス機能
オフ

IP割り当て
DHCP

SSID
sample

パスフレーズ
samplepasswd

/etc/wpa_supplicant/wpa_supplicant.confをスーパーユーザ権限で編集します。


$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf


もしくは、


$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf


とすると以下の画面が表示されます。

image

この最後に以下の内容を追加します。


network={

  scan_ssid=1

  key_mgmt=NONE

  ssid="sample"

  wep_tx_keyidx=0

  wep_key0="samplepasswd"

}


この後、再起動すればwifiが有効になっているはずです。


その他の情報 
■■■ ALL ■■■


自分のRaspberry Piを識別するには

1つのWifiルータ下に複数台のラズパイが存在する場合、

Raspberry Piを個体識別する必要があります。

(今回のようなハンズオン会場であったり、複数のラズパイをセンサーとして利用する場合など)


1. ラズパイのホスト名を変更しておく場合


sudo raspi-config


の画面で、

「Advanced Options」 → 「Hostname」 を選択して変更します。

image.png

'/etc/hostname' と '/etc/hosts' ファイルを直接編集することでも可能です。

SSHで、IPアドレスの代わりにホスト名で接続します。

「変更した名前 + .local」でアクセスできるようになります。


2.固有の値として、MACアドレスを使う場合

ラズパイ側で


sudo ifconfig


を実行した際に表示される情報のうち、「wlan0」の「HWaddr」の値(=MACアドレス)をメモしておきます。

image.png

Windows/mac側のコマンドプロンプト/ターミナルから、


arp -a


を実行します。

下記のような表示のうち、先ほど調べたMACアドレスに該当する行を探し、IPアドレスを確認します。

image.png

実際には、Mac(Linux)の場合は「arp-scan」を、Windowsの場合はnmapSoftPerfect Network Scannerなどのツールを用いて、ネットワーク内のアドレスを探索する必要があるでしょう。