HDDの完全消去

作成:

パソコンを人に譲ったり、売ったり、廃棄したりする場合、 しっかりと対策をとっておかないと、HDDから重要な情報が盗まれる可能性がある。 HDDにはクレジットカード番号、各種アカウントの情報、パスワードなど、 流出すると大きな損害につながりかねない情報やプライバシー情報など様々な秘匿情報が格納されているはずだ。 そのため、完全消去を行うことは必須と言って良いだろう。 ここでは、多少技術的な知識は必要ではあるが、 無料で入手可能なLinuxを利用して完全消去を行う方法について説明する。

ただし、完全といいつつ、実質は『十分に解析困難な状態にする』でしか無いことを断っておく。

なお、HDDからのデータ漏洩対策はもちろんこれ以外に様々な方法はあるが、 一見ちゃんとした対策を行っているつもりで、実際は対して意味のないことという物がある。 それについては別ページにまとめたので参考にしてほしい。 ファイルの削除やフォーマットを行ったから大丈夫と勘違いしている人は多いだろう。

このサイトについての免責事項にある通り、 本稿の内容について完全性や正確性を保証するものではなく、 読者が何らかの損害が生じても責任を負うことはできない。自己責任のもと読んで欲しい。

Linuxを利用したHDDの完全消去

ここで説明する完全消去とは、全領域への書き込みである。 Linux を利用すれば比較的容易に HDD への低レベルアクセスができるのでそれを利用する。

完全消去を行うのだから当然だが、間違って実行してしまった場合、復元することは不可能だ。 慎重に作業を行って欲しい。 また、全領域への書き込みは特に大容量 HDD の場合、非常に時間がかかる。 場合によっては1日以上掛かる可能性もあるので覚悟しておいて欲しい。 長時間延々書き込みを行うため、HDDにはそれなりの負荷がかかる。 発熱等も相応に発生するので特に夏場などは冷却に気をつけたい。 場合によっては再利用するつもりのこの作業で止めを刺してしまいかねない。

概略

はじめにここで紹介する作業の概略を書いておく。

  1. Linux をブートできるメディアを作る
  2. Linux を起動する
  3. root (スーパーユーザ)になる
    $ sudo su -
  4. HDD のデバイスファイル名を調べる
  5. HDD 全領域へ書き込みを行う
    • shredを利用する場合
      # shred /dev/<デバイスファイル名>
    • ddを利用する場合
      # dd if=/dev/urandom of=/dev/<デバイスファイル名>
      または
      # dd if=/dev/zero of=/dev/<デバイスファイル名>
  6. SSD の場合

Linuxを起動するためのメディアを作成する

リムーバブルメディアから起動できる Linux を選択し、起動メディアを作成する。 Linux が稼働中のシステムがあればそこに接続してもよいが、 作業ミスにより使用中の HDD の消去を行ってしまうリスクが有るため、 消去対象の HDD 以外は接続されていない環境を作ったほうが安全だ。

かつてはリムーバブルメディアだけで立ち上げられる Linux の代表格は Knoppix だったが、 現在は多くのディストリビューションが対応しており、 メジャーどころで言えば Ubuntu や Fedora も利用可能だ。 今回の目的で言えば Linux として立ち上がり、コマンドラインが使えれば良いだけなので、 好みのものを使用すればよいだろう。

メディアの選択

利用できるリムーバブルメディアとしては、CD / DVD などの光学メディアと、USB メモリがある。 現在利用可能な PC であればどちらであってもできないという可能性は低いが、 念のため BIOS / UEFI のブート設定にて所望のメディアが選択可能かを確認しておこう。

BIOS Boot設定
BIOS Boot設定

多くの場合、CD / DVD からのブートは特に設定も不要だったり、設定するにしても特に戸惑うようなことはないと思う。 USBメモリの場合は多少面倒な場合が多い。 いずれにせよ利用する PC 依存の内容になるため、ここでは詳しく説明できないが、各自調べて欲しい。

USB メモリを利用する場合

CD / DVD に比べれば新しい方法であるが、現在使用可能な PC で対応していないものも少ないだろう。 BIOS / UEFI の設定が必要ではあるが、光学メディアからのブートとくらべて難易度が高いわけでもない。 ブータブルデータの書き込みはツールが提供されているので簡単だ。後述する。

CD / DVD を利用する場合

使用する PC に光学ドライブが接続されていること、書き込み可能なドライブとメディアがあることが前提となる。 iso ファイルをダウンロードし、これをイメージとしてディスクに書き込む。 ファイルを書くのではなく、そのファイルをイメージとして書くので間違わないように。 イメージの書き込み方法は使用しているライティングソフトのマニュアル等を参考にして欲しい。 一例として、Windowsで利用できるフリーのライティングソフトである ImgBurn を利用する場合は 「Write image file to disc」を選択しよう。

仮想ドライブモード付き HDD を利用する場合

iso ファイルをマウントしてUSB CD/DVDドライブとして認識させられるデバイスがある。 私が利用しているのは ZALMAN ZM-VE300 だ。 専用デバイスが必要で特殊な方法ではあるが、 iso イメージからのブートを頻繁に行う人にとっては非常に便利なデバイスなので紹介した。

今回は、USB メモリからのブートを前提に話をすすめる。 基本的にはどのブート方法でもブートしたあとの操作方法ほぼ同一だ。

Linux Live USB Creator

ブート可能な USB メモリを作るのはかつてはハードルが高かったが、今は便利なツールがある。 Linux Live USB Creator を使えば良い。 ダウンロードページに行くとインストーラー版がダウンロードできるが、 頻繁に使うのでない場合は Portable version を使ったほうが良いだろう。インストール不要で使用できる。 なお、 Fedora の場合は liveusb-creator という専用のツールが用意されている。 Fedora の方がいいという場合はこちらを利用しよう。

起動すると以下の様な、妙にこった Window が立ち上がる。

Linux Live USB Creator
Linux Live USB Creator

Window に書かれている通り、STEP 1から順に設定していく

STEP 1
USBメモリが認識されていれば、プルダウンメニューから選択できるはずだ。 間違って使用中のHDDなどを選択しないように注意しよう。
STEP 2
インストールする Linux を選択する。予め iso をダウンロードしている場合は 「ISO / IMG / ZIP」から選択する。 ない場合は「ダウンロード」から利用したいディストリビューションを選択する。 自動にするとダウンロードが始まるので保存フォルダを指定する。
STEP 3
Linxuの環境を常用するわけではないので、 保存領域は 「0MB (ライブモード)」でよい。
STEP 4
おこのみで設定する。 よくわからない場合は「FAT32でフォーマットする」のみチェックで他のチェックは外す、で良いだろう。 フォーマットは必ずしも必要ないのだが、無用なトラブルを避けるためだ。
STEP 5
雷アイコンをクリックすると、ブートイメージの書き込みが始まる。 選択したディストリビューションにもよるが、数分から十数分はかかるので気長に待とう。

ディストリビューションの選択

かなり幅広いディストリビューションがサポートされているのでどれにするか迷うところだ、 今回の目的では、単に Linux が起動し、HDDにアクセスできれば良いだけ、 使用するコマンドも Linux 環境の基本的なコマンド郡だけなのでどれでも良い。

ただし、Tiny Coreを試したところ、ここで説明するコマンドの内、 dd コマンドはあったが、 shred コマンドはなかった、 流石に dd すらも使えないほど小さな環境というのはないとは思うが、 そのような環境もあるということだけ書いておく。

Tiny Coreは小さなLinuxを作ることを目的としたディストリビューションで、 GUI 付きで 12MB と非常ににフットプリントが小さい。 この小ささを実現するために、コマンド群も BusyBox を採用するなど、かなり特殊な環境だ。 だが、後述するように、 dd コマンドだけでもよいのでこの環境でも問題ない。

Ubuntuの利用

ここではおそらく最も利用されているディストリビューションの一つである Ubuntu を利用することにする。 広く利用されているディストリビューションは対応ハードウェアも多く、情報も豊富だ。 サイズは小さいとは言い難いものの 2GB 程度で収まる。 Linux Live USB Creator を使ってUbuntuを選択するか、 Download Ubuntu Desktop から iso イメージを別途ダウンロードする。

USBメモリを用意して、 Linux Live USB Creator の画面の指示通りにすれば、ブータブル USB メモリの完成だ。

Linuxを起動する

ブータブルメディアを PC に接続し、 BIOS の設定を適切に行なった状態で起動させるとブートローダが起動する。 ここで HDD にインストールしていた OS が起動してしまったり、 「Operationg System not found」などと表示された状態で、 それ以上動かなくなった場合はブート設定に失敗しているので設定を見なおそう。

紫の画面が表示されればUbuntuのブートローダが起動している。 このまま放置しておけばGUIメニューが立ち上がる。 しかし、ブートメニューで操作したほうが手順はシンプルなので、以下の手順をおすすめする。

紫の画面で何らかのキーをタイプすると言語設定ができる。 言語設定後、F3 をタイプするとキーボードレイアウトの選択も可能だ。

起動画面
言語選択
キーマップ選択
起動メニュー

※スクリーンショットは VMware で DVD ブートの画面をキャプチャしたもののため、 起動メニューの選択肢はUSBブートのメニューとは多少異なっている。

設定ができたら「Live Mode」(DVD ブートでは「インストールせずにUbuntuを試してみる(T)」)にフォーカスがあたっている状態で Enter をタイプすれば Ubuntu のデスクトップが起動する。

これで十分だが、今回の作業ではGUIは必要ないので、CUIモードで立ち上げる方法を紹介する。 GUI なしであればグラフィックボードの相性で X が立ち上がらないような環境であっても使えるし、動作も幾分軽くなる。 必要なことではないので、このステップは飛ばしてもらって問題ない。

F6 をタイプし、「その他のオプション」メニューを開く。 このメニューは ESC でキャンセルする。 すると起動オプションを直接編集できるようになっている。 末尾にスペースを開けて「3」と入力する。quiet や splash の記述があれば削除してもよい。 この数値はランレベルで、ランレベル3は CUI モードという意味だ。

その他のオプション
起動オプションの編集

この状態で Enter をタイプするとずらずらと起動シーケンスが流れ、 以下の様なログインプロンプトが表示される。

Ubuntu 15.10 ubuntu tty1
ubuntu login:

ここで、ユーザ名とパスワードを順に入力する。 ユーザ名は「ubuntu」でパスワードは「」(空)である。 ログインに成功すれば以下の様なプロンプトが出てくる。

ubuntu@ubuntu:~$

root (スーパーユーザ)になる

Ubuntu の文化では、root としてログインすることは避け、sudoを使うというのが一般的だ。 ここからの作業の殆どは root 権が必要な手続きがほとんどであるし、 セキュリティなどを気にしなければならい状態でもないので、rootになってしまおう。

$ sudo su -

これで root としてログインした状態になる。 プロンプトの末尾が「$」から「#」に変わっているだろう。 通常コマンド例ではこの「$」か「#」から記載し、 一般ユーザとしてのコマンドなのか、スーパーユーザとしてのコマンドなのかを区別する。

キーマップの確認と設定

Ubuntu であれば前述のとおり、起動時にキーボード種別を選択できるのだが、 他のディストリビューションの場合など、実際のキーボードと異なる配列になっている場合がある。 =+*@"|といった記号が入力できるか確認してみよう。

正しくない場合は、以下のようにして設定可能だ。(日本語キーボードの場合)

# loadkeys jp

loadkeys に渡すことができるパラメータはキーマップが書かれたファイル名なのだが、 そのマップファイルがどこに格納されているかや、キーマップにどのような名前がつけられているかは、 ディストリビューションによってまちまちなので、それぞれ調べる必要がある。 日本語キーボードの場合は jp もしくは jp106 である場合が多い、 英語キーボードは us の場合が多い。

HDD のデバイスファイル名を調べる

HDD に低レベルアクセスを行うには、そのデバイスファイルを経由して行うことになる。 Linux などの UNIX 系システムでは伝統的にデバイスを含めてすべてをファイルとして抽象化して扱う。 HDD については、それ全体を表す一つのファイルがあるイメージだ。

一般的なルールとして、IDE の場合、 プライマリ・マスター、プライマリ・スレーブ...の順で /dev/hda /dev/hdb のように、 hd から始まり、後ろに a, b, c, とアルファベット一文字がつく、 SCSI や SATA の場合は、 /dev/sda /dev/sdb のように、 sd から始まり、後ろに a, b, c, とアルファベット一文字がつく、 というルールになっている。 特に sdx の場合はどのような順序になるかはシステム依存なので、慎重に判断するようにして欲しい。

デバイスファイル名を調べる方法はいくつかあるが、 比較的簡単なのが fdisk コマンドを利用する方法だ。 fdisk コマンドに -l オプション付きで実行すると以下の様な表示が得られる。

# fdisk -l
...
Disk /dev/sda: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xbeeba07d

Device     Boot Start        End    Sectors  Size Id Type
/dev/sda1        2048 3907026943 3907024896  1.8T  7 HPFS/NTFS/exFAT
...

この場合、 /dev/sda がHDDのデバイス名だ。 /dev/sda1 と書かれている部分は、パーティション情報になる。 HDDの容量や、パーティションの種別などの情報を読み取ることができるだろう。 HDD 以外にもブートに使用したUSBメモリを始め、他のデバイス情報もたくさん表示されるかもしれないが、 各情報からどれが対象の HDD なのかを判断して欲しい。

パーティション情報だけだと不安な場合は以下のコマンドで詳細な情報を表示することができ、 モデル名等も表示されるので fdisk で当たりをつけたら、この方法で確認すると良いだろう。

# hdparm -I /dev/<デバイスファイル名>

/dev/sda:

ATA device, with non-removable media
        Model Number:       WDC WD20EARS-00MVWB0
        Serial Number:      WD-WCAZA0157772
        Firmware Revision:  50.0AB50
...(略)

かなりの行数の出力が得られるため出力が1画面に収まらない場合は、 以下のように less にパイプで渡すと良い。

# hdparm -I /dev/<デバイスファイル名> | less

スワップの無効化

Linux で使用していた HDD の場合は、スワップパーティションがあるかもしれない。 USB ブートでも HDD 中にスワップパーティションがあると自動的に利用状態になってしまう。 利用状態は以下のように確認することができる。

# swapon -s
Filename                                Type            Size    Used    Priority
/dev/sda5                               partition       12571644        0       -1

消去対象の HDD が利用中だとよろしくないので、以下のコマンドでスワップを無効化しておこう。

# swapoff -a

HDD のベンチマーク

必要なステップではないが、以下のコマンドで HDD の読み出し速度を確認することができる。 これから行うのは書き込みなので参考情報にすぎないが、 極端に遅い場合は PIO モード(DMA 無効)になっている可能性がある。

# hdparm -t /dev/<デバイスファイル名>

/dev/sda:
 Timing buffered disk reads: 312 MB in  3.00 seconds = 103.86 MB/sec

HDD 全領域へ書き込みを行う

やっと長い前準備が終わり本題の消去作業である。 出力先として HDD を指すデバイスファイルを指定すると、ファイルシステム等を介さず、 HDD への低レベルアクセスを行うことができる。

shred を使う場合

Linux の Coreutils には、完全消去を行うためのコマンドが用意されている。 それが shred だ。 ファイル単位での消去にも対応しているが、消去対象としてデバイスファイルを指定すれば、ディスク全体の消去となる。

デフォルトの動作としては乱数を 3 回書き込む動作となる。 そのまま実行すると進捗がわからないが、-vオプションを指定すると、 以下のように進捗を少しずつ表示しながら消去処理が実行される。 あとは完了をひたすら待つだけである。

# shred -v /dev/<デバイスファイル名>
shred: /dev/sda: pass 1/3 (random)...
shred: /dev/sda: pass 1/3 (random)...398MiB/1.9TiB 0%
shred: /dev/sda: pass 1/3 (random)...849MiB/1.9TiB 0%
shred: /dev/sda: pass 1/3 (random)...1.2GiB/1.9TiB 0%

3 回書き込むのは残留磁気に対する対策などと言われているが、 近年の HDD に対してこれが意味があるのかは意見が別れるところだ。 3 回も書き込むと相当な時間が必要になるので、 1 回で十分だという場合などは -n オプションで乱数書き込みの回数を指定できる。 また、-z オプションを指定すると最後にゼロを書き込むので、未使用状態にすることができる。

以下の指定で、進捗を表示しながら、乱数を一回書き込み、最後にゼロで埋めるという指定になる。

# shred -v -n 1 -z /dev/<デバイスファイル名>

もう少しコマンドを短縮して、以下のように書いても同じ意味になる。

# shred -vzn1 /dev/<デバイスファイル名>

乱数の書き込みも不要でゼロを書き込むだけで良い場合は以下のように指定する。

# shred -vzn0 /dev/<デバイスファイル名>

dd を使う場合

shred が使えるのならそれを実行すればよいのだが、 shred が使えない環境や、より簡易的な消去方法で良い場合は、 dd が使える。 このコマンドは入力指定したファイルを読み込み、その内容をそのまま出力指定したファイルに書き出すという動作をする。

読み込み元についてだが、 Linux では仮想デバイスというものが用意されており、これを指定する。

/dev/zero はどれだけ読み込んでも常にゼロを返し続けるという仮想デバイスで、入力にこれを指定すればゼロフィルになる。

/dev/urandom はどれだけ読み込んでも常に乱数を返し続けるという仮想デバイスで、入力にこれを指定すれば乱数書き込みになる。 乱数を返す仮想デバイスとしては /dev/random もあるが、読み出しはブロック動作となる可能性があり、HDDの全領域への書き込みのような用途には向かない。 (urandomは'unlocked' randomという意味である)

全体をゼロで埋める場合は以下のようにする。

# dd if=/dev/zero of=/dev/<デバイスファイル名>

全体を乱数で埋める場合は以下のようにする。

# dd if=/dev/urandom of=/dev/<デバイスファイル名>

dd コマンドはかなり古いコマンドのため、 引数の与え方が他のよく使われるコマンドと異なっている。 また、進捗を表示しながら実行するようなオプションは用意されていない。 dd を実行して、少し待ってから Ctrl-C で強制停止させると、 以下のように書き込み量と経過時間、平均書き込み速度を表示してくれる。 これで概ねの完了時間は推測できるだろう。

# dd if=/dev/zero of=/dev/<デバイスファイル名>
^C879697+0 records in
879697+0 records out
450404864 bytes (450 MB) copied, 13.2513 s, 34.0 MB/s

上記の例では 879697 ブロックまで書き込みが終わっているので続きから書き込みを行う場合は、 以下のように、seek オプションで書き込み開始位置を指示すれば良い。

# dd if=/dev/zero of=/dev/<デバイスファイル名> seek=879697

ddの進捗確認方法

途中で進捗を確認したい場合、Ctrl+Cで強制終了してしまうと、当然書き込み処理が中断してしまう。 進捗を確認するためにしてはコストが大きい。 実は終了させなくても進捗を確認する方法は用意されている。 dd のプロセスに対して USR1 シグナルを送ると、 強制終了した時と同じログを出しつつ、書き込み処理を継続させることができる。 別のコンソールから(CUIで立ち上げている場合はCtrl+Alt+F1~F6でコンソールを切り替え可能) psdd のPIDを確認し、 kill を使って USR1 シグナルを送る。

# ps -a
  PID TTY          TIME CMD
...
 2373 pts/7    00:39:06 dd
...
# kill -USR1 2373
~# dd if=/dev/zero of=/dev/<デバイスファイル名>
879697+0 records in
879697+0 records out
450404864 bytes (450 MB) copied, 13.2513 s, 34.0 MB/s

コンソールを切り替えるとなると何かと大変なので、進捗を確認することを考えるなら、 dd 自体をバックグラウンド実行して、 定期的に USR1 シグナルを送るようにループを組むなどすればよいだろう。 例えば以下のように書くと、1分置きに進捗が出力される。

# dd if=/dev/urandom of=/dev/<デバイスファイル名> & pid=$!
# while true; do kill -USR1 $pid;sleep 60; done

簡単に解説すると、dd コマンドの末尾に & をつけて、バックグラウンド実行するとともに、 その PID を pid という変数に格納する。 ($! は最後に実行したバックグラウンドプロセスの PID を示す) あとは無限ループで60秒のスリープをはさみながら kill を実行している。 このループは dd の処理が終了しても終わらないので Ctrl-C で終了させる。

完全消去方法として、乱数書き込みとゼロフィル両方を紹介しているが、 ゼロフィルは乱数書き込みに比べて多少リスクが高い。 残留磁気について度外視しても、ゼロフィルの場合、 消去しきれていない箇所が残っている場合は一目瞭然なので解析が容易になってしまう。 乱数であれば意味のあるデータと乱数は容易には区別できないので、 仮に消去しきれていない箇所が残っていた場合でも見つかる可能性が低くなる。

HDD の消去については以上である。

SSDの場合

最後に、HDD とは事情の異なる SSD について少し説明する。

SSDの場合はウェアレベリングが行われているため、同じ方法では全メモリ素子に対して書き込みを担保することはできない。 安全に削除するには、SSDベンダーが提供しているユーティリティによるセキュアな消去を行う必要がある。 ユーティリティが使えない場合は、ソフトウェア的な手段での完全消去は不可能なので、 どうしても必要であれば物理的に破壊するしか無いだろう。

ただし、ユーティリティが使えない状態でも、全領域への書き込みを行えば、通常の方法では読みだし不可能になり、 残留データを読み出すにはメモリ素子を基盤から剥がして直接データを読み出し、 書き散らされたデータを組み立て直すなどの作業が必要だ。 仮に実現可能だとしても相当なコストがかかるため、 残留データに相応の価値がないかぎり、ここまでして解析される危険性は低い。 ユーティリティがない場合の代替手段としてやる価値はあるだろう。

また、SSD が trim コマンドに対応している場合はこれを使う方が良い。 trim は SSD に対して、未使用の領域を通知するコマンドだ。 SSD は未使用となったメモリ素子を消去状態として扱うため、その領域からの読み出しはできなくなる。 消去状態にすることを目的としたコマンドではなく、 いつ消去状態になるかはコントローラ次第のため、やはりメモリ素子レベルでの消去としては不完全ではあるが、 全領域書き込みと同程度の消去を非常に短時間で実行できる。

SSD が trim コマンドに対応しているかどうかは以下のコマンドで確かめることができる。

# hdparm -I /dev/<デバイスファイル名> | grep -i trim
           *    Data Set Management TRIM supported (limit 8 blocks)
           *    Deterministic read ZEROs after TRIM

ここで使用した SSD は trim コマンドに対応しているだけでなく、 trim された領域からはゼロが読み出されることが担保されている。

Linux では fstrim というコマンドで trim コマンドを SSD に送ることができる。 util-linux という基本パッケージに含まれるコマンドではあるが、 SSD 対応ということで比較的新しいディストリビューションでなければ利用できない。 このコマンドは、ファイルシステム上使用していない領域の情報を通知するので、 一旦、対応ファイルシステムを構築する必要がある。 ext4 や xfs は対応しているのでこのファイルシステムを構築する。

通常はパーティションを切ったうえで、そのパーティションをフォーマットし使用するのだが、 消去が目的なのでパーティションを切らずに、全体を一つのパーティションとみなして強制的にファイルシステムを構築する。 正しい使い方ではなく、この状態で運用すると問題が出る可能性があるので注意して欲しい。

以下では、強制的に xfs でフォーマットを行い、 マウントポイントを作成し、マウントを行っている。

# mkfs.xfs -f /dev/<デバイスファイル名>
meta-data=/dev/sdd               isize=256    agcount=4, agsize=4884422 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=19537686, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=9539, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
# mkdir /mnt/hdd
# mount /dev/<デバイスファイル名> /mnt/hdd

マウントしたパスに対して、fstrim を実行する。 -v を指定すると、どれだけの範囲を trim したかが表示される。

# fstrim -v /mnt/hdd
/mnt/hdd: 74.5 GiB (79987142656 bytes) trimmed

ファイルシステムの管理領域以外は未使用状態なので、 ほぼ全領域にわたってtrimコマンドが実行されることになる。 ファイルシステムとしての情報は残っているため、マウント情報などは残っている状態ではあるが、 ファイルレベルの情報は残っていない。 自動的にマウントした領域に何らかのキャッシュファイルなどが作成されてしまう可能性はゼロではないが、 スタンドアロンで他のディスク等も接続していない状態であれば、 それが有意な情報であることもないだろう。

以上、長くなったが、Linuxを用いたHDDのデータ完全消去法について説明した。