マルチUSB書き込みツールのPopsicle

USBメモリなどにOSイメージなどを書き込む時GUIだとEtcherやUNetBootinなどのツールを使ったりしますが,同時に複数の媒体への書き込みに対応していません.同時に書き込みたい場合私はteeコマンドとddコマンドを利用したりしていましたが,PodsicleというツールがGUI/CUIで同時書き込みに対応しているようなので試してみました.Rust製MITライセンスです.

導入

$ git clone https://github.com/pop-os/popsicle
$ cd popsicle
$ make
$ sudo make install

make installだとGUT/CUIの療法が導入されます.make install-gtkだとGTK(GUI)のみ,make install-cliだとCLIのみです.

GUI利用

popsicle-gtkを起動すると書き込みイメージの選択画面になります.ここでイメージを指定すると読み込みチェックが走りしばらく待たされます.(CUIではチェックしないことも出来る)
20180708_08:07:50-31395

次に書き込み先のデバイス選択です.書き込みたいデバイスをチェックします.この画面になってからUSBメモリの抜き差しをしても反映されるので便利です.ちなみに内蔵SD cardの/dev/mmcblk0`はここにはでてきませんでした(CUIでは利用できます).
#SD-USB変換でUSB経由だとSD card書き込み可能です.

20180708_09:07:39-21924

書き込み中画面です.複数デバイスの場合はそれぞれプログレスが表示されます.

20180708_09:07:54-30224

書き込み完了.

20180708_09:07:17-32223

CUI利用

CUIはpopsicleコマンドです.

$ popsicle -h
popsicle_cli 0.1.5
USB Flasher
 
USAGE:
    popsicle [FLAGS] <IMAGE> [DISKS]...
 
FLAGS:
    -a, --all        Flash all detected USB drives
    -c, --check      Check written image matches read image
    -h, --help       Prints help information
    -u, --unmount    Unmount mounted devices
    -V, --version    Prints version information
    -y, --yes        Continue without confirmation
 
ARGS:
    <IMAGE>       Input image file
    <DISKS>...    Output disk devices

イメージファイルと書き込み先のデバイスを指定して実行すると書き込めます.GUIでは/dev/mmcblk0は出てきませんでしたが,CUIでは書き込めました.

$ sudo popsicle ~/Downloads/2018-06-27-raspbian-stretch.img /dev/sdc /dev/sdd /dev/mmcblk0

ちなみにddで書き込む時は圧縮イメージファイルを展開しながら書き込むことが多い(zcat image.gz|pv|sudo dd of=/dev/sdz bs=4M)のですが,そういったことは出来なさそうです.

$ zcat ~/Downloads/2018-06-27-raspbian-stretch.zip | popsicle -u - /dev/mmcblk0 
popsicle: error with image at '-': image could not be opened: No such file or directory (os error 2)
$ zcat ~/Downloads/2018-06-27-raspbian-stretch.zip | popsicle -u /dev/stdin /dev/mmcblk0 
popsicle: error with image at '/dev/stdin': image was not a file
$ mkfifo zip.img
$ zcat ~/Downloads/2018-06-27-raspbian-stretch.zip > ./zip.img  &
$ sudo popsicle ./zip.img /dev/mmcblk0
popsicle: error with image at './zip.img': image was not a file

関連