55 lines
1.5 KiB
Bash
55 lines
1.5 KiB
Bash
|
|
(pkgs.writeShellScriptBin "wipe" ''
|
|
echo "Detecting in 15 seconds..."
|
|
sleep 10
|
|
echo 1 > /sys/bus/pci/rescan
|
|
sleep 5
|
|
|
|
if [ ! -e "/dev/nvme0n1" ]; then
|
|
echo "Rebooting in 3 seconds. If still not detected, NVMe is DOA."
|
|
sleep 3
|
|
reboot
|
|
else
|
|
echo "NVMe detected!"
|
|
fi
|
|
|
|
mkdir -p "/home/nps/logs"
|
|
SN="$(nvme id-ctrl /dev/nvme0n1 | awk '/^[[:space:]]*sn[[:space:]]*:/ {print $3; exit}')"
|
|
LOG_FILE="/home/nps/logs/$SN.log"
|
|
touch "$LOG_FILE"
|
|
|
|
echo "Wiping NVMe..."
|
|
nvme format /dev/nvme0n1 --ses=1 --force | tee "$LOG_FILE"
|
|
WIPE_STATUS=''${PIPESTATUS[0]}
|
|
|
|
smartctl -a /dev/nvme0n1 | tee -a "$LOG_FILE"
|
|
SMART_STATUS=''${PIPESTATUS[0]}
|
|
|
|
echo "Resetting parent PCIe bridge ($PARENT_BRIDGE) resources to disconnect NVMe in 15 seconds..."
|
|
echo 1 > "/sys/bus/pci/devices/0000:09:00.0/remove"
|
|
|
|
sleep 15
|
|
|
|
echo "NVMe disconnected and is safe to remove."
|
|
echo ""
|
|
|
|
# --- Final Confirmation ---
|
|
echo "==================================="
|
|
echo " RESULTS SUMMARY "
|
|
echo "==================================="
|
|
|
|
if [ "$WIPE_STATUS" -eq 0 ]; then
|
|
echo "WIPE: [ SUCCESS ]"
|
|
else
|
|
echo "WIPE: [ FAILED ]"
|
|
fi
|
|
|
|
if [ "$SMART_STATUS" -eq 0 ]; then
|
|
echo "SMART: [ PASSED ]"
|
|
else
|
|
echo "SMART: [ FAILED ]"
|
|
fi
|
|
|
|
echo "==================================="
|
|
'')
|