ssd_show_data() {
local location="${1:-0}" # In bytes
sudo dd if=/dev/nvme0n1 bs=1 count=9000 skip="${location}" status=none | hd
}
# ssd_write_data <data_message> [location]
#
# location is the offset in bytes.
ssd_write_data() {
local data="$1"
local location="${2:-0}" # In bytes
echo "${data}" | sudo dd of=/dev/nvme0n1 bs=1 seek="${location}" status=none
}
# Simply write 0's over the 9000 byte region we care about, so that
# when we do ssd_show_data, we only see the bytes we wrote with ssd_write_data.
ssd_write_zeros() {
sudo dd if=/dev/zero of=/dev/nvme0n1 bs=9000 count=1 status=none
}sudo nvme format --lbaf=1 /dev/nvme0This is without initializing locking mechanism.
ssd_write_data 'Hello world!'
ssd_show_data
sudo nvme format --ses=2 /dev/nvme0n1 --force
ssd_show_dataMore Comprehensive Test
for gb in 0 256 512 1024; do
ssd_write_data 'Hello world!' "$(( gb * 1024 * 1024 * 1024 ))"
done
for gb in 0 256 512 1024; do
echo "Checking at $gb GBs."
ssd_show_data "$(( gb * 1024 * 1024 * 1024 ))"
done
sudo nvme format --ses=2 /dev/nvme0n1 --force
for gb in 0 256 512 1024; do
echo "Checking at $gb GBs."
ssd_show_data "$(( gb * 1024 * 1024 * 1024 ))"
donessd_show_data
ssd_write_data 'Hello world!'
ssd_show_datasudo nvme sed discover /dev/nvme0n1
sudo nvme sed initialize /dev/nvme0n1
sudo nvme sed discover /dev/nvme0n1
ssd_show_data
# I still see the data, so no encryption was reset.# Disable the locking feature
# Adding '-e' to revert will trigger crypto erasure.
sudo nvme sed revert /dev/nvme0n1
sudo nvme sed discover /dev/nvme0n1
ssd_show_data
# I still see the data, so no encryption was reset.ssd_write_data 'Hello world!'
ssd_show_data
sudo nvme format --ses=2 /dev/nvme0n1
ssd_show_data
# Zerossudo nvme sed initialize /dev/nvme0n1
ssd_write_data 'Hello world!'
ssd_show_data
sudo nvme format --ses=2 /dev/nvme0n1
# Success formatting namespace:1
ssd_show_data
# ZerosIt does not appear that simply taking ownership with password blocks the normal erasure.
ssd_write_data 'Hello world!'
ssd_show_data
sudo nvme sed lock /dev/nvme0n1
sudo nvme format --ses=2 /dev/nvme0n1 --force
# NVMe status: Invalid Format: The LBA Format specified is not supported(0x410a)
sudo nvme sed unlock /dev/nvme0n1
# No password needed.I think using the normal default drive encryption is sufficient. To setup a SED drive for use, simple run the above test, where we write a bunch of data at parts of the disk, call sudo nvme format --ses=2 /dev/nvme0n1 --force, and then ensure that the data written is gone.