コザ風呂 -Revenge!-

  PC修理の記録やシムフリースマホ関連について

Windows7 ハードディスクが壊れた!(Linux ddコマンド)

      2018/03/01



前回の記事で、ハードディスクが物理的に壊れていて、リードエラーが起こるため、クローンを作ることが出来ないとわかりました。

こうなれば、Linuxにつないで、修復とファイルの救出を試してみるしかありません.........

クローンを作るために取り出していた、Windows7が入ったハードディスクをPCへ戻して、以前作っていたLinuxMint17のインストールディスクから起動してみることにしました。

 

まずは、BIOSで接続の確認

PCにハードディスクをセットアップして、まずはちゃんとHDが接続できているか確認の為、通常起動でBIOSを立ち上げようとしてみました。

BIOSを立ち上げて、ハードディスクの接続が確認できたので、もう一度Status BADを確認してからLinuxディスクで起動しようと思ったのですが、

なんと、Windows7が普通に起動してしまいました!!!!

意味がわかりません?????

少し考えました.....

推測ですが、ひょっとしてWindows7のパーティションは生きているのかも??

と思い、起動したこともあって、なんとかハードディスクのパーティションを確認できないかと考えました。

ですが、物理的に壊れていると思われるハードディスクを、起動させているだけでも、ただでさえ危険なのに(もっと悪化してしまう)、この状態で作業を続けるわけにはいきません。

クローンが失敗しているので、この状況で何とか生きている領域だけでも複製が出来ないのかとネットで検索すると、ありました!

Linuxコマンドでddコマンドが見つかりました!!

 

ddコマンド&とっても便利なKURO-DACHI/CLONE/U3

知らなかったわけではないですが、今回このコマンドを使おうと思ったのは、読み込みできない部分はスキップして0データを書き込む優れた機能があったからです!!

クローンが失敗したのは、多分途中でリードエラーが起こったからと推測します。

このコマンドなら、読み込めるデータ部分をコピーして、エラーの部分はスキップしてくれるので、うってつけです!!

とにかく試してみようと、今回はLinuxMint17のインストールディスクから起動して、クローン作成用に購入した、新しい内蔵ハードディスクを、USBで外付けハードディスクとして接続し、「端末」からddコマンドを使用することにしました!

ここで便利なのが、先の記事で紹介したクローンを作る機械

玄人志向 KURO-DACHI/CLONE/U3です!

<画像クリックでアマゾン詳細ページへ>
玄人志向 HDDスタンド USB3.0接続 KURO-DACHI/CLONE/U3

 

このマシーンのいいところは、USB3.0のインターフェースが付いているところ。

クローンを作るだけではなく、HDD1のスロットに内蔵ハードディスクをセットした状態でPCへUSB接続すると、外付けハードディスクとして使用できちゃいます!!

で結局、以下の状況になりました。

内容 接続
起動メディア LinuxMint17インストールディスク DVDドライブ
壊れたHD 内蔵ハードディスク SerialATA
コピー先HD 外付けハードディスク USB3.0

いざ、電源ON!です。

 

ddコマンドを使ってみる

無事、DVDからLinuxMint17が起動しました。

スポンサーリンク

早速Terminalを開いて、内蔵ハードディスクと外付けハードディスクがどのように認識されているか、調べてみました。

こういう時私は、「blkid」コマンドを使います。

コマンドの内容を調べてみると、

ブロックデバイスの属性を見つけて表示するコマンドラインユーティリティ

みたいですが、私はパソコンに繋がっているデバイスのUUIDやsda,sdbとか、どこに繋がっているのかを調べるために使います。

で結局、内蔵ハードディスク(壊れたHD)がsdaで、外付けにしたハードディスク(コピー先HD)がsdbでした。

これがわかれば、ddコマンドの出番です。

基本的な書式は、

「dd if=/dev/sda of=/dev/sdb」

これは単純に、/dev/sda/dev/sdbにコピーする事になります。

ちなみに、コピー元、コピー先のハードディスクは同じ容量じゃないと駄目みたいです。

しかし今回は、コピー元のHDが壊れている事が確実なので、リードエラーが起こって止まってしまいます!

そこでオプションを指定して、リードエラーが起こっても、読み取れる部分だけコピーを出来るようにしないといけません。

で、こんな感じ.....

「dd if=/dev/sda of=/dev/sdb conv=sync,noerror bs=512」

convの指定では、noerrorでエラーを無視して、syncでリードエラーの部分をNullで書き込む。

bs=512は、コピー単位を512バイトで読み書きを行う事になります。

bsを指定しないと、デフォルトで512バイトになるようです。

しかし、500Gのハードディスクを512バイト毎に読み書きさせると、とんでもない時間が掛かってしまいます。

今回は、壊れているハードディスクがターゲットで、少しでも読み込めるデータを救出したいので、時間が掛かることを覚悟の上で512にしました。

壊れていないハードディスクのコピーを行う場合は、2048や4096など大きめサイズで行うほうが良いと思います。

ddコマンドについては以下のページを参考にさせて頂きました!

dd でディスクをコピーするよく使う例

コマンドのオプションやISOに書き出す方法など、とってもわかりやすく解説してくれてます!!(感謝、感謝)

 

思った以上に時間が掛かります........

まあ、気長に待とうと覚悟していたので、1時間おきぐらいに確認する事に。

最初は普通にコピーが進んでいる感じでした。

数時間で終わるとは思っていないので、他の仕事をしていて、夜遅くに画面を確認しに行くと、大量のリードエラーの表示が!!!!

覚悟はしていましたが、21インチモニターの画面にずーっとリードエラーが出続けています......

この日は諦めて、帰宅することに。

そして翌朝、出社してまずは状況確認!

ですが、まだまだリードエラーが出続けています?????

ちゃんと動いているのか不安になりましたが、とりあえず放置です。

長々と書きましたが、結果から言うと約2.5日掛かってしまいました!!!!!!!!

振り返れば、少しでも救出できればと、バイトサイズを512にした事と、LinuxMint17をDVDで起動させていたことが原因だと思います。

 

Windows7復活!?

忘れていたわけではありませんが、今回の目的はWindows7を復旧させることです。

無事、コピーも終わり、コピーしたHDをPC内部にセットアップして起動させることに......

やはり普通にWindows7が起動できます!

起動後、コンピューター右クリックで管理から、ハードディスクのパーティションを確認してみるとなんと!

リカバリー用パーティションが無くなっていました!!!

驚きましたが、Windowsは正常に動作していて、過去メールやWebの閲覧、Officeソフトも普通に作業できます。

こんな事もあるんだな~と感心してしまいました。

本当なら、ハードディスクをフォーマットして、Windows7を再セットアップしたいところですが、リカバリーエリアがぶっ飛んでしまっているので、なんともなりません。

これ以上、時間を費やすこともいかがな物かなと思い、とりあえず仕事が出来る状態なので、メールのバックアップをとって、個人データはサーバー上に置いて作業するようにと伝え、使用者へ返却する事にしました。

で、1ヶ月が経過して、問題なく使用できているようですが、次に壊れたらPCを入れ替えるつもりです。

ほんとに長々と掛かりましたが、Windows7も何とか復旧できて、ddコマンドの勉強も出来たので、良しとしたいと思います!

 

 

 

スポンサーリンク

 - Linux, PC修理 , ,