第679回ではLXD/
Ubuntuデスクトップ上でUbuntuデスクトップを動かしたい
LXDにはコンテナインスタンスとVMインスタンスの2種類が存在します。コンテナインスタンスはLinuxのコンテナ機能を利用しています。それに対してVMインスタンスはQEMUを利用した仮想マシンです。
コンテナインスタンスでもデスクトップ環境一式をインストールすれば、
それに対してVMインスタンスについては、
VMインスタンスでGUI環境を実現する方法は2種類存在します。
- 仮想マシンインスタンスを起動して、
Ubuntuデスクトップ関連のパッケージをインストールする - 空の仮想マシンインスタンスを構築し、
起動デバイスとしてUbuntuインストーラーのISOイメージを指定する
今回は後者の方法を解説します。前者のほうが簡単そうに見えますが、
第679回の
ちなみに、
インストールはとっても簡単
手順自体はWindowsをインストールした第679回と大差ありません。
まずLXD 4.
今回は最新の4.
$ lxc --version 4.18
コンソール画面にアクセスするためにSPICEクライアントが必要になります。LXDの場合、
$ sudo apt install virt-viewer
さらにLXDがvirt-viewerがインストールされていることを把握できるように、
$ sudo systemctl reload snap.lxd.daemon.service
次に空のインスタンスを作成し、--vm
)-c limits.
)-c limits.
)
$ lxc init desktop --empty --vm -c limits.cpu=2 -c limits.memory=8GiB Creating desktop $ lxc config device override desktop root size=50GiB Device root overridden for desktop
Ubuntuのインストーラーのメディアを起動デバイスとして追加しておきます。
$ lxc config device add desktop iso disk \ source=$PWD/ubuntu-20.04.3-desktop-amd64.iso boot.priority=10 Device iso added to desktop
準備ができたらコンソールを有効化して仮想マシンを起動しましょう。
$ lxc start desktop --console=vga


あとは普通にUbuntuをインストールするだけです。インストーラーが完了したら再起動してください。ただしLXDの場合、
$ lxc console desktop --type=vga
もしもう一度インストーラーが起動してしまっていたら、lxc stop desktop
」
$ lxc config device remove desktop iso $ lxc start desktop
あとは再びlxc consoleでデスクトップに接続するだけです。とても簡単にデスクトップ環境を準備できました。
VMコンテナの中で何ができるのか
実はQEMUを用いた仮想マシンの活用方法は、
- 第441回
「QEMU/ KVMでUEFIファームウェアを使う 」 - 第446回
「QEMU/ KVMでセキュアブートを利用する 」 - 第595回
「リモートデスクトップのためのSPICEクライアントあれこれ」
これらの記事はいずれも、
順番に見ていきましょう。まず、
/snap/lxd/21468/bin/qemu-system-x86_64 -S -name desktop -uuid a3c7656a-5740-4f6d-8185-16a8a409ddac -daemonize -cpu host -nographic -serial chardev:console -nodefaults -no-user-config -sandbox on,obsolete=deny,elevateprivileges=allow,spawn=deny,resourcecontrol=deny -readconfig /var/snap/lxd/common/lxd/logs/desktop/qemu.conf -spice unix=on,disable-ticketing=on,addr=/var/snap/lxd/common/lxd/logs/desktop/qemu.spice -pidfile /var/snap/lxd/common/lxd/logs/desktop/qemu.pid -D /var/snap/lxd/common/lxd/logs/desktop/qemu.log -smbios type=2,manufacturer=Canonical Ltd.,product=LXD -runas lxd
この時点でもSPICEの設定がされていることがわかりますね。ポイントはインスタンスごとに用意される設定ファイルである/var/
」
UEFIファームウェアとセキュアブート
QEMUでセキュアブートを利用するためにはUEFIファームウェアのFLOSSの実装であるOVMFを利用し、
OVMFの指定はqemu.
# Firmware (read only) [drive] file = "/snap/lxd/current/share/qemu/OVMF_CODE.fd" if = "pflash" format = "raw" unit = "0" readonly = "on" # Firmware settings (writable) [drive] file = "/var/snap/lxd/common/lxd/virtual-machines/desktop/qemu.nvram" if = "pflash" format = "raw" unit = "1"
このうちqemu.
」-c security.
が指定されていなければ)、/snap/
が使われます。これは設定済みのPK/
$ strings /snap/lxd/current/share/qemu/OVMF_VARS.ms.fd | grep -E "CA|KEK" %Microsoft Windows Production PCA 20110 "Microsoft Corporation UEFI CA 20110 $Ubuntu OVMF Secure Boot (PK/KEK key)1,0* $Ubuntu OVMF Secure Boot (PK/KEK key)1,0* !Microsoft Corporation KEK CA 20110 $Ubuntu OVMF Secure Boot (PK/KEK key)1,0* $Ubuntu OVMF Secure Boot (PK/KEK key)1,0*
これらによりLXDのVMインスタンスはあらかじめセキュアブートが有効化されています。
$ dmesg | grep -i secure [ 0.000000] secureboot: Secure boot enabled [ 0.000000] Kernel is locked down from EFI Secure Boot mode; see man kernel_lockdown.7 [ 0.011229] secureboot: Secure boot enabled [ 1.075390] Loaded X.509 cert 'Canonical Ltd. Secure Boot Signing: 61482aa2830d0ab2ad5af10b7250da9033ddcef0'
SPICEプロトコルの対応
SPICEは単なる画面の転送にとどまらず、
QEMU単体で使う場合は、
- SPICEプロトコルを利用した高品質・
高速なディスプレイの描画 - ゲスト・
ホスト間のクリップボードの共有 - ホストからゲストへのファイルのドラッグアンドドロップ
- ゲスト・
ホスト間のファイル共有 - USBリダイレクト機能
このあたりはすべてqemu.
クリップボードもテキストなら普通にコピー&ペーストができますし、
ただし
また、
折しも今年はLinuxデスクトップ元年です