Hyper-V上のVyOSでVSSやシャットダウンを有効化する
目次
Hyper-VでVyOSを動かしているとVSSやHyper-VからのOSシャットダウンができなくてモヤモヤしたので直した記録。
環境
- Hyper-Vホスト: Windows Server 2019
- VyOSバージョン: 1.4 (vyos-1x@2622902)
概要
VyOSではLinux Kernelから一部のHyper-Vモジュールが抜けており、いくつかの統合機能が使えなくなっている。
このことはVyOSのチケットT3429https://phabricator.vyos.net/T3429 でも2021年5月に報告されていて対処方法も書かれているが、ソースコードに取り込まれておらず、2023年2月の段階でも解消されていない。
そのため、今回はT3429の解決案とVyOSのドキュメントを見て実際にHyper-Vのモジュールを組み込んだVyOSをビルドした。
やったこと
ビルド方法はVyOSのドキュメントのここに書かれている。 https://docs.vyos.io/en/latest/contributing/build-vyos.html
ビルド環境をDockerで用意する場合、流れとしてはこんな感じ。割と簡単。
- Docker環境の用意
- ビルドスクリプトが入ったリポジトリをGitHubからclone
- Linux KernelのConfigを修正
- Linux Kernelのビルドスクリプトを実行
- VyOSのISO作成スクリプトを実行
-
Docker環境を用意したホストで実行
- 今回はUbuntu Serverでインストール時にDocker Runtimeを入れた。おてがる。
# ビルドスクリプトが入ったリポジトリをGitHubからclone git clone -b current --single-branch https://github.com/vyos/vyos-build cd vyos-build # Dockerコンテナを起動して中に入る docker run --rm -it --privileged -v $(pwd):/vyos -w /vyos vyos/vyos-build:current bash # 以降Dockerコンテナ内での操作 # Linux Kernelをclone # data/defaults.json を見ると kernel_version = "6.1.9" とのことだったので v6.1.9 をclone cd packages/linux-kernel git clone --depth 1 --branch v6.1.9 https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git git clone https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
-
Linux KernelのConfigを修正
- T3429では
CONFIG_HYPERV_UTILS=m
にしているが、今回はHyper-Vでしか動かさないこともありy
にしている
diff --git a/packages/linux-kernel/arch/x86/configs/vyos_defconfig b/packages/linux-kernelarch/x86/configs/vyos_defconfig index e11fa0a..5e8158d 100644 --- a/packages/linux-kernel/arch/x86/configs/vyos_defconfig +++ b/packages/linux-kernel/arch/x86/configs/vyos_defconfig @@ -1828,7 +1828,7 @@ CONFIG_DMA_SHARED_BUFFER=y # CONFIG_MHI_BUS is not set # end of Bus devices -# CONFIG_CONNECTOR is not set +CONFIG_CONNECTOR=y # # Firmware Drivers @@ -4725,6 +4725,7 @@ CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y CONFIG_HYPERV=m CONFIG_HYPERV_TIMER=y CONFIG_HYPERV_BALLOON=m +CONFIG_HYPERV_UTILS=y # end of Microsoft Hyper-V guest support #
- T3429では
-
Linux Kernelのビルド
cd /vyos/packages/linux-kernel ./build-kernel.sh ./build-linux-firmware.sh cp vyos-linux-firmware_*.deb ../
-
ISOを作成
cd /vyos sudo ./build-vyos-image iso --architecture amd64 --build-by "[email protected]"
おしまい。
ちゃんとISO作成のスクリプトを見ていないが、debファイルを置けばインストールした状態でISOを作ってくれる?
もしそうであればZabbix Agentを入れてVyOSを監視するなんてことをしても面白いかもとか考えている。