3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ubuntu Linux で Raspian xz ファイル・zip ファイルを microSD カードに書き込む

Last updated at Posted at 2020-05-22

RaspberryPi で RaspberryPi をバックアップ
https://qiita.com/nanbuwks/items/294e54d9f843e9c35032」

の応用です。

やること

  • xz ファイル・zip ファイルを解凍しながら microSD カードに書き込みます
  • dd を使います
  • 進捗も表示します

環境

以下で試しました。

  • Ubuntu 18.04
  • Raspbian 2020-02-13-raspbian-buster.zip

2022/7/29 追記:
以下の組み合わせで xz 形式のファイルも OK なことを確認しました。

  • Ubuntu 22.04
  • Raspberry Pi OS Lite Release date: April 4th 2022 2022-04-04-raspios-bullseye-armhf-lite.img.xz

あらかじめ、Raspbian の zip ファイル または Raspbery Pi OS の xz ファイルはダウンロードしておきます。

microSD カードを Ubuntu Linux に刺す

刺すとオートマウントされるので、アンマウントします。
ファイルマネージャでアンマウントすると、デバイスファイルも無くなってしまうので以下で。


$ sudo umount /dev/sdb1

既にRaspbian が書かれている microSDカードなどでは、パーティションが複数あるので全てアンマウントします。


$ sudo umount /dev/sdb2

書き込みの準備

書き込み先を確認します。


$ sudo fdisk -l
ディスク /dev/loop0: 2.4 MiB, 2531328 バイト, 4944 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト


ディスク /dev/loop1: 4.2 MiB, 4448256 バイト, 8688 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト

・・・


ディスク /dev/sdb: 7.4 GiB, 7948206080 バイト, 15523840 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0xea7d04d6

デバイス   起動 開始位置 最後から  セクタ サイズ Id タイプ
/dev/sdb1           8192   532479  524288   256M  c W95 FAT32 (LBA)
/dev/sdb2         532480  7397375 6864896   3.3G 83 Linux

/dev/sdbというのがわかりました。

書き込みツールは dd を使いますが危険なので、一旦環境変数にコピー元、コピー先を記述することでワンクション置きます。

ZIPファイルの場合は、以下のようにします。

$ export SOURCE=2020-02-13-raspbian-buster.zip
$ export DIST=/dev/sdb

xz ファイルの場合は同様にして、以下のようにします。

$ export SOURCE=2022-04-04-raspios-bullseye-armhf-lite.img.xz 
$ export DIST=/dev/sdb

書き込み

ZIPファイルの場合は、以下のようにします。

$ sudo unzip -p  $SOURCE | sudo dd bs=4k of=$DIST status=progress

xzファイルの場合は同様にして、以下のようにします。

$ xz -dc $SOURCE | sudo dd bs=4k of=$DIST status=progress

以下のように書き込みが進みます。

1987784704 bytes (2.0 GB, 1.9 GiB) copied, 14 s, 142 MB/s

以下のようになって終わります。メモリバッファがフラッシュしている間は止まっているように見えますが、焦らず待ちます。


924672+0 レコード入力
924672+0 レコード出力
3787456512 bytes (3.8 GB, 3.5 GiB) copied, 387.193 s, 9.8 MB/s


dd はバッファサイズごとに同期書き込みしているのかな? しかし念の為にsyncを3回

$ sync
$ sync
$ sync

microSDカードを取り出して動作確認し、うまく動けばOKです。

3
0
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
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?