2016年08月一覧

UWPアプリのローカルインストールについて

Windows10 アニバーサリーアップデート(AU)が配信されて徐々に更新されていっているかと思います。この Windows10 AU で、ユニバーサルWindows プラットフォーム(UWP) アプリのインストールについて、更新がありました。
この変化が個人的に興味深いものだったのでご紹介します。

なお Windows8.xでのストアアプリの情報を把握仕切れていないため、新旧比較の点では間違いが含まれるかもしれませんのでご注意願います。
appx-install-helloappuwp-thumb

続きを読む



ESXi 6.0u2 にしたので Host Client

ESXi 6.0 update2 にした理由の1つには実は Host Client が導入されたからというのがありました。無事に ESXi を更新できたのでこれを確認してみました。

アクセス

Chrome で ESXi のホストにアクセスしてみました。よく見慣れたページですがよくよく見ると、 Host Client のリンクが追加されていました。
esxi60u2-hc_1
これをクリックすると以下のように、以前検証したときに見た画面が表示されました。
esxi60u2-hc_2
ログインを行って表示された画面が以下のようになります。

esxi60u2-hc_3
この時点から vSphere Client の代わりに使えそうな予感が漂ってきます。

ESXi の設定など

前回インストールして環境設定が不十分なところがまだありましたので、ここでこの Host Client で設定ができるかをチェックしてみたいと思います。
またここからは Chrome ではなく Microsoft EDGE にて試しています。
続きを読む


ESXi 6.0u2 更新のその後

危惧していたネットワークの問題も解消されて うまく 6.0 update2 に更新できたので、さらにその後のパッチ適用と気になっていた点の解消などやってました。
昔のデータストアから VM らをインポートしたりして環境復帰できたらこの作業の旅も終わりです。

(Update) とかいう表示

esxcli software profile get で情報を表示させたときに (Update) と頭について、 ESXi 5.5 のベースを使っているようにみえたのでこれらをなんとかしてみました。

調べてみると同じように気になっている人もいるらしく、調査結果がすでにありました。
詳しくは参考サイトの情報を読んでいただければと思います。

今回の自分の環境でも以下の点がまさに一致でした

  • (Updated) という記載は何なのか
  • そもそも未だ 5.5 という記載が残っている

そして今どういう状況なのかという点ですが、「ESXi 5.5 からアップデートしたことを考慮すると ベースは 5.5 でカスタムドライバ入れた状態で、アップデートを適用した独自プロファイルになった状態」と考えられます。

“esxcli software profile update” によって更新作業を行ってきたため、こうなるのもわかってしまえば納得です。システムとしては 6.0 になっているので、一応 ESXi 6.0 のシステムとして稼働しています。

ただ気にはなるので、できることならば Updated の表示を消したいところです。

ネットワークの問題が再燃する覚悟を決めて以降の作業をやってみました.
続きを読む


ESXi 6.0u2 へのアップグレード

前回の続きになりますが、ESXi 5.5 から 6.0 系への更新を進めてみました。

ssh でつないでコンソールからアップデートを適用しました。5.5 の段階でいれた Network のドライバが消えてしまうかとヒヤヒヤしながら作業しましたが、再起動後も問題なく認識されたままでした。消えてしまった事例も見つかるので、sshでつないで esxcli 経由でやったのが成功の秘訣かもしれません。
続きを読む


ESXi 4.1 から 6.0 系への更新を試みる

ESXi 4.1 が安定して稼働していたのですが、今となっては古くなってしまったので、
vSphere Client がなくても Web から操作できるようになったという ESXi 6.0 Update2 への更新を決断しました。

今回の内容は実はそこまで到達するまでに苦戦した道のりの記録です。同じようにアップデートに苦しむ人(苦しんだ人?)の助けになれば幸いです。

バックアップ

ESXi のシステムは USB メモリに格納していたので、まずはこれをバックアップをとっておきます。
自分は DD for Windows を用いてイメージを丸ごと保存しています。

そして今回作業用のUSBメモリを新規に用意しました。
4GB のものでもうまくいくと思いますが、適当に用意したものが 8GB のものだったのでこれで作業しています。
(元々使用していた USB メモリの容量以上であれば問題は起こらないかと思います。)
ちなみに以下のメモリを使っていますが、アクセス速度の点ではイマイチかも。ESXi では致命的にならないのでこれで。



このUSBメモリに先ほどとは逆の手順で DD for Windows でイメージから USB メモリへ書き込み作業を行います。

以降の作業は全てこの USB メモリに対して行います。元々の USB メモリはいざという時に備えてそのまま保存です
続きを読む


RPI2 の Windows10 IoT Core のカーネルデバッグ

Windows10 IoT Core アニバーサリーアップデートを適用した RPI2 で、カーネルデバッグができるように環境を構築してみました。

必要なもの

必要なものは以下の通りです

  • Win10 IoT Core 導入済み RaspberryPI2
  • LANケーブル
  • USB-シリアル変換ケーブル

自分が使用している USB シリアル変換ケーブルは以下のものです。
ちょっとドライバ導入に手間があったりしますが、使えています。


準備(WinDBG)

WinDBG を使う必要があるのでこれを入手します.
これは Windows SDK か Windows Driver Kit に含まれています。
Windows SDK のほうは WinDBG だけインストールも行うことができます。これは インストーラーでどの機能をインストール選択するかの際に、 “Debugging Tools for Windows” のみ選択で、 WinDBG のみをインストールできました。

ドライバの開発という点では Windows Driver Kit を使用しますが、デバッグ目的であれば Windows SDK を選択するのでよいのかなと思います。なお今回使用した Windows Software Development Kit は,Windows 10.0.14393.33 というバージョンのものとなっていました。
続きを読む


Windows10 IoT Core のアニバーサリーアップデート

デスクトップの Windows10 にアニバーサリーアップデートが来たように、 Windows 10 IoT Core についても アニバーサリーアップデートが来ました。今回はこれの導入手順や新機能などを紹介してみたいと思います。

導入について

以前にIoT Core を導入している場合で、 Windows 10 IoT Core Dashboard がインストールされている環境では、 Dashboard を起動すると以下のようにウィンドウが表示されて、更新を促されるので更新を行います。
win10-iot-update-01

ちなみに Windows 10 IoT Core Dashboard は以下のページから取得可能です。
Microsoft Windows 10 IoT Core Get Start
こららの詳細は、以前の導入記事を参照していただければと思います。

win10-iot-update-02
Dashboard から必要事項を入力して microSD カードにイメージデータを書き込みます
他に作業することはないのでしばらく待ちます。

書き込みが完了した microSD カードを Raspberry Pi 2 に装着して、電源をいれます。
初回起動にはそこそこの時間(5分程度)がかかるので、画面が落ち着くまで待ちます。

ちなみに OS のバージョンとしては 10.0.14393.0 となっていました
続きを読む


gcc 組込み関数(memcpyとか)のインライン展開抑制

アライメントに寛容な x86 の話ではなく、 ARM プロセッサのお話になります。OSが動いていてソフトウェア例外を処理できるような状況では非アライメントなデータであってもなんとか動くので表面化しませんが、そのアタリをケアしない状況ではプログラムが停止してしまう原因の1つです。

さて非アライメントなデータ列をコピーしたりクリアしたりする際に、memcpy, memset などを使用することがあります。
デバッグ時にはうまく動いていたのに、最適化を有効にしたリリースビルドでは, このあたりでうまく動作せずに例外を出してしまったりすることがあります。

仕方なくこれらの関数の自前版を用意してこちらを使うようにしてしまうのも1つの手です。しかし memcpy, memset などのまま対処することも可能なことがわかりましたのでここで紹介したいと思います。
ここまでに言い忘れてしまいましたが、 gcc を使用した開発環境でのお話です。

原因

そもそも最適化によって何が起こり、正常に動かなくなってしまうのか。この原因は gcc が自分の組み込み関数を使用し、最適化によってインライン展開されてしまうことによります。

インライン展開されてもアライメント寛容なコードであればまだ良かったりしますが、速度重視のために最適化されているのでそうはならないのが現実です。

対策

gcc のコンパイルオプションで実はこのインライン展開の抑制が可能です。
-fno-builtin-(functionname) というオプションになります。なので、 memset,memcpy らを抑制する場合には、 -fno-builtin-memset, -fno-builtin-memcpy といったようなオプションを指定することとなります。


マウスによるウィンドウのリサイズや移動処理を実装 (wayland)

前回のモデル描画を実装してみたところで中身が入った感じなので、ウィンドウとしてリサイズができるように処理を追加していきたいと思います。
実はこのウィンドウサイズのリサイズの処理のためにも、 EGL を使った描画実装に変更したのです。

まずは動作状況をお見せします。以下のような感じで動作するようになりました。

wayland-resize-window
続きを読む