※この記事はQiitaに投稿した記事を加筆修正しております。

 

事象

RaspbianをVirtualBoxで使うとき、
ISOファイルを光学ドライブIDEに設定して、
読み込むと設定が保存されない事象が発生します。

そんな時は、ISOファイルからVDIファイルを作成して使うと設定が保存されます。
その変換方法を備忘録として残します。

 

使用したもの

Virtualbox

Raspbian

Windows端末

 

手順

バッチファイルにした方が楽だと思いますので
バッチファイルを作成しました。

 

ISO_VDI_Convert.bat

rem RaspbianのISOファイル名をそのまま使う
set ConvertFileName=2017-11-16-rpd-x86-stretch

rem 変換前のISOファイルが格納されているディレクトリパス
set ConvertBeforePath=D:\kasou\OS_ISO\

rem 変換後のvdiファイルを格納するディレクトリパス
set ConvertAfterPath=D:\kasou\test\

rem ISOファイルからvdiファイルを作成する
"%VBOX_MSI_INSTALL_PATH%VBoxManage.exe" convertfromraw %ConvertBeforePath%%ConvertFileName%.iso %ConvertAfterPath%%ConvertFileName%.vdi

rem 仮想ディスクの容量を拡張する
"%VBOX_MSI_INSTALL_PATH%VBoxManage.exe" modifyhd %ConvertAfterPath%%ConvertFileName%.vdi --resize 8192

rem 処理結果を見たいのでpauseで止めておく
pause

 

このバッチを実行すると以下のようなログがでます。

D:\kasou>"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" convertfromraw D:\kasou\OS_ISO\2017-11-16-rpd-x86-stretch.iso D:\kasou\test1\2017-11-16-rpd-x86-stretch.vdi
Converting from raw image file="D:\kasou\OS_ISO\2017-11-16-rpd-x86-stretch.iso" to file="D:\kasou\test1\2017-11-16-rpd-x86-stretch.vdi"...
Creating dynamic image with size 2387427328 bytes (2277MB)...

D:\kasou>"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyhd D:\kasou\test1\2017-11-16-rpd-x86-stretch.vdi --resize 8192
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

D:\kasou>pause
続行するには何かキーを押してください . . .

 

この状態でVDIファイルをVirtualboxで読み込むことで、

Raspberry Piを使っているかのように設定が保存されます。

   

   

 

余談ですが

VDIファイルを削除してもう1回やると、
VDIファイルの容量を拡張するコマンド部分で以下のエラーが発生します。

VBoxManage.exe: error: UUID {5bb3d088-b54d-4e8a-8ff1-42dabd45e1ca} of the medium 'D:\kasou\test1\2017-11-16-rpd-x86-stretch.vdi' does not match the value {a6ce7570-7ba4-4c63-ae27-d3a45b094d1d} stored in the media registry ('C:\Users\Administrator\.VirtualBox\VirtualBox.xml')
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component MediumWrap, interface IMedium, callee IUnknown
VBoxManage.exe: error: Context: "Resize(cbResize, pProgress.asOutParam())" at line 740 of file VBoxManageDisk.cpp
VBoxManage.exe: error: Failed to resize medium!

 

理由は現時点で不明。(20180223時点)

ディレクトリを削除して、違う名前のディレクトリを作るとうまくいきました。

1つのディレクトリに同じものを作ろうとするとUUIDの認識でエラーになる?

 

可能性としては、VirutalBox側で物理パスとUUIDを保持してて、
「パスは同じだけどUUIDが違うだろーっ!」
ってどっかの元議員みたいに怒ってる?

時間があって気が向いた時に調べます。(あと忘れてなければ)

ディレクトリは毎回分けているので、今後上記のエラーはでないはず。

 

 

 

以上