Raspberry Pi セットアップ(書き込み~SSH設定まで)
注意
(2018/12追記)
本記事の記述は、一部古くなっており、非推奨の事項があります。
新規にRaspberry Pi をヘッドレス(モニタ無しで)セットアップする場合、
の利用をオススメします。
OSイメージのダウンロードや、ネットワーク初期設定、任意のスクリプト実行など、
イメージのカスタマイズが簡単に行えます。
(追記終わり)
#はじめに
この記事は、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 ■■■
まずは必要なものを準備します。以下のものをご用意ください。
- PC(Windows/Mac※)
- RaspberryPi 2 Model B
- micro SDカード(8GB以上推奨)
- micro SDカードリーダー
- Wi-Fiドングル
- USBシリアル変換ケーブル
- micro USBケーブル
- USB ACアダプタ
- 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の場合
- Win32 Disk Imagerをダウンロードし、インストールします。
- アプリを起動すると以下の画面が出ますので、"Image File"に先ほどダウンロードしたOSイメージを、"Device"にはSDカードが刺さっているドライブを指定します。Deviceは間違わないようにご注意ください!
3. Writeボタンを押して書き込みを開始します。書き込みにある程度時間がかかりますので、完了するまで待ちます。
##Macの場合
1.ApplePi Bakerをダウンロードし、インストールします。
2. アプリを起動すると以下の画面が出ます。SDカードが認識されていると、"Pi-Crust"に表示されますので、選択します。選択先は間違わないようにご注意ください!
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です。
$ touch /Volumes/boot/ssh
Windowsではエクスプローラーから、拡張子無しの 「ssh」 ファイルを作成すればOKです。
#[Step 3.] RaspberryPiを起動する
■■■ ALL ■■■
#[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が起動しなくなるおそれがあるので注意しましょう
- **
config.txt
**の最後尾に以下を追記して保存します
dtoverlay=pi3-miniuart-bt
##共通手順
■■■ 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とは以下のようにピンが並んでいる部分のことです。
左上から、右、次の列の左、右、、、の順で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を使用した例で説明します。
- TeraTermをインストールします。
- デバイスマネージャーを開き、"ポート(COMとLPT)"の項目を確認します。USBシリアル変換ケーブルが認識されていると、この項目に表示されます。そこにあるシリアルポート(COMXXという形式、XXは数字)を覚えておきます。
- TeraTermを起動します。何も設定されてない場合は、"新しい接続"のダイアログが表示されます。もし、設定される場合は、メニューの"ファイル(F)"から"新しい接続(N)..."を選択すると同じダイアログが表示されます。
- "シリアル"を選択し、"ポート(R)"で先ほどデバイスマネージャーで確認したシリアルポートを選択して、OKボタンを押します。
- 次に、通信速度の設定をします。メニューの"設定(S)"から”シリアルポート(E)..."を選択しすると、"シリアルポート設定"のダイアログが表示されます。この中の、ボー・レートを115200に設定して、OKボタンを押します。
- 起動ログもしくは、ログインプロンプトが表示されれば成功です。
##Macの場合 - ターミナルを起動します。
- "ls /dev/tty.*"と入力します。 USBシリアル変換ケーブルが認識されていると、/dev/tty.usbXXXというファイルが見つかると思います。(XXXはケーブルによって異なります)
- "screen /dev/tty.usbXXX 115200"と入力します。
- 起動ログもしくは、ログインプロンプトが表示されれば成功です。
#[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を有線で接続する方法を記述したいとおもいます。
接続した時の図は下記
※USBで電源供給、ThunderboltでEthernet接続している
では以下から順を追って説明します。
システム環境設定を開く
まず、アプリケーションから「システム環境設定」を開きましょう
下記のような画面が開くので、上から3段目「共有」をクリックします
インターネット共有の設定を行う
MacとRaspiをLANケーブルで直接した状態で下記のような設定を行ってください。
インターネット共有で「共有する接続経路」をWi-Fi
相手のコンピューターが使用するポートを「Thunderbolt Ethernet」
とそれぞれ設定します。
(ここの設定は個々人の環境に合わせて設定してください)
設定が適用されると、RaspiにIPアドレスが払い出されています。
RaspiのIPアドレスを調べよう
RaspiのIPアドレスを調べるため「コンソール」アプリを立ち上げましょう
「アプリケーション」の「その他」の中に「コンソール」があります
コンソールの画面が開けたら、下記の順番で操作を行い、Raspiのアドレスが観れます。大抵192.168.2.2となっているようです。
##[Step 5-②.] RaspberryPiにSSHで接続する
■■■ ALL ■■■
PCからSSHで接続するには、RaspberryPiのIPアドレスが必要です。IPアドレスを調べる手順は前項を参照して下さい。
デフォルトのログインアカウントは下記の通りです。
ID pi
PW raspberry
##Mac
$ 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)?
##Windows
今回はターミナルソフトとしてインストール不要のPuTTYを使用します。
※前項までの手順で、TeraTermをインストールしている場合は、そちらでも構いません。
###PuTTYをダウンロードする
ダウンロードは**こちら**。
デスクトップ等にダウンロードして、下図のアイコンをダブルクリックすれば起動します。
###PuTTYでSSH接続する
- PuTTYを起動します
- RaspberryPiのIPアドレスを入力して[Open]をクリックします
- 初回接続時のみ下図が表示されるので[はい]をクリックします
-
Login as:
と表示されたらpi
...password:
と表示されたらraspberry
を入力します。パスワードは入力しても何も表示されません
- 下図のような表示になったらログイン成功です
#[Step 6.] 初期設定
■■■ ALL ■■■
ログインIDとパスワードはデフォルトで以下になります。
ログインID:pi
パスワード:raspberry
基本、この状態でも普通に使用できます。
以下にいくつかの設定方法を記載しますので、好みに応じて設定してみてください。
##設定ツールの起動
コマンドを入力して、設定ツールを立ち上げます。
$ sudo raspi-config
上下キーでメニューの選択、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"
次に、
"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アダプタは認識されています。ただし、まだ通信はできません。
以下のコマンドを実行します。
$ 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
この最後にコピーした値を追加します。
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
この最後に以下の内容を追加します。
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」 を選択して変更します。
'/etc/hostname' と '/etc/hosts' ファイルを直接編集することでも可能です。
SSHで、IPアドレスの代わりにホスト名で接続します。
「変更した名前 + .local
」でアクセスできるようになります。
###2.固有の値として、MACアドレスを使う場合
ラズパイ側で
sudo ifconfig
を実行した際に表示される情報のうち、「wlan0」の「HWaddr」の値(=MACアドレス)をメモしておきます。
Windows/mac側のコマンドプロンプト/ターミナルから、
arp -a
を実行します。
下記のような表示のうち、先ほど調べたMACアドレスに該当する行を探し、IPアドレスを確認します。
実際には、Mac(Linux)の場合は「arp-scan」を、Windowsの場合はnmapやSoftPerfect Network Scannerなどのツールを用いて、ネットワーク内のアドレスを探索する必要があるでしょう。