2014年1月23日木曜日

UEFIブートについて調べてみました

Windows8を使っていると、ちょっとしたことでブートできなくなることがちょいちょいありましたので、この際UEFIブートについて調べてみました。結論としては、
やっぱりよく分からない
ということなのですが、分かったことだけでも備忘録として残しておこうかと思います。

事の始まりは、いまこれを書いているThinkpad Edge E430がUEFIブートではなく、BIOSブートになっていることです。せっかくだから、UEFIブートにしようと思って調べてみますと、再インストールしなくてもBIOSブートからUEFIブートに変更する方法があるそうではないですか!さっそく試してみたくなりました。

ここでやろうとしていることをまとめてみます。間違っている可能性も大ですが・・・。

  • 従来のMBRパーティションに、GPTパーティション情報を追加する。
  • EFIブートファイルを置くパーティションを作る。
  • EFIブート用のファイルを作成する。
  • BCDを正しく設定して、Windowsを起動できるようにする。
だいたい、以上のようなことをやっているようです。
  • 従来のMBRパーティションに、GPTパーティション情報を追加する。

    MBRとGPTは共存できるようです。
    MBRパーティション情報は、従来の方法でディスクのセクタ0に置かれている。一方、GPTパーティション情報はセクタ1以降に置かれている。
    gptgenというツールで、MBRパーティション情報からGPTパーティション情報を構築するようです。

  • EFIブートファイルを置くパーティションを作る。

    diskpartコマンドを使って操作します。UEFIブートでは、「EFIシステムパーティション」というパーティションタイプのパーティションから起動することになっているようです。
    パーティションタイプがこの特別なタイプですが、ファイルシステムとしては普通のFAT32です。つまり、UEFIファームウェアはFAT32を直接認識してファイル/ディレクトリにアクセスできるようになったようです。以前のMBRブートでは、単にセクタ0の内容を読んで所定のアドレスに飛ぶだけだったことを考えると、かなり柔軟性・拡張性が出たと思います。

  • EFIブート用のファイルを生成する。

    bcdbootコマンドを使うと、BIOS/UEFIブート用のファイルを作成できるようです。これにより、先に作ったEFIシステムパーティションに、EFIブート用のファイル(\EFI\Boot\bootx64.efi)を作成します。推測ですが、BIOSブートのときはMBR(セクタ0)の内容をメモリに読んで+1Eオフセットにジャンプしていたのに代わって、UEFIブートではこのファイル(ファイル自体は普通のexeと同じ形式?)を呼んでそれを実行することになった、と理解しています。
    先のdiskpartコマンドとこのbcdbootコマンドを使うために、Windows8の起動ディスクかシステム修復ディスクが必要となります。

  • BCDを正しく設定して、Windowsを起動できるようにする。

    先のbcdbootコマンドを使う段階でブートするWindowsの場所も教えますので、BCDの情報も適宜作成・更新されるようです。
BIOSブートからUEFIブートに変更する具体的な操作については、こちらをご覧ください。

こんな解釈で合っているのかなぁ。間違いがあれば、指摘していただけると幸いです。

で、結局良くわからなかったのは・・・
  • UEFIブートにすると、なぜブートが速くなる(と言われている)のか?
  • UEFIブートにすると、なぜセキュアなブート方法が実現できるのか?
という点です。
前者については、ThinkPad Edge E430ではBIOSブートでも十分速かったです。いわゆる「BIOS設定」画面に入るのに、電源ボタンを押してからキーボードを連打してようやく入れるくらいです。
後者については、結局はEFIシステムパーティションの内容を勝手に書き換えられたら、意図しない方法でブートされてしまうのでは?と思うのですが。もしかし、UEFIファームウェアと連携して、ダイジェストでも保存していて、ダイジェストが合わないブートファイルは読まないようになっているのでしょうかね。


2014年1月16日木曜日

備忘録:VMWare Playerを使用してドライバのカーネルモードデバッグ

自分に対する備忘録です。

VMWare Player上のゲストOSをデバッグターゲット(通称「生け贄」)とすることで、(物理的な)PC1台でカーネルモードデバッグができることが分かりました。これは便利です。


  1. VMWarePlayerを起動して、「仮想マシン設定」を開く。
  2. ハードウェアの「シリアルポート」の設定を次のようにする。
    名前付きパイプを使用するをチェックして、"\\.\pipe\com_1"と入力。
    この端末はサーバです」「接続先は仮想マシンです」を選んでおく。
  3. ホスト側OSでWinDbgを起動する。カーネルモードデバッグを起動して、pipeにチェック、パイプ名は上と同じものを入れる。reconnectにもチェックする。
基本的には、以上の設定で動きました。

しかし、上の2のところでシリアルポート自体がデバイス一覧に表示されていませんでした。そこで、次のようにしました。

仮想マシンの設定ファイル*.vmxをテキストエディタで開いて、下の方にあるserial0.presentという項目を探します。これが”FALSE”になっていれば、"TRUE"に変更します。
ついでに、serial0.fileType = "pipe"serial0.fileName = "\\.\pipe\com_1"というエントリも足しておきます。

2014年1月11日土曜日

不思議なVostro270s

昨年購入したVostro270sですが、USBメモリからのブートができなくて困っていました。

しかし先日、たまたまそのUSBメモリを挿したまま電源を切って、翌日電源を入れてみるとUSBメモリから起動していました。果たして、その差はいったい・・・

なんと、USBハブを介してつなぐとUSBメモリブートができる

ということだったようです。
これまでは、本体正面のUSBポートに直挿ししていてブートできていませんでした。

普通に考えれば正面に挿すと思うのですが、なぜ正面だと起動できないのでしょう。USBアナライザで起動時のログを調べて見たのですが、特におかしなところはなかったです。途中までは順調にUSBメモリを認識しているのですが、突然PCからアクセスしなくなります。
ただただ、不思議です。

2014年1月4日土曜日

LIFEBOOK WS2/M(SH90/MのWEBカスタマイズ版)のインプレッション

また悪い癖が出てしまい、ThinkPad Edge E430を持っているにもかかわらず、年末に富士通のLIFEBOOK WS2/M(SH90/MのWEB限定版)を買ってしまいましたので、そのインプレションなどを書いてみます。

このWS2/Mを選んだ理由は、

  • バッテリーの持ちがよさそうなこと
  • 13.3インチで理想的なサイズだったこと
  • WQHD(2560x1440)の高解像度液晶で、作業効率が上がりそうだったこと
  • 光学ドライブを内蔵していて、HDDへの換装もできそうだったこと
が挙げられます。
実際にちょっと使ってみた感想としては、
  • バッテリーは10時間も持ちそうもない。
    まだバッテリーでの本格稼働はさせていないけれど、減り方が早く感じられる。「電源プラン」を省電力にしてWEBブラウズや文書作成くらいであれば10時間くらいは持つのだろうけれど、やはり「省電力」設定では、個人的にはモッサリし過ぎです。Core i7-3612QM→Core i5-4200Uの移行では、ストレスを感じます。電源プランを「バランス」にすれば、まあまあのレベルになりますが、それでもやっぱり遅いと感じます。
  • 画面サイズと持った時のなじむ感じはなかなかよかったです。
    1.5Kg程度の重さも、最近のウルトラブックからするとかなり重い方ですが、ThinkPad E430が2.2Kgくらいあったことから考えると、全然軽いし、薄くて気に入っています。
  • WQHDのIGZO液晶はかなりいいですね。
    文字がかなり滑らかです。または、文字サイズを小さくしても文字が潰れないです。読めるかどうかは別ですが。Visual Studioなどの大きめのアプリを開いても、半分くらいはテストアプリの表示に残しておける感じです。
  • 光学ドライブは9.5mm厚なので、これまで使ってきたHDDマウンタキットSST-TS06Bが使えないです。
という感じです。ちなみにHDDは速攻でSSD(東芝HD5dシリーズ、7mm厚)に換装しています。メモリも2+2GByteを2+8GByteに変更しました。(DDR3Lが要求仕様のところ、気が付かずにDDR3の8Gを買ってしまいました。取り付けたところ問題なく動いているようで、Windowsのメモリテストもパスしました。消費電力は増えているのでしょうが・・・。)



初のウルトラブックということで、キーボードのストロークがかなり少ないことに少し戸惑いました。最初は打ちにくいと思いましたが、慣れればそうでもないです。セパレートキーボードでピッチも十分空いているので問題ありません。

それよりも、タッチパッドの方が問題です。2回タップ&ドラッグでウィンドウなどを動かそうとしても効かないことがよくあります。少しコツがあるようですが、それでもやりたいことがすぐに出来ないのはちょっとイラッとします。その点では、ThinkPad Edge E430のタッチパッドは非常によく出来ています(とはいえ、トラックポイント、通称「赤ポッチ」を常用するのであまり関係ないのですが)。

それから、指紋認証機能についてですが、Windowsのログオンに使えるのは当然としても、Google Chrome系ブラウザでのパスワード入力に使えないのは想定外でした。LIFEBOOKに付属のOmni Passというツールでは、IE以外のブラウザには対応していないようです。こちらも、ThinkPad Edge E430の、AuthenTecのTrue Suiteに軍配が上がります。

バッテリーの持ちが期待したほどではなさそうであることもさることながら、やはり動作のモッサリ感が一番残念です。そのあたりを少し調べてみました。
「省電力」設定では負荷をかけてもすぐにはturbo boostが効かず、負荷が少し続く状態(0.5秒くらいか?)になると、最高周波数である2.25GHzまで上がるようになっているからのようです。つまり、瞬時に終わるような処理が断続的に続くような状態では、CPU本来の性能を出しきれないのでしょう。
次の画像は、「省電力」で負荷をかけた場合のタスクマネージャの表示です。自作アプリ(マルチコア対応済み)を実行して、いきなり全コアをブン回します。
立ち上がりが若干緩いのがわかります。
一方、「バランス」で負荷をかけたのが次のものです。
クロックの立ち上がり急峻であることが分かります。
というわけで、「省電力」は使わず、基本的に「バランス」で運用することになりそうです。

それと、ちょっと気がついたのですが、上の画像でハンドル数がやたら多いことに気がつきました。そして、時間とともに増えていっています。どうやら、プロセスのどれかがハンドルリークを起こしているのではないでしょうか?
調べてみると、DoOPControl.exeというプロセスのハンドル数はやけに高いです。そして、時間とともに増えています。これのせいでしょう。調べてみると、DiMix関係のサービスのようです。LIFEBOOK WS2/Mにプリインストールされているものですが、特に使う予定はないので削除してもいいですかね。必要になった時、これだけ再インストールできるのでしょうか?とにかく、ハンドリリークを起こすようなサービスはお断りです。当面はサービスの再起動で対処しますが、修正版が提供されないようでしたら、そのうちに削除します。DiMixを開発しているDigiOnさんとは仕事で少し関わったことがありますので、ちょっと残念な気持ちです。

現時点での総評としては、このLIFEBOOK WS2/Mを買ったのは勇み足だったかな?という感触です。円相場が違うとはいえ、6万円台で買えたThinkPad Edge E430に対して、このLIFEBOOK WS2/Mは13万円台であり、省電力と謳われたHaswelなのである程度負荷をかけてもバッテリのもちがそこそこ良いものと期待していたのですが、結局は負荷をかけるとカタログスペックには遠く及ばない感じなので残念です。良かったのは、液晶画面の広さ&キレイさと、ウルトラブックならでは薄さとそこそこの軽さだけですかね。