にほんブログ村 IT技術ブログへ
にほんブログ村

Linux ブログランキングへ

2018年09月09日

Ubuntu改造日記 ISOファイルをUSBメモリに焼くWrite-protect対策 Rufus VS ddコマンドとxorriso  その78


今回はLinuxでISOファイルをddコマンドでUSBメモリに焼く際に
何故Write−protectになるのかをまとめます。
東海道らぐ伊勢市でこんどうさんからUnetbootinを使う方法を
ご紹介頂いたのでその説明を考察ブログにします。
こんどうさん誠にありがとうございました。

●ISOファイルとUSBメモリに焼き込み
LinuxディストリはISO形式で配布されている事が多いです。
これはNetBSDがimg形式とISO形式で両配布されいてる
事と比較しますと対象的です。
何故でしょうか?
実は色々な背景があります。

UbuntuなどLinux環境のddコマンドで
ISOファイルをUSBメモリに焼くと
Write−protectがかかって書き込み不可になります。
これUEFI32bit環境で使うには結構面倒です。
bootia32.efiやgrub-efi-i386などのパッケージを追加出来ません。
WindowsからRufusなどで書き込む必要があります。

実はISOファイルはCDROM形式でRead-onlyになっています。
ddコマンドはベタでそのまま焼き込むので、
USBメモリもCDROM形式になってRead-onlyになります。
つまりWrite-protectがかかって書き込み出来ません。
そこが問題です。


●Rufus VS ddコマンド
じゃあRufusのISOモードは?というと、
まずWindowsでFAT32に強制フォーマットして、
ISOイメージから直接ファイルとフォルダをUSBメモリにコピーします。
その為、Read-onlyになりません。
EXT4などがWindowsで読めない為の処置です。
これでも多数のLinuxディストリをサポートしているので
openSUSEの様にISO9660対象外を除くと十分使えてしまうんです。
openSUSEは4GBオーバーのISO9660規格から外れているので
ddコマンドじゃないと焼けませんのでご注意を。

UEFIの場合はブートローダーを認識するにはEFIパーティション
つまりFAT32上に/EFI/bootフォルダがある必要があります。
逆から考えるとRufusみたいにFAT32でベタフォーマットしてしまえば、
コピペしても/EFI/bootフォルダがあるのでUEFIから見える訳です。

NetBSDの場合はimgファイルでイメージファイルを提供しています。
そちらでWrite-protectから回避している様子です。
だからddコマンドで焼いてもその手の問題は見えていません。
多分。

詳しくはこちらをご参考までに。

https://translate.googleusercontent.com/translate_c?act=url&depth=1&hl=ja&ie=UTF8&prev=_t&rurl=translate.google.com&sl=en&sp=nmt4&tl=ja&u=https://github.com/pbatard/rufus/issues/843&xid=17259,1500000,15700002,15700021,15700124,15700149,15700186,15700190,15700201&usg=ALkJrhgaZ3QjpiKNIQyUlCAj1jvbp4spkg


●じゃあLinux環境だとどうするの?
手間ですが同じ様にUSBメモリをFAT32でフォーマットしてISOファイルを
マウントしてベタコピーすれば一応同じ事は出来ます。
面倒ですが、


・ISOファイルから直接ファイルをUSBメモリにコピーする
・xorrisoを用いてISOファイルにファイルを追加してからUSBメモリに焼く
・RufusのISOモードを使用してWindowsから焼く


という手順になります。


●xorrisoでファイルをISOファイルに書き込む
詳しくはこちらをご参考に。ありがとうございます。

http://gihyo.jp/lifestyle/serial/01/ganshiki-soushi/0091


まずxorrisoをインストールします。

sudo apt install xorriso

コマンドの一例としてはこちらです。
cosmic-desktop-amd64.isoのISOイメージファイルに
HDDにあるbootia32.efiのファイルを
ISOファイルの/EFI/BOOT/bootia32.efiに書き込むコマンドです。

xorriso -dev cosmic-desktop-amd64.iso --pathspecs on -add /EFI/BOOT/bootia32.efi=bootia32.efi

ファイルがコピーされたか見るには、

xorriso -dev cosmic-desktop-amd64.iso -find

で一覧として表示されます。ISOファイルをマウントしなくても良いです。
ISOファイルをloopbackでマウントする際は

sudo mount -o loop -t iso9660 cosmic-desktop-amd64.iso (フォルダ名)/

でマウント出来ますが、例によってRead-onlyです。
読み込みは可能ですが書き込みはNG。

変更したISOファイルはddコマンド、
Unetbootin、mkusbなどのコマンドでUSBメモリに焼きます。


●WineでRufusは使えるの? NGです。
WineでRufusは動きません。
RufusからUSBメモリを認識出来ないからです。
仕方がありません。


●まとめ
東海道らぐ伊勢市のこんどうさんの情報を元にまとめてみました。
こんどうさん誠にありがとうございます。
一応xorrisoを使えば、ISOファイルに直接書き込みが出来ますので、
Linuxでも普通にUEFI32bit対応出来ます。
ただISOイメージのパーティションの容量規制があるので、
アレもコレも追加出来ないのが悩みどころですが。
自分でISOファイルをカスタマイズしてみましょう。
posted by kapper at 10:46 | Comment(0) | Ubuntu
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

にほんブログ村 IT技術ブログへ
にほんブログ村

Linux ブログランキングへ