Arch Wiki has a rather decent article about wiping disks: https://wiki.archlinux.org/title/Securely_wipe_disk
Assuming your Pi runs a Linux distro, most of those tools should be already present on your system.
Yes! You can use SATA secure erase features. Give me a few and I’ll post a brief set of commands.
OK, to be clear, you can boot to raspbian or your distro of choice and use hdparm if you have a proper SATA controller and connection. This does not work on NVME drives.
#shred
If you have a spinning disk and either are forced to use a USB to SATA adapter or if the drive itself does not support secure erase, then you can use the shred command.
shred -fv /dev/sdb
will write random data to the sata device sdb. f is for force and v is for verbose. You can add z to add an extra zero pass and z to change the number of passes. That means that
shred -z -n 5 /dev/sdb
should do 5 passes and then zero on drive sdb
It will ALSO work for older parallel drives that identify as hd or that still appear as sd with a USB adapter. You had better check your devices with a lsblk before you run it. It will probably overwrite the OS of a running system.
Last word on shred is that it is ungodly slow. One pass of 1 tb takes 1.5 to 3 hours.
#hdparm
For SATA drives that support it, you can use hdparm. A deep explanation of what I’m doing is available here: https://grok.lsu.edu/article.aspx?articleid=16716. I could write out how to do it, but it goes into greater detail.
For forcing the system to sleep, you may need to
echo disk | sudo tee /sys/power/state
Also, be sure to set a password when prompted. If you omit the password, you may brick the drive. I have rarely been able to unbrick a drive.
This process may take several hours. The output of hdparm -I (that is an uppercase i) should tell you how long.
#NVME
Check processes here: https://wiki.archlinux.org/title/Solid_state_drive/Memory_cell_clearing#NVMe_drive
I have followed them once upon a time, but i haven’t done it in years and cannot offer solid advice.
Very helpful, thank you! One question on this:
a proper SATA controller and connection
Are we just talking about a SATA hat here?
I’m not familiar with the hat, you can always run hdparm /I against the drive and see what the output is.
It’s funny, I was about to post a reply to help - but I looked up my answer (just to me sure), and it turns out I was wrong!
So I’m learning something here, too. Bookmarked so I can see what Spikes posts later
Turns out my comments were not brief, but once you get the hang of it you can write down the commands you are using and repeat them.
I scripted the whole thing for work, so it is getting more and more rusty.