2015年8月6日木曜日

Windows 10 アップグレード顛末

今回は結論を先に書きます。

Windows 10のアップグレードで
0X80070004 - 0x2000D

MIGRATE_DATA 操作中にエラーが発生したため、インストールはSAFE_OS フェーズで失敗しました

というエラーが発生してインストール途中で止まってしまう場合、
ユーザフォルダの名前が日本語(いわゆる2バイト文字)になっている
ことが原因かもしれません。
(解決策は最下部に。ただし、Microsoftアカウントでログインしている人限定・・・かも)

えーと、そして前置きから再度結論へ、という意味のわからん状態になりますが。

ご存知の通り、先月末にとうとうWindowsの新しいバージョンがリリースされたわけです。普段はMac使いの私ですが、当然Windowsも使っているわけで、アップグレードしたいよねー、とは思っていたのですがまぁ面倒なので予約とかしていなかったわけです。

で、手元の作業がひと段落したので、アップグレードでもしてみようか、と、右下にある『Windows 10 を入手する』というアイコンに触ってみたわけです。それが昨日(8/5)の話。

そしたら、今の段階でも「予約」とかなってるわけです。つまり、アップグレードしたい人は予約してね(はぁと)的な。

なるほど。今までのMicrosoftは勝手にアップグレードとかしていたのに今回はさすがにOS全体のアップグレードだから勝手にやっちゃ怒られるもんなぁ、と思いつつ、予約ボタンを押してみたのですが、数分経過しても何の音沙汰もない。リリースされているのだから予約したら即ダウンロードされるんじゃないの?と思っていたのだが(Appleはリリース日以降にAppStoreでダウンロード可能)、どうやら違うらしい。

ちょっとググってみたら、予約してから順番にダウンロードされるとかで、数日から数週間かかる可能性がある、との情報。まぁMacユーザの数倍いるWindowsユーザが全員ダウンロード(Microsoftからのプッシュ)をしたら世界のネットワークがパンクするかもしれん、というのは分かる気もしますが、ションボリですわね。

と、さらに情報を集めていると、手動でアップグレードも可能だとのこと。インストールメディア(データ)が配布されており、それをダウンロードすることでできるらしい。ちなみにサイトはこちら。

このディスクイメージからインストールメディアを作成して、PCにぶち込めばインストール完了・・・、となるはずだったのですが。

ちなみに、今回インストールに使った機種は、Microsoft謹製のSurface Pro 2(OS:Win8.1)。
中古で買った割には結構使えるマシンです。どうでもいいですが。
#今回のインストールの件でググってみたらクソマシンだと宣う方もおられました。
#その方の評価を否定するつもりは全くありませんし、評価されている内容については私も同感ですが、
#個人的にはそこまでいうほどクソマシンではないかなぁ、という印象ですよ。

メディア(DVD)を入れ、インストール開始してからしばらくすると、途中で再起動がかかり、その後、「以前のWindowsのバージョンに戻しています」的なメッセージが表示され、結局もとのWindows画面に戻ってしまうという状態。

ダウンロードされたファイルが壊れていたり、メディアがうまく作れていない可能性も考え、家にある仮想環境でクリーンインストールを試みつつエラーコード(0X80070004-0x2000D)で検索をしてみると、何件かそれっぽいのにぶつかります。

例:

上記のサイトはどちらもMicrosoft提供のQAフォーラムなので、情報の信ぴょう性はある、と仮定して情報を整理すると、
・メディア(もしくはイメージファイル)の破損
・アンチウィルスソフトの存在
・システムフォルダ(Program Filesフォルダとかユーザフォルダとか)がデフォルトでない場所にいる
・なんかのキャッシュが悪さしてる

といった要因が可能性として考えられる、とあります。

ちなみに、アップグレード用のマシンにはアンチウィルスソフトは入れてなく(忘れていたことにこの時気付いた)、インストールに邪魔なほどキャッシュファイルもたまっておらず、システムフォルダはデフォルトのまま使っているので、メディア系の問題かと仮想環境側のインストール状況を見ると、いつのまにかインストールが完了していました。

では、イメージファイルまでは問題なければあとはメディアを作る段階で何か問題が発生したのか、ということなのですが、ここでもう一枚DVD焼いたら負ける気がします(笑)。

インストールが失敗する要素を並べながら考えてみること1時間。

ふと思い出したのが、SurfaceにUnity(ゲーム作るアプリ)をインストールした時に起こったエラーです。実は、エラーが頻発したのでググってみると、2バイト文字のユーザフォルダでは動作が不安定になるとかいう話で、その場合の解決方法は『シンボリックリンク』を1バイト文字のフォルダ名で作り、そこをユーザフォルダとして認識させることでエラーが解消するのです。

まさか、これ?

シンボリックリンクではなく、ユーザフォルダが2バイトだから、ということね。
Windows8からはMicrosoftアカウントでのログインができるようになり、これがノートPC(Surface)とデスクトップ(仮想環境)の2台使いをしていると結構便利だったので使っていたのですが、何も考えずに普通に登録をしたので、名前は日本語で登録をしたわけです。それにより、私のユーザフォルダの名前は2バイト文字で登録をされたわけです。

ちなみに、私の友人でパソコンにそれほど詳しくない人たちが持っているPCをみると、このユーザフォルダが日本語になっているケース、多いです。ログイン名が日本語なのでフォルダを見るまでもなくわかりますな。小さい会社なんかでもこういうケース、多いですよね。ドメインとか使わないと勝手にユーザ名日本語にしちゃうんです。だって日本人だもの。

で、先ほどのフォーラムをもう一度見直し、解決案として提示されているのは、
・管理者権限のローカルアカウントでインストール
・(Win8限定)Windows ストアのキャッシュを削除
・不要なサービス(Microsoft謹製サービス以外のもの)の停止(笑)
とかいったところですが、そもそもこれで解決ができていない可能性もあり(これらの情報により成功した、という追加情報がないため)、試しにユーザフォルダの名前変更(1バイト化)を試してみよう、と考えたわけです。

ただ、Microsoftアカウントで作成したユーザフォルダの名前は変えることができなさそうなので、安直にMicrosoftアカウント側のユーザ名を1バイト(半角ローマ字)に変更し、ログアウト→ログインを行うと、新しいユーザフォルダの元で「ほぼ」元の状態で立ち上がります。
注:本当は、この前にユーザフォルダのバックアップ、例えばブックマークとかドキュメントファイルとかをバックアップしてどこかに退避する必要がありますが、私は面倒なのでしてません。もともと別のところにバックアップしてあるし、漏れてても困らないし。

ここまで昨日の作業でした。
そして、今朝(8/6)からインストールを開始し、途中トレーニングに出かけていたので経過はどうだったかわかりませんが、トレーニングから帰ってきたらインストールが終わっていました。ということで、私の環境下でのインストールエラーの原因は、

ユーザフォルダが2バイト文字だったから

だったようです。

Microsoftさん、これは致命的なミスかもよ(笑)

0 件のコメント:

コメントを投稿