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

Образ уменьшился. Теперь его можно сжать архиватором и положить в папочку «бекапы».