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/
いくつか方法があるが、今回は Windows のツールを使用した。 先にダウンロードしたディスクイメージを、同じくダウンロードしたツールを使ってSDカードへ書き込む。 ダウンロードしたディスクイメージはzip形式なので、あらかじめ解凍すること。
使い方は簡単なので省略する。
(稼働中のLinux端末があると簡単なのだが。ブートイメージをddコマンドでSDカードのデバイスに書き込むだけなので。)
初回起動時だけはHDMI端子付きモニター(またはVideo-in端子の付いたテレビ)、およびUSBキーボードが必須となる。
管理人はHDMI端子付きモニターを持ち合わせておらず、変換コネクターで
Raspberry Pi -> HDMIケーブル -> 変換コネクタ -> DVIモニター
として使っている。
SDカード、LANケーブル、HDMIケーブル(またはビデオケーブル)、キーボードを Raspberry Pi 本体にセットし、最後に電源ケーブルを差し込むとブートが開始される。
(Raspberry Piには電源スイッチは存在せず、電源専用のMicroUSBポートへケーブルを差し込むといきなり起動するので注意)
起動シーケンスの最後に、自動的に raspi-config コマンドの実行画面が表示される。ひとまず、下記の最低限を設定し再起動する。
メニュー項目 | 概要 |
Expand Filesystem | SDカードの容量いっぱいまで、ファイルシステムを拡張する。 これをやらないと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 経由で作業できる。
(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の場合があるようです)。
ルート権限が必要な場合、sudo コマンドでやってもよいのだが、時にはスーパーユーザーになりたい気分の時もあるので、root のパスワードを設定しておく。
pi@raspberrypi ~ $ sudo passwd root Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully pi@raspberrypi ~ $
パスワードの文字列は、まあお好きにどうぞ。
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アドレスが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を変えていたがやめた)
/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