Raspberry Piでオリジナルのイメージを圧縮して保存のススメ

f:id:karaage:20170407135528j:plain:w640

Raspberry Piの環境を丸ごとイメージファイルとして保存したい

 Raspberry Piで色々やっていると、よくあるのが以下のような問題です。

  • 昔環境構築したSDカードがどこかいってしまった
  • 何らかの原因(物理的orソフト的破壊)でSDカードが読めなくなってしまった

 私は、セットアップ方法をスクリプトにしてGitHubに保存したり、過去実施した内容はブログに極力手順を残しておくようにします。

 ただ、この方法も色々な理由(自分のメモの不備、使用するソフトウェアのバージョン変更、公開停止等)で、同じ環境を構築できず困ってしまうこともあります。一番確実なのは、SDカードをイメージファイルとして丸ごとバックアップしてしまう方法です。具体的な方法は以下を参照下さい。

 そのままイメージファイルを作成してもよいのですが、バックアップファイルを作成する前に、不要なファイルを削除しておくと容量の節約になります。

 この記事では、不要なファイルを削除して、Raspbianの容量を約半分までシェイプアップして保存する方法に関して説明します。

不要なファイルを削除して最適化

どんなファイルが容量を占めているか把握

 まずは現状を把握しましょう。df -hとコマンド実行すると現状のサイズがわかります。Raspbianの2017-03-02時点のイメージだとファイルサイズは以下の通り4.2G程度です。結構大きいですね。

ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/root         15G  4.2G  9.9G   30% /

 適当にファイルを消しても効率が悪いので、最初に、どんなファイルが割合を占めているのか調べてみましょう。以下のコマンド実行すると容量順にソフトを並べてくれます。

$ dpkg-query -W -f='${Installed-Size}\t${Package}\n'  |sort -n -r

 上位20個を並べると以下のようになります。

666925   wolfram-engine
171382  chromium-browser
168481  oracle-java8-jdk
147508  sonic-pi
106398  raspberrypi-kernel
94821   libreoffice-core
78686   libreoffice-common
47401   libpython3.4-dev
45673   scratch
44899   nuscratch
40558   gnome-user-guide
39706   libllvm3.9
33224   freepats
33054   libraspberrypi-doc
32888   pypy
29807   realvnc-vnc-server
27437   pixel-wallpaper
26535   libicu52
26095   libwebkitgtk-3.0-0
25557   vim-runtime

 ここらへんを中心に、自分がいらないソフトや、ネットで調べた消しても問題ないソフトを削除します。具体的には、以下のようなスクリプトを作成して実行しました。

#!/bin/bash

# delete package
sudo apt-get autoremove -y wolfram-engine
sudo apt-get autoremove -y sonic-pi
sudo apt-get autoremove -y libreoffice*
# 100MB-----------
sudo apt-get autoremove -y scratch nuscratch squeak-plugins-scratch
sudo apt-get autoremove -y nuscratch
sudo apt-get autoremove -y gnome-user-guide
sudo apt-get autoremove -y freepats
sudo apt-get autoremove -y libraspberrypi-doc
sudo apt-get autoremove -y pypy
sudo apt-get autoremove -y greenfoot
# 10MB-----------
sudo apt-get autoremove -y epiphany-browser*
sudo apt-get autoremove -y bluej
sudo apt-get autoremove -y netsurf*
sudo apt-get autoremove -y realvnc-vnc-*
sudo apt-get autoremove -y supercollider-server
sudo apt-get autoremove -y debian-reference*
sudo apt-get autoremove -y minecraft-pi
sudo apt-get autoremove -y claws-mail
sudo apt-get autoremove -y galculator
sudo apt-get autoremove -y geany*
sudo apt-get autoremove -y idle*
sudo apt-get autoremove -y lxterminal
sudo apt-get autoremove -y
sudo apt-get -y clean

 このスクリプト実行すると残り容量は以下になりました。半減とまではいきませんでしたが、大幅に容量削減できていますね。

ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/root         15G  2.5G   12G   18% /

 今回はそこまで徹底的に削除していませんでしたが、もっと突き詰めれば半減することも可能じゃないかなと思っています。

イメージファイル・SDカードの作成

 イメージファイルやSDカードを保存する方法に関しては、以下参照下さい。

 上記記事にも書いていますが、gpartedでパーティションのサイズを小さくしてから、コンパクトなサイズのイメージファイルを作成しましょう。そうしないと、せっかくファイル容量削減したのが無駄になってしまいます。

SDカードの保管方法

 作成したイメージファイルはファイル名で区別できますが、すぐ使えるようにSDカードでも保管しておくと便利ですね。ただ、microSDカードは小さいのでラベルが貼れないため、ちゃんと管理しないとすぐ何が何だかわからなくなってしまいます。管理しやすいmicroSDカードのケースはずっと良いものを探しているのですが、ポロって落ちてしまったり中身をメモするようなラベルがなかったりと中々良いものが見つかりませんでした。そんな中気に入っているSDカードが以下のものです。

f:id:karaage:20170407135528j:plain:w640
 こんな感じ

f:id:karaage:20170407135537j:plain:w640
 薄い!

f:id:karaage:20170407141339j:plain:w640
 8枚分のmicroSDカードのラベリングができます

 後から消せるようにフリクションのペンで書き込んでいます。

 microSDカードはしっかりとホールドされて落ちることもありません。コンパクトで収納にも持ち運びにも便利なのがよいですね。

イメージファイルを公開するときにはライセンスに注意

 イメージファイルを公開するときに気をつけないといけないのがライセンスです(特にビジネスの場合)。個人の場合でも、特に以下を気をつけないといけません。

  • 使用しているソフトのライセンスによっては自分で開発したソースコードを公開する必要がある
  • 再配布を禁止しているソフトがある場合は、イメージファイルの公開をしてはいけない
  • ライセンスのない野良ソフトを使う場合は、公開して良いか作者に許可が必要(最悪ソフトの作者から訴えられる可能性がある)

 他にも細かいことは色々あるのですが、ここでは省略します(私もそこまで詳しくないので)。まず、ソースコード公開したくない場合は、基本的にはGPLライセンスのソフトが一切使えなくなるので、かなり難しいと思います。特に問題がなければ、自分の開発したソフトをGitHubなりで公開するのがよいです。

 また、再配布禁止しているようなソフトがある場合もイメージファイルの公開はもちろんできません。Raspbian自体は結構色々なところにミラーサイトがあるし、自分の認識は再配布OKなのですがツイートしてみたら色々情報いただけました。

 公式のフォーラム等で調べてみましたが、Debianのライセンスに準ずるから再配布OKという記載もあれば、JavaやWolfram、minecraft piは少なくとも削除しないとダメという情報もありました。

 ライセンスは色々調べてみましたが、中々複雑ですね(過去数々の論争があるようです)。Raspbianのライセンスに関して、もし間違っていることや、他に有用な情報ありましたら教えていただけると助かります。

 ライセンス気になるなら、イメージを公開する代わりにセットアップのスクリプトを公開するという方法もありますが、手間や確実性を考えると、やはりイメージ丸ごと公開したいですよねぇ。

まとめ

 Raspberry Piでオリジナルのイメージを作成する際の不要ファイル削除の方法やSDカードの保管方法、ライセンスの注意に関して書いてみました。イメージをバックアップしておくと結構後で助かるケースは多いです。イメージ公開は、サーバーも必要ですし、ライセンスチェックの手間もあるので大変ですが、色々なイメージが公開されていると楽しいので多くの方がRaspberry Piのオリジナルのイメージを公開してくれると嬉しいなとか個人的には思います。

参考リンク

不要ファイル削除関係

debianパッケージをサイズ順に並べる方法 | Linux | マイノリティでいこう

Raspberry Pi 不要パッケージの削除 - Qiita

Raspberry PIの不要ファイル削除 - Qiita

sstea備忘録 : Raspberry Pi の最適化を試みる

http://todayrainy.hateblo.jp/entry/2015/05/06/113717

不要になったパッケージを削除してくれる、autoremove - UNIX的なアレ

Raspberry Pi の最適化:軽量化やSDカードの延命対策

ライセンス関係

Raspbian license - Raspberry Pi Forums

Question about redistribution of raspbian based system - Raspberry Pi Forums

関連記事