Everything you need to run tScrub — from boot to a verifiable report.
Part 1 · Get started
New to tScrub? Start with the Getting started guide — account → licence → boot → report → certificate.
nvme-cli, hdparm, nwipe (SCSI), smartctl (SMART), lftp (upload), openssl (signing)Part 2 · Build & run
tScrub ships ready to boot — there is nothing to compile. Download the appliance from the Download page (no account needed), then sign in and issue your licence from the Licences page:
sedutil-cli, curl, lftp and the report tooling built in..lic file — every appliance needs one (the free tier is included).tScrub is a single self-contained script embedded in the image (at /usr/bin/tscrub.sh). Security teams can extract it from the ISO to audit it line by line.
tscrub # full run (wipes all supported drives) tscrub --dry-run # discover and classify, wipe nothing tscrub --output /mnt/usb # write the report to /mnt/usb tscrub --dry-run --simulate-running-eta=10 # simulated run with live progress
tScrub prompts for a COCID, then wipes all supported drives in parallel. Frozen, locked, or blocked drives are flagged rather than marked clean.
Part 2b · Deploy — USB & PXE
The appliance download is a hybrid ISO (boots on both BIOS and UEFI, ~150 MB). Always verify its SHA-256 against the .sha256 file published next to it before writing it to a stick.
Secure Boot supported: the appliance boots with UEFI Secure Boot on, via a signed shim + MOK chain. On the first boot on a machine, shim opens MokManager — choose Enroll MOK → Continue → Yes, then reboot. After that it boots normally. (You can also simply disable Secure Boot or enable CSM/Legacy boot.)
dd) so it boots correctly.Either use the balenaEtcher GUI (flash the ISO to the stick in three clicks), or the command line:
diskutil list # identify your stick, e.g. /dev/disk2 diskutil unmountDisk /dev/disk2 sudo dd if=<downloaded-iso> of=/dev/rdisk2 bs=4m && sync
Use the raw device (/dev/rdisk2, not /dev/disk2) — it writes much faster.
lsblk # identify the stick, e.g. /dev/sdX sudo dd if=<downloaded-iso> of=/dev/sdX bs=4M status=progress && sync # equivalent: sudo cp <downloaded-iso> /dev/sdX && sync
Write to the whole device (/dev/sdX), never a partition (/dev/sdX1).
The appliance kernel is self-contained (its initramfs is embedded, gzip-compressed, inside bzImage), so PXE needs only the kernel file plus a standard DHCP → TFTP → iPXE chain. This is the same two-stage HTTP-boot pattern used to netboot ShredOS (see the tadvaas/pxe reference setup).
undionly.kpxe (legacy BIOS) or ipxe.efi / snp.efi (UEFI; use snp.efi if an HP or multi-NIC system picks the wrong adapter).tftpd-hpa) — serves the iPXE firmware only.bzImage (extracted from the ISO).#!ipxe
:tscrub
dhcp
kernel ${base-url}/tscrub/bzImage console=tty3 loglevel=3
tscrub_api_token=YOUR-64-HEX-TOKEN
boot
There is no initrd line — the initramfs is inside bzImage. Append any tScrub kernel parameters (report destination, licence) directly to the kernel line. The licence can be served over the LAN too: tscrub_license_url=http://pxe-host/tscrub/license.key.
bzImage)bzImage is inside the appliance ISO at /boot/bzImage (shown as /BOOT/BZIMAGE in some listings). Extract it on any OS, then put it on your HTTP server.
Open the ISO with 7-Zip (7-Zip opens ISO files as archives): right-click the downloaded ISO → 7-Zip → Open archive, then drag boot\bzImage out to a folder. Copy it to your HTTP server (e.g. via WinSCP/scp) as bzImage.
# mount the ISO, then copy the kernel out hdiutil attach <downloaded-iso> cp /Volumes/TSCRUB/boot/bzImage ./bzImage hdiutil detach /Volumes/TSCRUB # or extract without mounting (bsdtar ships with macOS) bsdtar -xOf <downloaded-iso> boot/bzImage > bzImage
# from the ISO, without mounting (note the ";1" Rock Ridge version suffix) isoinfo -x /BOOT/BZIMAGE.;1 -i <downloaded-iso> > bzImage # or mount it and copy mkdir -p /mnt/iso && mount -o loop,ro <downloaded-iso> /mnt/iso cp /mnt/iso/boot/bzImage /srv/pxe/tscrub/bzImage umount /mnt/iso
Place bzImage on your HTTP server (e.g. nginx /srv/pxe/tscrub/bzImage) and point ${base-url} at it in boot.ipxe.
Where the report lands is chosen at boot time, on the kernel command line (the same place for every boot method). You can combine them — tScrub writes locally first, then uploads.
| Destination | Kernel parameter | Notes |
|---|---|---|
| USB stick (default) | — (automatic) tscrub_output=/path | Writes to the same volume the .lic was found on — the TSCRUB-USB partition with dd/Etcher, or the single partition with Rufus ISO mode — under reports/<COCID>/. Override with tscrub_output=. |
| tScrub dashboard | tscrub_api_token=<64-hex> | Needs curl + a CA bundle — both built into the appliance image. The dashboard URL is built in; the token (an appliance token from the Licences page) is all you supply. |
| FTP / SFTP server | tscrub_output=ftp:host:path:user:pass tscrub_output=sftp:host:path:user:pass | Uses lftp (built into the appliance image). Path is relative to the FTP/SFTP user's home. Use a dedicated account; credentials are visible in the boot config. |
tscrub.conf fileYou don't have to edit GRUB or the kernel command line — drop a tscrub.conf on the stick (next to your .lic) and tScrub reads it at boot:
tscrub_api_token=YOUR-64-HEX-TOKEN tscrub_cocid=12345 tscrub_license_url=http://192.168.1.10/license.key tscrub_output=ftp:backup.example.com:incoming/tscrub:itad:s3cret
Keys mirror the kernel parameters: tscrub_api_token pushes reports to your dashboard, tscrub_cocid enables unattended runs (no prompt), tscrub_license_url fetches the licence over the LAN, and tscrub_output points reports at a local path or an ftp: / sftp: server. Command-line flags always take precedence. Editing the GRUB entry on the stick also works when the boot partition is writable (Rufus ISO mode or Ventoy), but tscrub.conf works however you wrote the stick.
Full details and examples are in section 5, Getting reports off the appliance.
Part 3 · Reports
Each job produces a CSV report plus a JSON manifest; a signature sidecar is written whenever OpenSSL is available (always, on the appliance image):
tScrub_48213_20260912T103000Z.csv # human-readable report (one row per drive) tScrub_48213_20260912T103000Z.json # manifest (SHA-256, public key, drive summary) tScrub_48213_20260912T103000Z.sig # base64 Ed25519 signature (vendor key on paid, appliance key on free)
The CSV columns are: COCID, Timestamp, Model, Serial, Size, Bus, Type, Device, Class, Certification, Method, FinalStatus, SMART, TempC, PowerOnHours, PowerCycles, ReallocSectors, PctUsed, AvailSpare, TBW_TB, SMARTPOST, TempCPost, PowerOnHoursPost, System, SystemSerial, BaseboardSerial, CPU, GPU, RAM — the machine's make, serials, processors, graphics, and memory are repeated on every drive row.
At the end of a run tScrub writes the report files locally, then optionally uploads them. Everything is configured at boot time on the kernel command line (PXE, GRUB, or the appliance boot entry) — not inside the script.
Where the report is written — tScrub saves to the same volume it found your .lic on (with dd/Etcher that's the TSCRUB-USB partition; with Rufus ISO mode it's the single writable partition), then falls back to a FAT/exFAT scan, then RAM. Reports are grouped under reports/<COCID>/, and the partition is synced and unmounted before reboot so nothing is lost on power-off. Override the location with tscrub_output=:
tscrub_output=/mnt/usb
Layout on the stick:
reports/
└── 11111/
├── tScrub_11111_20260922T161328Z.csv
├── tScrub_11111_20260922T161328Z.json
└── tScrub_11111_20260922T161328Z.csv.sig
Push to the dashboard (network) — send the report straight to your tScrub account. The token comes from the Licences page of your dashboard. The appliance image ships curl and a CA-certificate bundle, so this works out of the box:
tscrub_api_token=YOUR-64-HEX-TOKEN
Upload via FTP or SFTP — upload the report files to an FTP or SFTP server. Both run over lftp, which is built into the appliance image:
tscrub_output=ftp:host:path:user:password # e.g. tscrub_output=ftp:backup.example.com:incoming/tscrub:itad:s3cret # SFTP (encrypted): tscrub_output=sftp:backup.example.com:incoming/tscrub:itad:s3cret
ftp or sftp is the protocol. host is the server, path is the remote directory (relative to the user's home, no leading slash), then the username and password.
The password must not contain spaces, and credentials are visible in the boot configuration — use a dedicated upload account.
Anyone can verify that a report is unchanged and, where licensed, attributable:
tscrub verify tScrub_48213_20260912T103000Z.csv SHA-256: 4614d837... Manifest: OK Signature: VALID
You can pass a public key explicitly: tscrub verify report.csv public-key.pem. A tampered report fails with MISMATCH or INVALID. A report with no signature (no OpenSSL available) shows Signature: none (checksum only).
The official tScrub vendor public key fingerprint (for audit reference):
be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02
Turn one or more tScrub reports into a single, printable Certificate of Destruction. Upload the .csv files (and, if you have them, the matching .json and .csv.sig sidecars) on the dashboard Reports page, then select the Chain of Custody ID on the Certificates page to generate a consolidated certificate.
.csv is hashed (SHA-256) and, when a manifest is present, checked against its recorded checksum.Each certificate carries a unique Certificate ID (COD-…). Scanning the QR code — or visiting tscrub.com/verify?cert=COD-… — looks up the issuance record and confirms:
Part 4 · Reference
| Tier | Report signing |
|---|---|
| Free | Self-signed, appliance-generated key (tamper-evident, not attributable) |
| Pay-as-you-go / Team / Enterprise | Vendor-issued key (proves attribution to a customer) |
Licences are self-serve: sign in at tscrub.com and issue one from the Licences page of your dashboard. You'll receive a .lic JSON file. Free licences carry no report key, so the appliance self-signs reports with its own generated key (tamper-evident, not attributable); paid licences embed a vendor-signed report key, so the appliance signs reports with that key, the licence verifies against the tScrub vendor key, and uploaded reports are matched back to that key so they are attributable.
The appliance looks for a licence on the boot USB first — drop your .lic at the root of the stick (as license.key or any *.lic) and it is picked up automatically. Failing that it falls back to /etc/tscrub/license.key, or you can point at it explicitly with --license:
mkdir -p /etc/tscrub && cp "Acme-ITAD-Ltd-2027-09-12.lic" /etc/tscrub/license.key tscrub --license /path/to/Acme-ITAD-Ltd-2027-09-12.lic
For appliance / PXE boots, set the licence path on the kernel command line:
tscrub_license=/etc/tscrub/license.key
The licence can also be fetched over the local network instead of a filesystem path. Use --license-url when running directly, or the URL form of the kernel parameter for appliance/PXE boots:
tscrub --license-url http://192.168.1.10/license.key tscrub_license_url=http://192.168.1.10/license.key
Fetching requires curl or wget on the appliance. Because a .lic contains the private report-signing key, host it on an authenticated or isolated LAN endpoint — not a public URL.
Every appliance requires a valid licence — even the free tier. Without one, tScrub exits with an error.
Vendor public key (published for audit verification):
-----BEGIN PUBLIC KEY----- MCowBQYDK2VwAyEAbBDdsD4wQh7aoBRe890V8LcTOZNe6n6Cvh0AkrBA4B4= -----END PUBLIC KEY-----
Fingerprint: be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02
Each release is checksummed and signed; the signing key is recorded so older downloads and licences stay verifiable. Reports themselves verify against their own embedded key, so they never depend on this history.
| Release | SHA-256 | Signing key fingerprint |
|---|---|---|
| tscrub v1.4.45 | e086413cdaf5192118c6e16e60341d693d7423357c48beffae9ae7aec3c3dc78 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.44 | 71b5a4b66cd57e8d1537ce7f4562313043c5326d8e7f2060640815a218fc5492 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.43 | be16648bcb3dda574870b6dee632c63397366b46e6edbac59cb97c366f814321 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.42 | 07226090c9b672b215850e4471cf817bff2bd88197a1d8f4ac0a6dc43c429823 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.41 | 23c259abe92178eaebfca8342a5318d5019f17eb7c21bf0b8de13fb3e831a315 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.40 | 42671f9b53e523461eb86b56daf7a5c606b207aa2764ea9132c2ddd1845e0bcb | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.39 | d04a7c307a9dd529cd90c37513b155041edc9f110bfcb733446b5919389586c3 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.38 | 4662ddf1b2e0f7c16b7ff1ca34f93d72be2f52607902d749a71bed427a3f5ff6 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.37 | c9719d61495bb7c30129e76296df0b8afac3220a183278cf8e360a6526e29c09 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.36 | b1a961bac1d5f0470cf55dd31a0655b45995482aa418d80eb2baf0d2dacb1f4f | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.35 | a2ffa69d360b24ec1a3632f16f7fd183e3bec706372332b76ce6f5cebec56b69 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.34 | 88580e54627b69e466e7e5a947241d2aac1025d3f44ad10eac558015e2f7ba18 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.32 | f02a809312e245e44b2b05f1eef149aa8e85e4ee48700aec944e70137cfd9eb7 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.31 | a9ac1c76f1528791fd6070b89bbee2d5448aa68cfc50900d1c53add60c64167c | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.30 | d0348dec5b4388ee5407758b262284838208249eeb7b3018093dc6ad90fc4e20 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.29 | 1047ffa11318c3e81d28794bfad7de76a3c206d6f83a5174789909789bc26b93 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.28 | 6282c3f19e852f8d1a8e870ac856ad8335be6cbe1f2de8b13a01ec49186ebb79 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.27 | 27860ac93c64349182039ddf4b884056a0b16973e3fc28db65d8a0c8a6f9a002 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.26 | 6c87fffaf92224cd47a68c59d2e55a74cbad4531395b4bab68279d86def4ac28 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.25 | 8c949e36731f1f7351e5c2a1b8ffca5d3d5bc49e807bdb8e4298a77285273871 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.24 | a4e053fc56bd2947aaa4139073247efb5c534901508aae77eb9366296b1d864e | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.23 | bcb9b666f2b4a5de5143259c36ba23b82da8c234b652e98bfea50c14dec11f09 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.22 | ce7093f9c4c16e095a5fc5b04cadc7e9dec7d0bccb90433d13b6b8ce1fb721df | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.21 | f44dfa3382334fdc29842eb8a31e70d0dfe0bddde4f9b7191f8576725886b742 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.20 | 6e5735c88ecbf774312fdfde672efbfdffb4a178d02008c3b6d46137449fe910 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.19 | 83c6bbdde86be32bdc2f9737884370082589017f2bc9e2db704df8d3da4bf3ad | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.18 | e85fa74dc80d9ed96a309ef3840f6f26d3782e37ba3905756707aa649723c498 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.17 | 3f0e76abbdbcfd321896cf4c900cf2a059d70eb4ba174a049dca701a8118c5f5 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.16 | 850f875bc42dcae06158db9c6a03cd393af50248d1fe34545a7672b20f9bc77c | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.15 | 9960edcfe69cf37527b04b6968c0c24d860cf45f80920844731958b6b0b9ef13 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.14 | 9b61bcfedba59ef3f857378c561c1111304c4524ef8832c6934a3439f5914da2 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.13 | 03c17cff51850227952a5cdb5b0f3d0cf5f7c2d164521943f1d5da09e120c1dc | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.12 | c88c8776c19380846aca14d7721f364adc63993929a53d5120df10746b8eaff2 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.11 | 67e6bcbf5f028fd1932ab4e91b98bbf74734994498ae8e9af1cbf74db03da6ed | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.10 | 9e97d6f86e4e0c811840b956908690221ed1f89918cbe9e9e186b6be77214eff | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.9 | e0083118e2f1f4ce8759c6045775d20d2c0049e1d617d5a379add3b57abd2a5a | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.8 | e4d8b49c218ecd99c17ac700b18747bea791e3f3601c7baa3ed1f32d0634d4c9 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.7 | de1e8dad1a358acb383a3ca0e7ab3ad10de82d6a1f076d733bc144998c2a4dcd | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.6 | 93f85aaf6d9f742d55638fc6fd577610307d5fdd86c42b619e9ecbd75a88c6b9 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.5 | d868c74e4bb50d25575ff6c33f595e27eaacf9cc929d5001348f4fec817e6a98 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.4 | 8b0ea2c6ae6036a63b87014cb8808143523262a92cf57db8cc56e2d796680bc4 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.3 | a9422a8ed5b3db589bb175b0c3b6704e54e6a3e7a91cfe190db54a82d7a8e8b2 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.2 | a8f44ffdd94550445b3d83a4cc7013490998242cc7b3f58d2fdbb5cff996c0df | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4.1 | ef843f04cc51851896727e432ba55586c26e41b3ee9493956c952abcfcb94958 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.4 | 36348783dd508dfae90804edc792286958483a1ce337bea33e144d8c6e09ec5d | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.3 | 425dce8629ebfa38a671d992e884bbfcfbfecfc558113d0241acac734d21c3b5 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.2 | 80182216d58926902627bd4a68365ba446410b88683d9f41dcc028fc963e7df4 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.1 | e87549ead705b5d618c8fd21bd18375e21d4088bb4e3d8205770136432323ee0 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
| tscrub v1.0 | 85e83b2f09dcc020d96787b4d92ce8604e475364c0856d61e8253df9b11b67a0 | be81586c42b5fb2451f7691782c08376c2038d277e79710ff45294409b476c02 |
When the vendor key is rotated, the old public key is listed here (never deleted) so licences and releases signed by it remain verifiable.
| Drive type | Method | Outcome |
|---|---|---|
| NVMe | Crypto / block / overwrite sanitise, or format | Purge / Clear |
| SATA / ATA | Enhanced or standard security erase | Purge / Clear |
| SCSI / SAS | nwipe quick | Clear |
| Frozen / locked / unsupported | — | Flagged for physical destruction |
Everything tScrub needs at boot is set on the kernel command line; these parameters are read from /proc/cmdline at startup.
| Parameter | Purpose |
|---|---|
| tscrub_cocid=12345 | Chain of Custody ID. Setting it skips the prompt and runs non-interactively (autonuke). |
| tscrub_license=/path.lic | Read the licence from a filesystem path. |
| tscrub_license_url=http://… | Fetch the licence over the network. |
| tscrub_output=/mnt/usb | Where to write the report (a filesystem path). |
| tscrub_output=ftp:host:path:user:pass | Upload the report over FTP. |
| tscrub_output=sftp:host:path:user:pass | Upload the report over SFTP (encrypted). |
| tscrub_upload=<url> | Optional — overrides the built-in dashboard endpoint (https://tscrub.com/api/reports). |
| tscrub_api_token=<64-hex> | Appliance token from the Licences page — pushes the report to your dashboard. |
| shredos_output=ftp:host:path:user:pass | Deprecated — former name for tscrub_output=ftp:…. Still accepted for backwards compatibility. |
Defaults: the licence is read from the boot USB (a license.key or *.lic at the stick's root), then /etc/tscrub/license.key, unless tscrub_license= / tscrub_license_url= is set; the report is written to the first writable FAT32 partition (the boot stick), then RAM, unless tscrub_output= overrides it.
The kernel command line is supplied by the bootloader, so how you set it depends on how you boot:
/boot/grub/grub.cfg (BIOS) or /EFI/BOOT/grub.cfg (UEFI) on the stick, appending your parameters to the linux line.console=tty3 loglevel=3, then press Ctrl+X. This affects that boot only.kernel line of your boot.ipxe (see Boot over the network).The same settings can be passed as flags when you run tscrub directly (for example on the appliance console). There is also a verify subcommand for checking reports offline.
| Flag | Purpose |
|---|---|
| --cocid 12345 | Chain of Custody ID; runs non-interactively (autonuke). |
| --license /path.lic | Read the licence from a path (default: boot USB, then /etc/tscrub/license.key). |
| --license-url URL | Fetch the licence from a URL. |
| --output /mnt/usb | Write reports to a directory (default: boot USB, then RAM). |
| --dry-run, -n | Discover and classify drives without wiping anything. |
| --simulate-running-eta=MINUTES | With --dry-run, simulate a running job's live progress. |
| verify report.csv [pub.pem] | Verify a report's SHA-256 and (optional) Ed25519 signature. |
| --help, -h | Print usage. |
Download the appliance image and issue your licence, or see pricing for signed reports and support.