2017 年度 OSS リテラシー 3 : 第 1 回 基本セットアップ

  • 2017/10/02 杉山耕一朗

Raspberry Pi のセットアップ

Raspberry Pi (ラズベリーパイ) は ARM プロセッサを搭載したシングルボードコ ンピュータであり, 安価な教育用のコンピュータとして世界中で使われている. Raspberry Pi を用いて Linux の演習を行う.

Raspberry Pi は SD カードからブートする. そのため, 「インストール = OS イ メージを書き込んだ SD カードを作る」である. Raspberry pi 上で動作する OS はいくつかあるが, 本実習ではラズベリーパイ財団が公式にサポートしている Debian/GNU Linux ベースの OS である Raspbian を利用する.

(注) 2017 年度は Raspbian の SD カードを受講生に配布する. イメージのダウンロードや SD カードへの書き込みを自分で行う必要はない.

(スキップ) イメージファイルのダウンロード

下記の URL から Raspbian stretch の OS イメージファイル (zip 圧縮) をダ ウンロードする (Raspbian の元となる Debian は, 映画トイストーリーのキャラクター名をコードネームとして使っている. stretch はトイストーリーのキャラクタ).

<URL:https://www.raspberrypi.org/downloads/raspbian/>

(スキップ) イメージファイルを SD カードへ書き込む

ダウンロードした zip ファイルを展開する. 展開には 7-zip.exe を使うと良い.

Windows 上で SD カードに raspbiaen を書き込む. 書き込みには Win32DiskImager.exe を利用する (管理者権限が必要).

  • SD カードリーダー/ライターをパソコンに接続し, Win32 Disk Imager を起動する.
  • ``Image File'' に書き込むイメージファイルを指定する.
  • ``Device'' に SD カードのデバイス名を指定する.
  • ``Write'' をクリックしてイメージファイルを SD カードに書き込む.

Raspbian の起動

Raspberry Pi に以下の順番で周辺機器を接続する. Raspberry Pi には電源スイッ チは無く, 電源コードを挿すと Raspbian がただちに起動する.

  • micro SD カードの挿入
  • ディスプレイと接続. HDMI ケーブルを利用する.
  • ワイヤレスのマウス・キーボードと接続. USB レシーバーを USB ポートに挿入する.
  • 電源コードの接続

基本設定

Raspberry Pi Configuration を実行する. デスクトップ左上の Menu の Preference から "Raspberry Pi Configuration" をクリックする.

まず, "System" タブを選択し, 以下を行う.

  • パスワードの変更.
    • デフォルトでは, ユーザ: pi, パスワード: raspberry が設定されている. このままではセキュリティ的に問題があるので, ユーザ pi のパスワードを変更する. (なお, 後日ユーザ pi ではログインできなくする予定である).
  • ホスト名の設定
    • ホスト名は IoT-XX (XX は機材についている番号の下二桁) とする.
  • ユーザ pi での自動ログインの禁止.
    • 自動ログインはセキュリティ的に問題があるので, チェックを外す. 自動ログインを有効にしたままだと, 他人が勝手に自分のラズパイを起動し, 中に入っているデータを好き勝手に編集できてしまう.

次に, "Localisation" タブを選択し, 日本語環境を整える. なお, エディタなどで日本語を 入力するための設定は後日行う.

  • locale の設定: Language を "ja" にする.
    • 多国語対応のソフトウェアは locale (ロケール) に応じて言語を切り替える. locale を utf-8 にして再起動すると, デスクトップ画面が日本語化する.
    • Language を "ja" にすると, Country と Character Set は自動で設定してくれる.

  • タイムゾーンの設定: Area を "Japan" にする.
    • この作業を行った後でも時計が狂ったままかもしれない. これはネットワーク接続すれば直るので, この段階では気にしなくて良い (NTP (network time protocol) を利用して時刻を修正する).

  • キーボードの設定: Country を "Japan" にする.
    • Variant は自動設定される.

  • WiFi Country の設定: Country を Japan にする.

"OK" を押すと再起動するか聞かれる. "Yes" を押して再起動する.

ネットワークの設定 (仮)

松江高専の無線 LAN ネットワークに接続するには, 802.1x 認証を通すための設定を行わねばならない. ここではネットワークにつなげるための設定を行う (パスワードの暗号化や認証に関する詳細は次週以降に行う).

なお, 以下では背景が灰色な部分は terminal 上でコマンドを実行することを意味する. 先頭が "$" の場合は一般ユーザ権限でのコマンド実行, 先頭が "#" の場合は管理者権限でのコマンド実行を意味する. sudo コマンドを使って管理者権限を使っていることに注意せよ. また, 括弧内は説明であり, ファイルに書き込む必要はないことに注意せよ.

無線 LAN 関係の設定ファイルは /etc/wpa_supplicant/wpa_supplicant.conf である. この設定ファイルをエディター (vi, nano, leafpad 等) で編集し, アクセスポイントの情報を追加する. なお, タブ補完という便利機能があるので使ってみると良い (例えば, /e まで打ったところでタブを押すと /etc となる. /etc/wp まで打ったところでタブを押すと /etc/wpa_supplicant となる).

$ sudo -s
# vi /etc/wpa_supplicant/wpa_supplicant.conf

  (以下の内容をファイルに書き込む)
  network={
  	     ssid="H530W_pub"  (アクセスポイントの名称)
  	     key_mgmt=WPA-EAP
  	     eap=PEAP
  	     identity="jXXXX" (学生番号)
  	     password="XXXXX" (パスワード)
  }

再起動

# reboot

正しく設定できれば, 再起動することで無線 LAN ネットワークに接続できる. もしも無線 LAN に接続できない場合は, 設定ファイルが間違っている可能性が高い. 間違いを探すときは, 手動で以下のコマンドを実行すると良い. エラーの原因となる行番号が表示される.

$ sudo -s
# wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf 

松江高専内のミラーサイトを使う設定にする.

Linux ではパッケージ管理システムを用いてネットワーク経由でソフトウェア (パッケージ) をインストールする. ネットワーク的に近いミラーサイトを利用する方がパケージのダウンロードにかかる時間が短くて済む. この演習では松江高専内の raspbian のミラーサイトを利用することにする.

まず, パッケージをダウンロードするミラーサイトを学内のものに変更する. 既存のものをコメントアウトして, ホスト名を moon.epi.it.matsue-ct.jp に変更する. 編集するファイルは 2 つなことに注意せよ.

$ sudo -s
# vi /etc/apt/sources.list  

  deb http://moon.epi.it.matsue-ct.jp/raspbian/ stretch main contrib non-free rpi     (追加)
  #deb http://mirrordirector.raspbian.org/raspbian/ stretch main contrib non-free rpi (コメントアウト)  
  # Uncomment line below then 'apt-get update' to enable 'apt-get source'
  #deb-src http://archive.raspbian.org/raspbian/ stretch main contrib non-free rpi

# vi /etc/apt/sources.list.d/raspi.list 

  deb http://moon.epi.it.matsue-ct.jp/debian/ stretch main ui (追加)
  #deb http://archive.raspberrypi.org/debian/ stretch main ui (コメントアウト) 
  # Uncomment line below then 'apt-get update' to enable 'apt-get source'
  #deb-src http://archive.raspberrypi.org/debian/ stretch main ui

パッケージの更新を行う. update でミラーサイトに置かれたパッケージのバージョンを確認し, upgrade で最新バージョンのパッケージをインストールする. この作業は場合によっては数十分かかる.

# apt-get update

  取得:1 http://moon.epi.it.matsue-ct.jp/raspbian stretch InRelease [15.0 kB]
  取得:2 http://moon.epi.it.matsue-ct.jp/debian stretch InRelease [25.3 kB]
  取得:3 http://moon.epi.it.matsue-ct.jp/raspbian stretch/main armhf Packages [11.7 MB]
  取得:4 http://moon.epi.it.matsue-ct.jp/raspbian stretch/contrib armhf Packages [56.8 kB]
  取得:5 http://moon.epi.it.matsue-ct.jp/raspbian stretch/non-free armhf Packages [95.2 kB]
  取得:6 http://moon.epi.it.matsue-ct.jp/raspbian stretch/rpi armhf Packages [1,360 B]
  取得:7 http://moon.epi.it.matsue-ct.jp/debian stretch/main armhf Packages [111 kB]
  取得:8 http://moon.epi.it.matsue-ct.jp/debian stretch/ui armhf Packages [26.9 kB]
  12.0 MB を 26秒 で取得しました (461 kB/s)
  パッケージリストを読み込んでいます... 完了

取得先が全て moon.epi.it.matsue-ct.jp になっていることを確認すること. そうなっていない場合はミラーサイトの設定に誤りがあるので, 設定ファイルを見直すこと.

# apt-get upgrade

  パッケージリストを読み込んでいます... 完了
  依存関係ツリーを作成しています                
  状態情報を読み取っています... 完了
  アップグレードパッケージを検出しています... 完了
  以下のパッケージはアップグレードされます:
     bluez dhcpcd5 libbluetooth3 libservlet3.1-java pigpio python-pigpio python3-pigpio rpi-chromium-mods scratch2
  アップグレード: 9 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
  78.6 MB のアーカイブを取得する必要があります。
  この操作後に追加で 1,160 kB のディスク容量が消費されます。
  続行しますか? [Y/n] Y
  取得:1 http://moon.epi.it.matsue-ct.jp/debian stretch/ui armhf rpi-chromium-mods armhf 20170913 [9,197 kB]
  (...後略...)

アップグレードされるパッケージが一覧されるので, それを眺めたら Y を押す. ミラーサイトからパッケージがダウンロードされ, 自動的にインストールが始まる.

日本語設定

日本語フォントと日本語 Input method である anthy をインストールする. (最近は mozc が人気のようですが, 私が慣れているのは anthy なので...).

パッケージをインストールする前には必ず apt-get update を実行し, サーバ側の最新パッケージ情報を入手すること. また, パッケージには依存関係があるので, ibus-anthy を apt-get install の引数で与えただけなのに, 複数のパッケージが一緒にインストールされる.

$ sudo -s
# apt-get update
# apt-get install ibus-anthy

  パッケージリストを読み込んでいます... 完了
  依存関係ツリーを作成しています                
  状態情報を読み取っています... 完了
  以下の追加パッケージがインストールされます:
    anthy anthy-common kasumi libanthy0
  以下のパッケージが新たにインストールされます:
    anthy anthy-common ibus-anthy kasumi libanthy0
  アップグレード: 0 個、新規インストール: 5 個、削除: 0 個、保留: 0 個。
  2,936 kB のアーカイブを取得する必要があります。
  この操作後に追加で 15.0 MB のディスク容量が消費されます。
  続行しますか? [Y/n] 
  取得:1 http://moon.epi.it.matsue-ct.jp/raspbian stretch/main armhf anthy-common all 9100h-25 [2,523 kB]
  取得:2 http://moon.epi.it.matsue-ct.jp/raspbian stretch/main armhf libanthy0 armhf 9100h-25 [129 kB]
  取得:3 http://moon.epi.it.matsue-ct.jp/raspbian stretch/main armhf anthy armhf 9100h-25 [136 kB]
  取得:4 http://moon.epi.it.matsue-ct.jp/raspbian stretch/main armhf ibus-anthy armhf 1.5.9-2 [91.0 kB]
  取得:5 http://moon.epi.it.matsue-ct.jp/raspbian stretch/main armhf kasumi armhf 2.5-5 [56.6 kB]
  2,936 kB を 2秒 で取得しました (1,345 kB/s)
  (...後略...)

パッケージインストール直後は iBus が起動していないので日本語入力できない. iBus の設定を選ぶと iBus デーモンを起動するか聞かれるので「はい」を選ぶ (iBus の設定は特に変える必要はない).

デスクトップ右上の言語のアイコンを右クリックし, 日本語のインプットメソッドを Anthy にする. その後, 右クリックすると入力モードが選べるので, そこで「ひらがな」「英数」などを切り替えられる. なお, キーボードで「半角/全角」キーや Ctrl-j (Ctrl キーを押しながら j キーを押す) でも「ひらがな」と「英数」の切り替えを行うことができる.

日本語が実際に打てるか試してみよ. 例えばブラウザを立ち上げて, 検索窓に日本語を入力せよ.

スクリーンショット

本演習では, 課題を行った証拠としてスクリーンショットを提出してもらうことがある. ここでラズパイでのスクリーンショットの取り方を説明しておく. ターミナルを立ち上げて 以下のコマンドを実行せよ. ls コマンドを実行すると, 作成されたファイルの名前が確認できる.

$ scrot    

$ ls  (ファイルの確認)

  2017-10-02-190947_1024x768_scrot.png

ある一定の時間後 (以下では 10 秒後) にスクリーンショットを取りたい場合は, -d オプションを用いる.

$ scrot -d 10

作成したファイルを確認するには, 上部に並んだアイコンから「ファイルマネージャー」を選び, 画像のアイコンをクリックすると良い.

課題 (〆切: 2017/10/16 (月) 18:00)

  • ターミナルを起動し, ホスト名を表示するための hostname コマンドを実行せよ.

    • ターミナルのスクリーンショットを取り, その画像を wbt から提出せよ.
    $ hostname 
    
      IoT-XX
  • ブラウザを立ち上げて wbt にログインせよ.
    • ブラウザのスクリーンショットを取り, その画像を wbt から提出せよ.
  • 日本語が実際に打てるか試してみよ. 例えばブラウザを立ち上げて, 検索窓に日本語を入力せよ.
    • ブラウザのスクリーンショットを取り, その画像を wbt から提出せよ.