ddコマンドの進捗をgdd status=progressで可視化かつ高速に書き込みを行う
raspberry piのイメージを書き込む際に「dd」コマンドを使用することが一般的ですが、進捗率が見えず、いつ書き込みが完了するのか見えない問題があります。
ましてや、USB2.0で接続したmicroSDへの書き込みであれば、正常に書き込みが行われているのか不安になります。
そこで、ddコマンドで進捗率が見えるように変わりに「gdd」を使用してみました。
Macでgddをインストール
Macでgddコマンドを利用する場合は、brewを利用します。
brew install coreutils
以上で完了しますが、linuxの際はインストール方法が異なると思われます。
gdd status=progressを使用してみる
「gdd」コマンドで、「status=progress」を使用すると進捗率をリアルタイムで可視化することができます。
以下がコマンドと出力例です。
sudo gdd if=/dev/disk2 of=/Users/Downloads/raspi.img bs=1k status=progress
> 852595712 bytes (853 MB, 813 MiB) copied, 500 s, 1.7 MB/s
このように書き込みバイト数が表示されるので、ddコマンドを使用するよりも安心できます。
imageの書き込みをする際は、なるべくgddを使用したほうが良さそうです。
速度を求めているのであれば、「bs=1M」の方が良いですね。
(1mではないので注意。)
Macではddの書き込みが遅い
ddCommandの書き込みは、bsで書き込みを行う単位を指定することで速度が変わってきます。
しかし、Macの場合はbsの値を大きくしても速度が遅い可能性があります
これにより、SDカードに書き込みを行いたくても1晩書き込み状態で寝かせる必要が発生する。
解決するためには「/dev/disk2」ではなく、rowデータで書き込み「/dev/rdisk2」を指定することで数十倍も早くなります。
sudo gdd if=/dev/rdisk2 of=/Users/Downloads/raspi.img bs=1k status=progress
> 3074424832 bytes (3.1 GB, 2.9 GiB) copied, 255 s, 12.0 MB/s