I'm using VirtualBox but the info applies to VMware. You'll just have to read the VMware documentation for the compacting section.
I am running these commands from a Debian Stretch live CD inside the guest, and have mounted the destination filesystem (/dev/sda1) as /mnt:
$ sudo mount /dev/sda1 /mnt
Disable systemd from renaming network interfaces
If you leave this enabled, you'll have different network interface names for VirtualBox and VMware so your interface definitions won't work in both!I disable this by adding the kernel parameter "net.ifnames=0", you can do this within /mnt/etc/default/grub:
GRUB_CMDLINE_LINUX="net.ifnames=0"
Then run update-grub from within a chroot:
$ sudo mount --bind /dev /mnt/dev
$ sudo mount --bind /proc /mnt/proc
$ sudo mount --bind /sys /mnt/sys
$ sudo chroot /mnt
# update-grub
# exit
$ sudo umount /mnt/dev /mnt/proc /mnt/sys
You'll now want to adjust /etc/network/interfaces (or equivalent) accordingly to reflect eth0 instead of enp0s17 or whatever.
Sanitise the log directory
Nuke the contents but leave files in place:$ sudo find /mnt/var/log -type f -exec sh -c 'cat /dev/null > {}' \;
Discard unallocated blocks
Unmount the filesystem then discard unallocated blocks:$ sudo umount /mnt
$ sudo e2fsck -E discard /dev/sda1
Compact the disk image
This is done from the host, not the guest.If you're using a VDI file, you can use modifymedium --compact:
https://www.virtualbox.org/manual/ch08.html#vboxmanage-modifyvdi
If you're using a VMDK file, you can use clonemedium:
https://www.virtualbox.org/manual/ch08.html#vboxmanage-clonevdi
No comments:
Post a Comment