Cómo compactar y exportar una máquina virtual de VirtualBox#

Note

  • Todos estos comandos son opcionales y ayudan a reducir aún más el tamaño del disco de la máquina virtual
  • Estos comandos son específicos para Debian, Ubuntu y derivados
  • Sólo funcionan en distribuciones de GNU/Linux que tengan el gestor de paquetes APT

Configurar máquina virtual#

Warning

  • Ejecutar estos comandos DENTRO de la máquina virtual

Configurar locale#

Seleccionar los siguientes idiomas para el sistema operativo

root@debian-11:~# dpkg-reconfigure -p low locales ⬅️

  • en-US.UTF-8
  • es-MX.UTF-8

Seleccionar el locale predeterminado según sea el caso

Instalar herramientas#

root@debian-11:~# apt install zerofree localepurge ⬅️

Note

Configurar localepurge con las opciones predeterminadas

Eliminar caché de APT#

root@debian-11:~# apt clean ⬅️ root@debian-11:~# apt purge ⬅️ root@debian-11:~# apt autoremove ⬅️

  • /var/cache/apt/archives
  • /var/cache/apt/archives/partial

Compactar el sistema de archivos en la máquina virtual#

Iniciar la máquina virtual en modo de rescate#

Iniciar la máquina virtual y seleccionar las opciones avanzadas de inicio.

```text

                       GNU GRUB  version 2.04-20

Debian GNU/Linux ■ Advanced options for Debian GNU/Linux ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

  Use the ^ and v keys to select which entry is highlighted.
  Press enter to boot the selected OS, `e' to edit the commands
  before booting or `c' for a command-line.

```

Seleccionar el modo de recuperación para iniciar en un ambiente reducido.

```text

                       GNU GRUB  version 2.04-20

Debian GNU/Linux, with Linux 5.10.0-17-amd64 ■ Debian GNU/Linux, with Linux 5.10.0-17-amd64 (recovery mode) ■■■■■■■■■■■■■

  Use the ^ and v keys to select which entry is highlighted.
  Press enter to boot the selected OS, `e' to edit the commands
  before booting or `c' for a command-line. ESC to return
  previous menu.

```

Escribir la contraseña del usuario root, no se mostrará en la pantalla.

```text Booting a command list

Loading Linux 5.10.0-17-amd64 ... Loading initial ramdisk ... /dev/sda1: clean, 64094/593344 files, 543653/2371072 blocks You are in rescue mode. After logging in, type "journalctl -xb" to view system logs, "systemctl reboot" to reboot, "systemctl default" or "exit" to boot into default mode. Give root password for maintenance ✅ (or press Control-D to continue):

```

Reducir programas en ejecución#

Listar los procesos en ejecución.

console root@debian-11:~# ps afx ⬅️ PID TTY STAT TIME COMMAND 2 ? S 0:00 [kthreadd] ... ... ... ... ... ... ... 1 ? Ss 0:01 /sbin/init single 182 ? Ss 0:00 /lib/systemd/systemd-journald 202 ? Ss 0:00 /lib/systemd/systemd-udevd 268 ? Ssl 0:00 /lib/systemd/systemd-timesyncd 291 ? Ssl 0:00 /sbin/dhclient -4 -v -i -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases -I -df /var/lib/dhcp/dhclient6.eth0.leases eth0 292 ? Ssl 0:00 /sbin/dhclient -4 -v -i -pf /run/dhclient.eth1.pid -lf /var/lib/dhcp/dhclient.eth1.leases -I -df /var/lib/dhcp/dhclient6.eth1.leases eth1 390 ttyS0 Ss 0:00 /lib/systemd/systemd-sulogin-shell rescue 391 ttyS0 S 0:00 \_ /sbin/sulogin 392 ttyS0 S 0:00 \_ bash 398 ttyS0 R+ 0:00 | \_ ps afx 399 ttyS0 S+ 0:00 | \_ more 393 tty1 Ss+ 0:00 \_ /sbin/sulogin

Detener los servicios de SystemD.

console root@debian-11:~# systemctl stop systemd-journald systemd-udevd systemd-timesyncd ⬅️ ... ... ... ... ... ... ... Warning: Stopping systemd-journald.service, but it can still be activated by: systemd-journald-dev-log.socket systemd-journald-audit.socket systemd-journald.socket Warning: Stopping systemd-udevd.service, but it can still be activated by: systemd-udevd-control.socket systemd-udevd-kernel.socket

Listar los procesos del cliente de DHCP y detenerlos.

```console root@debian-11:~# pgrep dhclient ⬅️ 291 292

root@debian-11:~# pkill dhclient ⬅️ ```

Listar los procesos restantes.

console root@debian-11:~# ps afx ⬅️ PID TTY STAT TIME COMMAND 2 ? S 0:00 [kthreadd] ... ... ... ... ... ... ... 1 ? Ss 0:01 /sbin/init single 390 ttyS0 Ss 0:00 /lib/systemd/systemd-sulogin-shell rescue 391 ttyS0 S 0:00 \_ /sbin/sulogin 392 ttyS0 S 0:00 \_ bash 416 ttyS0 R+ 0:00 | \_ ps afx 393 tty1 Ss+ 0:00 \_ /sbin/sulogin

Montar el sistema de archivos en modo de sólo lectura#

Identificar los discos y particiones que tiene la máquina virtual.

console root@debian-11:~# lsblk ⬅️ NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS ... sda 8:0 0 10G 0 disk ├─sda1 8:1 0 9G 0 part ├─sda2 8:2 0 1K 0 part └─sda5 8:5 0 975M 0 part sr0 11:0 1 1M 0 rom

Identificar la partición que tiene el sistema de archivos raíz.

console root@debian-11:~# df -m / ⬅️ Filesystem 1M-blocks Used Available Use% Mounted on /dev/sda1 9017 1879 6660 23% /

Verificar si el sistema de archivos está montado como lectura-escritura (rw).

root@debian-11:~# mount | grep '/dev/sda1' ⬅️ /dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro)

Remontar el sistema de archivos en modo sólo lectura (ro).

``` root@debian-11:~# mount -o remount,ro / ⬅️

root@debian-11:~# mount | grep '/dev/sda1' /dev/sda1 on / type ext4 (ro,relatime,errors=remount-ro) ✅ ```

Compactar el sistema de archivos raíz#

Identificar la ruta al programa zerofree y las opciones con las que se ejecuta

``` root@debian-11:~# which zerofree ⬅️ /usr/sbin/zerofree ✅

root@debian-11:~# zerofree ⬅️ usage: zerofree [-n] [-v] [-f fillval] filesystem ```

Ejecutar el programa zerofree para rellenar el sistema de archivos con 0x00.

root@debian-11:~# zerofree -v /dev/sda1 ⬅️ 0.0% ... 100.0% ✅ 12280/1827419/2371072

Apagar la máquina inmediatamente.

```

poweroff ⬅️#

```


Manejo de imagenes OVA en la máquina física#

Warning

  • Ejecutar estos comandos en la máquina física

Compactar el disco de la máquina virtual#

Listar el tamaño del disco de la máquina virtual.

tonejito@laptop:~/VirtualBox VMs/Debian-11$ ls -l *.vdi ⬅️ -rw------- 1 tonejito tonejito 4707319808 oct 24 12:32 Debian-11.vdi

Tamaño disco original VDI

Ejecutar el comando para compactar el disco VDI.

tonejito@laptop:~/VirtualBox VMs/Debian-11$ VBoxManage modifyhd "Debian-11.vdi" -compact ⬅️ 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

Verificar que el disco de la máquina virtual haya sido compactado.

tonejito@laptop:~/VirtualBox VMs/Debian-11$ ls -l *.vdi ⬅️ -rw------- 1 tonejito tonejito 2360344576 oct 25 22:33 Debian-11.vdi ✅

Tamaño disco VDI compactado

Exportar la máquina virtual#

Exportar la máquina virtual a una imagen OVA

Pantalla principal de VirtualBox
Menú exportar
Seleccionar máquina virtual
Configuración OVA
Información OVA
Exportando imagen OVA…
Tamaño disco original VDI
Tamaño imagen OVA

Importar imagen OVA#

Importar la máquina virtual desde la imagen OVA

Menú importar
Seleccionar imagen OVA
Buscar imagen OVA
Configuración OVA
Importando imagen OVA…

Referencias#