インテル Galileo 開発ボードでWindows IoTを動かす – 補遺

はじめに

前編後編で、インストールからアプリケーションの開発・ビルド・デバッグまでを説明しました。

今回は補遺として、Windows Developer Program for IoT(Windows Blue RTM Internet of Things Build / Windows IoT)を使用するために必要な知識をまとめてみました。というのも、このWindows IoTはGUIが存在しないからです。そのため、必要な操作はすべてコマンドで行う必要があります。基本的にこの操作はすべてWindows 8.1系と同一ですが、あまりコマンドで作業をしたことがない方も多いかと思いますので、その際に参考にしていただければと思います。

目次

Windows Developer Program for IoTに固有なこと

ライセンス期限

ライセンス(MICROSOFT PRE-RELEASE SOFTWARE LICENSE TERMS / MICROSOFT WINDOWS FOR WINDOWS DEVELOPER PROGRAM FOR IOT)の項番2に以下の記載があるように、評価期限は2014年9月30日までです:

2. TERM. The term of this agreement is until 30/09/2014 (day/month/year).

動作環境

ファームウェアを1.0.2に更新したインテル Galileo 開発ボード(Intel Galileo Gen 1)が指定されています。

インテル Galileo Gen 2 ボードでは使えない?

前述のように、今回のWindows IoTはGen 1用です。インテル Galileo Gen 2 ボード(Intel Galileo Gen 2)では起動はするものの、Visual Studioで作成したインテル Galileo 開発ボード用のアプリケーション・プログラムが正常に動作しません。

このようにIntel Quark SoC X1000のリファレンス・デザインから外れるインテル Galileo Gen 2 ボードに固有部分の機能は一切使用できず、その他はある程度動作するようです。

2014年10月6日一時的に追記Gen 2対応のアルファ版が公開されました。

コンピューター名を変更する

コンピューター名を変更する際に一般的に使用する「netdom.exe」コマンドが存在しないため、標準機能では変更できず、プログラム(あるいはスクリプト)を記述する必要があるようです。特に問題がなければ、前編で説明しているmicroSDメモリーカードへ書き込む際の「-hostname」オプションの「mygalileo」を任意のコンピューター名として、Windows IoTを書き込み直すのが確実でしょう。

とはいえ、複数のインテル Galileo ボードを持ち寄って同じLAN内で使用するなど、事後にコンピューター名の変更を行いたい場合もあるかと思いますので、変更するためのソフトウェアを実験的に作成してみました:

  • chcn.zip – CHange Computer Name for Windows IoT on Galileo Board
    このソフトウェアは現状のままで提供される、一切保証のないソフトウェアです。作成者および権利者は一切の責任を負いません。これに同意する場合に限り、本ソフトウェアを使用することができます。
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

このソフトウェアはコマンド ラインからコンピューター名を変更するためのもので、指定したコンピューター名を直接レジストリの関連個所に書き込みます。書き込む個所はWindows IoTのmicroSDへの展開スクリプトと同一にしています。※1

コマンド ラインからは以下の書式で実行します:

chcn <新しいコンピューター名>

例えば、新しいコンピューター名を「yourgalileo」とする場合には以下のように実行します:

C:\ks>chcn yourgalileo
CHange Computer Name for Windows Blue RTM IoT Build on Galileo Board
Copyright(C) 2014 by KEI SAKAKI. (https://kei-sakaki.jp/)
All rights reserved.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Old Computer Name : mygalileo
New Computer Name : yourgalileo

Please reboot your Galileo Board.

このあとWindows IoTを再起動すると新しいコンピューター名が有効になります。

以下、使用上の注意点を示します:

  • このソフトウェアでコンピューター名を変更した後に、設定を有効するにはWindowsを再起動が必要です。
  • コンピューター名は長さ以外のチェックを一切していません。このためコンピューター名に使用できない文字列を指定するとWindowsが損傷して起動できなくなる恐れがありますのでご注意ください。
  • 「Galileo Watcher」の「BoardName」カラムの表示は、Galileo Watcherを再起動するまで変更されません。これはGalileo Watcherの制限事項あるいは不具合だと思われます。
  • コンピューター名を変更した場合にはVisual Studioのプロジェクトの設定※2など、コンピューター名で参照している各種設定も併せて変更する必要があります。
  • 影響が想定できないので、今回のWindows Blue RTM Internet of Things Build以外のWindows OSに対して使用しないでください。

Windowsのシャットダウンと再起動

Windowsをシャットダウンする方法

シャットダウンをするには以下のコマンドを実行します:

shutdown /s /t 0

シャットダウン処理後、自動的にインテル Galileo 開発ボードの電源が切れます。再度電源を入れて起動するには、いったん電源コードを抜き、しばらく待ってから再度電源コードを接続します。

※接続済みのTCPセッションに対してリセットを送信しないままシャットダウンします。

Windowsを再起動する方法

再起動をするには以下のコマンドを実行します:

shutdown /r /t 0

※接続済みのTCPセッションに対してリセットを送信しないまま再起動します。

ネットワーク関連

IPアドレスを固定する

デフォルトではDHCPからIPアドレスなどを取得するようになっていますが、これを固定のIPアドレスとすることもできます。設定するためのコマンドの書式は以下のとおりです:

netsh interface ip set address "Local Area Connection" static <IPアドレス> <ネットマスク> <デフォルト ゲートウェイ>

例えば、IPアドレスを192.168.0.90、ネットマスクを255.255.255.0、デフォルト ゲートウェイを192.168.0.1とするためのコマンドは以下のようになります:

netsh interface ip set address "Local Area Connection" static 192.168.0.90 255.255.255.0 192.168.0.1

なお、IPアドレスの変更に伴ってTELNETを含めたすべての接続が切断されるのでご注意ください。

※「Galileo Watcher」のIPアドレスの表示は、Galileo Watcherを再起動するまで更新されないようです。

固定したIPアドレスからDHCPに戻す

IPアドレスを固定化した状態から、DHCPでアドレスを取得するように設定を戻すコマンドは以下の通りです:

netsh interface ip set address "Local Area Connection" dhcp

なお、IPアドレスの変更に伴ってTELNETを含めたすべての接続が切断されるのでご注意ください。

※「Galileo Watcher」のIPアドレスの表示は、Galileo Watcherを再起動するまで更新されないようです。

ファイル関連

ファイルの共有方法

Windows IoTの動作するインテル Galileo ボード上のファイルにアクセスする方法は以下の2つがあります:

  • 通常のWindows共有(SMBプロトコル)
  • FTP(File Transfer Protocol)

いずれも、認証情報はTELNETと同じです。

Windows共有は共有設定をしているフォルダーと管理共有を使用することができます。

FTPではCドライブの直下以下が丸ごとアクセスできます。他のドライブへはアクセスできないようです。

Windows IoT上のフォルダーをWindows共有する

任意のフォルダーを共有フォルダーとしてWindowsネットワークに公開するためのコマンドの書式は以下の通りです:

net share <共有名>=<ドライブ>:<パス>

例えば、共有名musicとしてCドライブのWaveFilesを共有する場合のコマンドは以下のようになります:

net share music=C:\WaveFiles

詳しくはnet help shareとして表示される説明(Windows IoT上では英語)を参照ください。

公開したWindows共有を解除する

Windowsネットワークに共有フォルダーとして公開する設定を解除するためのコマンドの書式は以下の通りです:

net share <共有名> /DELETE

例えば、共有名musicとして公開している共有設定を解除するためのコマンドは以下のようになります:

net share music /DELETE

詳しくはnet help shareとして表示される説明(Windows IoT上では英語)を参照ください。

Windowsネットワークの管理共有

Windows IoTでは「管理共有」がデフォルトで有効となっています。これによりドライブレターごとにドライブレターに$を追加した共有が存在しています(例えばCドライブならばC$)。また、まさに管理用にADMIN$という共有が存在しています。

このドライブレターごとに自動的に作成される管理共有はかなり便利に使えるでしょう。例えばUSBホストにフォーマット済みのハードディスクドライブを接続すると、自動的にドライブレターが追加されて該当するハードディスクドライブがマウントされますが、その際に管理共有も追加され、特に設定をすることなくそのドライブもネットワーク経由で使用することができます。

Windowsネットワークへ公開している一覧の表示

以下のコマンドを実行することで表示することができます:

net share

実際にWindows IoTのデフォルト状態で表示した例を以下に示します:

C:\windows\system32>net share

Share name   Resource                        Remark

-------------------------------------------------------------------------------
C$           C:\                             Default share
IPC$                                         Remote IPC
ADMIN$       C:\windows                      Remote Admin
The command completed successfully.

ストレージの管理

Windows IoT単体ではストレージの管理は行えないようです。

試した限りでは、

  • diskpart.exeは存在しません。
  • chkdsk.exeは存在しますが、FAT/FAT32およびNTFSで試したところサポートしていない旨の表示が出て実行できませんでした:
    C:\Windows\System32>chkdsk d:
    The type of the file system is FAT32.
    CHKDSK is not available for FAT drives.
  • format.exeは存在しますが、エラーメッセージも表示されずに、何も実行されないようです。
  • という状況でした。

    このため、Windows IoTで使用するためのストレージはあらかじめ他のWindowsマシンに接続して初期設定を行う必要があるようです。

    ブラウザーでアクセス

    Windows IoTでは、デフォルトで80/TCPでWebサーバーが動いています。

    ここにアクセスすると以下の3つのステータスを閲覧することができます:

    • task list
    • file list
    • memory statistics

    task list – プロセス一覧

    以下のような実行中のプロセス一覧を表示します:

    mintasklist
    
    Image Name                   PID Services
    ========================= ====== =============================================
    System Idle Process            0 N/A
    System                         4 N/A
    unknown                      180 N/A
    unknown                      252 N/A
    wininit.exe                  280 N/A      162381916
    unknown                      288 N/A
    winlogon.exe                 304 N/A     2671640803
    unknown                      328 N/A
    lsass.exe                    340 N/A     9802305116
    svchost.exe                  420 N/A      814191540
    svchost.exe                  456 N/A      300783325
    svchost.exe                  528 N/A      368461390
    svchost.exe                  560 N/A     1274098689
    svchost.exe                  576 N/A       86733474
    svchost.exe                  600 N/A      793246973
    svchost.exe                  696 N/A       61021108
    svchost.exe                  712 N/A       49043995
    cmd.exe                      748 N/A       72069210
    msvsmon.exe                  756 N/A     1697943473
    Galileo_eboot.exe            772 N/A     8920211203
    httpsrv.exe                  780 N/A      136442455
    ftpd.exe                     788 N/A      154815379
    telnetd.exe                  796 N/A      670636251
    mwstartnet.exe               804 N/A       94015946
    msvsmon.exe                  872 N/A      127714944
    cmd.exe                      136 N/A      198882874
    ls.exe                      1316 N/A      610041018
    mintasklist.exe             1376 N/A       30198625

    file list – 不明

    おそらくファイルのリストを表示するための機能だろうと思われますが、現時点では正常に動作せず、以下のエラーメッセージが表示されます:

    Out of space for Output

    memory statistics – メモリの使用状況

    実行時時点でのメモリの使用状況の一覧が以下の表に表示されます:

    memstat
    
    35 percent of memory is in use.
    There are     239 total Mbytes of physical memory.
    There are     154 free  Mbytes of physical memory.
    There are     303 total Mbytes of paging file.
    There are     223 free  Mbytes of paging file.
    There are    2047 total Mbytes of virtual memory.
    There are    2042 free  Mbytes of virtual memory.
    There are       0 free  Mbytes of extended memory.

    まとめ

    このWindows IoTはEULAに記載があるように2014年9月30日までの限定ライセンスです。その後の提供がどなるかはわかりませんので、それまでに試したいことがあれば試しておいた方がいいでしょう。

    現在のこのWindows IoTの仕様が変更されないとなると、ライセンスの内容にもよりますが、小規模ファイルサーバーとしての魅力を感じる人もいるのではないかと思いました。例えば、PCI Express Mini CardスロットにSerial ATAカードあるいはUSB 3.0カードを挿して、そこからストレージ・デバイスを接続して…とか。※3

    もっとも、私個人としては自宅にファイル・サーバーをすでに設置済みなので、興味の範疇外だったりするのですが…。

    ※このメモの内容は必要に応じて今後も加筆修正する予定です。


    • 同一にするためにあえてWin32 APIのSetComputerName系を使用していません。
    • テンプレートにはデフォルトでmygalileoが設定されています。
    • Ethernetは100Mbpsまでなので、そのあたりをどのように考えるかによるでしょう。PCI Expressブリッジを経由すればさらなる拡張も狙えますが、そうなるとコンパクトさはなくなってしまい、それではメリットを感じにくくなるような気がします。

      もっとも、これらのデバイスが使用できるかどうかは一切テストしていないので不明です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です