azukipochette's weblog

memory dump (mini)

Chocolatey の ksMessage を非表示にする方法

Chocolatey を使っているとコマンド実行のたびに下記のメッセージが表示されて鬱陶しいことがあります。 その場合は、下記のメッセージにも表示されているとおり config ファイルを変更することで、このメッセージを無効にできます。

Did you know we are rewriting Chocolatey? The new version is much more stable and secure.

Find out more and support the future of Chocolatey at https://bit.ly/chocolateykickstarter

Disable this message by changing ksMessage to false in chocolatey.config.

現在のバージョン (2014/11/27 現在) の Chocolatey は、C:\ProgramData\chocolatey\にインスト-ルされるので、配下のchocolateyinstall\chocolatey.config を開きます。 このとき、管理者権限でエディタを開くことを忘れないようにしましょう。

以下のようにファイルを編集し、保存します。

<?xml version="1.0"?>
<chocolatey>
    <useNuGetForSources>false</useNuGetForSources>
    <checksumFiles>true</checksumFiles>
    <virusCheck>false</virusCheck>
    <ksMessage>false</ksMessage> <!-- この行を true → false に変更 -->
    <sources>
        <source id="chocolatey" value="https://chocolatey.org/api/v2/" />
    </sources>
</chocolatey>

これで、メッセージが表示されなくなります。

Packer で Windows の Box (vmware-iso) を作成するまで

はじめに

Packer を Windows の Box 作成に利用するには、Packer 用のテンプレート ファイル (json 形式) を作成しなければなない。 最初から作成するにはかなり大変なので、GitHub 上で開発が進められている Packer-Windows というすばらしいプロジェクトから設定ファイル一式を取得すると良い。

MSDN ライブラリの ISO イメージを使用するようにする

README.MD に書かれている通り、既定では評価版の OS イメージ (英語) を MSDN 経由でダウンロードするように書かれているので、MSDN サブスクリプションで提供されている ISO イメージなどを使用する場合には、カスタマイズが必要となる (MSDN サブスクライブ会員でない場合は、そのまま評価版を使いましょう :))。

下記に実際に設定を変更した部分を示す。

"type": "vmware-iso",
"iso_url": "./iso/ja_windows_8_1_enterprise_x86_dvd_2791652.iso",
"iso_checksum_type": "md5",
"iso_checksum": "1A490A9F17FAD5B4C684BE915438399F",

iso_url が、ISO ファイルが実際に配置されている場所を示す。既定ではネットワーク経由でダウンロードする方法が記載されているが、README.MD の指示通りに別途 MSDN サブスクライバからダウンロード後、Packer-Windows の iso フォルダに配置している。iso_checksum_type は、その ISO が正しいものであるかどうかを示すためのハッシュ値である。 本来は、改ざんなどがされいない正しい ISO が選択されていることを確認するためのものなので、iso_checksum_typesha1 にし、MSDN サブスクライバー ダウンロード時の [詳細情報] に記載されている SHA1 のハッシュ値を入れるのが正しい。 ただ、自分が持っている ISO ファイルから必要なハッシュを計算する方法を念のため、記載しておく (MD5 の例)。

Get-FileHash C:\works\packer-windows\iso\ja_windows_8_1_enterprise_x86_dvd_2791652.iso -Algorithm MD5

Box の作成経過を確認する

Box の作成経過を確認するには、テンプレートの headless を false にする。 通常、Packer はひっそりと Box を作るようになっているが、false にすることで VMWare Workstation が起動し、実際の進捗状況が見えるようになる。正常に作成する場合にはあえて false にする必要がないが、途中でレスポンスが帰ってこない場合は期待しない動作になっている可能性があるので、テンプレートを修正した場合は 1 度は false にして進捗状況を確認した方が良いだろう。

"headless": false,

Autounattend.xml ファイルを編集する

残念ながら、json ファイルを書き換えただけでは、自動インストールしてくれないことがある。これは、Autounattend.xml (応答ファイルと呼ばれるもの) の設定が正しくないためだ。下記の MSDN ライブラリの記載などを確認して、Autounattend.xml を対象の Windows 向けに変更する。

デバッグする

もし、セットアップ中に期待しない動作になった場合 (セットアップに失敗/ハングするなど) は、デバッグするしかない。一般的なセットアップ時のデバッグ方法について記載しておく。

コマンド プロンプトを起動したい

下記のサポート技術情報にこのように記載があるので、その通りにすればよい。

GUI モードのセットアップを実行中にコマンド プロンプトを使用するには、Shift + F10 キーを押します。

カーネル デバッグをしたい

カーネルでバッグをするには、テンプレート (json) ファイルの vmx_data に下記の設定を追加する (名前付きパイプによる通信の設定)。

"serial0.present": "TRUE",
"serial0.fileType": "pipe",
"serial0.startConnected": "TRUE",
"serial0.yieldOnMsrRead": "TRUE",
"serial0.fileName": "\\\\.\\pipe\\com_1",
"serial0.tryNoRxLoss": "TRUE"

この上で、Windows の ISO ファイルを Windows ADK (AIX) を使用して展開、編集、ISO化する。詳しい手順は、下記のサポート技術情報のやり方を参考にすると良い (注意: 展開、ISO 部分だけを参考にすること)。

展開後、C:\boot\bcd の配下にある bcd ファイルを bcdedit で変更する。変更方法は、次の TechNet ライブラリの記載を確認すること。

コマンドの設定例を参考情報として以下に示す。

 bcdedit /store C:\boot\bcd\bcd /set {default} debug on

おまけ

もし、"Getting Device Ready xx%" のところで止まっているようならば、guset_os_type の設定を見直した方が良い。 この設定が正しくないと、VMWare は対象の OS がわからず、その OS 向けの対処をしなくなってしまう。

私はこの設定を VMWare workstation だから設定は別に "other" いいのかな?なんて思ってしまい、2 日ほどデバッグしてしまった。

参考情報

Packer のイメージを作成する場合は、次のドキュメントを参考にして作成すること。

Vagrant + VMWare Provider を Windows で動かすまでの記録

Vagrant を Windows で実行する人はいろいろブログで見かけるが、VMWare Provider を使っている人はあまり見かけない。 公式プロバイダーなのだから、きっとアッサリ動くだろうと思ったらエラーがでてどはまりしてしまった。 同じシチュエーションになってしまう方もいると思うので、調査方法、回避策などを記録として書いておきたい。

エラーが文字化けで分からない

vagrant up をするとエラーが表示されるのだが、トーフが表示されて実際のエラー内容が分からない (要するに文字化け)。

Stdout: Error: ▯▯▯▯▯▯▯▯▯▯▯

Windows の言語が日本語なので、エラーは日本語で表示されているものの、文字コードの変換が正しくなく化けているようだ。 Vagrant は JRuby を使っているので、Java と JRuby の両方で日本語文字の表示方法を探すも、どうもコードを直さないと駄目なようなので断念。 素直に英語の言語バックを入れて、表示言語を変更。すると、次のエラーが出ていたことが分かる。

Stdout: Error: The operation was canceled

Michell Hashimoto 氏曰く、それは VMWare の問題

このエラーで Vagrant の Issue を探していると、下記の質問に当たる。

https://github.com/mitchellh/vagrant/issues/2944

Vagrant 作者の Michell Hashimoto 氏が次のように回答している。

Ah! I am very annoyed that VMware said it is my problem. The "The operation was canceled" error (fantastic in its vagueness), has always been a VMware problem to date. It can mean a variety of things, I've found out, none of which Vagrant can really detect or do anything about, especially because the error is so vague: - Virtualization extensions aren't enabled on the CPU - Your trial has expired or the application requires a license key - Permission problems on the install (corrupted install) - You need to fill out some form data in the GUI.

要するに曖昧なエラーなので原因は分からないが、VMWare 側の問題で発生しているよ、Vagrant のエラーじゃないよ、ということ。 考えられる原因が列挙されているも、どれも該当しているようには思えない。

VMWare のことは VMWare.log に聞け

VMware はログを生成しており、Vagrant の場合は .Vagrant フォルダ (隠しフォルダ) の配下にある VMX ファイルが置かれているフォルダと同じ場所に vmware.log ファイルが生成されている。 このファイルを開くと、次のエラーが記録されていることが分かる。

[msg.vmx.nestedHyperV] VMware Workstation and Hyper-V are not compatible. Remove the Hyper-V role from the system before running VMware Workstation.

簡単に訳せば "VMWare と Hyper-V には互換性はありません。VMWare の実行前にシステムから Hyper-V の役割を削除してください" という意味。 つまり、Hyper-V が有効になっていると、ホスト OS も仮想化されるため、その環境では VMWare は動作しない。VMWare を動かしたければ、その前に Hyper-V を止める必要があるというわけだ。

Hyper-V を止める

止める方法はいろいろあるが、Hyper-V を使うときもあるので Hyper-V の役割を削除したくはない。そこで、次のコマンドを実行してハイパーバイザを無効にすることにする。 コマンドの実行には管理者権限でコマンドプロンプトを起動する。

bcdedit /set hypervisorlaunchtype off

実行完了後、再起動して再度vagrant upをする。

PS C:\Vagrant> vagrant up
Bringing machine 'default' up with 'vmware_workstation' provider...
==> default: Checking if box 'alphainternational/centos-6.5-x64' is up to date...
==> default: Verifying vmnet devices are healthy...
==> default: Preparing network adapters...
==> default: Starting the VMware VM...
==> default: Waiting for the VM to finish booting...
==> default: The machine is booted and ready!
==> default: Forwarding ports...
    default: -- 22 => 2222
==> default: Configuring network adapters within the VM...
==> default: Waiting for HGFS kernel module to load...
==> default: Enabling and configuring shared folders...
    default: -- C:/Vagrant: /vagrant
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: to force provisioning. Provisioners marked to run always will still run.

動いた! ちなみに、ハイパーバイザーを戻すには次のコマンドを実行する必要がある。

bcdedit /set hypervisorlaunchtype auto

Windows で 英語配列の USB キーボードを認識させる方法

レジストリによる変更

REG ADD HKLM\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters /F /V "LayerDriver JPN" /T REG_SZ /D kbd101.dll 
REG ADD HKLM\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters /F /V "OverrideKeyboardIdentifier" /T REG_SZ /D PCAT_101KEY 
REG ADD HKLM\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters /F /V "OverrideKeyboardSubtype" /T REG_DWORD /D 0 
REG ADD HKLM\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters /F /V "OverrideKeyboardType" /T REG_DWORD /D 7

参考

コンピューターに USB キーボードを接続したときに Windows で正しいキーボード レイアウトが使用されないことがある

VMWare Workstation で仮想マシンのブート時に Beep 音が鳴るのを止めたい

設定手順

  1. "%APPDATA%\VMWare\preferences.ini" をテキスト エディタ (notepad など) で開きます。下記のコマンドを実行しても構いません。

    notepad %APPDATA%\VMWare\preferences.ini

  2. 最後の行に次の行を追記し、上書き保存します。

    mks.noBeep = "TRUE"

Bing デスクトップの画像はどこにあるのか

Bing デスクトップの画像の保存先

Bing デスクトップでダウンロードされる壁紙 (画像) は、次の場所に保存されている。最大 9 日分収集され、経過したものは削除される。

C:\Users\<Your account name>\AppData\Local\Microsoft\BingDesktop\themes

ファイルは日付で "YYYY-MM-DD.jpg" の名前で管理される。実際の例を次に示す。

"C:\Users\<Your account name>\AppData\Local\Microsoft\BingDesktop\themes\2013-06-23.jpg"
"C:\Users\<Your account name>\AppData\Local\Microsoft\BingDesktop\themes\2013-06-24.jpg"
"C:\Users\<Your account name>\AppData\Local\Microsoft\BingDesktop\themes\2013-06-25.jpg"
"C:\Users\<Your account name>\AppData\Local\Microsoft\BingDesktop\themes\2013-06-17.jpg"
"C:\Users\<Your account name>\AppData\Local\Microsoft\BingDesktop\themes\2013-06-18.jpg"
"C:\Users\<Your account name>\AppData\Local\Microsoft\BingDesktop\themes\2013-06-19.jpg"
"C:\Users\<Your account name>\AppData\Local\Microsoft\BingDesktop\themes\2013-06-20.jpg"
"C:\Users\<Your account name>\AppData\Local\Microsoft\BingDesktop\themes\2013-06-21.jpg"
"C:\Users\<Your account name>\AppData\Local\Microsoft\BingDesktop\themes\2013-06-22.jpg"

画像を別のフォルダに保存する

好みの画像があった場合は、次のコマンドなどを使用して定期的に収集するとよいだろう。

XCOPY %LOCALAPPDATA%\Microsoft\BingDesktop\themes\*.jpg <保存先>

実際の例を次に示す。

XCOPY %LOCALAPPDATA%\Microsoft\BingDesktop\themes\*.jpg %USERPROFILE%\Pictures

Lenovo Thinkpad X1 Carbon touch を快適に使うために

AC アダプタは、持ち歩きように 45W 版の購入を検討した方が良い

純正品として、2013 年以降のThinkpad 製品に対応している 45W AC アダプタが発売されている。 実際のサイズも重みも 1/2 程度になるので、持ち歩きには非常に良い。ただし、言うまでも無く X1 Carbon の売りである RapidCharge Technology の条件 (35 分で 80 %充電) は満たされない。

Bluetooth マウスを使う場合にすること

使用途中でマウスが動かなくなると感じたときは、次の手順で Bluetooth の電源管理を変更すると良い (ただし、電源消費は激しくなる)。

  1. デバイス マネージャを起動します。
  2. [BlueTooth] の [Thinkpad Bluetooth 4.0] を選択します。
  3. コンテキスト メニューから、[プロパティ] を選択します。
  4. [電源の管理] タブを開き、[電力の節約のために、コンピューターでこのデバイスの電源をオフにできるようにする] のチェックをはずします。