ブートUSBメモリなどを作るmkusbを試してみる

USBメモリなどにisoを書き込んで起動デバイスを作れるとても便利なUNetbootinというツールがあります．
しかし，Debian jessie/stretchに入っていません．

Debian – sid の unetbootin パッケージに関する詳細

なんでだろうとBTSを見るとうまく動かないバグがあるようです．(UEFI環境でNG?)

#775689 – Do NOT use unetbootin for Debian CD images – Debian Bug report logs

ざざっと眺めていてmkusbという同じようなツールがあるのを見かけたので試してみました．

mkusb – Community Help Wiki

環境

Debian stretch testing amd64です．

$ screenfetch

_,met$$$$$gg.           mk@x220

,g$$$$$$$$$$$$$$$P.        OS: Debian testing-updates sid

,g$$P""       """Y$$.".      Kernel: x86_64 Linux 4.3.0-1-amd64

,$$P'              `$$$.      Uptime: 9h 7m

',$$P       ,ggs.     `$$b:    Packages: 3622

`d$$'     ,$P"'   .    $$$     Shell: bash 4.3.42

$$P      d$'     ,    $$P     Resolution: 1366x768

$$:      $$.   -    ,d$$'     WM: Awesome

$$\;      Y$b._   _,d$P'      WM Theme: awesome

Y$$.    `.`"Y$$$$P"'          CPU: Intel Core i5-2540M CPU @ 3.3GHz

`$$b      "-.__               GPU: Mesa DRI Intel(R) Sandybridge Mobile

`Y$$                         RAM: 9768MiB / 15934MiB

`Y$$.

`$$b.

`Y$$b.

`"Y$b._

`""""

Ubuntuはppaがあります．DebianはUbuntuのppaが使えます．他のLinuxディストリビューションでは導入スクリプト( mkusb-installer )が用意されています．

導入(ppa)

source.listを登録します．apt edit-sourcesコマンドでdeb http://ppa.launchpad.net/mkusb/ppa/ubuntu trusty mainを登録します．

$ sudo apt edit-sources mkusb

$ sudo chmod +r /etc/apt/sources.list.d/mkusb.list

$ cat /etc/apt/sources.list.d/mkusb.list

# "mkusb/install-to-debian - Community Help Wiki"

# https://help.ubuntu.com/community/mkusb/install-to-debian

deb http://ppa.launchpad.net/mkusb/ppa/ubuntu trusty main

MKUSB PPA : “MKUSB” team
を参考にapy-key addする．

$ gpg --keyserver keyserver.ubuntu.com --recv-keys 54B8C8AC

gpg: 鍵54B8C8ACをhkpからサーバkeyserver.ubuntu.comに要求

gpg: 鍵54B8C8AC: 公開鍵"Launchpad PPA for MKUSB"をインポートしました

gpg:           処理数の合計: 1

gpg:             インポート: 1  (RSA: 1)

$ gpg --fingerprint 54B8C8AC

pub   4096R/54B8C8AC 2014-08-14

フィンガー・プリント = 29D7 6ADA 2D15 A87B F4C6  8B82 3729 8274 54B8 C8AC

uid                  Launchpad PPA for MKUSB

$ gpg -a --export 54B8C8AC | sudo apt-key add -

OK

$ apt-key list|grep -A1 54B8C8AC

pub   4096R/54B8C8AC 2014-08-14

uid                  Launchpad PPA for MKUSB

パッケージリストの更新とmkusbパッケージの導入

$ sudo apt update

$ sudo apt install mkusb mkusb-nox

$ dpkg -L mkusb

/.

/usr

/usr/share

/usr/share/mkusb

/usr/share/mkusb/mkusb-start

/usr/share/mkusb/restore

/usr/share/mkusb/mkusb-st2

/usr/share/mkusb/usb-pack_efi.tar.gz

/usr/share/mkusb/grub.cfg

/usr/share/mkusb/maybe-problems.txt

/usr/share/mkusb/backup

/usr/share/icons

/usr/share/icons/mkusb.svg

/usr/share/icons/hicolor

/usr/share/icons/hicolor/scalable

/usr/share/icons/hicolor/scalable/apps

/usr/share/icons/hicolor/scalable/apps/mkusb.svg

/usr/share/icons/hicolor/48x48

/usr/share/icons/hicolor/48x48/apps

/usr/share/icons/hicolor/48x48/apps/mkusb.png

/usr/share/doc

/usr/share/doc/mkusb

/usr/share/doc/mkusb/README.Debian

/usr/share/doc/mkusb/copyright

/usr/share/doc/mkusb/changelog.Debian.gz

/usr/share/man

/usr/share/man/man8

/usr/share/man/man8/mkusb.8.gz

/usr/share/applications

/usr/share/applications/mkusb.desktop

/usr/sbin

/usr/sbin/mkusb

$ dpkg -L mkusb-nox

/.

/usr

/usr/share

/usr/share/doc

/usr/share/doc/mkusb-nox

/usr/share/doc/mkusb-nox/copyright

/usr/share/doc/mkusb-nox/changelog.Debian.gz

/usr/sbin

/usr/sbin/mkusb-nox

実行例

メニューから起動するか，

$ sudo -H /usr/sbin/mkusb

のようにして起動します．書き込むイメージが決まっている場合は引数に指定できます．イメージには.gzや.xzも指定可能なので展開の手間が省けます．

$ sudo -H /usr/sbin/mkusb ./alpine-3.3.1-x86_64.iso

スプラッシュが出て，

メニューが出てきます．cloneやwipeも可能です．

書き込み先のデバイスは間違えないようにしましょう．間違えるととても悲しいことになります．ちなみにSD Cardスロットの/dev/mmcblk0は検出されませんでした．USB-SDアダプタ経由だと出てきました．

確認画面でチェックを入れて「Go」ボタンで書き込みが始まります．

実行例(nox)

mkusb-noxコマンドを使うと端末で利用できます．nox版では複数のUSBメモリがある場合の選択方法はわかりませんでした．書き込むデバイスだけを差し込むようにするしか無いかもしれません．

$ sudo /usr/sbin/mkusb-nox ./alpine-3.3.1-x86_64.iso

The iso file SHOULD BE loop mounted on a temporary file READ-ONLY:

mount: /dev/loop0 is write-protected, mounting read-only

disk_name_type=label

default grsec|label grsec| _found_ in iso-file

default grsec|label grsec| _found_ in /dev/sdb

Final checkpoint

Install to /dev/sdb? (y/n)

y

pv "alpine-3.3.1-x86_64.iso"| dd of=/dev/sdb bs=4096 ...

82MiB 0:00:00 [ 205MiB/s] [========================================================================================================================>] 100%

20992+0 records in

20992+0 records out

85983232 bytes (86 MB) copied, 4.84297 s, 17.8 MB/s

syncing the drive ...

The default grsec|label grsec| USB device is re-cloned  :-)

問題なく利用できる場合はUNetbootinの方がマルチプラットホームだし使いやすそうです．状況により使い分けるのがいいのかもしれません．