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カードが以下のものです。
こんな感じ
薄い!
8枚分のmicroSDカードのラベリングができます
後から消せるようにフリクションのペンで書き込んでいます。
microSDカードはしっかりとホールドされて落ちることもありません。コンパクトで収納にも持ち運びにも便利なのがよいですね。
イメージファイルを公開するときにはライセンスに注意
イメージファイルを公開するときに気をつけないといけないのがライセンスです(特にビジネスの場合)。個人の場合でも、特に以下を気をつけないといけません。
- 使用しているソフトのライセンスによっては自分で開発したソースコードを公開する必要がある
- 再配布を禁止しているソフトがある場合は、イメージファイルの公開をしてはいけない
- ライセンスのない野良ソフトを使う場合は、公開して良いか作者に許可が必要(最悪ソフトの作者から訴えられる可能性がある)
他にも細かいことは色々あるのですが、ここでは省略します(私もそこまで詳しくないので)。まず、ソースコード公開したくない場合は、基本的にはGPLライセンスのソフトが一切使えなくなるので、かなり難しいと思います。特に問題がなければ、自分の開発したソフトをGitHubなりで公開するのがよいです。
また、再配布禁止しているようなソフトがある場合もイメージファイルの公開はもちろんできません。Raspbian自体は結構色々なところにミラーサイトがあるし、自分の認識は再配布OKなのですがツイートしてみたら色々情報いただけました。
@karaage0703 Raspbianの大部分はDebianソースの再コンパイルなんで、https://t.co/RTe22QjfzL の通りかと思います。/usr/share/common/licenses の確認でいいと思います。
— よんた (@keita44_f4) 2017年3月29日
@karaage0703 再配布おけるソースコード開示については、全ライセンスを確認しきれてないですが、GPLv3すら6-d項で他者サイトでのソース開示でOKにしてます。スターターキットの販売社もウェブサイトの紹介しかしてないですし、ミラーサイトで十分だと思います。
— よんた (@keita44_f4) 2017年3月29日
@karaage0703 唯一気にしないといけないのはOracle Java・Wolfram・minecraft piあたりです。ただ、非商用でしたら前者2つは問題なく再配布できると思います。minecraft piだけは再配布の記述がなかったので怪しいと記憶しております。
— よんた (@keita44_f4) 2017年3月29日
@henrich @karaage0703 ご指摘ありがとうございます。誤情報を流して申し訳ありません。Raspbianは注意書きをしてJava SE同梱でRaspbianを配布していますが、個人だとアンインストールしてから再配布すべきですね。
— よんた (@keita44_f4) 2017年3月29日
公式のフォーラム等で調べてみましたが、Debianのライセンスに準ずるから再配布OKという記載もあれば、JavaやWolfram、minecraft piは少なくとも削除しないとダメという情報もありました。
ライセンスは色々調べてみましたが、中々複雑ですね(過去数々の論争があるようです)。Raspbianのライセンスに関して、もし間違っていることや、他に有用な情報ありましたら教えていただけると助かります。
ライセンス気になるなら、イメージを公開する代わりにセットアップのスクリプトを公開するという方法もありますが、手間や確実性を考えると、やはりイメージ丸ごと公開したいですよねぇ。
まとめ
Raspberry Piでオリジナルのイメージを作成する際の不要ファイル削除の方法やSDカードの保管方法、ライセンスの注意に関して書いてみました。イメージをバックアップしておくと結構後で助かるケースは多いです。イメージ公開は、サーバーも必要ですし、ライセンスチェックの手間もあるので大変ですが、色々なイメージが公開されていると楽しいので多くの方がRaspberry Piのオリジナルのイメージを公開してくれると嬉しいなとか個人的には思います。
参考リンク
不要ファイル削除関係
debianパッケージをサイズ順に並べる方法 | Linux | マイノリティでいこう
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