Raspbian Lite を導入する2018-07-02
ラズパイの起動時間を短縮したい
Raspbianの起動時間が1分半ほどかかるので、これをもっと短くしたいと思って色々調べたら、何と10秒以内に起動できるというページを見つけた。
先ず自分の環境で起動に何秒かかっているかだが、ターミナルで次のコマンドを使えば判るらしい。
systemd-analyze time
試してみると、カーネルとユーザースペース合わせて20秒ちょっとと出た。例えばこんな感じ;
Startup finished in 2.035s (kernel) + 25.607s (userspace) = 27.642s
じゃあ実測起動時間との1分強の差は何なのさ?というわけで上記のベージにコメントで質問したら、この時間にはデスクトップ(GUI)の準備時間は含まれないようだ。つまりGUIを使う限り起動時間はさほど短くならないと判ったので、「ヘッドレス仕様」のRaspbian Liteを導入することにした。
Raspbian Liteの導入
※新たにRaspbian Stretch Lite(2018-6-27版)で試したので内容を更新した。
最初に凡その手順をまとめておく。
- Raspbian Liteのイメージをダウンロードし、イメージをSDカードに焼く。
- 上のSDカードでRasPiを起動し、Wifiの設定を行う
- パッケージを最新のものにアップグレードする
- raspi-configでロケール関係の設定を行う
- raspi-configでインターフェイスのSSHとVNCを有効にする(PCから遠隔操作する場合)
以下に詳細説明。
1.Raspbian LiteのSDカードを作成
まず、Raspbianのダウンロードページで、右のRASPBIAN STRETCH LITEをダウンロードする。
因みに、前回デスクトップ付きの普通のRaspbian(左側)を導入したときは、NOOBSをダウンロードしラズパイにインストールしたのでかなり時間がかかったが、今回は最初からディスクイメージダウンロードしたので、それをSDカードに焼くだけでOK。
2.Wifiの設定
Raspberry Pi Zero Wは有線LANが無いのでWifiの設定をしないとネットに繋がらずパッケージのアップデートも出来ない。ところがRaspbian LiteはGUIを持たないので、当然コマンドラインでネットワークの設定を行う必要がある。また、個人的にはラズパイをLANを通してPCから操作していたが、当然無線LANの設定も未だなので最初はラズパイにモニターやキーボードを繋いで操作する必要がある。
先ずコマンドラインでsudo raspi-configと入れて設定一覧を開き、2. Network Options > N2 Wifiと進む。するとSSIDとPassを聞いてくるので、そこに無線ルータのSSIDとパスを入れる。続いてWifiのロケールを聞いてくるのでJapanを選択する。
一旦ラズパイを再起動するとWifiに繋がっているはずだが、確認方法は
ifconfig wlan0
と打って
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.3 netmask 255.255.255.0 broadcast 192.168.0.255
等と出てきたらOK。これで成功したら下の補足は読む必要はないので次の項目に飛んで欲しい。
【補足】
現在のRaspbianなら上の設定だけでOKの筈だが、環境によっては上手くいかないので、別の方法を紹介する。古い記事は色々やっているが、一番シンプルなのは公式サイトにあるとおり、Wifiの設定ファイルを手動で書き換える方法。やりかたは先ず;
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
と打ち込んで、nano(CLIのテキストエディタ)で設定ファイルを開き、文末に次の文を追加する。
network={
ssid="無線ルータのSSID"
psk="上記IDのパスワード"
}
でこのファイルを上書き保存すれば完了。因みに上述のようにraspi-configで設定しても同じような記述になっている筈。
更に補足というか参考情報だが、以前の私の環境ではこれでも上手く行かなかった。正確には、使っているルーター(NEC)のプライマリSSIDを使えば問題無く繋がるのに、セカンダリSSIDだと何故か繋がらないのだ。想像だが、セカンダリSSIDは”WARPSTAR-AB1234-W”という風に末尾に”-W”が付くので、これが暗号化の際に何らかの問題を起こしているとか?よくわからないが、結局このアクセスポイントは今でも使わずじまいだ。
3.パッケージの更新
ようやくネットに繋がったので、先ずはお約束のupdate,upgradeそしてdist-upgradeもやっておく。今公式サイトからダウンロードしたばかりのラズビアンがガンガン更新されてゆく(;´∀`)
4.ロケールの設定
別に何て事ないタイムゾーンや文字コードの設定かと思いきや、またつまらない所で躓いてしまった。
4. Localisation Options > I1. Change Localeと進むと次のような画面が出てくる。
ここで「ja_JP UTF-8」を選択したいのだが、ここに赤いカーソルを持っていきEnterキーを押しても直ぐに確認画面に飛ぶだけで設定は変わらない。色々調べて判ったのは、ここではEnterではなくSpaceキーを押すということ。するとそこに*印が付いて、<了解>を押せば確認画面が出て、ちゃんと希望の文字コードになっている。
5. SSHを有効にする
パッケージの更新やロケール設定の前でも良いが、私の場合はPCでラズバイを遠隔操作したいので、先ずはSSH有効にする。やり方はraspi-configで、Interfacing optionでSSHをenableにするだけ。
ここで、PC側からSSHクライアントソフト(私の場合Tera Term)でラズパイにアクセスしてみる。すると、IPアドレス(例:192.168.0.3)は以前の環境のものとは違っていた。まあ下一桁が違うだけなので順番に試していったら繋がったが、事前にラズパイ本体に繋がったモニタで確認しておいた方が無難だろう。
でこのIPアドレスを固定する設定をしておかないと、接続する度に変化する可能性があるが、今までの所、OSを丸ごと入れ替えない限り、何度再起動しても(アップデートしても)同じIPアドレスのままだ。
因みにVNCもSSHと同じやり方で有効化できるが、enableを選択すると自動的にパッケージのダウンロードが始まる。これが結構時間がかかるが、終わると標準のVNCクライアントがインストールされる。尚、以下の起動時間に関する記述は、このVNCを有効化する前の話である。
まとめ
以上でRaspbian Liteのインストールと基本的な設定は出来たはず。では肝心の起動時間はどうなったかというと、実測で約37秒くらいだった。それまでの普通のRaspbian(GUI)が1分半ほど掛かっていた事を考えれば、大分速くなった。
一方、冒頭のsystemd-analyze timeもべてみたら、次のような結果になった。
Startup finished in 1.767s (kernel) + 23.012s (userspace) = 24.779s
これは以前のOSと殆ど変わらないが、この数値がデスクトップの起動時間を含んでいないという話に合致する。ただ起動時間10秒以内にするのは、様々なサービスを無効化したとしても、ちょっと難しい気もする。
実はこの後、折角ヘッドレス仕様のRaspbian Liteを入れたのに、実際に使うと色々と不便を感じたので、結局GUIを追加インストールしてしまった。これについては続編で。