Raspberry Piで構築した環境はddを使ってイメージを丸ごとバックアップしておくと すぐに環境を戻すことができるので何かと便利です。
ただ、最近のmicroSDカードは容量が大きいので、バックアップ&リストアに時間がります。
そこで、Raspian環境で不必要なパッケージを最大限削って容量を減らして、 パーティションサイズを小さくした状態でddバックアップする手順を説明します。
インストール手順はこの辺りを参照
今回はX環境を全部消します。
あらかじめ、raspi-configコマンドを実行後、"boot option"→"Console"を選択して、Xを起動しないように設定しておきます。
次に、以下のコマンドを使ってX環境を全部消します。
$ sudo apt-get install deborphan
$ sudo apt-get autoremove --purge "libx11-.*" "lxde-.*" raspberrypi-artwork xkb-data omxplayer penguinspuzzle sgml-base xml-core "alsa-.*" "cifs-.*" "samba-.*" "fonts-.*" "desktop-*" "gnome-.*"
$ sudo apt-get autoremove --purge $(deborphan)
$ sudo apt-get autoremove --purge
$ sudo apt-get autoclean
参考URL
$ sudo apt-get update && sudo apt-get dist-upgrade
ユーザとかパッケージなど、バックアップしておきたい必要な環境をこの地点でセットアップしておきます。
例
$ sudo passwd pi
$ sudo apt-get install lv vim zsh screen git-core
$ sudo apt-get install ruby ruby-dev
$ sudo gem install mqtt
$ sudo apt-get install wiringpi
.
.
.
.
セットアップが終わったら、シャットダウンしてmicroSDを抜きます。
デスクトップPCのLinux環境にmicroSDを接続して、gpartedを使って/dev/sdb2を小さくします。
$ sudo apt-get install gparted
$ sudo gparted
/dev/sdb2の空き容量を0にしてしまうとOSの動作に不具合が出るので、 数百MB程度は空き容量を残しておきましょう。
メモ:
- デバイスファイル(ここの説明では/dev/sdb2)は環境によって異なります。
- /dev/sdbはストレージ全体を指し、/dev/sdb{数字} はパーティションを指します
まずfdiskのpコマンドを使ってパーティションの情報を表示します。
$ sudo fdisk /dev/sdb
Command (m for help): p ← コマンドpで情報表示
Disk /dev/sdb: 16.0 GB, 16021192704 bytes
64 heads, 32 sectors/track, 15279 cylinders, total 31291392 sectors
Units = sectors of 1 * 512 = 512 bytes ← ここに1セクタが何バイトかが表示されている。
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0004441a
Device Boot Start End Blocks Id System
/dev/sdb1 8192 131071 61440 c W95 FAT32 (LBA)
/dev/sdb2 131072 4243455 2056192 83 Linux
Command (m for help): q ← コマンドqでfdisk終了
fdiskはどのパーティションがどの位置にあるかをStart, Endの項目に表示します。 Start, Endで表示されている数字の単位はセクターです。 1セクターが何バイトか?というのは、fdiskのpコマンドのはじめに表示されているので、 ここをよく見ましょう。例では1セクタ=512byteと表示されています。
ここでは、/dev/sdb2の終わりが4243455と表示されているので、 (4243455+1)個のセクターをバックアップすればOK。
$ sudo dd if=/dev/sdb of=backup.dd bs=512 count=4243456