公開日: 2023年4月24日

タブレット PC の eMMC を完全消去したうえで、ほぼほぼ出荷状態に戻す

使わなくなったタブレット PC の eMMC を完全消去し、Windows 10 を再インストールしてほぼほぼ出荷状態まで戻す手順のメモ書きです。

おおまかな作業手順

  1. 必要に応じて eMMC 全体のバックアップをとる (作業ミス時のそなえ)。
  2. Windows 10 の回復ドライブを作成する。
  3. EFI パーティションと回復パーティションのバックアップをとる。
  4. eMMC を完全消去する。
  5. 元のとおりにパーティションを切りなおす。
  6. EFI パーティションと回復パーティションを復元する。
  7. 回復ドライブから Windows 10 を再インストール (回復) する。
図 1
図 1

もしかしたら回復ドライブから Windows 10 を再インストールするときに eMMC の完全消去も実行されるのかもしれませんが、よくわからないので念のため自分の手で (も) やることにします。

用意するもの

  • 回復ドライブ用 USB メモリ (容量は回復する OS 環境によって異なるが、たいてい 16GB から)
  • GParted Live 用 USB メモリ (容量は 1GB 程度)
  • GParted Live の ISO イメージ
  • バックアップ用の外付け HDD
必要に応じて:
  • バックアップソフト (Macrium Reflect や Hasleo Backup Suite Free など)
  • バックアップソフトの緊急ディスク用 USB メモリ

準備その 1: eMMC 全体のバックアップをとる

準備その 1 は必須ではありませんが、作業に失敗した場合に備えて eMMC (この節では、慣習にしたがい「ディスク」と呼ぶことにします) のバックアップをとり、いつでも原状回復できるようにしておくと安心です。バックアップソフトには Macrium Reflect や Hasleo Backup Suite Free などがあります。Macrium Reflect は、以前は無料版がありましたが、Ver. 8 以降 30 日間のトライアル版になったようです。有償版はちょっと高いですが、買い切りなのは好印象です。一方、Hasleo Backup Suite Free は無料で利用できます (2023 年 4 月現在)。ここでは Hasleo Backup Suite Free を使うことにします。

Hasleo Backup Suite Free のインストール

下記のダウンロードサイトから Hasleo_Backup_Suite_Free.exe を取得し、実行します。インストール手順で悩むような所は特にないと思います。

緊急ディスクの作成

Hasleo Backup Suite Free のバックアップデータから復元する際に必要となる緊急ディスクを作成します。
  1. 緊急ディスク用 USB メモリ (中のデータが消えてもいいやつ) をパソコンに挿す。
  2. Hasleo Backup Suite Free を起動し、[ツール] > [緊急ディスク] を選択する。
  3. WinPE に組み込むドライバーを聞かれる。特になければスキップできる。
  4. 手順 1 で挿入した USB メモリを選択し、[続行] をクリックする。フォーマットするか聞かれるので、[はい] を選択する。
  5. 進行状況が 100% になるまで待つ。
Hasleo Backup Suite Free 緊急ディスクの作成
図 2: Hasleo Backup Suite Free 緊急ディスクの作成

ディスクのバックアップ

  1. Hasleo Backup Suite Free のメニューから [バックアップ] > [ディスク / パーティションのバックアップ] を選択する (図 3(a))。
  2. バックアップ元のディスクを選択する (同 (b))。
  3. [タスク名] [説明] [バックアップ先] を入力する。
  4. 必要に応じてバックアップオプションをクリックする。
    • ディスク領域タブ (同 (c)): バックアップファイルの圧縮度や分割サイズを設定できる。
    • 詳細タブ (同 (d)): 「セクターごとのバックアップ」を選択できる。チェックを入れると、バックアップ元パーティションのファイルシステムに関係なく、すべてのセクタのバックアップがとられる (今回はこちらを選択)。チェックを外すと、ファイルシステムが使用しているセクタのみバックアップがとられる。
    バックアップオプションの詳細はユーザーガイドを参照。
  5. ディスク選択画面に戻り、[続行] をクリックするとバックアップが始まる。
  6. 「操作は正常に完了しました」と表示されれば完了 (同 (e))。
Hasleo Backup Suite Free でバックアップ
図 3: Hasleo Backup Suite Free でバックアップ

ディスクの復元

仮にこのあとの作業でミスってしまったら、次の手順にしたがってディスクを復元してください。
  1. 上で作成した Hasleo Backup Suite Free の緊急ディスクでパソコンを起動する。
  2. Hasleo Backup Suite Free が起動したら、メニューから [復元] > [復元するイメージを参照する] を選択する (図 4(a))。
  3. バックアップイメージファイルファイル (*.DBI) を選択する (同 (b))。
  4. 「復元する対象を選択してください」の画面で、右上の [ディスクモード] および復元先のディスクを選択し、[次へ] をクリックする (同 (c))。
  5. 「復元する場所を選択してください」の画面で復元先のディスクを選択する (同 (d))。その際、[パーティションレイアウトを維持する] にチェックを入れておいたほうがいいかもしれない。
  6. 「ディスクレイアウトを確認して変更する」の画面はそのまま [続行] をクリックする (同 (e))。
  7. 復元前の最終確認 (同 (f))。[はい] をクリックする。
Hasleo Backup Suite Free で復元
図 4: Hasleo Backup Suite Free で復元

準備その 2: GParted Live USB を作成する

本稿では下記の目的で GParted Live という Live USB に含まれる各種ツールを使用します。

  • パーティションのバックアップと復元:
    eMMC 消去後にシステムパーティションと回復パーティションを復元するため、partimageコマンドとddコマンドを使用します。
  • パーティション情報の取得:
    partedコマンドを使用します。eMMC 消去後、工場出荷状態に戻すために必要となるパーティション情報をセクタ単位で取得します。
  • eMMC の消去:
    blkdiscardコマンドを使用します。
  • eMMC 消去後の消去確認:
    ddコマンドおよびodコマンドを使用します。
  • eMMC 消去後のパーティション再作成:
    partedコマンドを使用します。eMMC 消去前に取得しておいたパーティション情報に基づき、パーティションを再作成して工場出荷時のパーティションレイアウトに戻します。

作り方は特に難しくありません。GParted Live の ISO ファイル (gparted-live-<バージョン>-amd64.iso) を下記から入手し、Rufus 等のブータブル USB 作成ソフトで USB メモリに書き込んでください。

準備その 3: Windows 10 の回復ドライブを作成する

Windows 10 上で、Windows 10 を再インストールする際に必要となる回復ドライブを作成します。 参考: 回復ドライブを作成する
  1. コントロールパネル (カテゴリ表示) > [システムとセキュリティ] > [セキュリティとメンテナンス]
  2. [回復(R)] をクリックする。
  3. 「高度な回復ツール」画面で [回復ドライブの作成] をクリックする。
  4. 「回復ドライブの作成」画面で [システムファイルを回復ドライブにバックアップします] にチェックを入れ、[次へ] をクリックする。
  5. 回復ドライブ用の USB メモリを選択する。
  6. 「ドライブ上のすべてのデータが削除されます」云々と最終確認メッセージが表示される。問題なければ [作成] をクリックする。
  7. 「回復ドライブの準備ができました」と表示されるまで待つ (半日くらいかかるかも)。

GParted Live を起動する

道具が揃ったので、ここから実際の作業に入っていきます。USB ドライブから起動するように BIOS/UEFI を設定し、作成しておいた GParted Live USB をパソコンに挿入して電源を入れます。すると図 5 のようにブートメニューが表示されますが、タブレット PC のためか左に 90° 傾いてしまっています(笑)。同じ境遇の方はあとで付録の対策を試してみてください。ここでは一番上の「GParted Live (default settings)」を選択します。続いてキーボードや言語の設定画面となりますが、今回限りなので適当に選んでおけばいいでしょう。無事に GParted Live が起動すると図 6 のようになります。

ブートメニュー
図 5: ブートメニュー
デスクトップ
図 6: デスクトップ

GParted Live が起動すると、最初から GParted のウィンドウが開いていますが、早速これを閉じて、デスクトップのショートカットアイコンからターミナルを起動します。ここからしばらくはターミナル上での作業となります。最初に、バックアップ先となる外付け HDD を/media等のマウントポイントにマウントしておきます。

$ sudo mount -t ntfs /dev/sdc1 /media

/dev/sdc1」の部分は環境に合わせて読み替えてください。

各パーティションのバックアップをとる

parted コマンドでパーティション情報をメモする

パーティションに関する情報 (各パーティションの開始セクタやサイズ等) を取得しておきましょう。あとで工場出荷状態に戻すために必要となります。まず、fdiskコマンドにl(エル) オプションを付けて eMMC のデバイスノードを探ります。
$ sudo fdisk -l
Disk /dev/mmcblk0: 116.48 GiB, 125069950976 bytes, 244277248 sectors
Units: sectors of 1 * 512 = 512 bytes
...
Device             Start       End   Sectors   Size Type
/dev/mmcblk0p1      2048    534527    532480   260M EFI System
/dev/mmcblk0p2    534528    567295     32768    16M Microsoft reserved
/dev/mmcblk0p3    567296 242636766 242069471 115.4G Microsoft basic data
/dev/mmcblk0p4 242636800 244275199   1638400   800M Windows recovery environment
...
Disk /dev/sdc: 3.77 GiB, 4052746240 bytes, 7915520 sectors
Disk model: MF-GU2
...
Device     Boot Start     End Sectors  Size Id Type
/dev/sdc1  *     2048 7915519 7913472  3.8G  c W95 FAT32 (LBA)
...
Disk /dev/sdb: 1.82 TiB, 2000398934016 bytes, 3907029168 sectors
Disk model: HD-PNFU3
...
Device     Boot Start        End    Sectors  Size Id Type
/dev/sdb1          64 3907029119 3907029056  1.8T  7 HPFS/NTFS/exFAT

サイズ等から判断して/dev/mmcblk0が消去したい eMMC のデバイスノードだと見当がつきます。次に、これを引数としてpartedコマンドを起動します。partedのプロンプトが表示されるので、「unit s」と入力して表示をセクタ単位にし、printコマンドでパーティションのレイアウトを表示させます。
$ sudo parted /dev/mmcblk0
GNU Parted 3.5
Using /dev/mmcblk0
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit s
(parted) print
Model: MMC DF4128 (sd/mmc)
Disk /dev/mmcblk0: 244277248s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start       End         Size        File system  Name                          Flags
 1      2048s       534527s     532480s     fat32        EFI system partition          boot, esp
 2      534528s     567295s     32768s                   Microsoft reserved partition  msftres
 3      567296s     242636766s  242069471s  ntfs         Basic data partition          msftdata
 4      242636800s  244275199s  1638400s    ntfs         Basic data partition          hidden, diag
こうしてパーティション情報を得ることができました。パーティション 1 が EFI 、2 が予約、3 が Windows 10、4 が回復パーティションです。よく見るとパーティション 3 のサイズが奇数になっており、後続のパーティションとの間によくわからないギャップができています。もともとこうだったのか、この記事を書くために Hasleo Backup Suite Free をいろいろ試していたらこうなってしまったのか?まああまり気にしないことにして、あとの作業でこのギャップは埋めてしまおうと思います。

partimage によるバックアップ

パーティション 1 (EFI パーティション) とパーティション 4 (回復パーティション) はあとで復元するので、パーティション単位でバックアップをとっておきます。パーティション 2、3 はここでは省きますが、必要に応じてとるようにしてください。
GParted Live にはパーティションのバックアップ / 復元を行うためのpartimageというコマンドが付属しているので、これを使わせてもらいます。ただし NTFS のサポートは Experimental だそうです。ちょっと心配なので、あとで別の手段も併用することにします (次節参照)。
partimageコマンドの操作手順は次のとおりです。
  1. ターミナルを開きpartimageを起動する。
    $ sudo partimage
    
  2. パーティション一覧からバックアップ元のパーティション(ここでは EFI パーティションmmcblk0p1) を選択し、Tab キーを押す (図 7(a))。
  3. バックアップ先のイメージファイル名を入力する (同 (b))。図の例では、/mediaにマウントした外付け HDD を指定している。ちなみに手順 2 に戻りたいときは Shift + Tab キーを同時押し。
  4. Action to be done:「Save partition into a new image file」を選択する。
  5. F5 キーを押して次の画面へ。
  6. Compression level: 好みの圧縮レベルを選択する (同 (c))。
  7. If finished successfuly: バックアップ終了時の処理を選択する。
  8. Options: たいていはデフォルトで問題ないと思われる。
  9. Image split mode: イメージファイルの分割方法を好みで選択する。
  10. F5 キーを押して次の画面へ。
  11. バックアップするパーティションの説明文を必要に応じて入力する (同 (d))。空欄も可。
  12. パーティション情報が表示される (同 (e))。確認して [OK] を押す。
  13. バックアップが完了するまで待つ (同 (f))。
  14. バックアップが完了すると、その旨のメッセージが表示されるので、[OK] を押す (同 (g))。
  15. 手順 2 ~ 12 を繰り返して回復パーティションmmcblk0p4のバックアップも行う (同 (h))。このとき、NTFS サポートが Experimental であることの警告が表示される (同 (i))。
partimage によるパーティションのバックアップ
図 7: partimage によるパーティションのバックアップ

(念のため) dd コマンドによるバックアップ

partimageの NTFS サポートを信頼できるという方は、この節は読み飛ばしてください。疑うわけじゃありませんが、念のためddコマンドによるバックアップを併用しましょう、というのがこの節の本旨です。

ddは、入力から出力へ、データのコピーや変換を行うコマンドです。入力として CD-ROM やハードディスク等のブロックデバイスを指定し、データをベタ読みしてファイルに落とすことができます。開始位置と読み出しサイズを自分で指定してピンポイントで読み出すことができるので、一般的なバックアップソフトに比べて単純明快・一目瞭然なのが利点だと思います。

まずパーティション 1 から。

$ sudo dd bs=512 skip=2048 count=532480 if=/dev/mmcblk0 of=/media/bak/p1.dd.img
532480+0 records in
532480+0 records out
272629760 bytes (273 MB, 260 MiB) copied, 487.559 s, 559 kB/s

1 行目が自分で入力したコマンドで、残りはddコマンドが出力した途中経過や実行結果です。オプションの意味は次のとおりです。

  • bs: 1 回の読み出しで読み出すバイトサイズ。eMMC の論理セクタサイズと同じ 512 バイトを指定している。eMMC の論理セクタサイズはpartedコマンドの出力 (既出) を見るとわかる。
  • skip: 読み出し開始セクタ。partedコマンドの出力から得られたパーティション 1 の開始セクタ番号を指定している。
  • count: 読み出すセクタ数。これもpartedコマンドの出力から得られたパーティション 1 のセクタサイズを指定している。
  • if: 入力元である eMMC のデバイスノードを指定する。mmcblk0の部分はシステムによって変わる可能性がある。
  • of: 出力先のファイル名。

オプションの詳細は GNU のマニュアルなどを参照してください。

次にパーティション 4、これもセクタの数字が変わるだけで、やり方は同じです (でも打ち間違いにはご注意)。

$ sudo dd bs=512 skip=242636800 count=1638400 if=/dev/mmcblk0 of=/media/bak/p4.dd.img
1638400+0 records in
1638400+0 records out
838860800 bytes (839 MB, 800 MiB) copied, 1507.2 s, 557 kB/s

eMMC を完全消去する

ここまで長々と準備してきましたが、ようやく eMMC を消去する時がきました。次のようにblkdiscardコマンドを実行します。
$ sudo blkdiscard -f -s /dev/mmcblk0
  • -f, --force: ファイルシステム等に関するチェックをすべて無効にし、強制的に消去する。
  • -s, --secure: (デバイスがサポートしていれば) セキュア消去を実行する。
セキュア消去と通常の消去のちがいは、ガベージコレクタが作成したコピーデータも消去するかどうか、ということのようです。詳細はblkdiscard(8)のマニュアルを参照してください。

消去できたか確認する

本当に消去できたか確認してみます。まずはpartedで eMMC を覗いてみます。

$ sudo parted /dev/mmcblk0
GNU Parted 3.5
Using /dev/mmcblk0
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Error: /dev/mmcblk0: unrecognised disk label
Model: MMC DF4128 (sd/mmc)
Disk /dev/mmcblk0: 125GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
(parted)

少なくともパーティションテーブルは無事に消えたようです。次に、実データを確認します。ここではddコマンドとodコマンドの合わせ技で、eMMC 全面が0x00(または0xFF?) で埋め尽くされていることを確認したいと思います。ちょっと寄り道になりますが、その方法を説明します。結果だけ知りたいという方は原稿用紙 2 枚分くらい読み飛ばしてください。

ddコマンドで読み出したデータをファイルに落とすと、そのファイルはバイナリファイルになりますが、それをパイプラインでodコマンドに渡すと標準出力に表示させることができます。例えば (時間を少し巻き戻して) 先ほど消去した eMMC の「消去前の」パーティション 1 を、先頭 2 セクタ分だけ出力してみます。

$ sudo dd bs=512 skip=2048 count=2 if=/dev/mmcblk0 of=temp.bin && cat temp.bin | od -Ax -tx1
2+0 records in
2+0 records out
1024 bytes (1.0 kB, 1.0 KiB) copied, 0.0322715 s, 31.7 kB/s
000000 eb 58 90 4d 53 44 4f 53 35 2e 30 00 02 08 fe 1b
000010 02 00 00 00 00 f8 00 00 3f 00 ff 00 00 08 00 00
000020 00 20 08 00 01 02 00 00 00 00 00 00 02 00 00 00
000030 01 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00
000040 80 00 29 d6 73 1b bc 4e 4f 20 4e 41 4d 45 20 20
000050 20 20 46 41 54 33 32 20 20 20 33 c9 8e d1 bc f4
000060 7b 8e c1 8e d9 bd 00 7c 88 56 40 88 4e 02 8a 56
000070 40 b4 41 bb aa 55 cd 13 72 10 81 fb 55 aa 75 0a
000080 f6 c1 01 74 05 fe 46 02 eb 2d 8a 56 40 b4 08 cd
000090 13 73 05 b9 ff ff 8a f1 66 0f b6 c6 40 66 0f b6
0000a0 d1 80 e2 3f f7 e2 86 cd c0 ed 06 41 66 0f b7 c9
0000b0 66 f7 e1 66 89 46 f8 83 7e 16 00 75 39 83 7e 2a
0000c0 00 77 33 66 8b 46 1c 66 83 c0 0c bb 00 80 b9 01
0000d0 00 e8 2c 00 e9 a8 03 a1 f8 7d 80 c4 7c 8b f0 ac
0000e0 84 c0 74 17 3c ff 74 09 b4 0e bb 07 00 cd 10 eb
0000f0 ee a1 fa 7d eb e4 a1 7d 80 eb df 98 cd 16 cd 19
000100 66 60 80 7e 02 00 0f 84 20 00 66 6a 00 66 50 06
000110 53 66 68 10 00 01 00 b4 42 8a 56 40 8b f4 cd 13
000120 66 58 66 58 66 58 66 58 eb 33 66 3b 46 f8 72 03
000130 f9 eb 2a 66 33 d2 66 0f b7 4e 18 66 f7 f1 fe c2
000140 8a ca 66 8b d0 66 c1 ea 10 f7 76 1a 86 d6 8a 56
000150 40 8a e8 c0 e4 06 0a cc b8 01 02 cd 13 66 61 0f
000160 82 74 ff 81 c3 00 02 66 40 49 75 94 c3 42 4f 4f
000170 54 4d 47 52 20 20 20 20 00 00 00 00 00 00 00 00
000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
0001a0 00 00 00 00 00 00 00 00 00 00 00 00 0d 0a 44 69
0001b0 73 6b 20 65 72 72 6f 72 ff 0d 0a 50 72 65 73 73
0001c0 20 61 6e 79 20 6b 65 79 20 74 6f 20 72 65 73 74
0001d0 61 72 74 0d 0a 00 00 00 00 00 00 00 00 00 00 00
0001e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0001f0 00 00 00 00 00 00 00 00 ac 01 b9 01 00 00 55 aa
000200 52 52 61 41 00 00 00 00 00 00 00 00 00 00 00 00
000210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
0003e0 00 00 00 00 72 72 41 61 ab e6 00 00 2d 00 00 00
0003f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa
000400
odコマンドのオプション:
  • -Ax: 番地を 16 進数で表示する。
  • -tx1: データを 1 バイト単位で 16 進数で表示する。

ちなみに、上のやり方でddコマンドの出力を一旦ファイルに落としているのは、ddコマンドの出力とodコマンドの出力を分けたかったからです。

で、0001800001a0番地の間にある「*」に注目していただきたいのですが、これはその前の行である00018000018f番地のデータが、00019f番地まで連続していることを示しています。そこで、eMMC の全面に対して上のように実行すれば

000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
xxxxxx(最後の番地)

とか

000000 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
*
xxxxxx(最後の番地)

とかになることが期待されます。

実際に確認してみましょう。あらかじめfdiskコマンドで調べておいたとおり、この eMMC のセクタ数は 244277248 です。読み出すサイズは 244277248 セクタ × 512 バイト = 125069950976 バイト (16 進数で 1D1EC00000) となります。

$ sudo dd bs=512 skip=0 count=244277249 if=/dev/mmcblk0 | od -Ax -tx1
000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
1d1ec00000
244277248+0 records in
244277248+0 records out
125069950976 bytes (125 GB, 116 GiB) copied, 1364.85 s, 91.6 MB/s

期待どおりですね。この結果から、eMMC が全面にわたり0x00で埋め尽くされていることがわかりました。また、読み出すセクタ数を +1 して 244277249 セクタにしておいたのですが、実際に読み出したデータは 244277248 セクタ分 (125069950976 バイト) だったことから、確実に末尾まで読み出したこともわかりました。

これで復元不可能なレベルまで消去されたことの確認になるのかといわれれば、そんなことはないかもしれませんが、一応ちゃんと消去されているようです。

パーティションを切りなおす

まっさらになった eMMC に対して、元のとおりにパーティションを作りなおしていきます。引き続き、GParted Live のpartedコマンドを使用します。次の操作で、パーティションテーブルの新規作成、パーティション 1 の作成とフラグのセットを実行しています。
$ sudo parted /dev/mmcblk0
GNU Parted 3.5
Using /dev/mmcblk0
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit s
(parted) mklabel gpt
(parted) mkpart "EFI system partition" 2048s 534527s
(parted) set 1 boot on
(parted) set 1 esp on
mkpartが新しいパーティションを作成するコマンドで、引数は順にパーティションの説明文、開始セクタ、終了セクタとなります。また、set コマンドでパーティション 1 のフラグをセットしています。この辺りは本稿の最初のほうで取得しておいたパーティション情報のとおりに指定しています。パーティション 2 から 4 も同様にして作成します (細かいことをいえば、先ほど触れたようにパーティション 3 と 4 の間にあったギャップは埋めています)。
(parted) mkpart "Microsoft reserved partition" 534528s 567295s
(parted) set 2 msftres on
(parted) mkpart "Basic data partition" 567296s 242636799s
(parted) set 3 msftdata on
(parted) mkpart "Basic data partition" 242636800s 244275199s
(parted) set 4 hidden on
(parted) set 4 diag on
(parted) print
Model: MMC DF4128 (sd/mmc)
Disk /dev/mmcblk0: 244277248s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start       End         Size        File system  Name                          Flags
 1      2048s       534527s     532480s                  EFI system partition          boot, esp
 2      534528s     567295s     32768s                   Microsoft reserved partition  msftres
 3      567296s     242636799s  242069504s               Basic data partition          msftdata
 4      242636800s  244275199s  1638400s                 Basic data partition          hidden, diag

各パーティションを復元する

partimage による復元

partimageでパーティション 1 (EFI パーティション) とパーティション 4 (回復パーティション) を復元します (スクリーンショットはパーティション 4 のものです)。

  1. partimageを起動し、パーティション一覧から復元するパーティションを選択し、Tab キーを押す (図 8(a))。
  2. 復元するイメージファイル名を入力する。
  3. Action to be done:「Restore partition from an image file」を選択する。
  4. F5 キーを押して次の画面へ。
  5. Options: たいていはデフォルトで問題ないと思われる (同 (b))。
  6. If finished successfully: 復元が終わったあとの動作をお好みで選択する。
  7. F5 キーを押して次の画面へ。
  8. 復元するパーティションが NTFS の場合は、警告が表示される (同 (c))。
  9. パーティション情報が表示される。確認して [OK] を押す (同 (d))。
  10. 最終確認 (同 (e))。[Yes] を押す。
  11. 復元が完了すると、その旨のメッセージが表示されるので [OK] を押す (同 (f))。
partimage によるパーティションの復元
図 8: partimage によるパーティションの復元

こうしてパーティション 1、4 を復元できたわけですが、パーティション 4 は NTFS です。partimageでは Experimental でした。また少し寄り道になりますが、復元したデータと、先ほどddコマンドでバックアップしておいたイメージファイルを比較して一致することを確認しておきたいと思います。復元したばかりのパーティション 4 をdd コマンドで読み出し、適当なファイルに保存してcmpコマンドで比較します。

$ sudo dd bs=512 skip=242636800 count=1638400 if=/dev/mmcblk0 of=temp.bin
$ cmp temp.bin /media/bak/p4.dd.img

何も表示されなければ合格です。もし「temp.bin /media/bak/p4.dd.img differ: byte 2, line1」みたいな表示が出る場合は不一致が発生しています。今回は問題なしでした。

dd コマンドによる復元

partimageではなくddコマンドでとっておいたバックアップデータを復元する方法についても触れておきます。書き込むときは開始位置をskipではなくseekで指定することに注意してください。
$ sudo dd bs=512 seek=2048 count=532480 if=/media/bak/p1.dd.img of=/dev/mmcblk0
$ sudo dd bs=512 seek=242636800 count=1638400 if=/media/bak/p4.dd.img of=/dev/mmcblk0

Windows 10 を再インストール (回復) する

最後に、あらかじめ作成しておいた回復ドライブを使って Windows 10 を再インストールします。回復ドライブとして作成した USB メモリから PC を起動してください。
  1. [Choose the language]: 得意なほうを選択する (図 9(a))。
  2. [キーボードレイアウトの選択]: お好み (同 (b))
  3. [オプションの選択]: 「トラブルシューティング」を選択 (同 (c))。
  4. [トラブルシューティング]: 「ドライブから回復する」を選択 (同 (d))。
  5. [ドライブから回復する]: 「ドライブを完全にクリーンアップする」を選択 (同 (e))。
  6. [同]: [回復] ボタンを押す (同 (f))。
  7. しばらく待つ。
  8. 回復処理が完了し、Windows 10 の初期設定画面になるので、言語を選択する (同 (g))。
  9. 例のナビゲーターの音声案内が始まる。
  10. あとはそれにしたがって進める。
Windows 10 の回復
図 9: Windows 10 の回復

付録: GParted Live の画面が左に 90° 回転していたら

タブレット PC で GParted Live を起動すると、画面が左に 90° 回転した状態で表示されるようです。対策としては、xrandrコマンドで右に 90° 回転させることで (見た目上) 元に戻します。
$ xrandr -q
Screen 0: minimum 320 x 200, current 800 x 1280, maximum 16384 x 16384
DSI-1 connected primary 800x1280+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   800x1280     60.10*+
   1280x800     59.99   59.97   59.81   59.91
   1280x7200    60.00   59.99   59.86   59.74
   ...
DP-1 disconnected (normal left inverted right x axis y axis)
HDMI-1 disconnected (normal left inverted right x axis y axis)
$ xrandr --output DSI-1 --rotate right
まずxrandr -qで対象となるディスプレイを探します。上の例では (なんとなく) DSI-1 だとわかります。このディスプレイに対して--output DSI-1--rotate rightとともにxrandrコマンドを実行することで事なきを得ます。
見づらい
図 10: 見づらい
見やすい
図 11: 見やすい