2012年8月24日金曜日

[ThinkPad Edge E430] 2つ目のリカバリメディア作成法

ようやく2つ目のリカバリディスクを作ることができました。(作成方法だけを知りたい人は、こちらにまとめを書いてありますので、そちらをご覧ください。)

転売対策か何かの理由(ライセンスの問題?)で、リカバリディスクは1部しか作れないようになっているようですが、DVDに焼いたものは保存性にどうも疑問があります。以前TVドラマをDVD-Rに焼いていたのですが、ほんの1ヶ月くらいで読めなくなったことがありました。怪しいDVD-Rを使うからだ!と言われればそれまでですが、それ以来DVD-Rよりは保存性がいいと言われているDVD-RW(もちろん国内メーカーのもの)を使うようにしていますが、それでも使えなくなったらと思うと心配です。

話がそれました。
いったんはDVDにリカバリを作ったものの、やはりUSBメモリにリカバリメディアを用意したいと思いました。が、一度作ってしまったらそれを許してくれません。WEBをいろいろ見てみると、リカバリメディアの作成に失敗してしまってもう二度と作れなくってしまった人もいるようなので、そういう人のためにもここに方法を記録しておきたいと思います。

できるだけ簡単な方法として、リカバリメディア作成処理の本体であるrecovburncd.exeにパッチを当てるプログラムを書こうと思ったのですが、このexeはデジタル署名がついていて改造が困難なこととそのプログラムを作る時間がないので、手動での操作手順だけ示したいと思います。
前置きが長いですが、この方法はちょっと面倒且つ難しいです。慣れていない人はそれなりの根気が要るかもしれません。また、この方法が適用できるのは今のところ特定のバージョンのrecovburncd.exeに対してのみです(ファイルサイズ504120byte、更新日時2012年3月22日13:18:54のもの)。他のバージョンでは、下記手順のアドレスを調整しなければいけないでしょう。

では、方法です。

  1. ここのページからWinDbgをダウンロードしインストールします。
  2. WinDbgを「管理者として実行」します。
  3. 「File」→「Open Executable」メニューを押して、c:\Program Files (x86)\Lenovo\Factory Recovery\recovburncd.exeを開きます。
  4. 「Save information for workspace?」と聞かれたら、Noを押します。
  5. Commandウィンドウで lm [ENTER] とタイプします。モジュールの一覧が表示されますので、少しスクロールバックしてモジュール名=rec7burncdを探します。そのstartアドレスを控えておきます(通常は00400000hになります)。
  6. Commandウィンドウで bp 0x40c7fc [ENTER] とタイプします。この0x40c7fcの部分は、前の手順で控えたstartアドレスに+C7FChを加えたものとします。
  7. g [ENTER]とタイプします。Commandウィンドウの最終行が
    0040c7fc e85f0d0000 call rec7burncd+0xd560 (0040d560)
    と表示されていればOKです。そうでない人はrecovburncd.exeのバージョンが異なっていると思われます。あきらめるか、何らかの方法でオフセット値を再調査しなければいけません。
  8. 次に「F10」を1回だけ押してください。しばらく*BUSY*表示となったあと、再びプロンプトに戻ってきます。このとき4行くらい前にeax=00000001と表示されている場合はリカバリ作成済みです。一方、eax=00000000と表示された場合リカバリはまだ作成されていません。このeaxを強制的に00000000に書き換えることでリカバリ作成処理に移ることができるようになります。
  9. r eax=0 [ENTER]とタイプして、eaxレジスタの値を1→0に書き換えます。
  10. g [ENTER]とタイプして続きを一気に実行します。
    以降は、リカバリメディアの作成を行うダイアログが表示されて処理を進めることができるはずです。

私はこの方法で新たにUSBメモリにリカバリメディアを作成することができました。これで4枚ものかさばるDVDを管理しなくて済みます。
しかし、私の場合このUSBメモリからブートすることができませんでした。調べてみると、USBメモリ上のリカバリ用パーティションがactiveになっていない、MBRにブートコードが書き込まれていないということのようです(リカバリメディア作成中にブートコードを書いてくれない仕様なのかなあ)。
その後もいろいろと検索してみたのですが、書き込み済みのUSBメモリのMBRにブートコードだけを書き込む方法がなかなか見つかりませんでした。仕方ないので、MBMをUSBメモリにインストールしました。幸いネットワークブートできるMBMを用意してあったので、そこからPCをブートしてUSBメモリにMBMをインストールしました(通常はCDブートの方が簡単かも)。ついでに、パーティションもアクティブにしておきました。
ようやくUSBメモリ版リカバリメディアが用意できました。

2012年8月21日火曜日

リカバリディスク作成時の注意

先日来、ThinkPad Edge E430ばかりのネタを書いていますが、今日もちょっとひっかかったので書いておきたいと思いました。

一つ前のモデルですが、ThinkPad Edge E420に関する情報はそのままE430にも適用できることが多いようなので、こちらのWikiなどを参考にしていました。
ここの情報によると、「リカバリディスクは通常1コピーしか作ることが許されていないが、Edgeシリーズでは伝統的に"Q:\FactoryRecovery\service_done.ini"を削除すれば何度でも作成できる」とありますが、これはE430には当てはまりません!
E430やE530、それからここ最近のThinkPadシリーズではリカバリディスクの作成方法が変わってきているようで上のファイルは作られませんし、そもそもファイル構成自体が変わってきているようです。このWikiでは「伝統的に~できる」と書いてあるので、これからも同じだろうと思ったのは私だけではないようで、2chやブログなどで2つ目のリカバリメディアを作れると思って引っかかった人が何人かいるようです。

この「伝統的に」という文句はもう外さないとダメだと思います。あるいは言葉を選ぶべきです。この書き方だと、これからもずっと同じようにできると読めてしまうし、それをLenovoと関係のない人がいくらwikiといえども書き込むのは危険です。

さて、私の場合はとりあえずDVDにリカバリメディアを用意したものの4枚にもなって管理が面倒なので、USBメモリ1個に置き換えたいと思ったのがことの始まりです。そのためのわざわざ新しいUSBメモリを買ったのに、リカバリメディアが作れないのであれば無駄な出費になってしまいそうです。
新しいリカバリ方法では、"Q:\FactoryRecovery\recovery.ini"というファイルが作られるようなので(タイムスタンプがこのファイルだけリカバリメディアを作った日になっていた)このファイルが何らかのキーになってリカバリ済みだと判定してると思ったのですが、そうではないようです。このファイルをいろいろ書き換えてみましたが、やはり2つ目のリカバリメディアは作れません。
もう少し別のアプローチで調べてみようと思います。

2012年8月17日金曜日

Home Premiumで初めてつまずく・・・

Windowsは以前からよく分からないエディションがいろいろありましたけれど、あまり気にしていませんでした。普通のユーザーが普通に使う分には一番下のエディションで困らないですから。
まあ、そうですね、私が記憶にある範囲では、リモートデスクトップが使えるかどうか?、BitLockerが使えるかどうか?くらいの差があることは認知していましたが、どちらも使わない(だろう)機能なので完全に無視してました。

しかし、この度初めてHome Premiumを使って躓いてしまいました。

 「Visual Studioのリモートデバッグ機能が使えない



ということらしいです。
これまではレッツノートを使ってきたので、自ずとProfessionalエディションだったので気づかなかったのですね。さてさて、どうしたものか・・・。

2012年8月12日日曜日

ThinkPad E430の高熱

先日書いたThinkPad E430の高熱情報の続き。

同じ現象がまた起きました。最高温度は2つのコアで101℃となっていました。Tj maxが105℃なので、本当に強制電源断の手前まで来てるのでしょうか?

今回は2回目なのでもう少し落ち着いて様子を見ることができたと思います。この問題が起きたときは、やはりCPUファンは回っていなかったと思います。どんなに耳を近づけてもファン音を確認できませんでした。また、実際に排気口あたりを触るとかなり熱くなっていたので、Core Tempの表示がおかしかっただけというわけではないと思います。たぶん触れ続けると低温火傷にはなっていたでしょう。

前回は慌ててシャットダウンしましたけど、今回はスリープにしてみました。そして10数秒くらい待っておもむろに再度電源を入れました。すると、画面が表示されてすぐにCPUファンが勢いよく回り始めてCore Tempの表示温度もみるみる下がっていきます。さっきまでは95℃以上をうろうろしていたのにあっという間に70℃を下回りました。

何らかの原因でCPUファンの制御がちゃんと利いていないのだと思います。Windowsのドライバが原因?いや、基本的にOSのドライバレベルでCPUのファンを制御していたら危険だと思いますから、それはないと思います。
じゃあBIOSのバグか?この可能性が高いような気がします。実際には、ファンをコントロールするマイクロコントローラが入っていて、それが温度の検知とファン制御をしているんだろうと予想しています。そして、そのコントローラのファームウェアもBIOSあたりで書き換えができるのではないだろうか?と勝手な推測をしています。

そして、この問題が起きるきっかけはスリープの多用ではないかと疑っています。今回はスリープから戻るとCPUファンが回り出したので、その再起動のときに一瞬はBIOSレベルの初期化処理が走るはずなので、その過程でうまくいったり、いかなかったり、とか。
あとは、BIOSやドライバレベルである程度はファンのONする温度のスレッショルドを設定できる可能性があると思いますので、その温度設定レジスタ(か何か)に異常な値が書き込まれたとか・・・。

いずれにしても推測の域は出ませんが、ThinkPad E430以外のことでもよいので、一般的にCPUファンの制御系統がどうなっているのか、どなたかご存じの方はいらっしゃいませんでしょうか?

2012年8月8日水曜日

i7-3612QMが100℃越え?

先月購入したThinkPad E430だけれど、今日ちょっと冷や汗ものでした(ちょっと大げさか・・・)

UnDupで重複ファイルを検索していたところ、CPU温度がかなり熱くなっていることに気づきました。
まだ買って間がないのでどれくらいCPU温度が上がるのだろうかと思ってCore Tempは常に起動しているんですが、今日はふと見てみるとどのコアも95℃くらいを指していた。このくらいの温度なら前のLets Note S9でもあったのでそれほど慌てるほどじゃないという感覚なのだけれど、今日は様子が違いました。

まず、CPU負荷が全然低い点。Lets noteのときは、コアを2つとも(スレッド4つとも)100%近くまで負荷をかけた状態でしばらく経つと90℃を超えてきて場合によっては95℃を超える場合もありましたが、それだけの負荷であれば仕方ないと思っていたけれど、今回は4つのコアのうち一つが30~40%の負荷で残りは数%程度とかなり低い状態でした。にもかかわらず、コア温度95℃とはいったい何だ!?

そして、よく見てみるとCPUファンが回っていない。ThinkPad E430のファンは音が静かなので聞こえないだけかと思ったけど、確かに回っていなくて熱風を吹き出しているわけでもありませんでした。どうしようかと思っているうちに、温度は97℃・・、98℃とジリジリ上がってきます。そして100℃の値をみたときはさすがにヤバイと思ってシャットダウンを始めました。すると・・・、

CPUファンが急に回り出しました。その後、CPU温度が何度になったのかは分からないけれど、とにかくシャットダウン自体は通常通りに行われたようです。
電源OFF後、パームレストの左側を触ってみるとかなり熱い。内部で近くの樹脂が溶け始めてるんじゃないか?と思えるほどに。ちょっとコワくなったので、冷えてから再起動することにしました。

30分ぐらい経ってから起動すると、ふつう通りに起動しました。壊れた訳ではないようです。
その後はこれまでどおりふつうの温度範囲(45~65℃程度)に収まっており、今もそのPCでこれを書いているんですが、アレはいったい何だったんでしょうか?もしかしてCPUファンをコントロールしているBIOSあたりのバグではないか?と疑ってみたりしますが、そのような情報は特に見あたらず。
しばらく様子見するしかないようです。