Proxmox VE上のLXCでsnapdを使う場合に必要な設定

Proxmox VE上のLXCでsnapdを使う場合に必要な設定
Page content

LXCを使いこなすべくメモ

OSSの仮想化環境「Proxmox Virtual Environment」で利用できるLXC (Linux Containers) ゲスト内で、snapdを使おうとしたら、追加設定が必要だったのでメモしておく。手元で試したPVEやLXCの情報は次の通り。

項目内容
Proxmox VEpve-manager/8.2.7/3e0176e6bb2ade3b (running kernel: 6.8.12-3-pve)
PVE CPUアーキテクチャx86_64
CT Templateubuntu-24.04-standard (ubuntu-24.04-standard_24.04-2_amd64.tar.zst)

ちなみに、この知見は、具体的にどんな場合に必要だったかというと、LXCゲスト内でCertbotのsnap版を利用しようとした場合であった。

設定手順

Step-1. PVEホスト: LXCゲストに「fuse=1」を追加設定

PVEホストでpctコマンドを使って、対象のLXCゲストのfeatures設定にfuse=1を追加する。ここでは、PVE上の対象とするLXCゲストのIDを105としている。

## ID:105の現状設定を確認
$ sudo pct config 105
arch: amd64
cores: 4
features: nesting=1
hostname: test-snapd
memory: 512
net0: name=eth0,bridge=vmbr0,firewall=1,hwaddr=XX:XX:XX:XX:XX:XX,ip=dhcp,type=veth
ostype: ubuntu
rootfs: local-lvm:vm-105-disk-0,size=8G
swap: 512
unprivileged: 1

## ID:105の「features」設定を変更して確認
$ sudo pct set 105 --features nesting=1,fuse=1
$ sudo pct config 105
arch: amd64
cores: 4
features: nesting=1,fuse=1
hostname: test-snapd
memory: 512
net0: name=eth0,bridge=vmbr0,firewall=1,hwaddr=XX:XX:XX:XX:XX:XX,ip=dhcp,type=veth
ostype: ubuntu
rootfs: local-lvm:vm-105-disk-0,size=8G
swap: 512
unprivileged: 1

$ sudo pct reboot 105  # LXCゲストを起動状態から再起動する場合
$ sudo pct start 105   # LXCゲストを停止状態から起動する場合

Step-2. LXCゲスト: snapdとsnap「hello-world」をインストール

LXCゲストにsnapdパッケージをインストールする。その後にsnapの「hello-world」をインストールする。後者はなぜか1回目は不成功で、2回目で成功するのだが、この謎については深く調査していない。どうやら動くのでヨシ。

## snapdインストール
# apt install snapd

## 「hello-world」インストール: 1回目は不成功
# snap install hello-world
error: cannot perform the following tasks:
- Setup snap "core" (17200) security profiles (cannot reload udev rules: exit status 1
udev output:
Failed to send reload request: No such file or directory
)

## 「hello-world」インストール: 2回目で成功する
# snap install hello-world
2024-11-04T15:31:28Z INFO Waiting for automatic snapd restart...
hello-world 6.4 from Canonical** installed

## 「hello-world」を実行する
$ hello-world  # SSHログインした状態で
Hello World!

参考: エラーメッセージの例

Step-1の「fuse=1」を追加していない場合

PVEホストにて、LXCゲストのfeatures設定にfuse=1を追加していない場合。LXCゲストでのsnap「hello-world」インストール時に、次のエラーが発生する。

# snap install hello-world
error: system does not fully support snapd: cannot mount squashfs image using "squashfs": mount:
       /tmp/syscheck-mountpoint-2023654386: mount failed: No such file or directory.

参考リンク