Raspberry Pi4のimage(データ)をバックアップし、より大容量なmicroSDカードにリストアする方法
前書き
本記事では、Raspberry Pi4のOS imageをバックアップし、より大容量なmicroSDカードにバックアップimageをリストアする方法を紹介します。
Raspberry Piには、「SD Card Copier」というアプリがインストールされていますが、本記事では使用しません。代わりに、CLIでmicroSDカードのデータをバックアップ/リストアします。
検証環境
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
_,met$$$$$gg. nao@debian ,g$$$$$$$$$$$$$$$P. ---------- ,g$$P" """Y$$.". OS: Debian GNU/Linux 10 (buster) x86_64 ,$$P' `$$$. Kernel: 4.19.67 ',$$P ,ggs. `$$b: Uptime: 1 hour, 52 mins `d$$' ,$P"' . $$$ Packages: 4331 (dpkg), 13 (flatpak) $$P d$' , $$P Shell: fish 3.0.2 $$: $$. - ,d$$' Resolution: 2560x1080 $$; Y$b._ _,d$P' DE: Pantheon Y$$. `.`"Y$$$$P"' WM: Mutter(Gala) `$$b "-.__ Terminal: io.elementary.t `Y$$ CPU: AMD Ryzen 7 3800X 8- (16) @ 3.900GHz `Y$$. GPU: NVIDIA NVIDIA Corporation TU107 `$$b. Memory: 4549MiB / 64404MiB `Y$$b. `"Y$b._ |
Raspberry Piのバックアップimageを作成
まず、Host環境(Linux)にカードリーダーを接続し、microSDカードを挿入します。microSDカードがLinux上で、どのデバイスファイル(/dev以下のファイル)として認識されているかをfdiskコマンドで調べます。
以下の例では、HDD2個、SSD2個、microSDカード1個が搭載された環境に対して、fdiskコマンドを使用しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
$ sudo fdisk -l Disk /dev/sdc: 3.7 TiB, 4000787030016 bytes, 7814037168 sectors Disk model: WDC WD40EZRZ-00G Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: gpt Disk identifier: 7BABC8AE-DFD4-4249-9877-E00C4E8A169C Device Start End Sectors Size Type /dev/sdc1 2048 7814037134 7814035087 3.7T Linux filesystem Disk /dev/sda: 238.5 GiB, 256060514304 bytes, 500118192 sectors Disk model: TS256GMTS800 Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 87F71BE3-96D5-4AF9-B694-6E2DE9543803 Device Start End Sectors Size Type /dev/sda1 2048 1050623 1048576 512M EFI System /dev/sda2 1050624 433233919 432183296 206.1G Linux filesystem /dev/sda3 433233920 500117503 66883584 31.9G Linux swap Disk /dev/sdb: 3.7 TiB, 4000787030016 bytes, 7814037168 sectors Disk model: WDC WD40EZRZ-00G Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: gpt Disk identifier: EEF005D9-4A2A-48EC-A27A-009F7D5BA083 Device Start End Sectors Size Type /dev/sdb1 2048 3900000000 3899997953 1.8T Linux filesystem /dev/sdb2 3900000256 7814037134 3914036879 1.8T Linux filesystem Disk /dev/sdd: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors Disk model: WDC WDS200T2B0B Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: CC896053-2073-495A-A3F0-3D0ECAC02B6E Device Start End Sectors Size Type /dev/sdd1 2048 1050623 1048576 512M EFI System /dev/sdd2 1050624 3772981247 3771930624 1.8T Linux filesystem /dev/sdd3 3772981248 3907028991 134047744 63.9G Linux swap Disk /dev/sde: 14.4 GiB, 15489564672 bytes, 30253056 sectors Disk model: STORAGE DEVICE Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x9edea3d6 Device Boot Start End Sectors Size Id Type /dev/sde1 8192 532479 524288 256M c W95 FAT32 (LBA) /dev/sde2 532480 30253055 29720576 14.2G 83 Linux |
上記の出力は、HDDやSSDが沢山マウントしてあるので分かりづらいですが、サイズから/dev/sdeがRaspberry Pi用のmicroSDカードだと判断できます。
次に、microSDカードのデータを”raspi.img”としてカレントディレクトリにバックアップします。バックアップには、ddコマンドを使用します。
1 2 |
※ ifがバックアップ対象、ofが出力先のファイルPATH、bsが1度に読み書きするサイズ $ sudo dd if=/dev/sde of=raspi.img bs=10M |
バックアップが完了した後、microSDカードをカードリーダから取り外します。
バックアップimageをmicroSDカードにリストア
先程バックアップしたRaspberry Piのimageを新しいmicroSD(今回は64GB)にリストアします。microSDカードがどのデバイスファイルに割り当てられたかは、前述の手順と同様にfdiskコマンドで確認します(確認結果は省略し、/dev/sdeだったと仮定して以下の手順を進めます)。
バックアップと同様に、リストアにもddコマンドを使用します。
1 2 |
※ ifがバックアップしたimage、ofが出力先のmicroSDカードのPATH、bsが1度に読み書きするサイズ $ sudo dd if=raspi.img of=/dev/sde bs=20M |
microSDカードのパーティションを拡張
今回の例では、Raspberry Pi用のmicroSDカードは、容量が16GBから64GBに拡張されました。しかしながら、ddコマンドで新しいmicroSDカードにリストアしただけでは、使用できる領域は16GBのままです。
そのため、microSDカードのパーティションサイズをmicroSDカードの容量限界まで拡張します。パーティションの拡張には、Raspberry Pi公式の設定ツールであるraspi-configコマンドを使用します。
以下の手順は、Raspberry Pi上で実行してください。
1 2 3 4 5 6 7 8 |
$sudo raspi-config ※ 以下の順で選択肢を選んでください。 [7 Advanced Options] ⇓ [A1 Expand Filesystem] ⇓ 再起動を促すメッセージでYes |
おまけ:バックアップimageサイズを縮小する方法
Raspberry Pi公式がバックアップimageを縮小するためのperlスクリプトを提供しています。以下の書式で使用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
※ スクリプトに実行権限を付与 $ chmod a+x resizeimage.pl ※ キャッシュをファイルに書き込まないとエラーとなるため、書き出し $ sync ※ 書式:sudo ./resizeimage.pl $(imageの絶対PATH) $ sudo ./resizeimage.pl /home/nao/img/raspi.img raspi.img: ========== Old size - 14771 MB (14.43 GB) New size - 7304 MB (7.13 GB) Image file was reduced by 7467 MB (7.29 GB) |
ロシア人と国際結婚した地方エンジニア。
小学〜大学院、就職の全てが新潟。
大学の専攻は福祉工学だったのに、エンジニアとして就職。新卒入社した会社ではOS開発や半導体露光装置ソフトを開発。現在はサーバーサイドエンジニアとして修行中。HR/HM(メタル)とロシア妻が好き。サイトに関するお問い合わせやTwitterフォローは、お気軽にどうぞ。
1件の返信
[…] Raspberry Pi4のimage(データ)をバックアップし、より大容量なmicroSDカードに… […]