はじめに

しばらく使う予定のないHDDやSSDをゼロクリアしてみた。これは、あとでもう一回やるときのための自分用メモ。

よく言われることだが、ドライブに保存したファイルは、OSから削除しただけでは簡単に復元できてしまう。なので、これまでも、HDDを破棄したり手放したりするときは、ドライブ全域にランダムデータを2回書き込み、そのあと全域に0x00を書き込んでゼロクリアしてきた。もちろんこの方法だと、代替セクタが消去されなかったり、ウェアレベリングされている物理素子にはデータが残ったりする。だが、それらは「通常の」手段では読み出せないので、ゼロクリアをしないよりは、はるかに安全だ。実際、データ復旧の専門家もこう言っている。

「個人または企業で使用しているかに関わらず、基本的にはストレージ全体を一定の値とかランダムな値で埋め尽くすデータ抹消ソフトを利用し、それを1回でも実行しておけば、私達のようなデータ復旧業者でも、データの復元を行なうのは不可能になります。これは、SSDやHDD、USBメモリ、SDカードなどストレージ機器全般に共通して言えることです」
――PC Watch, 2022年9月22日, SSDとHDD、その捨て方で本当に大丈夫?ノートPCの内蔵ストレージなど、重要データ抹消方法を専門家に聞く

ただ、このようなゼロクリアも、そのドライブが正常に動かなくなれば実行できなくなる。もう使わなさそうなパソコン、HDD、SDカードなどは、結構な数が手元にある。古いものはいつ動かなくなるとも限らない。ならばなるべく動くうちにゼロクリアしておこうと思い立った次第。

ちなみに、より完全にデータを削除するにはSecure EraseやTrim/UNMAPを使う方法もあるが、その場合でも、事前にドライブ全体をゼロクリアはしておいた方が良いと思っている。HDDのSecure Eraseに途中で失敗してそのディスクにアクセスできなくなってしまったが、その前にランダムデータ書き込みとゼロクリアしていたので「まあいっか」で済ませられた経験が、自分にもある。

それと、ゼロクリアしたものは、クリアした旨と日付をTEPRAのラベルに書いて貼るようにしている。いつクリアしたかなんてすぐ忘れてしまうので、精神衛生上これは割と重要なポイントだと思う。

SDカード

4GBのSDXCをゼロクリア。いま使っているWindows機にはSDカードスロットが無いので、9年前(2015年)購入のWindowsラップトップを引っ張り出してきて、USBメモリからFreeBSDを起動してddコマンドでゼロクリア。手順は次の通り。

  1. FreeBSD-14.1-RELEASE-amd64-memstick.imgをダウンロード
  2. Win32 Disk Imagerをダウンロードしてインストール
  3. USBメモリを刺してFATなどでフォーマット (Winにドライブとして認識させるため)
  4. Win32 Disk Imagerを起動して、USBメモリにFreeBSDのimgを書き込み
  5. USBメモリのFreeBSDから起動
  6. 起動したFreeBSD Installerで「Live System」を選択
  7. シェルが立ち上がるので、rootでログイン (パスワードは不要)
  8. キーボードをJIS配列に設定 (106xはAの左がCtrlのキーマップ。そうしたくなければ106に)

    kbdcontrol -l /usr/share/syscons/keymaps/jp.106x.kbd
    
  9. 時計が狂っていたらdate ccyymmddHHMM.SSでだいたい合わせる
  10. SDカードを刺し、dmesgでデバイスを確認 (ここではda2だったとする)
  11. ddでランダムデータを2回書き込み、0x00を1回書き込み、最後に全体が0x00になったかを確認 (ブロックサイズはお好みで。実行には時間がかかるので、間にdateを挟んで時刻を表示させる)

    date;dd if=/dev/random of=/dev/da2 bs=8m; \
    date;dd if=/dev/random of=/dev/da2 bs=8m; \
    date;dd if=/dev/zero of=/dev/da2 bs=8m; \
    date;dd if=/dev/da2 bs=8m|hd; \
    date
    
  12. syncでキャッシュを書き出し
  13. USB接続のドライブの場合、usbconfigでunitとaddrの番号を確認し(ここではugen0.4だったとする)、デバイスの電源をオフ

    usbconfig    #=> ugen0.4: ...
    usbconfig -u 0 -a 4 power_off
    
  14. SDカードを抜く

自分はFreeBSDを使ったが、Linuxでも同じような要領で行けると思う(Linuxだと/dev/urandomを使う方がいいのかな?)

HDD、SSD、USBメモリ

USBでつながるHDD、SSD、USBメモリなどは、普段ファイルサーバにしているMini PCのFreeBSD機に刺して、上の「SDカードを刺し…」以降と同じ手順でゼロクリア。

どういう理由か分からないが、PC起動時に接続していたUSBデバイスはUSB3.0(5Gbps)でつながるのに、一度抜いて刺しなおすとなぜかUSB2.0(480Mbps)接続になってしまう(すばやく刺してもこうなるので、例のゆっくり刺すとUSB2.0になる問題ではない…)。最初これに気付かず、このドライブ遅せーなーと思っていたが、ドライブのせいではなかった。仕方ないのでデバイスを切り替える都度FreeBSDを再起動して乗り切る。

USBから起動できるPC

USBからブートできるPCは、SDカードのところで作ったUSBメモリのFreeBSDから起動して、あとは同じ手順で内蔵HDDや内蔵SSDをゼロクリア。

DVDから起動できるPC

18年前(2006年)に購入し、我が家に現存している2番目に古いPCのPanasonic Let’s Note CF-W5は、USB接続デバイスからはブートできない。幸い、内蔵しているDVDドライブがまだ無事なので、DVDからFreeBSDを起動してddコマンドでゼロクリア。手順は次の通り。

  1. メイン機(Win11)でFreeBSD-14.1-RELEASE-i386-disc1.isoをダウンロード (CF-W5はCore Solo、まだ32bit機なのです)
  2. BD/DVD-RWドライブをつないで、isoをDVD-Rに書き込み (Win11はOS標準の機能でできる)
  3. CF-W5をDVD-RのFreeBSDから起動

あとはSDカードのときの「起動したFreeBSD Installerで…」以降と同じ手順で、内蔵HDD(60GB)をゼロクリア。

CF-W5にはPCカードスロットがあるので、もしCFカードが残っていたらこれでゼロクリアしようと思っていたが、さすがに現存していなかった。

iBook

我が家に現存している最古のPCは、23年前(2001年)に購入した白いiBook、いわゆるlate 2001モデルだ。これまだ電源入るのかなと恐る恐る立ち上げてみたら、懐かしいジャーン!!の音とともに無事起動した。すげえ。内蔵HDDには、Mac OS 9.2がインストールされていた。一時期Mac OS Xで使っていたような記憶もあるが、そういえば何年か前(いや十何年前?)、急にTowerがやりたくなって、Mac OS 9.2を入れ直してしばらく遊んでいたような気もする。バッテリーは完全に死んでるし、今のPCに比べればとてつもなく遅いけど、メインメモリが破格の640MBも積まれていて(GBじゃないよ、MBだよ)、DVD/CD-RWドライブまで奢っているので、まだまだ使えそうだ(何に?)。

さて、Macはどうやってゼロクリアすればと調べてみると、Classic Mac OSならDisk First Aid、Mac OS XならDisk Utilityの「消去」にある「セキュリティオプション」からゼロ消去、7回消去、35回消去が選べるとのことだが、残念ながらlate 2001は古すぎて、付属しているCD-ROMのユーティリティにはセキュリティオプションのボタン自体が存在しない。ならばHDDを取り出して別のマシンでクリアするかとも考えたが、ATA接続のHDD(シリアルじゃないよ、パラレルだよ)なんて、今や別のマシンに接続する手段がない。これは物理破壊しかないかと思いかけて、ハタと気づいた。そういえばFreeBSDにはPowerPC版もあったよなと。思えばずっと昔、タワー型のPowerMacintosh 9500にNetBSDを入れて遊んでいたことなんかもあったので、MacでもMac OS以外から起動はできるはず。

というわけで、FreeBSDのPowerPC版をDVD-Rに焼いて起動させてみたらできました。手順は次のとおり。

  1. メイン機(Win11)でFreeBSD-14.1-RELEASE-powerpc-disc1.isoをダウンロード
  2. BD/DVD-RWドライブをつないで、isoをDVD-Rに書き込み (Win11はOS標準の機能でできる)
  3. iBookをDVD-RのFreeBSDから起動 (起動時にCを押し続ける)

あとはSDカードのときの「起動したFreeBSD Installerで…」以降と同じ手順で、内蔵HDD(30GB)をゼロクリア。

カーネルの起動後、おそらくDVDのファイルシステムをマウントしようとしてDVD-RのMEDIUM ERROR (Random positioning error)が出たが、Retries exhaustedのあとになんとかマウントはされ、その後は問題なく操作できた。DVD-Rのブランクメディアもかなりの年代物なので、多少劣化していたのかもしれない。