7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

WindowsでRaspberry Piのイメージファイルを圧縮する

Last updated at Posted at 2021-02-26

背景

この記事では使用しているRaspberry Piのイメージファイルを圧縮する方法について説明をします。

Raspberry PiのイメージファイルをコピーするためにはWin32DiskImagerでマイクロSDのイメージファイルを作成し、それを別のマイクロSDに書き込めばよいのですが、簡単ではありません。
イメージファイルはマイクロSDの容量と同じファイルサイズになり、とてもサイズが大きくなります。加えて、マイクロSDはそれぞれ微妙にサイズが異なっているために同じ容量のマイクロSDだと書き込みできないときがあります。

効果

私がコピーや配布したRaspberry Piのイメージファイルは16GBのマイクロSDにRasbianのliteと、必要なアプリケーションを入れています。マイクロSDの使用領域は3.8GBですが、Win32DiskImagerでマイクロSDのイメージファイルを作成すると16GBになります。以下の作業によりファイルの圧縮を行って、最終的には1GB以下にすることができました。

今回はWindows PCでの作業を前提とします。MACはClassmethodさんのMac上でPiShrinkがインストールされたDockerコンテナを使用してRaspberry PiのSDカードのバックアップを作成する方法の記事がありました。

準備するもの

Windows PC(windows 10)側アプリケーション

  • VirtualBox 6.1 こちらから本体とExtention Packをダウンロードし、本体とExtension Packの両方をインストールしてください。
    image.png
  • VirtualBOXで動かすubuntu こちらからダウンロードしてください。記事作成時はubuntu-ja-20.04.1-desktop-amd64.isoが最新版でした。

流れ

  1. Virtual BOXでubuntuを動かす
  2. Virtual BOXとwindowsで共有フォルダの設定をして、ubuntuにマイクロSDのイメージファイルを渡す
  3. マイクロSDの未使用領域を解放する。
  4. PiShrinkでマイクロSDの無駄な領域を削除して、zip圧縮する

1. Virtual BOXでubuntuを動かす

  1. virtual boxw立ち上げて「新規」をクリック
    Ubuntuで作業しますので、適当な名称を付けてubuntuを選択します。

image.png

メモリサイズはPCのメモリの半分程度にしました

image.png

続いて仮想ハードディスクを作成するVDI(VirtualBox Disk Image')可変サイズ→ハードディスクのサイズを設定→作成をクリックします。

  1. 続いて起動をクリックしてubuntuのインストールをします。
    起動をクリックすると画面が開きますので、ダウンロードしたubuntuのイメージファイルを設定します。

image.png

しばらく時間がかかりますが、画面が出たらubuntuをインストールをクリックします

image.png

何回か画面に従ってクリックしていきます。そして最後にubuntuが再起動します。

2. Virtual BOXとwindowsで共有フォルダの設定をして、ubuntuにマイクロSDのイメージファイルを渡す

VirtualBOXのマネージャ画面で「共有フォルダー」の設定をクリックして任意のフォルダ(上段)とubuntu側でのマウント先を指定します。

image.png

ubuntu側で実行してwindows側のshareフォルダを/mnt/shareにマウントします。
上段は最初の一回だけ実行してください。
下段は起動するたびに実行する必要があります。

sudo apt-get install virtualbox-guest-utils
sudo mount.vboxsf share /mnt/share

ここでWindowsに戻りWin32DiskImagerなどを利用してマイクロSDのイメージファイルをshareフォルダに保存してください。

3. マイクロSDの未使用領域を解放する。

続いて、ubuntuでファイル容量の削減をしていきます。

まず、imgファイルをubuntuにマウントします。
sudo losetup -fでマウント先を調べます。loop7がマウント先と返されました。

sudo losetup -f
> /dev/loop6

続いて、imgファイルをマウントします。
1行目でimgファイルをマウントし、2行目でパーティションの認識、3行目でgpartedを起動します。gpartedがインストールされていないときはsudo apt-get install gpartedでインストールしてください。

sudo losetup /dev/loop6 /mnt/share/イメージファイル名.img
sudo partprobe /dev/loop6
sudo gparted /dev/loop6

gpartedを起動すると以下のようになりした。

image.png

ext4 rootfsを右クリックしてリサイズを選択、パーティションを使用領域を限界まで小さくし、✔を押して保存します。

image.png

4. PiShrinkでマイクロSDの無駄な領域を削除して、zip圧縮する

PiShrinkを利用してSDカードのイメージファイルから無駄な領域を削除します。
sudo pishrink /mnt/share/イメージファイル.img

自分が実行したときには15GBから3.1GBに圧縮できたと返ってきました。

出力されたimgファイルをzip圧縮して終了です。

zip -r zip後のファイル名 イメージファイル.img

参照したサイト

もっと良いやり方があったら教えてください。

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?