2012-03-06 8 views
0

私は、多くの人がシャットダウン時にRAMを拭くのはかなり無意味だと思っていることを知っています。私は、利点と欠点についてかなりの研究をしました。だから、最も素敵な正気の可能な方法で...「あなたは何故RAMを無駄にしたいのですか?」というようなコメントはしないでください。シャットダウン前にRAMを消去すると、Linuxはどのようにメモリを割り当てますか?

私はDD/dev/memにしようとしましたが、DDはエラーを投げました。カーネルはDDが101000と101200の間のメモリにアクセスしようとしていると警告した。だから私の質問は... Linuxではどのようにメモリが割り当てられているか、より正確には、101000と101200の間に個人情報が存在するか、 ?

事前に感謝

トム

+0

まあ、RAMはちょうど揮発性ですので、システムがシャットダウンしても心配する必要はありません。 しかし、スワップパーティション/ファイルには、システムの設定によってはまだ情報が含まれている場合があります。 – 0xC0000022L

+0

申し訳ありませんが、おそらく私はカスタムライブ配信を実行しているので、スワップスペースはないと付け加えるべきです。 – Xleedos

+0

それでは心配するべきことは?なぜRAMを拭きたいのですか?マシンの電源が10秒以上切れていて、安全であることを確認してください。 – 0xC0000022L

答えて

3

あなたは私はあなたは、x86上で実行されている、非常に最近のカーネルのバージョンを使用していると仮定しています何の詳細は設けられていないので。

Linux documentationは、起動後に物理メモリのレイアウトを提供します。カーネルがアドレス0x100000にロードされていることがわかります。これはあなたが(0x101000 - 0x101200)について質問している地域では、カーネルコードだけが存在することを意味します。

物理メモリは、バイナリバディアロケータを使用してページに割り当てられます。それはさらに多くの詳細で説明されているhere

ただし、カーネルコード以外のものを使用して物理メモリを消去することは不可能であり、危険です(ディスク上のデータ破損)。本当にシャットダウン時にRAMを消去したいのであれば、カーネルのハッキングをお勧めします。は(あなたがddので、我々はユーザランドのソリューションについて話しているの!述べた)あなたの能力を最大限に物理メモリを拭くために

+0

コメントにはすでに(危険なワイピングについて)書きましたが、リンクに+1しています。ありがとう。 – 0xC0000022L

0

は、インストールされているRAMと同じサイズを匿名マッピングを作成するのに十分であるを使用し、各ページ内の1つのアドレスに1バイト(またはその他の金額)を書き込んで各ページにタッチします。

これにより、ページ違反が発生し、タッチしたマッピング内のすべてのページのゼロページでコピーオンライト操作がトリガーされます。これにより、すでにゼロページがコミットされるか、未使用のゼロ以外の物理ページはゼロになりますメモリが残っていない限り、プロセスはOOMキラーによって殺されます(または、プロセスに最初に当てはまるものに応じてSIGBUSを受け取ります)。
OOMキラーを使わないでやや「クリーナー」にしたい場合は、明らかに最後のページに触れる前に停止する必要があります。しかし、一般的には、これがすべてです。

あなたはは、このようなすべての物理ページを拭くことはできませんが、実際には(ないスワップなし、およびない決定論方法で)ユーザプロセスであることを行うための方法はありません。 カーネルに属する他のプロセスやページによってコミットされたページは、少なくともではなく、確実にで置き換えられません(スワップはないのでスワップはできませんが、 OOMにあなたの代わりに他のプロセスを強制終了させる)。
実行中のカーネルを置き換えない限り、物理メモリを100%確実に上書きすることはできません。

"徹底的に"スーパーになりたい場合は、唯一のオプションは、コードが書かれているように書くことです。あなたがカーネルモードから呼び出すmemtest_x86では、実行中のカーネルを置き換え、memtest_x86のように、生の物理メモリを "難しい方法"で上書きします。

しかし、あなたは超妄想ルートを行けば、その後、GPUのメモリをクリアし、同様にハードディスクキャッシュやネットワークカードのメモリを拭くことを忘れないでください...


実際に、あなたはでしょう最大コミットサイズのサイズをマッピングする必要がありますが、スワップがないと言っていますので、「RAMのサイズ」を使用します。現代のディスクドライブが広範な摩耗平準化をどのようにしているかを見ると、スワップを上書きすることは大いに役立つことはありませんが、最大コミットサイズまでコミットすればすべてのRAMページを確実に守ることができます。

関連する問題