Hyper-V
次のような制約のある環境でLinuxやVisual Studio Codeを使いたい場合にはHyper-Vを活用するとよいかもしれません。
- Windows にWSL、VirtualboxやVisual Studio Code等を自由にインストールできない/したくない
- インターネットへのアウトバウンド通信はブラウザでの認証が必要
環境
- Windows 11 Pro 21H2
- Hyper-V 10.0.22000.1
- IIS 10.0.22000.2652
- Ubuntu 24.04 LTS (デスクトップ)
- mkcert 1.4.4
- libnss3-tools 3.98
- code-server v4.90.3
構築
Hyper-VでUbuntuの環境を構築して、ホストOSのブラウザからゲストOS上のcode-serverを利用します。
ホストOS: Hyper-Vで仮想マシンを作成
- Hyper-VとIISを有効化
コントロールパネル
→プログラムと機能
→Widowsの機能の有効化または無効化
で以下を有効化
- Hyper-V
- インターネットインフォメーションサービス
- Hyper-Vに内部ネットワークの仮想スイッチを作成
Hyper-Vマネージャ
→仮想スイッチマネージャ
内部
を選択して仮想スイッチの作成
名前をInternal Switch
にしてOK
169.254.0.0/16 の仮想ネットワークが作成される - ホストOSのIPアドレスの確認
ipconfig
- UbuntuのISOファイルをダウンロード
https://ubuntu.com/download/desktop
ubuntu-24.04-desktop-amd64.iso - Hyper-VでUbuntu用の仮想マシンを作成
- 仮想マシンの名前: “Ubuntu 24.04 LTS”
- ネットワークの構成:
Internal Switch
- インストールオプション: UbuntuのISOファイルを指定
- 仮想マシンを起動
ゲストOS: Ubuntuをインストール
- Ubuntuをインストール
- IPアドレスの固定化
- Ubuntu Desktopの場合
設定 ネットワーク 有線 ギアアイコン IPv4
手動を選択
アドレス 169.254.0.1
ネットマスク 255.255.0.0
以下を追記(重要)/etc/netplan/90-NM-****.yaml network:
ethernets:
eth0:
dhcp4: no
- 追加パッケージファイル(mkcert, libnss3-tools, xrdp, xorgxrdp)のURL一覧の抽出
~/bash_aliases deb () {
for PKG in $(apt rdepends $1 | grep -v "^ "); do sudo apt reinstall --print-uris $PKG ; done | grep "http://"
}.debファイルのURLが出力される。. ~/.bash_aliases
deb mkcert
deb libnss3-tools
deb xrdp
deb xorgxrdp
- http://jp.archive.ubuntu.com/ubuntu/pool/universe/m/mkcert/mkcert_1.4.4-1ubuntu2_amd64.deb
- http://jp.archive.ubuntu.com/ubuntu/pool/main/n/nss/libnss3-tools_3.98-1build1_amd64.deb
- http://jp.archive.ubuntu.com/ubuntu/pool/universe/x/xrdp/xrdp_0.9.24-4_amd64.deb
- http://jp.archive.ubuntu.com/ubuntu/pool/universe/x/xorgxrdp/xorgxrdp_0.9.19-1_amd64.deb
ホストOS: パッケージをダウンロード
- ブラウザでパッケージファイルをダウンロード
- http://jp.archive.ubuntu.com/ubuntu/pool/universe/m/mkcert/mkcert_1.4.4-1ubuntu2_amd64.deb
- http://jp.archive.ubuntu.com/ubuntu/pool/main/n/nss/libnss3-tools_3.98-1build1_amd64.deb
- http://jp.archive.ubuntu.com/ubuntu/pool/universe/x/xrdp/xrdp_0.9.24-4_amd64.deb
- http://jp.archive.ubuntu.com/ubuntu/pool/universe/x/xorgxrdp/xorgxrdp_0.9.19-1_amd64.deb
- ブラウザでcode-server をダウンロード
- https://github.com/coder/code-server/releases
code-server_4.90.3_amd64.deb
- .debファイル群をpackages.zipに圧縮して、IISのドキュメントルートに配置
C:\Inetpub\wwwroot\packages.zip
ゲストOS: パッケージをインストール
- パッケージファイルのアーカイブをダウンロードして展開
wget http://169.254.xxx.xxx/packages.zip
unzip packages.zip - パッケージをインストール
cd packages
sudo dpkg -i *.deb - 認証局を構築し、サーバ証明書を作成 以下のファイルが生成される。
mkcert -install
- /home/ubuntu/.local/share/mkcert/rootCA.pem
- /home/ubuntu/.local/share/mkcert/rootCA-key.pem
サーバ証明書の作成以下のファイルが生成される。cd ~/.local/share/mkcert
mkcert ubuntu.local - /home/ubuntu/.local/share/mkcert/ubuntu.local.pem
- /home/ubuntu/.local/share/mkcert/ubuntu.local-key.pem
- code-serverを設定して起動 code-server に443/tcp (1024以下のポート)へのバインドを許可
~/.config/code-server/config.yaml #bind-addr: 127.0.0.1:8080
bind-addr: 0.0.0.0:443
#auth: password
auth: none
cert: /home/ubuntu/.local/share/mkcert/ubuntu.local.pem
cert-key: /home/ubuntu/.local/share/mkcert/ubuntu.local-key.pemcode-server の再起動sudo setcap cap_net_bind_service=+ep /usr/lib/code-server/lib/node
sudo systemctl enable code-server@$USER
sudo systemctl restart code-server@$USER - xrdpの設定
/etc/xrdp/xrdp.ini port=3389
port=vsock://-1:3389~/.profile export GNOME_SHELL_SESSION_MODE=ubuntu
export XDG_CURRENT_DESKTOP=ubuntu:GNOMEsudo systemctl restart xrdp
ホストOS: 拡張セッションの有効化とcode-serverのPWA化
- 拡張セッションを有効化
PowerShell Set-VM -VMName "Ubuntu 24.04 LTS" -EnhancedSessionTransportType HvSocket
- hosts の編集
C:\Windows\system32\drivers\etc\hosts 169.254.0.1 ubuntu.local
- ブラウザで
https://ubuntu.local
にアクセス - code-serverのエクスプローラーまたはファイルマネージャでルート証明書をダウンロード
~/.local/share/mkcert/rootCA.pem
- ルート証明書をブラウザにインポート
- ブラウザをリロードしてPWA化
- Hyper-Vマネージャ → 自動開始アクション
- 常にこの仮想マシンを自動的に起動する: オン
- 起動待ち時間: 120秒
利用
Ubuntu デスクトップの利用
- 仮想マシンのショートカットから起動する場合
ショートカットを作成する。
リンク先:C:\Windows\System32\vmconnect.exe 127.0.0.1 "Ubuntu 24.04 LTS"
ショートカットを右クリックして管理者として起動する - Hyper-V マネージャから起動する場合
Hyper-VマネージャでVMを右クリックして「接続」
code-server の利用
PWA化したcode-serverアプリケーションを起動する。
- code-serverのターミナルでコマンドの実行
- code-serverのエクスプローラーでファイルのアップロード/ダウンロードが可能
Node.js を利用する場合
- ホストOSでバイナリをダウンロード
https://nodejs.org/en/download/prebuilt-binaries
Node.js のバージョンを指定、Linuxを指定、x64を指定してダウンロード - ゲストOSに転送後、アーカイブを展開する
tar xvf *.tar.xz
- /usr/local にコピーする
sudo cp -r ./{lib,share.include.bin} /usr/local
Visual Studio Code 拡張を利用する場合
- Visusal Studio マーケットプレース( https://marketplace.visualstudio.com/vscode )から拡張機能のファイル(.vsix)をダウンロード
- code-server で拡張機能をインストール
拡張
→...
→VSIXからのインストール
.vsix ファイルを選択 - code-serverの環境設定
Comment