レオンハルトジャパン公式BLOG

技術的な情報を公開するスペースです。

宇宙一わかりにくいラズパイ入門(仮称)③

宇宙一わかりにくいラズパイ入門(仮称)②の続きです。
宇宙一わかりにくいラズパイ入門(仮称)③では、ラズパイの環境設定をするよ。ここを手抜きすると後で「あれ?」となり、例えばサービスリリース後の運用フェーズで泣くのは君たちです(にっこり)

宇宙一わかりにくいラズパイ入門(仮称)の趣旨

Raspberry Pi2 Model B に Raspbian(Jessie)をインストールして「IoT×Blockchain までやってしまうよ!」な企画を開始しました。はっきり言って「超絶わかりにくい」ので良質な書籍やブログを読むことをオススメします。皆様の貴重なお時間をムダにするのは本懐ではありません。興味がある方だけ読んでみてください(にっこり)

raspi-config は最後に使おう

ラズパイの環境設定は普通 raspi-config を使いますが、ラズパイを楽しく使うにはまず「 Raspbianの仕組み」を理解してからにしましょう。それでこそ、宇宙一わかりにくい(略)

pi@raspberrypi:~ $ sudo raspi-config

f:id:lhj:20160301081223p:plain

ラズパイにSSHアクセス

無線LAN接続ができているので、HDMIケーブル/USBキーボード/USBマウスは不要です。SSH接続には Windowsユーザーなら Tera Termテラターム)、Macユーザーはツール不要ですね。

  • SSH (Port番号:22)
  • User:pi
  • Password:raspberry

IPアドレスはどれ?

そうなんです。DHCPでプライベートIPが払いだされているので、IPアドレスがわかりません。でも、大丈夫です。有名なポートスキャンツール Nmap を使って探しましょう。ポートスキャンツールですから悪いことには使わないでプライベート空間(e.g.192.168.0.0/24)でポートスキャンしましょう。そして、君たちが将来「ネットワークエンジニア」になりたいのであれば必須のツールです。

Nmap のダウンロードとインストール

Nmap公式サイトに行って、Windowsユーザなら「Latest release self-installer: nmap-7.01-setup.exe」をダウンロードし、インストールしましょう。後は、DOSプロンプト(cmd.exe)で以下のコマンドを叩けばIPアドレスはわかります。

C:\Users\Foo>nmap -p22 192.168.1.0/24 # -p22 でssh指定

Nmap scan report for 192.168.1.1
Host is up (1.9s latency).
PORT   STATE SERVICE
22/tcp open  ssh
MAC Address: xx:xx:xx:xx:xx:xx (Buffalo.inc) # これですね!

Tera Termでラズパイにsshアクセス

ようやく、ここまで来ました。あとは良質なブログからコードをコピペ(カット&ペースト)すれば良いだけです。宇宙一わかりにくい(略)は連載終了してよいかもしれませんね。

f:id:lhj:20160301092616p:plain

無線LAN環境の確認

ログイン後は以下3つをしましょう。覚えておいた方が、のちのち楽になります。

# AP(アクセスポイント)のスキャン
pi@raspberrypi:~ $ sudo iwlist wlan0 scan | grep ESSID

ESSID:"foo.bar"
ESSID:"baz.qux"
ESSID:"quux.corge"

# 自分のSSIDを確認
pi@raspberrypi:~ $ iwconfig wlan0 | grep ESSID

wlan0     IEEE 802.11bgn  ESSID:"foo.bar"

# インターネット接続確認(DNS確認も兼ねる)
pi@raspberrypi:~ $ sudo ping -c 3 www.google.com

PING www.google.com (216.58.197.164) 56(84) bytes of data.
64 bytes from nrt12s02-in-f4.1e100.net (216.58.197.164): icmp_seq=1 ttl=54 time=29.5 ms
64 bytes from nrt12s02-in-f4.1e100.net (216.58.197.164): icmp_seq=2 ttl=54 time=29.6 ms
64 bytes from nrt12s02-in-f4.1e100.net (216.58.197.164): icmp_seq=3 ttl=54 time=29.9 ms

タイムゾーンの設定

pi@raspberrypi:~ $ tzselect

Please identify a location so that time zone rules can be set correctly.
Please select a continent, ocean, "coord", or "TZ".
 1) Africa
 2) Americas
 3) Antarctica
 4) Arctic Ocean
 5) Asia
 6) Atlantic Ocean
 7) Australia
 8) Europe
 9) Indian Ocean
10) Pacific Ocean
11) coord - I want to use geographical coordinates.
12) TZ - I want to specify the time zone using the Posix TZ format.

# 日本はアジアですから[5]

Please select a country whose clocks agree with yours.
 1) Afghanistan           18) Israel                35) Palestine
 2) Armenia               19) Japan                 36) Philippines
 3) Azerbaijan            20) Jordan                37) Qatar
 4) Bahrain               21) Kazakhstan            38) Russia
 5) Bangladesh            22) Korea (North)         39) Saudi Arabia
 6) Bhutan                23) Korea (South)         40) Singapore
 7) Brunei                24) Kuwait                41) Sri Lanka
 8) Cambodia              25) Kyrgyzstan            42) Syria
 9) China                 26) Laos                  43) Taiwan
10) Cyprus                27) Lebanon               44) Tajikistan
11) East Timor            28) Macau                 45) Thailand
12) Georgia               29) Malaysia              46) Turkmenistan
13) Hong Kong             30) Mongolia              47) United Arab Emirates
14) India                 31) Myanmar (Burma)       48) Uzbekistan
15) Indonesia             32) Nepal                 49) Vietnam
16) Iran                  33) Oman                  50) Yemen
17) Iraq                  34) Pakistan

# Japanは[19]

The following information has been given:

        Japan

Therefore TZ='Asia/Tokyo' will be used.
Local time is now:      Tue Mar  1 09:56:40 JST 2016.
Universal Time is now:  Tue Mar  1 00:56:40 UTC 2016.
Is the above information OK?
1) Yes
2) No

# [1]を押しましょう。

You can make this change permanent for yourself by appending the line
        TZ='Asia/Tokyo'; export TZ
to the file '.profile' in your home directory; then log out and log in again.

Here is that TZ value again, this time on standard output so that you
can use the /usr/bin/tzselect command in shell scripts:
# タイムゾーンの確認
pi@raspberrypi:~ $ cat /etc/timezone

Asia/Tokyo

しっかり、JST日本標準時)のタイムゾーンになっていますね(にっこり)

時刻同期の設定

日本標準時を決定・維持している情報通信研究機構(NICT)、IX(インターネット・エクスチェンジ)を運用しているインターネットマルチフィード(MFEED)の時刻情報提供サービス for Publicを使いましょう。

まずは現設定を確認

pi@raspberrypi:~ $ date
Tue Mar  1 10:48:57 JST 2016

# だいたい合っている。

pi@raspberrypi:~ $ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+ec2-54-64-6-78. 133.243.238.164  2 u  319  512  277   32.864    7.265  25.834

+balthasar.gimas 210.173.160.57   3 u  269  512  377   31.494    7.909  24.778
*v157-7-235-92.z 103.1.106.69     2 u   82  512  377   31.803    5.876  28.480
+next.kkyy.me    133.243.238.244  2 u  151  512  377   31.020    6.685  24.002

# 左に「*」がついているNTPサーバが同期先

pi@raspberrypi:~ $ sudo netstat -natup | grep ntpd
udp        0      0 192.168.1.1:123         0.0.0.0:*                           523/ntpd
udp        0      0 127.0.0.1:123           0.0.0.0:*                           523/ntpd
udp        0      0 0.0.0.0:123             0.0.0.0:*                           523/ntpd
udp6       0      0 fe80::d90e:b213:b35:123 :::*                                523/ntpd
udp6       0      0 ::1:123                 :::*                                523/ntpd
udp6       0      0 :::123                  :::*                                523/ntpd

# udp6 はIPv6ですね

/etc/ntp.conf の設定

pi@raspberrypi:~ $ sudo cp -p /etc/ntp.conf /etc/ntp.conf.old # コピー忘れずに
pi@raspberrypi:~ $ sudo nano /etc/ntp.conf

#server 0.debian.pool.ntp.org iburst # コメントアウト
#server 1.debian.pool.ntp.org iburst # コメントアウト
#server 2.debian.pool.ntp.org iburst # コメントアウト
#server 3.debian.pool.ntp.org iburst # コメントアウト

server ntp.nict.jp         # 追加
server ntp.jst.mfeed.ad.jp # 追加

[Ctrl] + [o] で上書き、[Ctrl] + [x] で終了

pi@raspberrypi:~$ diff /etc/ntp.conf /etc/ntp.conf.old
21,24c21,24
< #server 0.debian.pool.ntp.org iburst
< #server 1.debian.pool.ntp.org iburst
< #server 2.debian.pool.ntp.org iburst
< #server 3.debian.pool.ntp.org iburst
---
> server 0.debian.pool.ntp.org iburst
> server 1.debian.pool.ntp.org iburst
> server 2.debian.pool.ntp.org iburst
> server 3.debian.pool.ntp.org iburst
26,27d25
< server ntp.nict.jp
< server ntp.jst.mfeed.ad.jp

ntpd(NTPデーモン)は自動起動がoffになっているので、別章で書きますね。

ラズパイの再起動と確認

pi@raspberrypi:~ $ sudo reboot
pi@raspberrypi:~ $ ntpq -p

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 ntp-a2.nict.go. .NICT.           1 u   14   64    1   31.429    0.003   0.381
*ntp3.jst.mfeed. 133.243.236.17   2 u   48   64    1   30.173   -0.114   0.203

# 左に「*」がついているのがNTPサーバが同期先

ロケールの設定

日本語を使いたいので設定しましょう。

pi@raspberrypi:~ $ cat /etc/locale.gen | grep -v '#'

en_US.UTF-8 UTF-8

# この1行しか有効になっていないですね。

pi@raspberrypi:~ $ sudo cp -p /etc/locale.gen /etc/locale.gen.old
pi@raspberrypi:~ $ sudo nano /etc/locale.gen

ja_JP.UTF-8 UTF-8     # アンコメント

[Ctrl] + [o] で上書き、[Ctrl] + [x] で終了

pi@raspberrypi:~ $ diff /etc/locale.gen /etc/locale.gen.old

< ja_JP.UTF-8 UTF-8
---
> # ja_JP.UTF-8 UTF-8

pi@raspberrypi:~ $ cat /etc/locale.gen | grep -v '#'

ja_JP.UTF-8 UTF-8

# ロケールを追加したので、以下でロケールの生成をします。

pi@raspberrypi:~ $ sudo locale-gen
Generating locales (this might take a while)...
  en_US.UTF-8... done
  ja_JP.UTF-8... done
Generation complete.

キーボードの設定変更

皆さんが使う一般的な106日本語キーボードですね。変更しておきましょう。なお、105配列と106配列と違いは「キー数」です。気にするレベルではありませんよ。

pi@raspberrypi:~ $ sudo cp -p /etc/default/keyboard /etc/default/keyboard.old
pi@raspberrypi:~ $ sudo nao /etc/default/keyboard
# KEYBOARD CONFIGURATION FILE

# Consult the keyboard(5) manual page.

XKBMODEL="jp106"  # pc105→jp106に変更 
XKBLAYOUT="jp"
XKBVARIANT=""
XKBOPTIONS=""     # lv3:ralt_switchを削除

BACKSPACE="guess"

# 確認
pi@raspberrypi:~$ diff /etc/default/keyboard /etc/default/keyboard.old
5c5
< XKBMODEL="jp106"
---
> XKBMODEL="pc105"
8c8
< XKBOPTIONS=""
---
> XKBOPTIONS="lv3:ralt_switch"

Debianのフォントインストール

日本語フォントもついでにインストールしてあげましょう。文字化けすると困りますもんね。

pi@raspberrypi:~$ sudo apt-get install ttf-kochi-gothic xfonts-intl-japanese xfonts-intl-japanese-big xfonts-kaname

(それでも続く)

Amazon Web Services、“Powered by Amazon Web Services”ロゴ、及び本ブログで使用されるその他のAWS商標は、米国その他の諸国における、Amazon.com, Inc.またはその関連会社の商標です。
※ SORACOM、その他のSORACOMサービスは、株式会社ソラコム登録商標または商標です。