Virtualbox, заметки
-
Классика: как пробросить в виртуальную машину реальный диск или флешку. Полезно например для экспериментов с загрузчиком LiveUSB, когда нужно часто перезагружаться.
-
Под Win: запускаем diskpart, набираем list disk, ищем нужный. Далее:
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" internalcommands createrawvmdk -filename C:\my-drive.vmdk -rawdisk \\.\PHYSICALDRIVE1
-
Под Linux: запускаем
df -h
, находим нужный диск. Далее:VBoxManage internalcommands createrawvmdk -filename my-drive.vmdk -rawdisk /dev/sdb
-
-
Как сменить идентификатор диска? Бывает, нужно подключить одинаковые диски к нескольким машинам. Просто так не получится – у них одинаковые идентификаторы…
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" internalcommands sethduuid Obraz.vdi
…теперь разные.
-
Как сжать виртуальный диск? Динамические диски в VBox только растут, но есть команда, аналогичная vacuum в СУБД. Правда, сначала придётся занулить не занятое файлами пространство, чтобы VBox понимал, что оно больше не используется. Дальнейшее выполняем в гостевой системе:
-
если там живёт Windows, скачайте sdelete от камрада всех айтишников Марка Руссиновича:
sdelete64 -z -s C: # зануляем свободное пространство
-
если там живут пингвины, надо как‐то добыть или скомпилировать zerofree (и не для всех дистрибутивов это так же легко, как
apt install zerofree
). -
# уберём хлам dnf clean all или apt autoclean apt clean apt autoremove # # перемонтируем ФС в read-only, чтоб никому не прилетело telinit 1 service rsyslog stop service network-manager stop killall dhclient mount -o remount,ro / # df -h # находим нужный диск zerofree /dev/sdb1 # зануляем свободное пространство
Если mount: / is busy, значит прихлопнули не все процессы и службы, использующие диск.
Кстати, следующий способ не сработает:
cat /dev/zero > zero.file sync rm zero.file
-
Выключаем машину и выполняем в хосте:
"C:\Program Files\Oracle\VirtualBox\VboxManage.exe" modifyhd "Windows 10.vdi" --compact
Образ уменьшился. Теперь его можно сжать архиватором и положить в папочку «бекапы».