純規の暇人趣味ブログ

首を突っ込んで足を洗う

Raspbianのインストールと初期設定

      2017/03/13    HimaJyun

中古でサーバを買ったら電源が不調で、代わりになる電源がサーバ代より高いという事態になりました@HimaJyunです。(ヨカッタラツイッタフォロシテネ)

それはさておき、Raspberry Piで使うDebian系Linuxの「Raspbian」

当然ながらに私も使っているのですが、「インストールしたらこれをやるリスト」が肥大化してきたので、ここでまとめてご紹介します。

OSのインストール

今回はヘッドレス(液晶などを使用せず)にインストールしたいため、RaspbianのLite版を利用します。

他にもNOOBSがありますが、こちらは液晶必須なため、また、SDのパーティションをちょちょ切れにされてしまうため使いません。

(インストール済み、すなわち設定の所を読みたい方は下まですっ飛ばして、どうぞ。)

ダウンロード

まずはRaspbianを入手しないと始まりません、とりあえず入手する所から始めましょうか。

Raspbian自体は公式の「Download Raspbian for Raspberry Pi」からダウンロード出来ます。

が、海外鯖(遅い)ので日本ミラーからダウンロードするのがオススメ。(もしくはTorrentを使う)

ダウンロードしたzipを展開すると.imgファイルが出て来ます、これがOSのファイルです。

通常版は容量が4G超えしてるのでZip64に対応した解凍ソフトが必要です。(Win10付属の解凍ソフトでもOK)

SDカードに書き込む(Windows)

普通はddで書き込むものなんですが、Windowsだとddは使えないのでDD for Windowsを使う方法を……(これとは別にWin32DiskImagerなんてのも有名ですが出来る事は同じなので省略)

DD for Windowsを使うのですからDD for Windowsの入手が必要ですわ、あたりまえですの。

DD for Windows - Tech Info」からダウンロードして、入手したzipを解凍しましょう。

でもって、出て来たDDWin.exeを管理者として実行します。

実行したらSDカードをPCに接続して書き込むSDカードやimgファイルを選択して下さい。(選択時に「All files」にしないと表示されないかと思われ)

後は「<<書込<<」をクリックするとファイルをSDカードに書き込みます。

この時、当然ながらにSDカード上にあるデータは全て消えるので、間違えてもかわいい彼女(そんなものは居ない)の写真が沢山入ったSDカードとかで試したりしては行けませんよ、ぶん殴られますよ?(それとも、これを口実に彼女に写真撮影を求めちゃいます?)

SDカードに書き込む(Linux)

*nixだとddコマンドが使えるのでこれで書き込むことが出来ます。(Bash on Ubuntu on Windowsで出来るかは不明)

Ubuntuで動作確認しました、貧乏なのでMacは持っていません、Macの方は他所の情報をご覧ください。(てかLinuxとMacでやり方違うのかよ……)

まずはdfでSDカードを特定します、今回は「/dev/sdb」でした(もちろんsd「b」の部分は時と場合によって変わるのでそれに合わせて)

でもって、ddの妨げになるのでSDカードをアンマウントします。(SDカードは刺したまま、パーティションだけをアンマウントする)

「umount /dev/sdb1」みたいな感じ、sdb1、sdb2みたいにパーティションが複数ある場合は全てアンマウント。

書き込みはddを使う、ここで指定を間違うと大切な大切な秘蔵の動画集諸共HDDが吹き飛んでしまうかも知れない

sudo dd if=2017-01-11-raspbian-jessie-lite.img of=/dev/sdb bs=4M

しばらく時間が掛かるので紅茶とケーキでも持って来て待つ。

書き込みが出来たら「sync」コマンドを使って同期してからSDカードを取り出す。

SSHを有効にする

2016-11-25からSSHがデフォルトで無効にされたみたいです。

しかし、今回の様なヘッドレス起動したい場合はSSHが起動している必要があります。

対処法はしっかりあるみたいで、bootパーティションに「ssh」という名前のファイルを作成すれば良いみたいです。(中身は空でOK)

この時のドツボポイントですが、拡張子に気を付けて下さい。

Windows環境だと何気に「新規作成->テキストドキュメント」としてしまいますが、こうするとファイル名に.txtが付きます。(この事に気付かずに数時間悩みました)

正しくは、拡張子などのない「ssh」です。

ヘッドレス運用するつもりの方はお忘れなく。

起動とログイン

Pi3で説明しますが、他Piでもだいたい同じかと思われます。

電源を入れる所の説明なんて要らないと思いますが、書き込みが終わったSDカードをラズパイにセットします。

でもって、LANケーブルと電源を差し込みます、少なくともPi3にスイッチはありません、電源を刺せば起動します。

普通の、すなわちDHCPに対応している環境であればIPも自動で割り当てられます。

え?、Wi-Fiを使ってるんだけど?、どうぞ液晶かLANケーブルを持って来て下さい。

DHCPでIPが割り当てられているはずなので、それを確認します。

ラズパイに割り当てられた(であろう)IPアドレスを取得するには以下の様な方法があります。

  • ルータの管理画面からDHCPの払い出し状況を確認する
  • ターミナル(コマンドプロンプト)から「arp -a」を実行する
  • ブロードキャスト(192.168.1.255など)にPingを放ってみる……など

Raspberry PiのベンダID(Macアドレスの上6個の英数字)は「B8:27:EB」です。

もう一つの方法として、BonjourがインストールされたPCであれば「raspberrypi.local」でもアクセス出来ます。

手に入れたIPを元にPuttyなどのSSHクライアントを使って接続してみます。

Raspbianの場合はユーザ:pi、パスワード:raspberryがデフォルト設定です。

最低限やっておきたい設定

サーバ目的での利用を前提とした「これはやっておいた方が良いでしょ」リストです。

「サーバ目的での」なので他の目的で使うのであれば、その目的に合わせて設定して下さい

ローカルIPを固定しておく

毎回毎回「よっしゃー!!接続するぞー!!arp -a!!(ッターン」なんて事やってたらダサいのでローカルIPを固定しておきましょう。

慣れたユーザであれば「/etc/network/interfaces」とかを開こうとしますが、残念ながら違います。

Raspbian(Jessie)でローカルIPを固定するには「/etc/dhcpcd.conf」に以下のように追記します。

interface eth0
# IPアドレス
static ip_address=192.168.x.x
# デフォルトゲートウェイ
static routers=192.168.x.x
# DNS
static domain_name_servers=192.168.x.x

これで保存して再起動すればローカルIPアドレスが固定出来ます。

必要であればWi-Fiなどの設定を行っておきましょう(今回は使わないので端折ります)

ちなみにですが、現在のIPアドレスは「ifconfig」で確認できますよ。

ソフトウェアアップデート

最初にaptでソフトウェアのアップデートを行っておきましょう。

コピペ用:sudo apt-get update && sudo apt-get -y dist-upgrade && sudo apt-get -y autoremove && sudo apt-get autoclean
rpi-updateによる更新はぶっちゃけ良く分からない……

自動更新

手で更新するのメンドクチャイ(し、自分が更新するまで脆弱性を放置する事になる)のでセキュリティアップデートは自動で更新させる

まずは「unattended-upgrades」をインストールする(ナマエナガイヨ

sudo apt-get install -y unattended-upgrades

次に「/etc/apt/apt.conf.d/20auto-upgrades」を作成して以下の2行を書き込む

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

最後に、「/etc/apt/apt.conf.d/50unattended-upgrades」を開くと「"o=Raspbian,a=stable";」と書かれてある行がコメントアウトされているのでアンコメントする。

(近くに「"o=Raspbian,n=jessie";」があるので間違えないように注意)

raspi-config

「sudo raspi-config」コマンドでラズパイの設定が行えます、必要に合わせて設定を行って下さい。

私がよくやる設定は以下の通り。

  • Expand Filesystem:SDカードを一杯まで使う
  • Localisation Options->Change Locale:ここは日本なので「ja_JP.UTF-8」にしている。
    その次の画面で選べと言われるのはデフォルトのロケール、これも「ja_JP.UTF-8」でOK
  • Localisation Options->Change Timezone:ここは日本、なので「Asia」を選んでから「Tokyo」
  • Advanced Options->Memory Split:GPUメモリの割り当て、ヘッドレスで運用しているのでアプリケーションが使える分を最大にすべく16にしている。(もちろん用途に合わせて設定してね)

必要ならやれば良いんじゃね的設定は以下の通り

  • Advanced Options->Hostname:適当にホスト名を付ける、ReimuとかRemiliaとかそんなホスト名を付けているのはヒミツダヨ☆
  • Change User Password:パスワードを変える、サーバにするなら変えること。
  • Localisation Options->Change Keyboard Layout:キーボードの種類、繋いでいるなら設定しないとパイプ(|)とかで困るかと

パスワードの変更、パス無しsudoの禁止

記事の都合でここに書きますが、この操作は最後にやった方がセットアップが楽かも?

パスワードの変更は先のraspi-configからでも出来ます。(「sudo passwd」でも可)

rootはデフォルトで無効にされているのでパスワードを設定する必要はありません。

また、パスワードなしでのsudoを禁止しておきましょう。

「/etc/sudoers.d/010_pi-nopasswd」を開き、「pi ALL=(ALL) NOPASSWD: ALL」をコメントアウト

もしくは「sudo rm /etc/sudoers.d/010_pi-nopasswd」でファイルそのものを消してしまいましょう。

こちらは古い方法、たぶん使えない:「sudo visudo」でファイルが開くので、ファイルの末尾の方にある「pi ALL=(ALL) NOPASSWD: ALL」の記載を消す。

ユーザ名の変更

ちょっと手法が複雑になるので別記事にあります、サーバ目的だとパスワードと同じくらい必須だと思います。

こちらをご覧ください:[Raspberry Pi]ユーザ名変更の個人的に「正しい」と思うやり方

必要であればやる設定

やらなくても問題はありませんが、場合によっては使い易さ向上が見込めると思います。

aptのミラーを変える

デフォルトだと「mirrordirector.raspbian.org」からaptのパッケージを取得するようになっています。

サブドメインの文字通り、適切なミラーサーバにリダイレクトしてくれるみたいなのですが、ここが日本なのは分かっていますし最初から日本ミラーよりダウンロードするように設定したい人も居るでしょう。(しなくても日本のサーバにリダイレクトされるはずなので問題はない)

その場合、「/etc/apt/sources.list」を適当なエディタで開きます。

きっとデフォルト設定があるでしょうから、それをお好みのRaspbianのミラーサーバへと書き換えます。

deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi
# 例:
#deb http://ftp.jaist.ac.jp/raspbian/ jessie main contrib non-free rpi

現時点(2017/01/29)での日本のミラーサーバは以下の3ヵ所ですね。

  • http://ftp.jaist.ac.jp/raspbian/
  • http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian/
  • http://ftp.yz.yamagata-u.ac.jp/pub/linux/raspbian/raspbian/

自分のお住まいの地域(と言うより利用しているネットワーク)から一番距離の近い(応答速度の早い)サーバを選べば良いでしょう。

応答速度の測定はpingとかcurlで出来るはず、curlなら以下の通り。

curl -sL ${url} -o /dev/null -w "%{time_total}ms"

ミラーサーバを設定し終わったら以下のコマンドで設定の反映

sudo apt-get update

NTPサーバの変更

デフォルトのNTPサーバはPingが悪そう(勝手なイメージ)なので、ここを恐らくPing最短であろうと思われるプロバイダのサーバに変える。

「/etc/ntp.conf」を開いて、serverの行を全てコメントアウト

#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

代わりにプロバイダのサーバでも指定すればOK

server ntp.jst.mfeed.ad.jp iburst

serverではなくpoolで設定する事も可能です。(違いを説明するのが難しいので自力でググって理解してね……)

後は「sudo service ntp restart」で再起動、確認は「ntpq -p」

ハードウェア乱数を使用する

Raspberry Piにはハードウェア乱数生成器が載っている。

前まではこれを利用するためにはカーネルモジュールのロードが必要だったが、今は不要になった

つまりaptでrng-toolsをインストールするだけで使える。

sudo apt-get install rng-tools

これを使うと/dev/randomのエントロピープールが大幅に増え、それらを使う乱数の生産が早くなる

swapを調整する

SDカードだと寿命や容量が気になってswapを無効にしたい事もあるでしょう。

逆に、HDD稼働になっている場合にはswapを利用して足りないメモリに誤魔化しの底上げをしたい事もあるでしょう。

RasPiのswapはdphys-swapfileが司っているみたいなのでこれを弄れば調整が可能です。

swapを無効にするにはdphys-swapfileを停止する

sudo update-rc.d dphys-swapfile remove

なお、停止したdphys-swapfileを元に戻したい時は以下の通り

sudo update-rc.d dphys-swapfile defaults

swapのサイズを変更したい時はまず最初にdphys-swapfileを停止させる

sudo systemctl stop dphys-swapfile

次に「/etc/dphys-swapfile」を開き、CONF_SWAPSIZEを変更する。(単位はMB、デフォルトは100)

変更出来たらdphys-swapfileを再起動させる

sudo systemctl start dphys-swapfile

なお、指定したサイズのswapファイルを予め生産するため、swapがデカいと少々時間が掛かる。

必要に合わせて

その他場合によっては設定が必要な物

Javaを使いたい時

Ubuntuなどを使っていると何気にOpenJDKをインストールしてしまうが、RaspbianではOracleJDKが使える。(もちろんaptで)

sudo apt-get install oracle-java8-jdk

というより、RaspbianでOpenJDKをインストールするとZeroVMというものになる、なんじゃこれ、妙に重い

OracleJDK(HotSpotVM)の方が動作が遥かに軽い(体感で倍くらい違った)のでJavaを使うのであればOracleJDKを推奨する。

USB HDDで起動したい

こちらは別記事でお取り扱い中

こちらをご覧ください:Raspberry PiをUSB(HDD)で起動させる

終わりに

以上が私のやっているPi設定、色々と多いが別に全てを行わなければならないという訳ではない

必要に合わせて参考にして欲しい。

 - パソコン