I am running Parrot OS as a guest on Virtualbox 6.1.20. The host is Windows 10 Home. I am trying to reduce the size of the .vdi for Parrot after it has dynamically grown during updates. I have sites to do this but they all include using the command zerofree to trim the guest of unused disk space.
When I run zerofree I get the error in the Subject: failed to open filesystem /dev/sda5 which is where / is mounted. I attached the live CD System Rescue Disk in Virtualbox. I can see the partition when I do a fdisk -l but I still get the error above.
Zerofree works in Rescue Mode in Ubuntu so I am stumped as to what is going on with Parrot. Any help would be appreciated.
Parrot version in use(if you are not aware of it, open terminal and type cat /etc/os-release | grep VERSION):
Linux parrot 5.14.0-9parrot1-amd64 #1 SMP Debian 5.14.9-9parrot1 (2021-10-26) x86_64 GNU/Linux
Hypervisor used:
Not using Hypervisor.
Logs/Terminal output(use pastebin or similar services):
I don’t know what logs to attach. The terminal out put is this:
zerofree -v /dev/sda5
zerofree: failed to open filesystem /dev/sda5
Ah. Okay. I did not do anything special when I installed Parrot so I must be using the brtfs filesystem. Is there an equivalent tool for the brtfs or another way to achieve the same “trimming” effect so I can use the VirtualBox command that does the compaction?
I am now wondering if I have to do this in maintenance mode and if so what is the password for root to get into that mode when I start parrot. I tried toor and some other similar options but none worked.
It might be that I don’t even have to be in maintenance mode for the above two commands to do what zerofree does. If I can get clarification on that, it would be great.
I performed the above dd operation. All that did was maximize the vdi file to its fullest extent. Now I am in trouble as I am almost out of disk space on the host machine.
I tried:
sfill -l -l -z /
After running VBoxManage modifymedium disk --compact /
The .vdi file remains the same size even though df in the virtual machine shows only about half of it in use.
I tried fstrim but that gave me the following error:
fstrim: the discard operation is not supported
Is there any other alternative to zerofill for a btrfs file system that might work? I am not having much luck in my google search.
I figured out a way to compact the vdi of my parrot OS guest on a Windows 10 host.
I attached a Knoppix live CD iso to the optical device in VirtualBox associated with parrot OS.
Knoppix started up.
As root I did the following:
apt update
apt-get install secure-delete
mount /dev/sda5 /mnt where /dev/sda5 is where the / partition is
sfill -l -l -z -v /mnt #this does an insecure single pass writing zeros to the unused space
It takes a while for this last step.
umount /mnt
Then I shutdown Knoppix and without starting the virtual machine up again I immediately ran
VBoxManage.exe modifymedium disk “C:path of vdi” --compact
I then disconnected the Knoppix ISO from the optical device in VirtualBox.
I read something about the BTRFS mounting partitions with compression so the first time I ran this I must of run the virtual machine before running the VBoxManage command and it compressed the zeros. Just guessing here.
Regardless my problem is solved. I hope others find this useful as there is not a lot of information about how to compact a BTRFS file system vdi out there in a single place.