前回、初期設定まで行ないましたので、今回は最適化を行ないます。

◆不要パッケージを削除

何をするにもディスク容量が逼迫しているので、ディスク容量をまず空けようと思います。
ただし方針としては、最小構成を目指すつもりはありません。
GUI 使わない方が、そりゃ最小になりますが、GUI 使わないかは人によるでしょうし。
なので X window 関連をバッサリ削除、というような事は(今は)しません。という意味です。

デフォルトの機能を削る事なく、機能面を維持した上での最小の構成を目指します。
(GUIが立ち上がる、音がなる、ネットワークに繋がる等)
当たり障りがあまりないであろうパッケージのみを削除します。

まずは、プリインストールの以下を削除します。(後ろ髪引かれる思いですが、ここは心を鬼にして)
もちろん、使用予定があるものは置いておいていいと思います。
- Wolfram Alpah
- Scratch
- Python Games
- Pi Store
- Sonic-pi
- Minecraft
- IDLE, IDEL 3
- Webブラウザ(NetSurf, Epiphany, Dillo)のどれか2つ
→ Webブラウザ 3つもいらんので、1つ残して、それ以外は削除しようと思います。
    NetSurf を残そうと思いましたが、日本語入力できなかったので、Epiphany の方を残すことにします。
- Debian リファレンス

$ sudo apt-get autoremove -y wolfram-engine
$ sudo apt-get autoremove -y scratch
$ sudo apt-get autoremove -y python-pygame
$ sudo apt-get autoremove -y pistore
$ sudo apt-get autoremove -y sonic-pi
$ sudo apt-get autoremove -y python-minecraftpi
$ sudo apt-get autoremove -y idle idle3
$ sudo apt-get autoremove -y netsurf-common dillo
$ sudo apt-get autoremove -y debian-reference-common
$ sudo apt-get autoremove -y libraspberrypi-doc
これで 1GB くらい空きました。

Python Games 関連のはこれだけだと残ってるのもあるので、手動削除しておきます。
$ rm -rf /home/pi/python_games/
$ sudo rmdir /usr/local/games/
$ sudo rmdir /usr/games/

後、個人的に要らんかな、と思うのを削除します。
- man
→ 使い方が分からん場合は、-h か --help で大概ヘルプが表示される。
    それでも分からん場合は、ググるので、man は自分はあまり見ない。
- git
→ Raspberry Pi 上でのコンパイルは軽いのはするかもしれないが、ガッツリはしないと思う。
     その場合はクロスコンパイルするので。
- galculator
→ そもそもWindowsでもGUIの電卓は使わない。
    そもそも電卓(電子卓上計算機)の親玉であるPC(電子計算機)で、なんで電卓のエミュレートしてんのかと悲しくなる。
$ sudo apt-get autoremove -y man manpages
$ sudo apt-get autoremove -y git git-man
$ sudo apt-get autoremove -y galculator

◆アップデート

ある程度、4GBのmicroSDカードにも容量に余裕が出来たので、パッケージとファームウェアをアップデートしときます。
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo rpi-update

◆不要デーモンを無効化する
まずはデーモン管理用に chkconfig パッケージをインストールします。
(自分が慣れてるのがこのやり方なだけですが)
$ sudo apt-get install chkconfig

下記で無効化。
$ sudo chkconfig motd off
$ sudo chkconfig triggerhappy off
$ sudo chkconfig alsa-utils off
$ sudo chkconfig lightdm off
$ sudo chkconfig plymouth off

◆RAMディスクを使用する
一時ファイルとか、ログとかは、(自分は)別に蓄積しなくていいので電源落せばクリーンになるように、RAMディスクを使用するようにします。
(厳密にはRAMディスクではなく tmpfs です。)

# 最近知りましたが tmpfs は結構よく出来ているようです。
# tmpfs ではサイズ指定はしていますが、別にメモリ上にそのサイズが確保されるわけではなく、
# 上限サイズとなるだけのようです。(使用部分だけメモリを消費します)
# tmpfs として使用していない部分は、普通のメモリとして使えます。
# またメモリが足りなくなった場合には、tmpfs のファイルはスワップアウトする事ができます。

/etc/fstab に以下を追加(サイズはユースケースに応じて任意に変更してください)
tmpfs           /tmp            tmpfs   defaults,size=64m 0       0
tmpfs           /var/log        tmpfs   defaults,size=32m 0       0

# このままだと、マウントされてる現在の /tmp, /var/log 下のファイルがゴミとして残ってしまいそう。。。
# 一応 rm -rf /tmp/*, rm -rf /var/log/* しといた方がいいかも。)

この状態でリブートすると起動時に、「ディレクトリがない」とか、「ファイルがない」と怒られましたので、起動時に空ディレクトリや空ファイルを作成するようにしときます。

/etc/init.d/init-ramdisk を新たに作成しましょう。
#!/bin/sh
### BEGIN INIT INFO
# Provides:       init-ramdisk
# Required-Start: $local_fs
# Required-Stop:  $local_fs
# Default-Start:  2 3 4 5
# Default-Stop:   0 1 6
### END INIT INFO

chmod 775 /var/log
mkdir -p /var/log/ConsoleKit/
mkdir -p /var/log/fsck/
mkdir -p /var/log/apt/
mkdir -p /var/log/ntpstats/
mkdir -p /var/log/samba/
chown root.ntp /var/log/ntpstats/
chown root.adm /var/log/samba/
touch /var/log/lastlog
touch /var/log/wtmp
touch /var/log/btmp
chown root.utmp /var/log/lastlog
chown root.utmp /var/log/wtmp
chown root.utmp /var/log/btmp

上記をコピペするなり、curl コマンドで取るなりします。
$ curl -O http://sstea.blog.jp/raspi/script/init-ramdisk
$ sudo mv init-ramdisk /etc/init.d/init-ramdisk
最後に、起動時に init-ramdisk が実行されるようにします。
$ sudo chmod 755 /etc/init.d/init-ramdisk
$ sudo chkconfig --add init-ramdisk

◆SWAPを無効にする
Raspberry Pi Model B+ はメモリ量 512MB あるんで、SWAPは要らないかな、って。
(一部をRAMディスクとして使用しますし、GPUともシェアするので、実質使えるのはもう少し少ないのですが)
$ sudo apt-get autoremove -y dphys-swapfile
# スワップファイルを使わなくても ZRAM を有効にすれば、ある程度メモリを増やしたのと同程度の効果があります。

次回はもう少し突っ込んだ最適化にトライしてみようと思います。