以前、家の中のPCをWindows10にアップグレードしたとき一番の難物だったのがIntel Compute Stickだった。結局Compute Stickは売り払ったのでもう手元には無いが、Win8.1に戻すのに苦労したので忘れないうちに記す。

Intel ComputeStickはWin8.1 with Bingがプレインストールされていて、期間限定無償のWindows10アップグレードに対応しているので、WindowsUpdateから自動で、またはメディア作成ツールを使って手動でアップグレードを開始できる。Win10へのアップグレードが完了するとeMMC内にあるWindows8.1のリカバリー領域が削除され、リカバリー領域がC:ドライブにまとめられてしまう。この状態でも結構ディスクを使用してしまっていて、残り容量が少ないので使い続けたいのなら、Windows10のクリーンインストールを行うのが吉だと思う。一度Win10にアップグレードした個体はライセンス認証も問題なく通るので、アップグレードに使用したメディアを使うと簡単にクリーンインストールができる。ただリカバリー領域が削除されているのでこのままではWin8.1に戻せないし、メーカーもリカバリー領域を復活させるリカバリーディスクなどのツールを提供してない。(いんてるさんは親切なので有償の修理扱いなら対応してもらえるかもしれない。)

したがっていろいろ試したい場合はリカバリー領域はWin10アップグレード前にバックアップしておく必要があるのに、公式な方法でWindowsの回復ディスクの作成でリカバリー領域を含めようとすると途中でエラーになるし、なんとか回復ディスクを作成できても回復ディスクで起動するとリストア画面まで到達できず :( の画面を見るハメに。

しかたがないので公式にサポートされているUbuntuを使ってディスクイメージを吸い出すことにした。あたりまえだけどこの手順はWin8のリカバリ領域が必要なのでWin10アップグレード前に行うこと。Win10にした後ではリカバリー領域がなくなるので手遅れ。手動でリカバリー領域を削除した場合もNG。リカバリー領域のファイルを手動で保存した場合とかは知らない。理想的には新品の一度もWindowsを起動しない状態でイメージを作成するのが一番。

必要なもの
・セルフパワーのUSBハブ (バスパワーだと電力不足でうまくいかないことも)
・8GBくらいかそれ以上のUSBメモリ (Ubuntuを入れる)
・40GB以上の空きがあるUSBストレージ (ディスクイメージを保存する)
・USBキーボード、できればUSBマウスも。(キーボードはごく普通のUSBワイヤードを推奨)
・作業用パソコン(ComputeStickだけでもできなくは無い)

用意するソフトウェア
Ubuntu TLS 14.04 64ビット版。64ビット版UEFI起動ができComputeStickが公式にサポートしているので。
rufus 起動メディアを簡単に作る

rufusを使ってUSBメモリにUEFI対応でUbuntuを書き込む。手順は適当に探して。ComputeStickの電源を切り、USBハブにキーボード、マウス、Ubuntuの入ったUSBメモリを挿す。ComputeStickの電源を入れたら、一呼吸置いてF2を連打。押し始めるタイミングはキーボードのNumLock、CapsLock、ScrollLockが点灯して消えた直後。UEFI設定画面(BIOS設定画面)になったら、Configuration の Select Operating System を Windows 8.1 32-bit から Ubuntu 14.04 TLS 64-bit に変更して F10 で保存する。

再起動するとUSBのUEFI対応ローダーのGRUBが起動してくる。eMMCから起動しようとする場合は起動時にF10を連打して起動デバイス選択画面でUSBを選択する。選択肢に出ない場合はUSBメモリの作成に失敗しているので UEFI(BIOS)設定とrufusでの作成を再度確認。

無事GRUBの選択画面が出てきたら、インストールせずに試すかインストールするかみたいな選択肢が出てきたら、当然インストールしないで試すの選択肢でUbuntuを開始する。USB2.0で遅いので多少待たされるがUbuntuのデスクトップ画面が出てくる。5分くらい待ってもデスクトップが出てこなければどこかが失敗している。デスクトップまできたら、あとは適当にターミナルや仮想コンソールを使ってマウントしたUSB-HDDにddで /dev/mmcblk0のイメージを吸い出すだけ。CPUはそこそこ早いのでgzipで圧縮しながら処理すると遅いIOが少しましになる。次のようにした。

sudo -i   # スーパーユーザに変更
mount -o rw,async /dev/sda1 /mnt   # USB-HDDをマウント。つなぐと勝手に/media以下にマウントされるのでエラーになるかも。
dd if=/dev/mmcblk0 bs=33554432 | gzip -c > /mnt/STCK_mmcblk0.dd.gz
# ここで結構待つ。1.5時間~2時間くらい?
sync ; sync ; umount /mnt ; telinit 0

※不安ならmmcblk0rpmb、mmcblk0boot0、mmcblk0boot1も保存する。

はいおつかれさまでした。

ここではディスク一括でイメージ化したけど、パーティションごとにイメージ化する場合、大きなパーティションはC:ドライブなので保存しなくても良い。書き戻しも起動するまでは同じで次のようにする。 当然今入っているデータは消失するので注意。
gunzip -c /mnt/STCK_mmcblk0.dd.gz | dd of=/dev/mmcblk0 bs=33554432

ポイントとしては、UEFIの設定でOSをUbuntuにすると64ビットUEFI、Windowsにすると32ビットUEFIとして動くので起動するOSを切り替えられるというところ。外部のUSBでも内蔵スロットのmicroSDでもUbuntuが起動できればあとは何とかなる。Ubuntuとddでは無く、AOMEI Backupperの最近のバージョンでUEFI対応の起動USBを作ったほうがもう少し簡単にできると思う。しかしAOMEI BackupperではComputeStickでの動作がなぜか安定せず復帰できるかどうか不安があったのでUbuntuを使った。AOMEI Backupperのがddよりも余計なデータを処理しない分高速に 処理できる。実際、うまくいった場合は15~20分程度と短時間で保存・復帰ができるので、ddイメージの取得に成功したならばAOMEI Backupperのリカバリイメージも作っておくと良いだろう。

保存したディスクイメージは吸い出したComputeStick専用だが、ComputeStickで同一型番ロット違いで別の個体にリストアしても動作上は問題なかった。ライセンス認証はOEMライセンス認証3.0(OA3.0)で行われるためか別個体のイメージを書き込んでも認証済みとなった。ハード構成の異なるComputeStickが出てきた場合はイメージが流用できなくなる可能性はある。

参考情報

・パーティション情報
GPT fdisk (gdisk) version 0.8.10
The protective MBR's 0xEE partition is oversized! Auto-repairing.
Partition table scan:
MBR: protective
BSD: not present
PM: not present
GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/mmcblk0.dd: 59768832 sectors, 28.5 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 59768798
Partitions will be aligned on 2048-sector boundaries
Total free space is 4029 sectors (2.0 MiB)
 
Number  Start (sector)    End (sector)  Size       Code  Name
1            2048          206847   100.0 MiB   EF00  EFI system partition
2          206848          468991   128.0 MiB   0C01  Microsoft reserved ...
3          468992        46454783   21.9 GiB    0700  Basic data partition
4        46454784        59766783   6.3 GiB     2700  Basic data partition

※パーティション3がC:ドライブ、4がリカバリー領域。
基本的には1、2、4だけバックアップしておけばなんとかなるはず。

・ディスクイメージをパーティションイメージに分割する方法
各パーティションのサイズを計算
1  206847-2048+1       = 204800
2  468991-206848+1     = 262144
3  46454783-468992+1   = 45985792
4  59766783-46454784+1 = 13312000
 
全体のイメージから各パーティションに分割したイメージの作成方法
dd if=mmcblk0.dd of=mmcblk_boot.dd bs=512 count=2048
dd if=mmcblk0.dd of=mmcblk0p1.dd bs=512 skip=2048 count=204800
dd if=mmcblk0.dd of=mmcblk0p2.dd bs=512 skip=206848 count=262144
dd if=mmcblk0.dd of=mmcblk0p3.dd bs=512 skip=468992 count=45985792
dd if=mmcblk0.dd of=mmcblk0p4.dd bs=512 skip=46454784 count=13312000

※ComputeStickはディスクIOが激遅なので、作業は別PCで行うほうがよい。

・Ubuntuから見たemmcディスクの構成
brw-rw---- 1 root disk 179,  0 Aug 18 18:13 /dev/mmcblk0
brw-rw---- 1 root disk 179,  8 Aug 18 18:13 /dev/mmcblk0boot0
brw-rw---- 1 root disk 179, 16 Aug 18 18:13 /dev/mmcblk0boot1
brw-rw---- 1 root disk 179,  1 Aug 18 18:13 /dev/mmcblk0p1
brw-rw---- 1 root disk 179,  2 Aug 18 18:13 /dev/mmcblk0p2
brw-rw---- 1 root disk 179,  3 Aug 18 18:13 /dev/mmcblk0p3
brw-rw---- 1 root disk 179,  4 Aug 18 18:13 /dev/mmcblk0p4
brw-rw---- 1 root disk 179, 24 Aug 18 18:13 /dev/mmcblk0rpmb

このおもちゃは何かと手間がかかる。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中