OSが起動しないSurfaceからデータを取り出す方法【ddrescue使用】

「Surfaceの電源は入るけどWindowsが起動しない」といった場合、OSに不具合発生している場合や、内蔵ディスクが故障しているケースが多いです。

Surfaceは分解が難しくSSDが取り外せないモデルもありますが、ddrescueというツールを使えば分解せずにデータを取り出せるかもしれません。今回はUSBメモリにUbuntuをインストールし、ddrescueを使ったデータの取り出し方を紹介します。

Ubuntu、ddrescueとは

Ubuntu

ubuntuロゴ


正確には「ウブントゥ」と読むようですが、ウブンツと呼んでる人が多いです。UbuntuはLinuxディストリビューション(リナックスの種類)のひとつで、無料で利用できるOSです。

サーバーとして使用したり、開発者が使っているイメージがあるので難しそうな印象がありますが、Windowsを操作しているような感覚で使えるので、一度使ってみると以外と印象が変わると思います。数多くあるLinuxディストリビューションのなかでも、Ubuntuは使いやすく人気が高いLinuxです。

ddrescue

ターミナル画面


ディーディーレスキューとは、主に不良セクタがあるHDDやSSDのデータ救出に使用されることが多いデータをコピーするためのプログラムです。

HDDやSSDといったディスクには、データを格納するセクタと呼ばれる部分があります。ディスクが故障するとセクタが正常に機能しなくなることがあり、セクタに保存されたデータの読み込みに時間がかかったり、読み込めなくなることがあります。

通常は不良セクタを読み込むと、データのコピーに時間がかかったりコピー中に止まってしまうことがありますが、ddrescueは読み込みが遅い部分や読み込みできない不良セクタをスキップし、まずは正常なセクタを優先的にコピーします。そのあとに不良セクタ部分をコピーしてくれるので、故障しているディスクからもデータを救出できることが多いという特徴があります。

データの取り出しに必要なもの

  • 正常に起動するパソコン(Ubuntu作成に使用)

パソコン


USBメモリにUbuntuをインストールしライブUSBを作成するため、正常動作するパソコンが必要です。ない場合は誰かに借りるかネットカフェでも作れますし、手順もほぼ同じなのでMacでも大丈夫です。

  • USBメモリ(UbuntuをインストールするUSB)

5GBほどの容量で十分ですが、最近は16GBや32GBでも1000円以内で買えるのでそちらを購入する方が得だと思います。

  • 外付けハードディスク(データ保存用)

パソコンのデータを移行する際に使用します。パソコンの容量より大きいものを用意してください。また、データを保存する際に外付けHDのデータは上書きされるので、消えても問題ないものを用意してください。


  • USBハブ

今回使用したSurface Pro4はUSBポートが1つしか搭載されていません。Ubuntuを起動させるためのUSBメモリを接続するとポートが埋まってしまうので、USBハブでポートを増やします。今回は4ポートの電源がないバスパワーのUSBハブを使いました。

UbuntuをUSBにインストールする手順

isoファイルをダウンロード

まずはUbuntuのisoファイルを下記サイトよりダウンロードします。

https://www.ubuntulinux.jp/download

日本語remix
ubuntu20.04のiso


日本語Remixイメージを選択し、現時点で最新版の「20.04」のisoイメージを選択しダウンロードします。2.7GBほどのデータですが、ダウンロードがかなり遅く15分ほどかかると思います。

Rufusをダウンロード

ダウンロードしたisoイメージをそのままUSBに入れても起動しないので、isoイメージから起動可能なUSBメモリを作成してくれる「Rufus」というソフトをダウンロードします。

https://rufus.ie/ja_JP.html

Macの場合は「Etcher」というソフトを使用してください。

https://www.balena.io/etcher/

isoイメージをUSBメモリに書き込み

ダウンロードが終わったらRufusを起動します。

rufus起動画面


  1. インストールするUSBメモリを選択(データ上書きされます。消されてもいいUSBメモリか必ず確認してください

  2. ダウンロードしたUbuntuのisoファイルを選択

  3. 準備ができたら「スタート」ボタンをクリック
rufus確認


「ISOイメージモードで書き込み」にチェックが入っていることを確認し「OK」押下。

準備完了


2分ほどで「準備完了」と表示されるので、rufusを終了しUSBメモリを取り出します。

Ubuntuを起動

データを取り出したいSurfaceにUSBメモリを接続し「ボリュームダウンボタン」を押しながら電源を入れます。電源ボタンはすぐに離して大丈夫ですが、ボリュームボタンはSurfaceのロゴが表示されるまで押し続けてください。

ddrescueを使うための設定

UBUNTUインストール画面

USBから起動するとインストール画面が出ますが、今回インストールは行わないので「Ubuntuを試す」をクリックしてください。

Wi-Fiの接続とスリープ設定

インストール画面が閉じたらUbuntuのデスクトップ画面が表示されます。ddrescueのインストールに必要なWi-Fi接続と、データコピー中にスリープしないよう電源設定を行います。

メニュー画面


左下メニューボタンを押し「設定」アプリを起動します。


左メニューの「電源」→「ブランクスクリーン」を「しない」に変更すれば勝手にスリープに入らなくなります。

次にddrescueのダウンロードにネット回線が必要になるので、左メニュー「Wi-Fi」からWi-FI接続を行ってください。

ddrescueのインストール

メニュー画面、端末


メニューボタンから「端末」を選択します。

apt-get


$マークまで表示されているので、下記のコマンドを入力してエンターを押します。

sudo apt-get install gddrescue

ddrescueインストール


5秒ほどでインストールが完了します。これでddrescueが使える状態になりました。コピーを行う前にデバイス名を確認しましょう。

デバイス名の確認

コピーを行うときに「コピー元(ソース)」「コピー先(ターゲット)」を指定する必要があるので、ディスクに割り当てられているデバイス名を確認します。

【今回使用したディスクの情報】

  • 16GB USBメモリ(Ubuntuインストール)
  • 500GB 外付けハードディスク(データ保存用)
  • 128GB SurfaceのSSD(Surfaceに内蔵されているSSD)


メニュー画面ディスク選択


メニュー画面から「ディスク」を選択

ディスク画面
画像1:認識されているディスクを確認する


左ウインドウにUbuntuが認識 (接続)しているディスクが表示されています。左ウインドウでディスクを選択すると、そのディスクの詳細が右ウインドウに表示されます。

上の画像1では、左ウインドウで「128GB DISK」が選択されており、右ウインドウの詳細情報を見るとモデル名「SAMSUNG 128GB SSD」と表示されています。

UbuntuをインストールしているUSBメモリは16GB、データ保存用の外付けハードディスクは500GBなので、これはパソコンに内蔵されているSSDということがわかります。「コピー元(ソース)」ですね。

また、画像1の右ウインドウの緑枠部分「デバイス」に「/dev/nvme0n1p1」と表記されています。これがデバイス名かと思いますが「ボリューム」のパーティション図を見ると、先頭オレンジのパーティションが選択されています。「/dev/nvme0n1p1」の末尾「p1」は「パーティション1」という意味なので、ディスク全体のコピーを作成する場合はp1を除いた「/dev/nvme0n1」をデバイス名として指定しなければいけません

16GBメモリ選択画面
画像2:16GB選択画面

画像2は16GBが選択されています。これは現在起動しているUbuntuが入ったUSBメモリですが、パーティションが1つしかないため「dev/sda1」となっています。このデバイスはddrescueのコピーには必要ありません。


500GB HDD
画像3:500GB選択画面

画像3は500GBなので、データ保存用に接続している外付けハードディスクです。取り出したデータの保存先なので、このディスクが「ターゲット」になります。今回使用した外付けハードディスクは初期化を行っておらず、中にデータが残っているのでパーティションも表示されています。

画像3では、先頭のパーティションが選択されているので、緑枠のデバイス名が「/dev/sdb1」となってますがddrescueで指定するデバイス名はディスク全体を指定しなければいけないので「/dev/sdb」となります。

デバイス名は機種によって変わります。デバイス名を間違えて認識してしまうと、外付けHDのデータがパソコン側に上書きされてしまう、といった恐ろしいことになりますのでしっかり確認してください。

ddrescueでデータをコピーを行う

コマンドを入力しデバイスを指定する

ddrescueでデバイスを指定する
画像4:デバイスを指定する

画像4は、さきほどddrescueのインストールを行った画面の続きです。赤枠部分に先ほど確認したデバイス名を入力しddrescueを実行します。

【入力コマンド】

ソース、ターゲット

sudo ddrescue -f -n -v /dev/nvme0n1 /dev/sdb

コピー元、コピー先を間違えるとデータが消えてしまいますので注意してください


デバイス名の前にある「-f -n -v」はコマンドオプションです。

  • -f(上書き:物理ディスクにコピーする場合必須)
  • -f(上書き:物理ディスクにコピーする場合必須)
  • -v(進捗の詳細を表示)

今回使用したオプションの他に、不良セクタの再読込回数などを指定することができます。デバイスの指定に間違いがなければ、エンターを押しコピーを始めます。

コピーが終わるのを待つ

ddrescueコピー中


コピー中は赤枠部分で進捗確認ができます。今回の128GB SSDは不良セクタがなかったので30分ほどで終わりましたが、SSDが壊れていて不良セクタがある場合は時間がかかることもあります。

コピー完了


「Finished」と表示されたらコピー完了です。
詳細情報の「bad-sector」や「read errors」は0なので、不良セクタや読み込みエラーがないことが確認できます。

あとはUbuntuを終了させ、外付けHDに保存されたデータを確認してください。

データの確認

コピー完了、データ確認


Windowsに外付けHDを接続した画面です。
無事ディスク全体のコピーができました。ちなみに、BitLocke機能が有効になっている場合はBitLocker回復キーを入力しなければデータを見ることができません。

BitLocker回復キーの確認方法についてはコチラの記事で紹介しています。

まとめ

ソースとターゲットのデバイス名確認が少しややこしいかもしれませんが、Windowsが起動しない場合でもデータを取り出せることができます。

内蔵ディスクの故障具合によってはデータを取り出せないこともありますが、一度試してみてみる価値はあるかと思います。

今回使用したUbuntuは、インストール用に作成したものをそのまま使用しています。設定を変更した情報や、インストールしたddrescueはUbuntuを終了させると消えてしまいます。設定を残したい場合はパソコンやUSBメモリにインストールして使ってください。