LinuxマシンでATA Secure Erase

 SAT対応のコントローラーは、JMicron JMS580とかJMS851Dとからしい。ASMedia ASM1051E / ASM1153Eの実績も多いけど、Secure Eraseが通るのはまれな感じ、

 前にAliexpressで買った手持ちのUSB-eSATAアダプタを確認してみる。

 JMicron JMS579っぽい。eSATA接続したドライブを見てみた。

 JMS579:

 製品ID: 0x0567

 製造元ID: 0x152d (JMicron Technology Corp.)

 バージョン: 4.04

 シリアル番号: 74D7334D24A7659

 速度: 最高5 Gb/秒

 製造元: JMicron

 場所ID: 0x01200000 / 1

 利用可能な電流(mA): 900

 必要な電流(mA): 8

 高負荷時消費電流(mA): 0

 Media:

 EURX-14T0FY0:

 容量: 2 TB(2,000,398,934,016バイト)

 リムーバブルメディア: いいえ

 BSD名: disk4

 Logical Unit: 0

 パーティションマップのタイプ: GPT(GUIDパーティションテーブル)

 S.M.A.R.T.状況: 検証済み

 USB Interface: 0

 ボリューム:

 EFI:

 容量: 209.7 MB(209,715,200バイト)

 ファイルシステム: MS-DOS FAT32

 BSD名: disk4s1

 コンテンツ: EFI

 ボリュームのUUID: 0E239BC6-F960-3107-89CF-1C97F78BB46B

 disk4s2:

 容量: 2 TB(2,000,189,177,856バイト)

 BSD名: disk4s2

 コンテンツ: Apple_APFS

 なんかイケそうな感じじゃん。

 macOSからの実行は難しそうね。

 動いているPi5につないでみるか。

kinneko@Pi5:~ $ lsusb
Bus 002 Device 002: ID 152d:0567 JMicron Technology Corp. / JMicron USA Technology Corp. JMS567 SATA 6Gb/s bridge

 とりあえず見えている。JMS567と出ているのは、VID/PIDの組み合わせから表示しているのかな。

 ストレージデバイスの特定。sdaで500GBっぽいね。中はなんか入っている感じ。

$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0         7:0    0     2G  0 loop
sda           8:0    0 465.8G  0 disk
├─sda1        8:1    0 449.8G  0 part
├─sda2        8:2    0     1K  0 part
└─sda5        8:5    0    16G  0 part
mmcblk0     179:0    0  28.9G  0 disk
├─mmcblk0p1 179:1    0   512M  0 part /boot/firmware
└─mmcblk0p2 179:2    0  28.4G  0 part /
zram0       254:0    0     2G  0 disk [SWAP]

 フォーマットはなんだろう?

$ lsblk -f /dev/sda
NAME FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sda
├─sda1
│    ext4   1.0         faf72273-ba5c-4ad4-9326-a108348f8413
├─sda2
│
└─sda5
swap   1           e1e13064-9ad2-418c-9a52-cbc83026f815

 マウントしてみると、sda1の中身は、2017年6月15日にMinerGateを試していたという感じの中身だった。起動しただけで実際にマイニングが成功したログはなかったし、MinerGateそのものはサービスが終わっているので、ウォレットもそのまま消えている感じ。これは消しても問題なさそう。

 あらら、起動しようと思ったら、Pi5にはhdparmがないよ。

kinneko@Pi5:~ $ sudo hdparm -I /dev/sda
sudo: hdparm: command not found

 なんかのパッケージに含まれるんだっけ? 単体であったわ。

kinneko@Pi5:~ $ apt-cache search hdparm
blktool - tune low-level block device parameters
hdparm - tune hard disk parameters for high performance

 入れる。

kinneko@Pi5:~ $ sudo apt install hdparm

 ATA Security の状態を確認する。

kinneko@Pi5:~ $ sudo hdparm -I /dev/sda

 /dev/sda:

 ATA device, with non-removable media

 Model Number: Hitachi HDS721050CLA362

 Serial Number: JP1521HN1GTV3A

 Firmware Revision: JP2OA3BD

 Transport: Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6; Revision: ATA8-AST T13 Project D1697 Revision 0b

 Standards:

 Used: unknown (minor revision code 0x0029)

 Supported: 8 7 6 5

 Likely used: 8

(snip)
Security:
Master password revision code = 65534
supported
not	enabled
not	locked
not	frozen
not	expired: security count
not	supported: enhanced erase
116min for SECURITY ERASE UNIT.
Logical Unit WWN Device Identifier: 5000cca35bd4d1f4
NAA		: 5
IEEE OUI	: 000cca
Unique ID	: 35bd4d1f4
Checksum: correct

 この結果からわかるのは、以下。

 supported → ATA Security対応

 not enabled → 現在パスワード未設定

 not locked → ロックされていない

 not frozen → Security設定変更可能

 not supported: enhanced erase → Enhanced Secure Eraseは非対応

 116min for SECURITY ERASE UNIT → 通常のSecure Eraseの公称所要時間は116分(約1時間56分)

 特に重要なのがnot frozen。これがfrozenだとSecurity Passwordを設定できないので、Secure Eraseできない。

 Secure Eraseを実行するために、Security Passwordを設定する。このパスワードは、一時的に設定するもので、SECURITY ERASE UNITが正常完了すると、ATA Securityは無効化され、設定したUser Passwordも無効になる。

 ただし、Secure Erase途中で電源断・USB切断・USB-SATAブリッジのエラーなどが起きた場合は、Securityが有効なまま残る可能性がある。そのため、一時パスワードは消去完了を確認するまでは覚えておく必要がある。

 ここでは、設定するパスワードはeraseとする。

kinneko@Pi5:~ $ sudo hdparm --user-master u --security-set-pass erase /dev/sda
security_password: "erase"

 /dev/sda:

 Issuing SECURITY_SET_PASS command, password="erase", user=user, mode=high

 ドライブがEnhanced Secure Eraseには対応していないようなので、通常のATA Secure Eraseを実行する。

 Enhanced Secure Erase対応ドライブなら以下のように実行する。

 sudo hdparm --user-master u --security-erase-enhanced erase /dev/sda

kinneko@Pi5:~ $ sudo hdparm --user-master u --security-erase erase /dev/sda
security_password: "erase"

 /dev/sda:

 Issuing SECURITY_ERASE command, password="erase", user=user

 SG_IO: bad/missing sense data, sb[]: 70 00 01 00 00 00 00 0a 00 00 00 00 00 1d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

 なんかエラーが返ってきているけど、プロンプトには戻っていない。実行は継続中かも。

 70 00 01 ... 00 1d ...

 ^^ ^^^^^

 │ ASC/ASCQ = 00/1d

 └ Sense Key = 01 (RECOVERED ERROR)

 ATAコマンド自体にエラーがない場合は"RECOVERED ERROR / 00h/1Dh"を返すのは正常みたい。

 JMS579側がfixed-format sense (70h)を返していて、hdparmが期待する形式とうまく合わないので、"SG_IO: bad/missing sense data"という応答になっている模様。sense data形式とhdparmの互換性問題がある感じ。

 USB-eSATAコンバーターはLEDをチカチカさせているので、削除中の感じ。ストレージ側にはLEDの点滅はないんだけど。116分待ってみるか。

 なんかプロンプト返ってきた。終了した模様。

 なんか、消えてないねぇ...

kinneko@Pi5:~ $ lsblk -f /dev/sda
NAME FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sda
├─sda1
│    ext4   1.0         faf72273-ba5c-4ad4-9326-a108348f8413  418.6G     0% /mnt
├─sda2
│
└─sda5
swap   1           e1e13064-9ad2-418c-9a52-cbc83026f815

 ダメっぽい。SATAネイティブな実機でやるかな。

$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
(snip)
sda      8:0    0 465.8G  0 disk
sdb      8:16   0 465.8G  0 disk
├─sdb1   8:17   0     1G  0 part /boot/efi
└─sdb2   8:18   0 464.7G  0 part /
$ sudo hdparm -I /dev/sda | grep "Model Number"
Model Number:       Hitachi HDS721050CLA362
$ sudo hdparm -I /dev/sdb | grep "Model Number"
Model Number:       ST3500418AS

 sdaがターゲットのようだ。パスワードは解除されている。でも、モードがfrozenになっている。これはブートローダーが勝手にやるみたいだ。めんどくさいな。

$ sudo hdparm -I /dev/sda
(snip)
Security:
Master password revision code = 65534
supported
not	enabled
not	locked
frozen
not	expired: security count
not	supported: enhanced erase
116min for SECURITY ERASE UNIT.
Logical Unit WWN Device Identifier: 5000cca35bd4d1f4
NAA		: 5
IEEE OUI	: 000cca
Unique ID	: 35bd4d1f4

 ブートドライブだけで起動して、ターゲットは起動後に挿入したらfrozenが外れた。

$ sudo hdparm -I /dev/sdb | sed -n '/Security:/,/Logical Unit/p'
Security:
Master password revision code = 65534
supported
not	enabled
not	locked
not	frozen
not	expired: security count
not	supported: enhanced erase
116min for SECURITY ERASE UNIT.
Logical Unit WWN Device Identifier: 5000cca35bd4d1f4

 パスワードを設定する。

$ sudo hdparm --user-master u --security-set-pass erase /dev/sdb
security_password: "erase"

 /dev/sdb:

 Issuing SECURITY_SET_PASS command, password="erase", user=user, mode=high

 削除を実行する。プロンプトは返ってこない。削除をやっている模様。

$ sudo hdparm --user-master u --security-erase erase /dev/sdb
security_password: "erase"

 /dev/sdb:

 Issuing SECURITY_ERASE command, password="erase", user=user

 116分待ち。

 時間がかかるのはddでやるのと同じだなぁ... ddなら進捗状況もわかるのだけど。

 終わった。特にメッセージはなし。

$ sudo hdparm -I /dev/sdb | sed -n '/Security:/,/Logical Unit/p'
[sudo] password for kinneko:
Sorry, try again.
[sudo] password for kinneko:
Security:
Master password revision code = 65534
supported
not	enabled
not	locked
not	frozen
not	expired: security count
not	supported: enhanced erase
116min for SECURITY ERASE UNIT.
Logical Unit WWN Device Identifier: 5000cca35bd4d1f4

 not enabledと出ているので、Secure Erase実行前に設定した一時パスワードeraseが解除されている。

 ATA Secure Erase は正常完了したようだ。

 一応、先頭を読んでみると、ちゃんと消えている。

$ sudo hexdump -C -n 4096 /dev/sdb
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00001000

 パーティションやファイルシステムはない。

$ sudo fdisk -l /dev/sdb
Disk /dev/sdb: 465.76 GiB, 500107862016 bytes, 976773168 sectors
Disk model: Hitachi HDS72105
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

 既知のファイルシステムやパーティションテーブルのシグネチャも検出されていない。

$ sudo wipefs -n /dev/sdb

オリジナル投稿:
LinuxマシンでATA Secure Erase|kinneko|pixivFANBOX
https://kinneko.fanbox.cc/posts/12423033