気の向くままに辿るIT/ICT/IoT
システム開発

LXDでDebian bullseye amd64上にWindows 10 x86_64インストール

ホーム前へ次へ
*BSD/PC-UNIX/Linuxって?

LXDでDebian bullseye amd64上にWindows 10 x86_64インストール

LXDでDebian bullseye amd64上にWindows 10 x86_64インストール

Debian bullseye amd64でLXD仮想マシンにWindows 10 x86_64をインストール
2022/10/06

 ここ1ヶ月ほど、

  1. Debian bullseye/Wine 7.0でKindle本を読み、
  2. Raspberry Pi 400/Box86/Box64/WineでWindowsアプリを起動し、
  3. Raspberry Pi 400/Raspberry Pi OS/KVMで仮想マシンを作ってみたり、
  4. Debian bullseye amd64/KVMでWindows 10 x86_64をインストールしてみたりした

 そんなついでにDebian bullseye amd64上のシステムコンテナ&仮想マシンマネージャーLXDによる仮想マシンにWindows 10 x86_64をインストールしてみた話。

 LinuxコンテナであるLXCの存在を知りつつスルーしてきた自身ですが、Debian bullseyeにsnapをインストールしたり、Raspberry Pi OSにsnapをインストールしてみたら、LXCを包含したらしきLXDなるものの存在を知り、snapからなにかインストールしてみたい衝動と重なってLXDを入れてみることに。

 当初、コンテナやゲスト仮想マシンにはLinux系のみ...と思いきや、Windowsもインストールできることを知り、試してみた次第。

 が、LXD上にWindowsをインストールするの通りなので、そこにない情報を中心に簡単に。

debian_amd64:~$ uname -a
Linux debian-amd64 5.10.0-18-amd64 #1 SMP Debian 5.10.140-1 (2022-09-02) x86_64 GNU/Linux
debian_amd64:~$

 環境はこんな感じ。

debian_amd64:~$ sudo apt install snapd
debian_amd64:~$ sudo snap install core
debian_amd64:~$ sudo snap install snap-store
debian_amd64:~$

 LXDのインストールや今後の段取りのため、Snapが入っていなければ、aptリポジトリならsnapdを、snapで coreと一応、デスクトップ用snapストアとしてsnap-storeをインストール。

debian_amd64:~$ sudo snap install lxd
lxd 5.6-***** from Canonical(checked) installed
debian_amd64:~$ vi ~/.profile
...
/snap/bin:PATH
export PATH
...
debian_amd64:~$ source ~/.profile
debian_amd64:~$ sudo usermod -aG lxd $USER
debian_amd64:~$

 snapで肝心なLXDをインストール、snapのパス/snapを通し、lxdグループにユーザーを追加。

 ここでlxdグループへの追加を有効にすべく、一旦ログアウトし、再ログイン。

debian_amd64:~$ sudo lxd init
...
debian_amd64:~$

 そしてlxd initでLXDの初期化。

 対話式でいくつかの設定をyes/noで答えていく。

debian_amd64:~$ sudo snap install distrobuilder --classic
debian_amd64:~$ sudo apt install libguestfs-tools wimtools
debian_amd64:~$

 他方、仮想マシン用ドライバまでは含まれていないMicrosoft配布のWindows ISO用にドライバとしてVirtIOを含めてISOを生成してくれるdistrobuilderをsnapリポジトリから、依存関係としてlibguestfs-toolsとwimtoolsをaptリポジトリからインストール。

 ここまでの間にWindows 10 のディスク イメージ (ISO ファイル) のダウンロード by MicrosoftでWindows 10 ISOをダウンロードしておきます。

debian_amd64:~$ sudo distrobuilder repack-windows Win10_21H1_Japanese_x64.iso Win10_21H1_lxd.iso
...
sudo: distrobuilder: コマンドが見つかりません
debian_amd64:~$ which distrobuilder
/snap/bin/distrobuilder
debian_amd64:~$ sudo visudo
...
Defaults env_reset
...
# セキュリティ面から環境変数PATHがリセットされることがあるとのこと
# いくつか回避する方法はあるが、例えば、secure_pathに/snap/binを追加
#Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
...
:wq!
debian_amd64:~$ sudo distrobuilder repack-windows Win10_21H1_Japanese_x64.iso Win10_21H1_lxd.iso
...
debian_amd64:~$

 sudo distrobuilder repack-windowsにダウンロードしておいたWindows 10 ISO、これからVirtIOドライバを組み込み生成するISO(名称は任意)の順に指定します。

 が、いざ、distrobuilderをsudoで実行しようとするとパスは認識されているはずなのにコマンドが見つからないエラーが出ることが。

 その際は、sudo visudoで/etc/sudoersファイルを編集、いくつか方法はある模様も例えば、secure_pathにdistrobuilderのあるパスを追記し、保存終了すれば、このエラーを回避できます。

debian_amd64:~$ lxc --version
5.6
debian_amd64:~$ lxc init win10 --empty --vm -c security.secureboot=false -c limits.cpu=2 -c limits.memory=3GiB
Creating win10
debian_amd64:~$ lxc config device override win10 root size=50GiB
Device root overridden for win10
debian_amd64:~$ lxc config device add win10 iso disk source=~/Win10_21H1_lxd.iso boot.priority=10
Device iso added to win10
debian_amd64:~$ sudo apt install virt-viewer
debian_amd64:~$ sudo systemctl reload snap.lxd.daemon.service
debian_amd64:~$

 コンテナや仮想マシンを管理するコマンドはlxc、バージョンは5.6でした(この後使うVGAコンソールが利用可能となったLXD 4.4以降が必要)。

 ここでは、仮想マシンwin10用にCPUを2コア、RAMを3GiB、ディスク容量を50GiB、インストール用ISOとして~/Win10_21H1_lxd.isoを設定。

 尚、インストール用ISO指定は、仮に作業ディレクトリ上にあったとしても~/などフルパス指定しないとエラーになります。

debian_amd64:~$ lxc start win10 --console=vga
...

 ここでWindowsインストーラを起動すべく、lxc start win10 --console=vgaとして仮想マシンを起動します。

 この時、[Start boot option]の表示とともにステータスバーが右端まで到達するやいなや画面上部に[Press any key to boot from CD or DVD...]と表示されたら、[Enter]キーを押します。

 が、これが表示される時間は超短い!かつ、[Enter]キーを押す以前に仮想マシンにマウスカーソルがないとEnterがきかない!

 ということで[Start boot option]の表示が見えたら即、仮想マシン上をクリックしてマウスカーソルを持っていっておいて、[Press any key to boot from CD or DVD...]ときたら...

 即、[Enter]!

と凄技を炸裂させる必要があります。

 うまくいくと少し待てば、Windowsの言語選択メニューに入れます。

 万一、スーパーテクを繰り出し損ねた時は、一度、[lxc stop -f win10]で強制停止させてから、再度、[lxc start win10 --console=vga]として再チャレンジ。

 尚、~/Win10_21H1_lxd.isoを外付けHDDに保存していた当初、[Start boot option]が表示される前に一度失敗、2度めに成功したのですが、先が心配なので内蔵SSDにコピーし、(仮想マシンwin10をdelete、作り直すところから)再実行、1発で成功したのでインストール用ISOは、インストール時だけはSSDに保存しておくのがオススメ。

Debian bullseye amd64/LXD仮想マシンにインストール中のWindows 10 x86_64

 LXDの場合、インストール中、Windowsの再起動があると次のようなメッセージを吐いてプロンプトが戻ってきますが、淡い期待は裏切られ、いつまで待っても再起動はされません、いや、されているけどコンソールが閉じてしまって見えませんから再開させます。

[(remote-viewer:******): dbind-WARNING **: **:**:**.***: Couldn't register with accessibility bus: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.]

 再開するには、さっきと似て非なる[lxc console win10 --type=vga]とします。

 間違えてstartしようとして怒られてますが、自身の場合?インストール中、2回これを実行する必要がありました。

 ちなみにlxc listでwin10が[STOPPED]になってますが、仮想マシンwin10をシャットダウンした後に実行したからで起動中は、このステータスは[RUNNING]になります。

 あとは、Windows 10のインストーラに沿って進めます。

 LXD仮想マシン上のWindows 10の操作性は、まずまずですが、起動中、2コアCPUに余力はあれど、RAM4GBマシンでRAM使用量が97〜98%(起動していない時、通常は30%以下)、KVMでも似たような感じなので少なくとも、このマシンでWindowsはないかな。

 ホントは、LXDでも仮想マシンにはQEMUを使うと知ってKVM同様、CPUアーキテクチャーがarm64/aarch64なRaspberry Pi 400パソコンでLXDをと思ったのですが、両方やってみたら、どうもホストのCPUアーキテクチャーのQEMUを使うということらしく、選択の余地がないっぽいのでPC/Debianのみで。

LINK

ホーム前へ次へ