RaspberryPiのSD管理について

 Raspberry Pi(以下ラズパイと呼びます)結構色々な用途で使えますよね。

 値段もそこそこだし、その台数分買いたくなっちゃいます。

 が、そこは我が家の大蔵省。許してくれません。

 一時的にでも退避できるマシンは休止させておく必要性が出てきました。

 私の場合旧型のRaspberryPiModelB+があり遠方にRaspberryPi3ModelB+があります。

 遠方のはVPSとして扱っていてメディアもSSD化したれっきとしたサーバーになっています。

 というわけで手元のRaspberryPiModelB+を複数用途で利用しています。

 用途としてはOSMC(メディアサーバー)と外部VPNサーバーとして動かしています。まだこれからも色々と設定していきたいなと考えています。

 さて。本題に入ります。

 ラズパイは複数買う事は勿体ないけど使う用途は沢山あるという人には、SDカードを管理する方法で乗り切ってはいかがでしょうか。

 接続ケーブルはそのままで置いておいて、本体、SDだけ引っこ抜いて他のシステムに移動させ、SDを切り替えて使うのです。

 こうすることで貴重なラズパイを使いまわしていくのです。

 さらに有効活用させるためにSDも共用しましょう!

 SDのバックアップ/リストアで1枚を複数のシステムで利用するのです。

 バックアップの方法を以下に書きますね。

1.Win32DiskImagerの準備

 WindowsではWin32DiskImagerが便利です。

 ラズパイのSDの中身はFAT32パーティションとEXT4パーティションの二つに分かれて入っていて、FAT32部分が起動部分、EXT4部分がシステムでいう/に当たるのです。

 ラズパイのSDをWindowsに刺すとフォーマットを要求される時がありますが、実行してしまうとラズパイで認識できなくなります。注意しましょう。

 Win32DiskImagerをインストール、起動すると今接続されているSDカードを認識し「DEVICE」の所をセットします。

  あとはImageFileの欄にあるフォルダマークを押し、どこに保存するか、ファイル名を指定します。

 すると下段のReadが選択できると思います。上記に間違いがなければReadで実行してください。

 4GBで大体4分でバックアップできます。

 この場合は4GBのSDを入れれば4GB分バックアップしますのでデータサイズは大きなままです。

2.linuxの準備

 先ほどWin32DiskImagerで取ったデータを縮小させる事ができます。

 私はいつものVirtualBoxにubuntuを入れている環境です。

 やり方は以下の通り。

 まずは必要なソフトを

sudo apt-get install gparted

 でgpartedをインストールします。

 その後ループバックデバイスとしてWin32DiskImagerで取ったデータをマウントします。

sudo modprobe loop
sudo losetup -f

 こうすると/dev/loop[自動的に割り振られる番号]が帰ってきます。このループバックデバイスを使用します。今回私の場合は/dev/loop7でした。

sudo losetup /dev/loop7 raspbian_osmc.img

 これでループバックデバイスにセットされ

sudo partprobe /dev/loop7

 でシステムにパーティションを認識させ

sudo gparted /dev/loop7

 でgpartedが起動します。

 ここでext4のパーティションをできるだけ小さくします。

 リサイズには少々の余裕が無いとできませんので+150MBほど余裕を持たせて小さくします。

 うまく小さくできたらgpartedを終了しサイズが小さくなっているか確認します。

sudo losetup -d /dev/loop7

 でループバックデバイスから解除して

fdisk -l raspbian_osmc.img

 でイメージの中のパーティション構成を知る事ができ、最終セクタがわかります。

ディスク raspbian_osmc.img: 3.8 GiB, 4008706048 バイト, 7829504 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0x3c0432c3

デバイス 起動 開始位置 最後から セクタ サイズ Id タイプ
raspbian_osmc.img1 2048 499711 497664 243M c W95 FAT32 (LBA)
raspbian_osmc.img2 501760 2344959 1843200 900M 83 Linux

 私の場合は最終セクタが1843200になりました。

 そして不必要になったデータの最後の方をtruncateで削除します。

 truncate --size=$[(最終セクタ+1)*512] ファイル名とします。

 先ほどの情報から入れて行くと

truncate --size=$[(1843200+1)*512] raspbian_osmc.img

 でカットされたイメージファイルになります。

 なおraspianのように後程raspi-configが使える環境でないとSDの拡張はされないようです。OSMCは手動で領域の拡張をしなければなりませんでした。

 OSMCは4GBのイメージから実容量900MB位になりました。今ではSDも32GBで千円ちょっとで買える時代ですが詰める所は詰めてHDDに保存しておくのも手ではないでしょうか

 またこの方法を取れば「最初は32GBで作成したけどそこまで必要無かった」という時にも役立てられます。もっとも32GBギリギリまでデータを入れていたら無理ですけどね。

リストアについて。

 Win32DiskImagerを利用します。

 ImageFileの欄にバックアップしたファイルをセットします。

 間違えないようにラズパイのSDをつないで「Device」をセットします。

 本当に消しても問題ないようであれば「Write」で書き込みします。

 書き込み終わったら今度はLinuxを起動し今度はSDを認識させます。

sudo gparted

 でgpartedを起動し、デバイスをSDカードにします。

 バックアップした時に切り詰めた手順で今度は空き容量一杯ext4部分を拡張します。

 これでリストアが完了します。

 注意しなければならないのは本当に消しても問題ないSDなのか、書き込むイメージファイルは間違っていないか細心の注意を払って実行して下さい。

スポンサーリンク
広告
広告

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
広告