Visual C++でUEFIアプリケーションを作ってみる。

link.exeの/?オプションの簡易ヘルプを見ていたら/MACHINE:{ARM|ARM64|EBC|X64|X86}の選択肢EBCが気になった。

EBCはEFI Byte Codeのことで、今どきのPC/AT互換機に備わっている旧来のBIOSを置き換えるUEFIと呼ばれるファームウェア上で動かせるプログラムのことらしい。インテル的には2020年にはMBRをロードするBIOSは無くしたいらしくピュアなUEFIに一本化するみたい。個人的にはDOS互換が完全に消え失せたらPC/AT互換機ではないしDOS/V機でも無くなるっていうのが残念で仕方ないが、今使ってるWindows 10もUEFIブートマシンだからたぶん困ることも無さそう。

前に調べた通りUEFIはストレージのFATファイルシステムを解釈できてファイル単位でデータを読み込んでOSを起動できる。その仕組みを組むのがEBCでできたEFIアプリケーションってことなので、EFIアプリを自分で作れるってことは、OSを起動する前にコンピュータにあれこれ指示できるっていうことになる。これはおもしろそう。EFIアプリ自体はWindowsのアプリExe形式と同じでPortable Executable形式になっていて、EDKⅡgnu-efiという開発ツールを利用すると良いことになっている。ネット上にはgnu-efiとgccを使う例はかなりたくさん出ているし、EDK2+Visual Studioの例も結構出ててそれらの手順でやればほぼ問題なく作成できるのだが、フルでEDKをインストール・セットアップしてVSでごりごりやりましょうというものか、フルのスクラッチでSDKすら使わないよとか、GNU/Linuxのgccでgnu-efiを使うのがジョーシキっしょ、みたいのが多くて自分的にはもうちょっとあっさりした環境でやりたかったからちょっと縛りを入れて、要件は次の通りとした。

・Visual C++ (2013 Professioanl)のコマンドラインコンパイラとリンカのみを使う。
・EDK2も含めて追加のライブラリ、ユーティリティは使わない。
・各種定義を無から書くのは面倒なので、EDK2のヘッダを拝借する。

1.EDK2をダウンロードして、適当なフォルダに展開。

2.VC++のコマンドラインコンパイラ(64ビット環境)が使える「CL環境」にEDK2のインクルードパスに2か所追加する。

set include=%include%;C:\edk2\MdePkg\Include;C:\edk2\MdePkg\Include\X64

3.コードを書く。

※Wordpressの表示でおかしくなるので半角の<>は全角の<>に置換。

[EfiHello1.cpp]

// EDKⅡのヘッダファイルを流用
extern "C" {
#pragma warning(disable:4804)
#include <Uefi.h>
}

// EFIアプリケーション エントリーポイント
EFI_STATUS EFIAPI EfiMain(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable) {
	
	// 初期値5分で発動するウオッチドッグタイマーを無効にする。
	SystemTable->BootServices->SetWatchdogTimer(0, 0, 0, (CHAR16*)NULL);
	
	// 画面クリアとメッセージ出力
	SystemTable->ConOut->ClearScreen(SystemTable->ConOut);
	SystemTable->ConOut->OutputString(SystemTable->ConOut, (CHAR16*)L"Hello World!\r\n");

	// キー入力とエコーバックを行う
	// 'q'でプログラム終了
	EFI_INPUT_KEY key;		// キー入力受け取り用
	wchar_t buf[2] = L" ";	// 表示用バッファ
	while(TRUE) {
		// キー入力
		if (!SystemTable->ConIn->ReadKeyStroke(SystemTable->ConIn, &key)) {
			// エコーバック
			buf[0] = key.UnicodeChar;
			SystemTable->ConOut->OutputString(SystemTable->ConOut, (CHAR16*)buf);
			
			// 入力に応じて挙動を変える
			if(key.UnicodeChar == L'q') {	// 'q'だったら終了
				break;
			}
			else if(key.UnicodeChar == L'\r') {	// リターンだったら改行も表示する
				buf[0] = L'\n';
				SystemTable->ConOut->OutputString(SystemTable->ConOut, (CHAR16*)buf);
			}
		}
	}

	return EFI_SUCCESS;
}

*SystemTableが超重要。アプリ側に渡されるもので、これを通してEFIのファンクションを呼び出す。オブジェクト指向っぽい感じがするが、C++のVtableよりもMSのCOMっぽい。

4.コンパイル

cl /GS- EfiHello1.cpp /link /out:bootx64.efi /subsystem:efi_application /entry:EfiMain

/GS- はバッファのセキュリティチェックを無効にする設定。セキュリティチェックに別途ライブラリ関数を呼び出すらしくUEFIアプリ作成時は使えないので無効にする。
/subsystem:efi_applicationが重要。
/entry:EfiMainはエントリポイントを指定する。CRT0なんかのスタートアップルーチンは無いのでソースに合わせれば何でも良い。

5.実行してみる。
5-1.出来上がったbootx64.efiをUSBメモリの/EFI/BOOT/にコピー。次の場所にファイルが存在するように。
(USB:)/EFI/BOOT/bootx64.efi

5-2.UEFIブートができるPCにUSBメモリを差し込んで起動。起動時オプションでUSBメモリから起動してみる。

QEMU+OVMFで動かしてみた。もちろん実機でも動く。
uefihello.png

お決まりのHello World!を表示したらあとはキー入力をエコーバックする。飽きたら電源を切る。一応qでアプリ終了。

本当にCだけ(本当はC++)で書いたプログラムがOS起動前のPCで動作する、というのは結構感動的。DOSをはじめMBRブートが使えなくなるのは残念だけど、UEFIは非常にすっきりしていて潔い。

広告

自宅使用プログラム(HUP)でOffice2019を使いたいのに

自宅使用プログラム(HUP)でOffice2019を使いたいのにOh My!

Home Use Program
https://www.microsofthup.com/hupjp/home.aspx?culture=ja-JP

我が日本のHUPにもOffice2019がやってきました。しかもお値段は2016の1,400円から2019では1,184円とさらにお安くなってナイス! さっそくSA権で使ってるHUPのOffice2016をアップグレード。

▼さっそくメールアドレスとプログラムコードを入力して、と。
hup2019-1

▼メールが届く。
hup2019-3

▼(゚Д゚)ハァ?
hup2019-2

すでにライセンスを配布したとか出てきて、購入できないんですけど。次のヘルプを見る限り新バージョンが出たらもう一度購入できる、と読めるんですが。そもそも教育機関向けじゃない、一般企業向けVLのSA権HUPってどこまで浸透してるのか。探しても使ってるっていう人の情報が全然出てこないし。

https://www.microsofthup.com/hupjp/faq.aspx?culture=ja-JP より

・以前、Office 2016 製品を Microsoft Home Use Program から購入しました。もう一度購入できますか?
過去に Office 製品を Home Use Program からご購入いただいた方で、HUP プログラム の資格要件 を引き続き満たしていれば、最新バージョンの購入が可能です。

相変わらずMSボリュームライセンスのSAってgdgd。
Windowsもmacも使ってないけどなha ha ha!

※Windows EnterpriseとOffice ProPlusのSA期間まだ残ってるのに。

 

Office 2019を買いに西海岸へ行ってみる。(本当は行かないし買わない)

米国ではOffice 2019永続版がすでに発売中。

参考:
Office 2019 の発売日を推測してみる。

買い切りOffice 2019 (VL版)を使ってみた。

Office 2019の記事を確認しているとOffice 2019永続版のパッケージ版を買いたい人が一定数居るのだろうと推測できる。日本ではまだ2016しか売られていないが、すでに米国ではOffice 2019永続ライセンス版を買えるようだ。マイクロソフトが誇る最新のクラウド技術Azureで米西部に仮想マシンをデプロイしてウィンドウショッピングしてみた。

※2019年2月現在、日本語版のOffice 2019はすべてのエディションが購入できるようになっています。相変わらずGoogleでは偽物が上位にヒットする悪質な状態が続いているのでMS公式やアマゾンあたりで検索するのが吉。

▼日本のMS Storeでは永続版Officeは2016HomeとPro。
office2019azureJP

▼米国のMS StoreではOffice 2019が売られている。画面外にはHome&Studentの選択肢がある。
office2019azureUS1

▼カートに入れてみた。このまま決済できそう。
office2019azureUS2

ただし米国でもProfessional版は売られていない様子。

▼MS Storeでは選択肢に無かったProfessionalはAmazonアメリカでもUnabailableになっている。
office2019azureAmazon

Home&Businessだったら買えそうだけど、もうVL版使い始めてるし、リージョンチェックで認証が面倒かもしれんとか、それ試すために買うにはちょっと無駄やわーと思って買わなかった。

MSDNでWindows Server 2019、Windows 10 1809 類が復活。

VS(MSDN)サブスクリプションは10月で終了しているのに、VSサブスクライバダウンロードでWindows Server 2019、Windows 10 1809、Windows Server Version 1809がダウンロードできるようになった。10月末に一度ダウンロードして、キーだけ後で保存しようとしたらファイル削除バグ騒ぎでキーもろともダウンロードを引っ込められて。せめてキーだけ保存していればと思って無精を後悔していたがようやく復活。途中まで取得していたキーも確認できるし、残りのキー要求も受付された。

msdndl-2

msdndl-1

Windows Server 2019 Japaneseのファイル名とサイズの違い。300MB近く増えてるし。

・バグあり初出版
ja_windows_server_2019_x64_dvd_d7f8ec54.iso
4,729,874,432 バイト

・11/13リリース版
ja_windows_server_2019_x64_dvd_260a1d93.iso
5,015,269,376 バイト

でもメイン環境はDebianに移行済みなんだよ。

参考
Windows 10 バージョン 1809 の提供再開、VLSC からも提供
https://blogs.windows.com/japan/2018/11/16/windows-10-version-1809-rollout-resumes-now-available-on-vlsc/

 

デスクトップPCをLinuxにしてみる。

メインで使うデスクトップPCをDebianのLinuxベースに入れ替えた。SSD全領域をLinuxに全力で割り振り。

debianscrn.png

とか言いつつ、未練がましくもVMware PlayerでKMSサーバ入りのWindows8.1も移行してきた。スマホの普及もあってWindows、Internet Explorer依存は以前に比べると減っているとはいえWindows、Officeをボリュームライセンス契約するほどにはMS信者だし、はたしてLinuxデスクトップで生活できるだろうか。

PC-Uni*、Linuxの経歴はそれなりには長くて何度も試しては離れてを繰り返してきた。最初はLinux MLD無印を買ってきたものの自宅のAptivaでは起動してもVGAでしか動かず若干残念。次は今も最大派閥のRed Hat Linux(当時は無償版があった)の書籍を買ってインストールしてFreeBSDよりも起動が圧倒的に早いことに関心して終了。その後Win98の盛り上がりやWin2000の安定性に惚れ込んで最初のMSDNを契約してWindowsどっぷりになったことや当時使っていたThinkPadがまともにLinuxを受け付けなかったことからLinuxとは疎遠になる。

Windows 7が浸透したころ、終了を迎えるWinXPの環境をどうにかする必要があったが、財政事情の問題でまともなPC買えず当時流行っていたAcer製のネットブックの中古を入手。Win7 Starterも動くがいまいちなのでFedoraをインストール。また当時よく出回っていた中古のATOMのMiniITXボードを入手したことで自宅サーバをDebianで運用開始。おそらく2年程度は継続的に動かしていたはず。しかしメール集約サーバ程度はとにかくATOMではデスクトップ環境は快適とは言い難いのでなんとかしてi7のデスクトップPCを自作したら、結局Windows7が快適に動くようになってLinuxのデスクトップ環境をメインにすることはなくなった。この2年間が一番長いLinux生活だったと思う。それから幾年か経過してLinuxの状況もかなり変わっている様子で、今回はどうなるのか楽しみだ。

KMS認証サーバを作ってみる。

Windows 10 のKMSホストキーをゲットした。仮想PCソフトを駆使してKMS認証サーバーを普通のPC1台だけでできる限り手間をかけずに構築した覚え書き。

MSDN(VS)サブスクリプションの期間が間もなく終了する。節約のため更新はしないので、この先は取得したツールとライセンスでしばらく過ごさなければならない(MSDNはサブスクリプション終了後も取得したライセンスキーは使っても良い契約になっている)。Visual Studioは静的VLキーなので問題ないとして、Windowsクライアント類が問題になる。物理マシンはそうそう交換するわけでは無いので20回くらいWindows10ProかEnterpriseの認証ができれば困ることは無いが、仮想マシンは作成しては捨てていくような使い方をしているからいずれ上限に達するはず。マシン構成が記述されたファイル、VMwareであれば.vmxとディスクイメージ(空でも良い)を保管しておけば認証回数をカウントアップせずにアクティベーションできるが、自由度が低いし、正直管理が面倒。

インターネット接続無しでも仮に自宅にKMS認証サーバがあれば半年に一度以上認証をかけ続けることで正規ライセンス認証が通った状態を保てる。それは知っているがKMS認証サーバにはクライアントPC25台以上という一般家庭においては途方もない要件が課されているので躊躇していた。今回MSDNサブスクリプションが終了する記念にWindows10とWindows Server 2019のKMSキーをもらうことに無事成功KMSホストキーをもらうことに無事成功したから、面倒なのをあきらめてKMS認証サーバを立てることにした。

次のシチュエーションでKMS認証サーバを構築するミッション。

・認証サーバはVMWare Workstation 14上のWindows 8.1 Pro 32ビット版を使う。
Windows10は年一回の大型更新が面倒なため、すでに延長サポートに入ったWin8.1を採用。リソースを抑えたいので32ビット版を選択。KMSキーはWindows 10用のものだがWin8.1でもアップデートを入れるとホストキーを適用して自機以外のWin10の認証を行うことができる。

・宅内LANのDNS、DHCPはいじらない。AD(Active Directory)も構成しない。
そもそもブロードバンドルータのDNSリレーとDHCPしか使ってないので複雑なことはできない。

・認証を開始させるため、VMWareの仮想PCを使って25台以上のクライアントWindowsをとにかく認識させる。
しきい値を超えて認証を開始しだしたらイメージを保存して認証サーバに「永遠の命を与える」。これが今回の目標。KMSホストキーは6台10回までという厳しい制限が課されているから一度のホストキー認証も無駄にはできない。今のところMSDNサブスクリプション契約終了後もキーの認証は行えるが、MSの気が変わってTechNetみたいに終了後はキーを無効にされるかもしれないし。

・あまり手間はかけたくない。

先に結果だけ。認証サーバの「Win81ProKMSSvr」がWin10Pro Workstationを認証したところ。

Win10KMSActivate

やりかた (細かいところは順次追記予定)

1.VS事務局に電話をして「MSDNサブスクリプションでWINDOWS 10のKMSホストキー欲しい。」と伝える。

2.数日後VLSCにKMSホストキーが表示されるので控える。

3.KMS認証サーバにするためWindows 8.1 ProをVMWareのゲストに1インスタンス作成。

・Retail、MAKキーの登録は不要。
・名前は「Win81ProKMSSvr」。
・VMWareの簡易インストール設定で自動ログオンを有効にしておく。
・メモリ2GB、CPU 2コアくらいで十分。
・IPアドレスは固定。ここでは192.168.10.10/24にした。
・Windowsファイアウォールで認証サービスを有効にする。

後はWindows Updateをひたすら行う。(RetailキーやMAKキーはいれなくてもよい) インスタンスはC:\VM以下に作成。

4.KMSホストキーをインストール。
管理者コマンドプロンプトで slmgr /ipk

5.KMSホストキーのオンライン認証を行う。
管理者コマンドプロンプトで slmgr /ato

6.クライアントWindowsとしてWindows 8(8.0)Pro 32ビット版を1インスタンス作成。

・名前は「Win8ProVLKMSCli」。
・VMWareの簡易インストール設定で自動ログオンを有効にしておく。
・メモリ2GB、CPU 2コアくらい。
・Windows Updateは不要。
・IPアドレスはDHCPで配布。
Win8を使うのはリソースの要件が8.1や10より低いことと、Vistaや7より仮想マシン上での動作が軽いため。

7.クライアントWin8の設定を行う。複製時にCMIDを変更してKMS認証を行うためのスクリプトと仕掛けを組む。

7-1.KMSサーバのアドレスを登録
仮想マシン内で slmgr /skms 192.168.10.10 を実行。(アドレスはKMS認証サーバ(Win8.1)のアドレスに合わせる)

7-2.CMIDリセット用スクリプトの配置
[Win8の仮想マシン内に置くC:\TEMP\rearm.bat]

if exist c:\temp\out.txt goto end
cscript c:\windows\system32\slmgr.vbs /rearm > c:\temp\out.txt
schtasks /Delete /TN rearm /F >> c:\temp\out.txt
shutdown /r /t 0
:end

rearm.batファイルを仮想Win8内に配置したら、同じ仮想マシン内の管理者コマンドプロンプトでタスクを登録する。

schtasks /Create /TN rearm /TR c:\temp\rearm.bat /RU SYSTEM /SC ONSTART /RL HIGHEST /NP /F

8.クライアントWin8のスナップショット(VMWareの機能)を作成。
スナップショット名は「newclient」

9.VMwareのリンククローン機能でクライアントWin8を25インスタンス複製する。ここで使うスクリプトが手抜きポイント。

[物理マシンに置くclientvm.bat]

set path=C:\Program Files (x86)\VMware\VMware Workstation;%path%
set num=01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
goto %1
goto end

:create
for %%n in (%num%) do (
	md C:\VM\Win8ProVLKMSCli-Lnk%%n
	vmrun -T ws clone C:\VM\Win8ProVLKMSCli\Win8ProVLKMSCli.vmx -snapshot=newclient C:\VM\Win8ProVLKMSCli-Lnk%%n\Win8ProVLKMSCli-Lnk%%n.vmx -cloneName=Win8ProVLKMSCli-Lnk%%n linked
)
goto end

:startstop
for %%n in (%num%) do (
	vmrun -T ws start C:\VM\Win8ProVLKMSCli-Lnk%%n\Win8ProVLKMSCli-Lnk%%n.vmx
	choice /t 80 /c:c /d:c /m:Waiting...
	vmrun -T ws stop C:\VM\Win8ProVLKMSCli-Lnk%%n\Win8ProVLKMSCli-Lnk%%n.vmx
)
goto end

:deleteVM
for %%n in (%num%) do (
	vmrun -T ws deleteVM C:\VM\Win8ProVLKMSCli-Lnk%%n\Win8ProVLKMSCli-Lnk%%n.vmx
)
goto end

:end

このバッチファイルを使って物理マシン(VMWareホストマシン)で clientvm.bat create とするだけで25台分のリンククローンのインスタンスができる。

10.クライアントWin8の起動→終了を25インスタンス分行う。スクリプトは同じもの。この間もKMS認証サーバのインスタンスは動かしておく。

clientvm.bat startstop でVM起動→OS起動→rearm.batによる自動再設定→OS再起動→自動ログオン→VMシャットダウンが順次行われる。VMシャットダウンの待ち時間80秒はバッチのchoice /t 80のところで指定されているので物理マシンの速度に応じて調整する。

11.KMS認証サーバ側で状態を確認する。「現在の数」が25以上になり、クライアントWin8が認証を受けていたら完成。
slmgr /dlv

12.KMS認証サーバのインスタンスを保存する。クライアントWin8のインスタンスは要らない子なのですべて削除してもよい。

clientvm.bat deleteVM で25個のリンククローンがすべて消える。

物理マシン25台なんて一般家庭ではなかな用意できないが仮想マシンを使えば実に簡単。サーバ1+クライアント25インスタンスを同時起動する必要は無いのでマシンパワーもそれほど必要ない。

後から気づいたが、「現在の数」は一か月ほど経って認証されないものがあると減っていくので月一程度でこのスクリプトを動かして「現在の数」を維持する必要がある。もしくは180日に一度クライアントを認証するそのときに「現在の数」を回復するためにスクリプトを動かすかどちらか。まあ、タクススケジューラにスクリプトを登録しておけばノータッチの放置プレイで30分程度で終わる作業なのでそれほど負担でもない。

MSDNでボリュームラセインスキーを発行してもらう。

MSDNサブスクリプション、もといVisual Studio Professionalサブスクリプションの連絡先がややこしい。

そろそろMSDNサブスクリプションの期限が切れる。更新しないことにしたので、記念にいくつかのライセンスキーを取得しておくことにした。
参考:
msdnサブスクリプションを使ってみる
msdnのvlkeyを有効にしてみる。

Visual Studioサブスクリプションのサブスクライバダウンロードとそれで使える製品のプロダクトキーはMy Visual Studioのサイトで取得できることになっている。

My Visual Studio
https://my.visualstudio.com/Subscriptions

ここではRetailキーを1日あたり上限10キーまでオンラインで要求することができ、その場でキーを取得できる。

またVisual Studio ProfessionalサブスクリプションをOpenライセンスで取得している場合は通常のRetailキーの他にボリュームライセンスキー(MAKキー、KMSキー、VLキーなど)も使えるのだが、ボリュームライセンスキーはMy Visual Studioでは確認できなくて、管理者がVLSCで確認することなっている。

VLSC ボリュームラセインスサービスセンター
https://www.microsoft.com/Licensing/servicecenter/default.aspx

で、MSDNサブスクリプションではたくさんのVL製品が使えるのに、初期状態ではVSとWinServerの一部しか発行してくれないので追加で要求する必要がある。これが実に面倒で、オンラインではできずにMy Visual Studioでキーの要求リンクを押すと管理者経由でVLSCから取得するようにと促される。そしてVLSCでキーを取得しようとするとライセンス認証専用窓口0120-801-734へ電話をせよ、と書かれているのでそこへ電話をかけるとライセンス認証専用窓口ではMSDNサブスクライバ用の評価開発用キー発行がはできないのでVisual Studio事務局へ電話せよ、と言われる。MSDNの開発用ライセンスキーは通常のVLキー発行とは異なる。

vlkey-1

vlkey-2

とどのつまり、MSDN特典の開発用ライセンスキーの取得は、最初からVS事務局(旧MSDN事務局)0120-75-0052へ電話をすればいい、というだけ。

事務局に電話をするときに必要になるのが、VLSCで確認できる「ライセンス契約の種別」の番号。OpenライセンスであればOPEN…から始まる番号。電話をするときはVLSCで当該契約の「ライセンス詳細」画面を開いておく方がまごつかない。My VSサイトで確認できる「契約の詳細」を聞かれることもあった。ほかに契約中のメールアドレス、フル氏名、連絡用の電話番号を聞かれた。ほかにはキーが欲しい製品の詳細な名称も調べておく。Windows 10であれば「Windows 10 Professional」とか、Windows Server 2008であれば「R2 Standerd」とかのエディションを特定できるように。

以前は旧MSDN事務局に電話する必要もなくて通常のライセンス認証専用窓口で即時発行されたが、今はVS事務局経由で後日発行。面倒だけどサブスクリプション期間中なら欲しいライセンスキーをガバガバ発行してくれるんだから利用しない手はない。

もうMS製品は食傷気味になったので、MSDNとWindowsのSAが終わったらしばらくUbuntuで生活しよう。

買い切りOffice 2019 (VL版)を使ってみた。

Office Professional Plus 2019をさっそく使ってみた。まだ日本では※個人向け(FPP版)が出ていないのでボリュームライセンス版の話。SAのアップグレード権で即日入手。この日のためにただでさえお高いOffice Pro Plusに3万円オンしてSAを契約したのだ。

※1【朗報】一般向けの永続版Office2019が2019年1月22日に日本で発売開始!!

※2【注意】Office 2019のVL版やProPlusを格安で手に入れる方法とか、不正に無料で使う方法とか、そういう情報ではございません。

※3【悲報】我が国の自宅使用プログラム(HUP)は1月22日現在2016のまま。Office大好き日本はこのまま見捨てられるのか?! → HUPにも2019登場! だがしかし… 

VLSCからダウンロードして…と言いたいところだが、Office 2019ではその必要がない。VLSCで必要なのはキーを確認することだけ。

1.Office展開ツールをダウンロード。

Office Deployment Tool (ODT)
https://www.microsoft.com/en-us/download/details.aspx?id=49117

VLSCでもODTは配布されている。インストーラのファイル名は異なるが中身は同じもの。

2.ODTインストーラを実行して適当なフォルダを指定し、setup.exe(ODT本体)と設定ファイルの雛形(.xml)をそこに展開する。

ODT自体の使い方は次を参照。
導入 Office 2019 (IT プロフェッショナル向け)
https://docs.microsoft.com/ja-jp/DeployOffice/office2019/deploy

3.コマンドプロンプト(可能なら管理者で実行)を開き、ODTを展開したフォルダにchdir(移動)して、設定ファイル(configuration-Office365-x64.xml)を編集する。ファイル名は何でも良いが雛形を直接編集した。

configuration-Office365-x64.xmlの内容

<Configuration>
  <Add OfficeClientEdition="64" Channel="PerpetualVL2019">
    <Product ID="ProPlus2019Volume">
      <Language ID="ja-jp" />
    </Product>
  </Add>
  <RemoveMSI All="True" />
</Configuration>

※編集時に消えてしまうので半角のは全角の<>に置換。

リンク先の説明がそもそもよく分からないが、Product ID=”ProPlus2019Volume”とChannel=”PerpetualVL2019″ を指定するところがポイント。RemoveMSIは指定しなくても良いが、その場合は先に手動で旧バージョンを削除すること。OfficeClientEdition=”64″を32にすると32ビット版になるかも。未確認。

4.ダウンロードする。次のスイッチと設定ファイルを指定してsetup.exeを実行。寡黙にダウンロードが始まる。20分程度で終わった。

setup.exe /download configuration-Office365-x64.xml

5.セットアップする。次のスイッチと設定ファイルを指定してsetupを実行。

setup.exe /configure configuration-Office365-x64.xml

officeDeploy1

6.セットアップが無事完了するまで見届ける。

思ったより時間がかかった。

officeDeploy2

設定ファイルでRemoveMSI All=”True”を指定せず実行したときにMSI版の旧バージョンが存在するとエラーで進まない。逆にRemoveMSI All=”True”を指定して実行したときにMSI版の旧バージョンが存在するといつまで経ってもセットアップが途中から進まなかったので途中でPCを再起動してやりなおすハメに。(再起動後、セットアップ前に確認すると旧MSI版が削除されていたのでセットアップが途中でおかしくなったと思われる。)

7.ライセンス認証を行う。

設定ファイルのPIDKEYでMAKキーを指定しなかったので手動でライセンス認証を行う。

ExcelでもWordでも適当に開いて、ファイル→アカウント→プロダクトキーの変更 で最初に控えたMAKキーを入力し、指示に従う。

officeDeploy4 officeDeploy5

※勘のいい人は気づくが、ライセンス認証を行わなくても数日は使えるのでOffice2019のVL版がどういうものか試したいだけなら7以外の手順を行えばお試しできる。(Office2019のVL版をなんとかして使いたい人がいるようなので追記。)

以上。

正直、めんどい。2016までのVLSCでISOダウンロード→MSI版インストール→ライセンス認証 のが分かりやすい。

その後まもなく、VLSCからOffice 2007がダウンロードできなくなりました。Office 2007はなんとか確保済みなので1ライセンスのL+SAでN-4まで確保できた。もうオンプレのOfficeは要らないかな。

UbuntuのミニマルなスティックPCでWindowsが動くか。

最小構成のスティックPCでWindowsが動くか。

eMMCのPCは二度と買わないと心に誓ったのに、再び手を出してしまった。しかも二台も。断捨離のリバウンド。いわゆるゴミ。

同じに見えるがUbuntu版STCK1A8LFCとWindows8.1版STCK1A32WFC。
stck

裏のラベルがなぜか結構違う。
stck1809-2

Windows10でときどきある大型アップデートが面倒なので大型アップデートがかからずに当分使えるWin8.1でそれ以外は使わないセキュアな独立環境が欲しかったのが動機。Ubuntu版はプレインのUbuntuがどういうものか知りたいのと、くだらない理由でLinuxの環境を使いたいときがたまにあるし、障壁を超えてどこでもインターネット(≠IoT)するための「秘密のメディコンサーバ」を構築したいという不純な動機もある。

少し古めのスティックPC、インテルのSTCK1A32WFCをWin8.1/UbuntuのデュアルブートにするためのUbuntu元になった同じシリーズのUbuntu版STCK1A8LFC。一応x86のIAアーキのストレージ8GBメモリ1GBというミニマル構成でWindowsの要件を満たさずにUbuntuが入っているが、これでWindowsが動かないか試してみた。

・Windows 10 64bit版(64ビットUEFI)
ブートするがACPI_BIOS_ERRORでBSOD。
https://communities.intel.com/thread/104199 →スレ主や私がインストールしようとしているのはSTK2MV64CCみたいなパワフルなマシンではないんだよ、Dtaibi。

・Windows 10 32bit版(32ビットUEFI)
ブートするがメモリ不足でラムディスクが作れないと出てBSOD。

UEFIブートはできるがWindows 10は64/32bitともPE環境が起動できずにインストール不可。

Win10は諦めてWindwos8で試す。Windows8.1はインストーラを用意するのが面倒だったから試してないが基本的には同じと思われる。

stck8win8-1.png

この通り空き容量が非常にきびしいが動かなくもない。ページングファイルを100~50MBくらいにすると多少空き容量を確保できた。

インストール手順

1.USBメモリをFAT32で初期化。
2.Windows8 32ビット版DVD-ROMの中身をまるごとUSBメモリにコピー。
3.Compute StickのBIOS設定でOSをUbuntuからWindows8.1/10に変更。(32ビットUEFIにする)
4.起動時F10押下でUSBメモリを選択。(UEFIの起動ファイル/EFI/BOOT/BOOTIA32.EFIがあるとメニューに出てくる。)
5.インストール開始。30分くらいでインストールできる。

DVDの中身をUSBメモリにコピーするのは、DVDのUEFI起動ができなかったから。ドライバ類設定はとにかく、Windows Updateは地獄になるのが目に見えているからやらなかった。とりあえずComputeStick STCK1A8LFCでWindowsは動く!!

microSDにインストールできると良いのだがインストーラではリムーバブルドライブは選択できないようで残念。やっぱりこの機種はmicroSDにLinuxを入れて使うのが良いのだろう。→ちなみにプレインのUbuntu LTS 14.04で何も変更せずに更新だけをかけるとストレージの容量不足で失敗するし、Ubuntu LTS 16.04だとWin8以上にカックカクでデスクトップが出ても即フリーズだからディストリ探しの長い旅が必要。

結局両方ともドナドナ済み。やっぱりほとんど使わないし、更新の管理が面倒だし、Ubuntuもストレージ不足でまともに更新できないし、ひとつ前の16.04LTSだとコンソールモードですらカックカクでまともに動かないし。安定稼働のために苦労する未来しか見えない。メモリもストレージも十分なi5/i7で動かす仮想環境のがいろいろと都合がいい。