Ubuntu Weekly Recipe

第679回 LXD上にWindowsをインストールする

この記事を読むのに必要な時間:およそ 6 分

Windowsの再起動・リモートデスクトップ

Windows自体は,スタートメニューからシャットダウンが可能です。また再起動も特に問題なく行えます。

ただしインストール直後は,インストール時の再起動処理の影響からかremote-viewerがゾンビプロセスとして残っているためうまく終了しません。

$ ps -fe | egrep "lxc|remote-viewer"
root        3025       1  0  8月02 ?      00:00:00 lxcfs /var/snap/lxd/common/var/lib/lxcfs -p /var/snap/lxd/common/lxcfs.pid
root        3719       1  0  8月02 ?      00:00:00 [lxc monitor] /var/snap/lxd/common/lxd/containers ldap
shibata   713188 3556942  0 16:51 pts/7    00:00:11 lxc start win10 --console=vga
shibata   713287  713188  0 16:51 pts/7    00:00:08 [remote-viewer] <defunct>
shibata   755727  727634  0 17:42 pts/5    00:00:00 grep -E --color=auto lxc|remote-viewer

上記における「defunct」の行とその前の行でremote-viewerが残っており,シャットダウンしてもlxc startプロセスが生きたままになっていることがわかります。結果的に,LXD側もコンソールの表示処理が,キャンセル不可の操作としてキューに残ったままになってしまいます。

$ lxc operation list
+--------------------------------------+-----------+-----------------+---------+------------+----------------------+
|                  ID                  |   TYPE    |   DESCRIPTION   | STATUS  | CANCELABLE |       CREATED        |
+--------------------------------------+-----------+-----------------+---------+------------+----------------------+
| 2e9f37a4-6ec5-40bd-8718-fa13a0993864 | WEBSOCKET | Showing console | RUNNING | NO         | 2021/08/13 07:51 UTC |
+--------------------------------------+-----------+-----------------+---------+------------+----------------------+

そこでlxc startのPIDを指定してプロセスを停止してしまいましょう。

$ sudo kill 713188

$ lxc operation list
+----+------+-------------+--------+------------+---------+
| ID | TYPE | DESCRIPTION | STATUS | CANCELABLE | CREATED |
+----+------+-------------+--------+------------+---------+

またインストールが完了したら,インストール時に利用したISOは不要になっているため,一度シャットダウンしたあとはイメージを取り外しておきましょう。

$ lxc config device remove win10 iso

また,シャットダウン後の起動はLXDのコマンド経由で実行する必要があります。今回は--consoleオプションは不要です。

$ lxc start win10

VGAコンソールが必要になったときは,次のコマンドを実行してください。

$ lxc console win10 --type=vga

ただし,remote-viewerだと解像度が800x600固定になってしまいます。そこでリモートデスクトップを有効化してRDPで接続すると良いでしょう。ちなみにWindows 10のProエディションである必要があります。

有効化の手順はMicrosoftのドキュメントどおり「スタート>設定>システム>リモートデスクトップ」の順に選択し,⁠リモートデスクトップを有効にする」をオンにするだけです。

図15 リモートデスクトップの有効化

図15

接続にはRemminaを利用します。接続先はIPアドレスを使う場合,Windowsで確認する方法の他に,lxcコマンドを使う方法もあります。

$ lxc info win10 | grep inet
        inet:  10.107.227.138/24 (global)
        inet6: fd42:5ef8:1faf:c29:216:3eff:fe34:7d12/64 (global)
        inet6: fd42:5ef8:1faf:c29:9d75:4090:2f22:39f2/64 (global)
        inet6: fe80::20f4:bc4a:d2d7:42ab/64 (link)
        inet6: fd42:5ef8:1faf:c29:9555:d98d:aa65:c4c5/64 (global)

あとはこのIPアドレスにRDPプロトコルで接続すればログイン画面が表示されるはずです。ちなみにオンラインアカウントを作っている場合は,リモートログインに「オンラインアカウントのメールアドレス・パスワード」を入力してください。

図16 無事にログインできた

図16

サイドバーの「Toggle dynamic resolution update」を有効化しておくと,ウィンドウのサイズに応じて画面解像度が変わって便利です。またホストとリモートマシン間のコピー&ペーストも機能します。

その他のRemminaの使い方については,第661回のリモートデスクトップビューアー,Remminaを使用するが参考になります。特に今回のケースだと,Remmina本体のウィンドウに表示される接続情報を右クリックして,⁠高度な設定」「品質」「最高」にしておくのは必須でしょう。

Windowsのライセンス認証

ひととおり問題なく動くことを確認できたなら,Microsoftのドキュメントに従ってライセンス認証をしてしまいましょう。

「スタート>設定>更新とセキュリティ>ライセンス認証」を開きます。⁠Windowsはライセンス認証されていません」と表示されるはずなので,次の手順でプロダクトキーを入力します。

図17 プロダクトキーの変更を選択

図17

図18 プロダクトキーを入力

図18

図19 無事に認証成功した

図19

ライセンスの認証が完了すると,⁠ライセンス認証されています」の表示になります。これで認証完了です。

ちなみにLXD上のWindowsでも,マシンスペックさえ許せばWSL/WSL2を動かすことが可能です。次回以降でそのあたりの方法も紹介しましょう。

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。