Date: 2016.05.08
Home / Raspberry Pi. / Raspberry Pi 3 CentOS初期設定とmicroSDカード書き込み抑制対策。
Raspberry Pi 3にインストールしたCentOS7の初期設定を実施します。

また、併せてmicroSDカードへの書き込み抑制対策を施します。
SDカードには書き込み回数制限がどうしても付き纏うので、できる限り抑制しておきたいと思います。


初期設定

パーティションサイズの拡張

イメージファイルをDD等で書き込んだ場合、容量の大きいmicroSDを使っていてもパーティションが作成された時のサイズ(2.0GB)に固定されてしまいます。
なのでまずは拡張を行います。
実施前。
# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       2.0G  683M  1.2G  38% /
devtmpfs        459M     0  459M   0% /dev
tmpfs           463M     0  463M   0% /dev/shm
tmpfs           463M  6.1M  457M   2% /run
tmpfs           463M     0  463M   0% /sys/fs/cgroup
/dev/mmcblk0p1  300M   65M  236M  22% /boot
tmpfs            93M     0   93M   0% /run/user/0

以下のコマンドを実行。
# touch /.rootfs-repartition
OS再起動実施。
# shutdown -r now

実施後。rootパーティションが2.0GBから29GBに拡張されました。
# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        29G  688M   27G   3% /
devtmpfs        459M     0  459M   0% /dev
tmpfs           463M     0  463M   0% /dev/shm
tmpfs           463M  6.1M  457M   2% /run
tmpfs           463M     0  463M   0% /sys/fs/cgroup
/dev/mmcblk0p1  300M   65M  236M  22% /boot
tmpfs            93M     0   93M   0% /run/user/0

システムロケール設定

初期ではシステムロケールの設定が一切入ってないので設定しておきます。
実施前。
# localectl
   System Locale: n/a

       VC Keymap: n/a
      X11 Layout: n/a

ロケール設定を日本語UTF-8に変更実施。
# localectl set-locale LANG=ja_JP.utf8
キーボード設定を日本語106に変更実施。
# localectl set-keymap jp106

実施後。
# localectl
   System Locale: LANG=ja_JP.utf8
       VC Keymap: jp106
      X11 Layout: jp
       X11 Model: jp106
     X11 Options: terminate:ctrl_alt_bksp

日時設定

タイムゾーンの変更実施。
# timedatectl set-timezone Asia/Tokyo
日時の変更実施。
# timedatectl set-time "YYYY-MM-DD hh:mm:ss"
変更の確認。
# timedatectl

ただし、RPiはRTC(Real Time Clock)をハードウェアに持っていない為、OSを再起動すると時刻がリセットされてしまいます。なのでNTPでの時刻同期を設定しておく必要があります。

書き込み抑制対策

スワップの無効化

スワップファイルの作成をしないようにしておきます。
実施前。有効なスワップ領域は「/proc/swaps」で確認できます。
# cat /proc/swaps
Filename                                Type            Size    Used    Priority
/dev/mmcblk0p2                          partition       524284  0       -1

スワップ領域を無効にします。
# swapoff -a

実施後。何も表示されなくなります。
# cat /proc/swaps
Filename                                Type            Size    Used    Priority

これだけだとOS再起動後に自動でまたマウントされてしまうので、併せて「/etc/fstab」からswapの記載があるエントリーを削除しておきます。

RAMディスクの使用

テンポラリファイル用ディレクトリの「/tmp」、「/var/tmp」、それに頻繁に書き換えのあるログディレクトリ「/var/log」をRAM(メモリ)にパーティションを作成してマウントするように変更します。
これで大幅にSDカード側への書き込みが減ります。

「/etc/fstab」に以下の内容を追記します。
tmpfs /tmp tmpfs defaults,size=32m,noatime,mode=1777 0 0
tmpfs /var/tmp tmpfs defaults,size=16m,noatime,mode=1777 0 0
tmpfs /var/log tmpfs defaults,size=32m,noatime,mode=0755 0 0

これでシステム起動時に3つのディレクトリがRAM上のパーティションとしてマウントされます。
ただ、メモリ上なのでシステム停止の度にデータは消えてしまいます。
テンポラリ用はいいとして、ログファイルは消えて困る場合は定期的や、システム停止前にバックアップする等の考慮が必要です。
また、プログラムによっては「/var/log」配下に更に個別のディレクトリを持っていてそれがないとエラーになる場合があったりするので、システム起動時に作成しておく必要があります。
対処としてはシステム起動時に読まれる「/etc/rc.d/rc.local」に実行したいコマンドを記述しておきます。
1つ1つ作成コマンドや所有者変更コマンドを記述してもいいのですがどれが必要かとか考えるのも面倒だったので、設定する前に別ディレクトリに「/var/log」配下をごそっとコピーしておいて、「/etc/rc.d/rc.local」にはそのコピーを「/var/log」に戻す処理にしました。
boot.logとmessagesは起動時に勝手に作られるし起動時のログが消えるので削除して外していますが。
どちらの方法を選んでも新規でパッケージをインストールした場合等には毎回「/var/log」配下に個別に作られてないかを確認しておいた方がいいです。

記述内容(/temp/logにコピーを保管しています。)
\cp -prf /temp/log/* /var/log/

「/etc/rc.d/rc.local」にはデフォルトでは実行権限がついていないという落とし穴があり、このままではシステム起動時に実行されませんので、実行権限を付与しておきます。
# chmod +x /etc/rc.d/rc.local

これでシステム起動の度に記述したコマンドが実行されます。
上記に書いた再起動の度に時刻がリセットされる件もchrony(NTPサーバ)を入れる程ではない場合は、「ntpdate」をインストールしてここに記述しておくといいと思います。

これで一通り初期の設定は終わりかなーと。他にできる事がないかは調べながら。

【関連記事】
Raspberry Pi 3を買ってみた。
Raspberry Pi 3 CentOS導入から組み立て。


Secret

TrackBackURL
→http://000dandelion000.blog.fc2.com/tb.php/76-ed6a2acc