これは私の仮想ボックスインストールディレクトリです。
C:\Program Files\Oracle\VirtualBox
ここが私のイメージ(linux.vdi)があるところです。
C:\Users\hmkhitaryan\dev\vm\linux
では、仮想マシンにディスクサイズを追加したいと思います。 「Virtual Media Manager」でディスクサイズを縮小した後、仕様に記載されているように、次のコマンドを使用して端末で縮小しようとしています。
C:\Program Files\Oracle\VirtualBox>VBoxManage modifyhd "C:\Users\hmkhitaryan\VirtualBox VMs\linux.vdi" --resize 133672
このようなエラーが発生します
C:\Program Files\Oracle\VirtualBox>VBoxManage modifyhd "C:\Users\hmkhitaryan\dev\vm\linux\linux.vdi" --resize 133672
0%...
Progress state: VBOX_E_NOT_SUPPORTED
VBoxManage.exe: error: Failed to resize medium
VBoxManage.exe: error: Shrinking is not yet supported for medium 'C:\Users\hmkhitaryan\dev\vm\linux\linux.vdi'
VBoxManage.exe: error: Details: code VBOX_E_NOT_SUPPORTED (0x80bb0009), component MediumWrap, interface IMedium
VBoxManage.exe: error: Context: "enum RTEXITCODE __cdecl handleModifyMedium(struct HandlerArg *)" at line 768 of file VBoxManageDisk.cpp
このエラーの原因は何かを助けてください。
答え1
理由は簡単で、エラーメッセージに記載されています。VirtualBoxは現在、メディアの縮小をサポートしていません。ただ拡張してください。
ただし、ゲスト内のパーティションを縮小して使用できます。VBoxManage メディアの修正 --compactvdi ファイルのサイズを小さくします。これにより、新しく設定されたパーティションサイズより大きくなるのを防ぎます。
これを行うには、次の手順に従います。
- バックアップしてください。
- isoから物理環境にVMを起動します(または回復モードに入り、ルートシェルを起動します)。
- たとえば、パーティション・マネージャーを起動します。ゴポット、GNOMEディスクまたは
fdisk
。 - 既存のパーティションを目的のサイズに縮小します。
- 既存のパーティションの後に新しいパーティションを作成しますが、ファイルシステムでフォーマットしないでください。ディスクの残りの部分を満たしてください。
dd
新しいパーティションをゼロで埋めるために使用されます。たとえば、以前に1つのディスクと1つのパーティションしかなかった場合、コマンドは次のようになります。新しく作成された未使用パーティションとdd if=/dev/zero of=/dev/sda2 bs=4M
交換します。ルートシェルにない場合は、次のコマンドを使用してコマンドを開始する必要があります。sda2
sudo
- 仮想マシンを終了します。
VBoxManage
ホストシステムでツールを探します。 Windowsではそこにあります"c:\Program Files\Oracle\VirtualBox\VBoxManage.exe"
。そこでcmdを開きます。 *nixではおそらくパスにあるので、どこにでも端末を開くだけです。- 縮小したいvdiファイルを見つけます。フルパスをコピーし、
"
スペースが含まれている場合は引用符()で囲みます。 - vdiを圧縮するには、次のコマンドを使用します。
VBoxManage modifymedium --compact "c:\Users\user\VirtualBox VMs\Ubuntu Desktop\Ubuntu Desktop.vdi"
- SSDの場合は数分かかり、HDDの場合は数時間かかります。最後に、vdiファイルは最大内部パーティションサイズでなければならず、それより大きくしてはいけません。