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

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

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

目次

前提、方針

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

ファイルの入手

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
32c32
< #PermitRootLogin prohibit-password
---
> PermitRootLogin no

デフォルトのprohibit-passwordは、パスワードでのログインは禁止だが公開鍵認証によるログインは可能、の意味。

[ 各種設定 ]

固定IPアドレス

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

$ su
Password:
# cd /etc
# cp -p dhcpcd.conf dhcpcd.conf.orig
vi dhcpcd.conf

変更点(上記ファイルのどこかに追記すればよい)。無線LANと有線LANの両方のインターフェースに対してIPv4固定アドレスを設定する場合の例。IPv6アドレスはほっとくと勝手にアサインしてくれるのでひとまず放置。

$ diff dhcpcd.conf.orig dhcpcd.conf
49a50,59
> interface wlan0
> static ip_address=192.168.10.80/24
> static routers=192.168.10.1
> staticdomain_name_servers=192.168.10.1
> 
> interface eth0
> static ip_address=192.168.10.81/24
> static routers=192.168.10.1
> staticdomain_name_servers=192.168.10.1
> 

最後にOSを再起動して確認する。(下記は一部伏字あり)

$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.80/24 brd 192.168.10.255 scope global noprefixroute wlan0
       valid_lft forever preferred_lft forever
    inet6 xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 2591918sec preferred_lft 604718sec
    inet6 xxxx::xxxx:xxxx:xxxx/64 scope link 
       valid_lft forever preferred_lft forever

(Raspbian busterより前、以前は/etc/network/interfacesを変えていたがやめた)

[ 各種設定 ]

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
Raspberry Piへ戻る

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

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2022-02-15 (火) 10:06:44