AWS
RaspberryPi

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

More than 1 year has passed since last update.

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

はじめに

この記事は、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などのツールを用いて、ネットワーク内のアドレスを探索する必要があるでしょう。