Raspberry Pi をサーバーとして利用する際に、まず最初にすること。
(あくまでも管理人用の基本設定なので、これにこだわる必要はまったくない)

なお、このページの内容の一部は、このサイト内の Raspberry Pi/各種設定 以下の内容をincludeしているので、内容が重複(というか同一)となっている。一度に全部読めるように同一ページにまとめた、ということになる。

補足:下記のコマンド実行例で、su コマンドを実行すると実際にはパスワード入力要求のプロンプトが表示されるが、ここでは省略している(suを使う前にsudoを使ってrootのパスワードを設定する)。rootのパスワードを設定せず、sudoで通す方はそれはそれでよい。

目次

前提、方針

  • Raspberry Pi Model B
  • 電源の確保(5V1A程度のUSB充電器など、USB-A -> micro USBケーブル)
  • OSは Raspbian GNU/Linux 7 (wheezy) *1
  • 固定IPアドレスでネットワーク接続する
  • SDカードへの書き込みをなるべく抑止

ではさっそくやってみる。

ファイルの入手

OS(Raspbian)のディスクイメージ
http://www.raspberrypi.org/downloads/

SDカードへの書き込みツール(Windows用)
http://sourceforge.jp/projects/sfnet_win32diskimager/release/

SDカードへのOS書き込み

いくつか方法があるが、今回は Windows のツールを使用した。 先にダウンロードしたディスクイメージを、同じくダウンロードしたツールを使ってSDカードへ書き込む。 ダウンロードしたディスクイメージはzip形式なので、あらかじめ解凍すること。

使い方は簡単なので省略する。

(稼働中のLinux端末があると簡単なのだが。ブートイメージをddコマンドでSDカードのデバイスに書き込むだけなので。)

OSの初回起動

初回起動時だけはHDMI端子付きモニター(またはVideo-in端子の付いたテレビ)、およびUSBキーボードが必須となる。
管理人はHDMI端子付きモニターを持ち合わせておらず、変換コネクターで
 Raspberry Pi -> HDMIケーブル -> 変換コネクタ -> DVIモニター
として使っている。

SDカード、LANケーブル、HDMIケーブル(またはビデオケーブル)、キーボードを Raspberry Pi 本体にセットし、最後に電源ケーブルを差し込むとブートが開始される。
(Raspberry Piには電源スイッチは存在せず、電源専用のMicroUSBポートへケーブルを差し込むといきなり起動するので注意)

起動シーケンスの最後に、自動的に raspi-config コマンドの実行画面が表示される。ひとまず、下記の最低限を設定し再起動する。

メニュー項目概要
Expand FilesystemSDカードの容量いっぱいまで、ファイルシステムを拡張する。
これをやらないとSDカードの容量いっぱいまで書き込むことができない。
Change User Passwordユーザー pi のパスワードを変更(ユーザー pi は最初から用意されている)
Internationalisation Options
-> Change Timezone
Asia->Tokyoの順に選択。
Advanced Options
-> SSH
SSHを起動する

ここまでやったら、続きは ssh 経由で行うので、ひとまず保存・再起動し、ユーザー pi でログインできるか確認する。
ログインできたらとりあえずIPアドレスを確認し、メモしておく(sshでログインする際に使う)。

pi@raspberrypi ~ $ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether b8:27:eb:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.126/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever

ネットワーク設定のデフォルトはDHCPでアドレス取得なので、管理人宅ではとりあえず上記の値になった。これは後で固定IPに変更する。MACアドレスは一部伏字となっている。

以降は ssh でログインし作業続行する。
ネットワーク廻りの設定さえ間違わなければ、raspi-config も含めほぼすべて ssh 経由で作業できる。

ext4ファイルシステムのジャーナルを廃止

(2016-03-30追加) SDカードの寿命を伸ばしたい関連

Raspbianのシステムが格納されているファイルシステムは ext4 である。
が、ふと、ext4のジャーナルって何か書き込みが発生するたびに必ず書き込みされるじゃないですか!ということに気づいた。

デフォルトではメタデータ(ファイル本体を除くファイルの管理情報)のみがジャーナルに書き込まれるようだが、SDカードのジャーナルの領域が真っ先にダメになる悪寒がしたため、ジャーナルを廃止することにした。

早速下記コマンド。

$ su
# tune2fs -O ^has_journal /dev/mmcblk0p2
tune2fs 1.42.5 (29-Jul-2012)
#

てな具合です。
うまくいったかどうか確認するには、下記。

# tune2fs -l /dev/mmcblk0p2 | grep features
Filesystem features:      ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file uninit_bg dir_nlink extra_isize

とやって、 has_journalが含まれていなければOK。

念のため、OSを再起動してみたほうがいいかと。

(補足:tune2fsのバージョンによっては上記ではNGの場合があるようです)。

rootのパスワード設定

ルート権限が必要な場合、sudo コマンドでやってもよいのだが、時にはスーパーユーザーになりたい気分の時もあるので、root のパスワードを設定しておく。

pi@raspberrypi ~ $ sudo passwd root
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
pi@raspberrypi ~ $

パスワードの文字列は、まあお好きにどうぞ。

rootでのリモートログイン禁止(ssh の設定変更)

rootにパスワードを設定した結果、rootユーザーでsshにてログインできてしまうので、できないようにする。

$ su
# cd /etc/ssh
# cp -p sshd_config sshd_config.orig           # backup
# vi sshd_config

オリジナルとの変更点は下記。

# diff sshd_config.orig sshd_config
27c27
< PermitRootLogin yes
---
> PermitRootLogin no

固定IPアドレス

IPアドレスがDHCPでは使いにくいので、固定IPアドレスに変更する。
主な変更対象ファイル /etc/network/interfaces

$ su
Password:
# cd /etc/network
# cp -p interfaces interfaces.orig           # backup
# vi interfaces

ファイルの内容(全文)

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.1.xxx
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

address には既存の値と衝突しないIPアドレスを記述する。
最後のほうの allow-hotplug 以降は元から入っているもので、とりあえず今は触らないことにする。

ここまで来たら、インターフェースの再立ち上げをしてみる。
めんどいので、ssh で接続したまま、下記を実行する。

# sudo ifdown eth0; ifup eth0
(このあと音信不通になるが気にしない)

ifdown, ifup は1行で書くのがコツ。理由は(ry)
IPアドレスが変わるので ssh はいったん切れてしまう。新しいIPアドレスで再度 ssh で接続してみて、うまくつながれば成功。
つながらなかった場合は、残念だがもう一度モニター、キーボードを Raspberry Pi 本体に接続し、設定を再確認願う。

chkconfig : システムサービスの切替ツールのインストール

/etc/rc*.d/のもろもろをオンオフするためのツールとして、chkconfig パッケージをインストールしておく。
これは、単に管理人が使い慣れているから、である。

$ su
# apt-get install chkconfig

swapファイルの廃止

#include(): Limit exceeded: Raspberry Pi/各種設定/swapファイルの廃止

log,tmpのオンメモリ(tmpfs)化

#include(): Limit exceeded: Raspberry Pi/各種設定/log,tmpのオンメモリ(tmpfs)化

manコマンドのキャッシュ廃止

#include(): Limit exceeded: Raspberry Pi/各種設定/manコマンドのキャッシュ廃止

.bashrcの設定変更(自動保存ファイル無効化など)

#include(): Limit exceeded: Raspberry Pi/各種設定/.bashrcの設定変更

時刻合わせ

#include(): Limit exceeded: Raspberry Pi/各種設定/時刻合わせ

ログローテーション

/var/lib/logrotate/status
ファイル出力先を/var/tmpへ移動する。

$ cd /etc/cron.daily
$ diff logrotate.orig logrotate
4c4
< /usr/sbin/logrotate /etc/logrotate.conf
---
> /usr/sbin/logrotate --state /var/tmp/logrotate-state /etc/logrotate.conf

以上で基本設定はおしまい。
最後にリブートして設定がうまく反映されているか確認するとよいだろう。
リブートは下記でどうぞ。

$ sudo reboot

また、システムのアップデートは適宜実施する。

# apt-get update
# apt-get upgrade

*1 Raspbian 8 jessie が使えるようになっていますが、このサイトでは2016-03-03現在、未対応

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-04-02 (月) 15:44:24 (109d)