canonical / canonical/multipass

No '/var/snap/multipass/common/data/multipassd/multipass_root_cert.pem' after install

Open
#5,015 1 comment 0 reactions 0 assignees View on GitHub
needs triage
Dominant language
C++
Stars
9.2k
Forks
828
Avg merge
3d 1h
Merged PRs (30d)
44

Description

**Describe the bug**
Launching multipass after installing throws an uncaught exception.
```
[client] Caught an unhandled exception: failed to open file '/var/snap/multipass/common/data/multipassd/multipass_root_cert.pem': No such file or directory(2)
```
I have been having this bug in CI. Retried 30 times. Got 30 times the same error.

**To Reproduce**
How, and what happened?
1. `sudo snap install multipass` (1.16.3)
2. `multipass find`
3. `[client] Caught an unhandled exception: failed to open file '/var/snap/multipass/common/data/multipassd/multipass_root_cert.pem': No such file or directory(2)`

**Expected behavior**
Multipass should work right after install.

**Logs**
```
$ sudo snap list multipass
=== snap/systemd ===
Name Version Rev Tracking Publisher Notes
multipass 1.16.3 17610 latest/stable canonical** -
+ sudo snap services multipass
Service Startup Current Notes
multipass.multipassd enabled active -
+ sudo snap changes multipass
ID Status Spawn Ready Summary
18 Done today at 15:40 UTC today at 15:42 UTC Install "multipass" snap
```

```
$ sudo systemctl status snap.multipass.multipassd.service --no-pager
● snap.multipass.multipassd.service - Service for snap application multipass.multipassd
Loaded: loaded (/etc/systemd/system/snap.multipass.multipassd.service; enabled; preset: enabled)
Active: active (running) since Wed 2026-07-01 15:42:06 UTC; 1s ago
Main PID: 4020 (multipassd)
Tasks: 6 (limit: 77058)
Memory: 58.1M (peak: 58.5M)
CPU: 1.365s
CGroup: /system.slice/snap.multipass.multipassd.service
├─4020 /snap/multipass/17610/bin/multipassd --verbosity debug --logger platform
└─4149 /snap/multipass/17610/usr/sbin/dnsmasq --keep-in-foreground --strict-order --bind-interfaces --pid-file --domain=multipass --local=/multipass/ --except-interface=lo --interface=mpqemubr0 --listen-address=10.178.30.1 --dhcp-no-override --dhcp-ignore-clid --dhcp-authoritative --dhcp-leasefile=/var/snap/multipass/common/data/multipassd/network/dnsmasq.leases --dhcp-hostsfile=/var/snap/multipass/common/data/multipassd/network/dnsmasq.hosts --dhcp-range 10.178.30.2,10.178.30.254,infinite --conf-file=/var/snap/multipass/common/data/multipassd/network/dnsmasq-BrsqKG.conf

Jul 01 15:42:07 github-runner multipassd[4020]: [4166] started: iptables-nft --wait -t nat --insert POSTROUTING --source 10.178.30.0/24 --destination 224.0.0.0/24 --jump RETURN --match comment --comment generated for Multipass network mpqemubr0
Jul 01 15:42:07 github-runner multipassd[4020]: [4167] started: iptables-nft --wait -t nat --insert POSTROUTING --source 10.178.30.0/24 --destination 255.255.255.255/32 --jump RETURN --match comment --comment generated for Multipass network mpqemubr0
Jul 01 15:42:07 github-runner multipassd[4020]: [4168] started: iptables-nft --wait -t nat --insert POSTROUTING --source 10.178.30.0/24 ! --destination 10.178.30.0/24 --protocol tcp --jump MASQUERADE --to-ports 1024-65535 --match comment --comment generated for Multipass network mpqemubr0
Jul 01 15:42:07 github-runner multipassd[4020]: [4169] started: iptables-nft --wait -t nat --insert POSTROUTING --source 10.178.30.0/24 ! --destination 10.178.30.0/24 --protocol udp --jump MASQUERADE --to-ports 1024-65535 --match comment --comment generated for Multipass network mpqemubr0
Jul 01 15:42:07 github-runner multipassd[4020]: [4170] started: iptables-nft --wait -t nat --insert POSTROUTING --source 10.178.30.0/24 ! --destination 10.178.30.0/24 --jump MASQUERADE --match comment --comment generated for Multipass network mpqemubr0
Jul 01 15:42:07 github-runner multipassd[4020]: [4171] started: iptables-nft --wait -t filter --insert FORWARD --destination 10.178.30.0/24 --out-interface mpqemubr0 --match conntrack --ctstate RELATED,ESTABLISHED --jump ACCEPT --match comment --comment generated for Multipass network mpqemubr0
Jul 01 15:42:07 github-runner multipassd[4020]: [4172] started: iptables-nft --wait -t filter --insert FORWARD --source 10.178.30.0/24 --in-interface mpqemubr0 --jump ACCEPT --match comment --comment generated for Multipass network mpqemubr0
Jul 01 15:42:07 github-runner multipassd[4020]: [4173] started: iptables-nft --wait -t filter --insert FORWARD --in-interface mpqemubr0 --out-interface mpqemubr0 --jump ACCEPT --match comment --comment generated for Multipass network mpqemubr0
Jul 01 15:42:07 github-runner multipassd[4020]: [4174] started: iptables-nft --wait -t filter --append FORWARD --in-interface mpqemubr0 --jump REJECT --reject-with icmp-port-unreachable --match comment --comment generated for Multipass network mpqemubr0
Jul 01 15:42:07 github-runner multipassd[4020]: [4176] started: iptables-nft --wait -t filter --append FORWARD --out-interface mpqemubr0 --jump REJECT --reject-with icmp-port-unreachable --match comment --comment generated for Multipass network mpqemubr0
```
```
$ sudo snap logs multipass -n 300
2026-07-01T15:42:06Z systemd[1]: Started snap.multipass.multipassd.service - Service for snap application multipass.multipassd.
2026-07-01T15:42:06Z multipassd[4020]: Unable to determine subnet for the mpqemubr0 subnet
2026-07-01T15:42:06Z multipassd[4020]: Using AppArmor support
2026-07-01T15:42:07Z multipassd[4020]: Starting dnsmasq
2026-07-01T15:42:07Z multipassd[4020]: Applied AppArmor policy: multipass.dnsmasq
2026-07-01T15:42:07Z multipassd[4020]: [4149] started: dnsmasq --keep-in-foreground --strict-order --bind-interfaces --pid-file --domain=multipass --local=/multipass/ --except-interface=lo --interface=mpqemubr0 --listen-address=10.178.30.1 --dhcp-no-override --dhcp-ignore-clid --dhcp-authoritative --dhcp-leasefile=/var/snap/multipass/common/data/multipassd/network/dnsmasq.leases --dhcp-hostsfile=/var/snap/multipass/common/data/multipassd/network/dnsmasq.hosts --dhcp-range 10.178.30.2,10.178.30.254,infinite --conf-file=/var/snap/multipass/common/data/multipassd/network/dnsmasq-BrsqKG.conf
2026-07-01T15:42:07Z dnsmasq[4149]: started, version 2.90 cachesize 150
2026-07-01T15:42:07Z dnsmasq[4149]: compile time options: IPv6 GNU-getopt DBus no-UBus i18n IDN2 DHCP DHCPv6 no-Lua TFTP conntrack ipset no-nftset auth cryptohash DNSSEC loop-detect inotify dumpfile
2026-07-01T15:42:07Z dnsmasq-dhcp[4149]: DHCP, IP range 10.178.30.2 -- 10.178.30.254, lease time infinite
2026-07-01T15:42:07Z dnsmasq-dhcp[4149]: DHCP, sockets bound exclusively to interface mpqemubr0
2026-07-01T15:42:07Z dnsmasq[4149]: using only locally-known addresses for multipass
2026-07-01T15:42:07Z dnsmasq[4149]: reading /etc/resolv.conf
2026-07-01T15:42:07Z dnsmasq[4149]: using nameserver 127.0.0.53#53
2026-07-01T15:42:07Z dnsmasq[4149]: using only locally-known addresses for multipass
2026-07-01T15:42:07Z dnsmasq[4149]: read /etc/hosts - 10 names
2026-07-01T15:42:07Z dnsmasq[4149]: cannot read /var/snap/multipass/common/data/multipassd/network/dnsmasq.hosts: Permission denied
2026-07-01T15:42:07Z multipassd[4020]: [4150] started: iptables-nft --wait -t filter --list-rules
2026-07-01T15:42:07Z multipassd[4020]: Using iptables-nft for firewall rules.
2026-07-01T15:42:07Z multipassd[4020]: [4151] started: iptables-nft --wait -t filter --list-rules
2026-07-01T15:42:07Z multipassd[4020]: [4152] started: iptables-nft --wait -t nat --list-rules
2026-07-01T15:42:07Z multipassd[4020]: [4153] started: iptables-nft --wait -t mangle --list-rules
2026-07-01T15:42:07Z multipassd[4020]: [4154] started: iptables-nft --wait -t raw --list-rules
2026-07-01T15:42:07Z multipassd[4020]: [4155] started: iptables-nft --wait -t filter --insert INPUT --in-interface mpqemubr0 --protocol udp --dport 67 --jump ACCEPT --match comment --comment generated for Multipass network mpqemubr0
2026-07-01T15:42:07Z multipassd[4020]: [4159] started: iptables-nft --wait -t filter --insert INPUT --in-interface mpqemubr0 --protocol udp --dport 53 --jump ACCEPT --match comment --comment generated for Multipass network mpqemubr0
2026-07-01T15:42:07Z multipassd[4020]: [4160] started: iptables-nft --wait -t filter --insert INPUT --in-interface mpqemubr0 --protocol tcp --dport 53 --jump ACCEPT --match comment --comment generated for Multipass network mpqemubr0
2026-07-01T15:42:07Z multipassd[4020]: [4161] started: iptables-nft --wait -t filter --insert OUTPUT --out-interface mpqemubr0 --protocol udp --sport 67 --jump ACCEPT --match comment --comment generated for Multipass network mpqemubr0
2026-07-01T15:42:07Z multipassd[4020]: [4162] started: iptables-nft --wait -t filter --insert OUTPUT --out-interface mpqemubr0 --protocol udp --sport 53 --jump ACCEPT --match comment --comment generated for Multipass network mpqemubr0
2026-07-01T15:42:07Z multipassd[4020]: [4163] started: iptables-nft --wait -t filter --insert OUTPUT --out-interface mpqemubr0 --protocol tcp --sport 53 --jump ACCEPT --match comment --comment generated for Multipass network mpqemubr0
2026-07-01T15:42:07Z multipassd[4020]: [4164] started: iptables-nft --wait -t mangle --insert POSTROUTING --out-interface mpqemubr0 --protocol udp --dport 68 --jump CHECKSUM --checksum-fill --match comment --comment generated for Multipass network mpqemubr0
2026-07-01T15:42:07Z multipassd[4020]: [4166] started: iptables-nft --wait -t nat --insert POSTROUTING --source 10.178.30.0/24 --destination 224.0.0.0/24 --jump RETURN --match comment --comment generated for Multipass network mpqemubr0
2026-07-01T15:42:07Z multipassd[4020]: [4167] started: iptables-nft --wait -t nat --insert POSTROUTING --source 10.178.30.0/24 --destination 255.255.255.255/32 --jump RETURN --match comment --comment generated for Multipass network mpqemubr0
2026-07-01T15:42:07Z multipassd[4020]: [4168] started: iptables-nft --wait -t nat --insert POSTROUTING --source 10.178.30.0/24 ! --destination 10.178.30.0/24 --protocol tcp --jump MASQUERADE --to-ports 1024-65535 --match comment --comment generated for Multipass network mpqemubr0
2026-07-01T15:42:07Z multipassd[4020]: [4169] started: iptables-nft --wait -t nat --insert POSTROUTING --source 10.178.30.0/24 ! --destination 10.178.30.0/24 --protocol udp --jump MASQUERADE --to-ports 1024-65535 --match comment --comment generated for Multipass network mpqemubr0
2026-07-01T15:42:07Z multipassd[4020]: [4170] started: iptables-nft --wait -t nat --insert POSTROUTING --source 10.178.30.0/24 ! --destination 10.178.30.0/24 --jump MASQUERADE --match comment --comment generated for Multipass network mpqemubr0
2026-07-01T15:42:07Z multipassd[4020]: [4171] started: iptables-nft --wait -t filter --insert FORWARD --destination 10.178.30.0/24 --out-interface mpqemubr0 --match conntrack --ctstate RELATED,ESTABLISHED --jump ACCEPT --match comment --comment generated for Multipass network mpqemubr0
2026-07-01T15:42:07Z multipassd[4020]: [4172] started: iptables-nft --wait -t filter --insert FORWARD --source 10.178.30.0/24 --in-interface mpqemubr0 --jump ACCEPT --match comment --comment generated for Multipass network mpqemubr0
2026-07-01T15:42:07Z multipassd[4020]: [4173] started: iptables-nft --wait -t filter --insert FORWARD --in-interface mpqemubr0 --out-interface mpqemubr0 --jump ACCEPT --match comment --comment generated for Multipass network mpqemubr0
2026-07-01T15:42:07Z multipassd[4020]: [4174] started: iptables-nft --wait -t filter --append FORWARD --in-interface mpqemubr0 --jump REJECT --reject-with icmp-port-unreachable --match comment --comment generated for Multipass network mpqemubr0
2026-07-01T15:42:07Z multipassd[4020]: [4176] started: iptables-nft --wait -t filter --append FORWARD --out-interface mpqemubr0 --jump REJECT --reject-with icmp-port-unreachable --match comment --comment generated for Multipass network mpqemubr0
```

```
$ sudo journalctl -u snap.multipass.multipassd.service --no-pager -n 400
Jul 01 15:42:06 github-runner systemd[1]: Started snap.multipass.multipassd.service - Service for snap application multipass.multipassd.
Jul 01 15:42:06 github-runner multipassd[4020]: Unable to determine subnet for the mpqemubr0 subnet
Jul 01 15:42:06 github-runner multipassd[4020]: Using AppArmor support
Jul 01 15:42:07 github-runner multipassd[4020]: Starting dnsmasq
Jul 01 15:42:07 github-runner multipassd[4020]: Applied AppArmor policy: multipass.dnsmasq
Jul 01 15:42:07 github-runner multipassd[4020]: [4149] started: dnsmasq --keep-in-foreground --strict-order --bind-interfaces --pid-file --domain=multipass --local=/multipass/ --except-interface=lo --interface=mpqemubr0 --listen-address=10.178.30.1 --dhcp-no-override --dhcp-ignore-clid --dhcp-authoritative --dhcp-leasefile=/var/snap/multipass/common/data/multipassd/network/dnsmasq.leases --dhcp-hostsfile=/var/snap/multipass/common/data/multipassd/network/dnsmasq.hosts --dhcp-range 10.178.30.2,10.178.30.254,infinite --conf-file=/var/snap/multipass/common/data/multipassd/network/dnsmasq-BrsqKG.conf
Jul 01 15:42:07 github-runner dnsmasq[4149]: started, version 2.90 cachesize 150
Jul 01 15:42:07 github-runner dnsmasq[4149]: compile time options: IPv6 GNU-getopt DBus no-UBus i18n IDN2 DHCP DHCPv6 no-Lua TFTP conntrack ipset no-nftset auth cryptohash DNSSEC loop-detect inotify dumpfile
Jul 01 15:42:07 github-runner dnsmasq-dhcp[4149]: DHCP, IP range 10.178.30.2 -- 10.178.30.254, lease time infinite
Jul 01 15:42:07 github-runner dnsmasq-dhcp[4149]: DHCP, sockets bound exclusively to interface mpqemubr0
Jul 01 15:42:07 github-runner dnsmasq[4149]: using only locally-known addresses for multipass
Jul 01 15:42:07 github-runner dnsmasq[4149]: reading /etc/resolv.conf
Jul 01 15:42:07 github-runner dnsmasq[4149]: using nameserver 127.0.0.53#53
Jul 01 15:42:07 github-runner dnsmasq[4149]: using only locally-known addresses for multipass
Jul 01 15:42:07 github-runner dnsmasq[4149]: read /etc/hosts - 10 names
Jul 01 15:42:07 github-runner dnsmasq[4149]: cannot read /var/snap/multipass/common/data/multipassd/network/dnsmasq.hosts: Permission denied
Jul 01 15:42:07 github-runner multipassd[4020]: [4150] started: iptables-nft --wait -t filter --list-rules
Jul 01 15:42:07 github-runner multipassd[4020]: Using iptables-nft for firewall rules.
Jul 01 15:42:07 github-runner multipassd[4020]: [4151] started: iptables-nft --wait -t filter --list-rules
Jul 01 15:42:07 github-runner multipassd[4020]: [4152] started: iptables-nft --wait -t nat --list-rules
Jul 01 15:42:07 github-runner multipassd[4020]: [4153] started: iptables-nft --wait -t mangle --list-rules
Jul 01 15:42:07 github-runner multipassd[4020]: [4154] started: iptables-nft --wait -t raw --list-rules
Jul 01 15:42:07 github-runner multipassd[4020]: [4155] started: iptables-nft --wait -t filter --insert INPUT --in-interface mpqemubr0 --protocol udp --dport 67 --jump ACCEPT --match comment --comment generated for Multipass network mpqemubr0
Jul 01 15:42:07 github-runner multipassd[4020]: [4159] started: iptables-nft --wait -t filter --insert INPUT --in-interface mpqemubr0 --protocol udp --dport 53 --jump ACCEPT --match comment --comment generated for Multipass network mpqemubr0
Jul 01 15:42:07 github-runner multipassd[4020]: [4160] started: iptables-nft --wait -t filter --insert INPUT --in-interface mpqemubr0 --protocol tcp --dport 53 --jump ACCEPT --match comment --comment generated for Multipass network mpqemubr0
Jul 01 15:42:07 github-runner multipassd[4020]: [4161] started: iptables-nft --wait -t filter --insert OUTPUT --out-interface mpqemubr0 --protocol udp --sport 67 --jump ACCEPT --match comment --comment generated for Multipass network mpqemubr0
Jul 01 15:42:07 github-runner multipassd[4020]: [4162] started: iptables-nft --wait -t filter --insert OUTPUT --out-interface mpqemubr0 --protocol udp --sport 53 --jump ACCEPT --match comment --comment generated for Multipass network mpqemubr0
```

```
$ sudo ls -la /var/snap/multipass/common/data
total 12
drwxr-xr-x 3 root root 4096 Jul 1 15:42 .
drwxr-xr-x 6 root root 4096 Jul 1 15:42 ..
drwx--x--x 5 root root 4096 Jul 1 15:42 multipassd
```
```
$ sudo ls -la /var/snap/multipass/common/data/multipassd
total 20
drwx--x--x 5 root root 4096 Jul 1 15:42 .
drwxr-xr-x 3 root root 4096 Jul 1 15:42 ..
drwx------ 2 root root 4096 Jul 1 15:42 authenticated-certs
drwx------ 2 root root 4096 Jul 1 15:42 network
drwx------ 2 root root 4096 Jul 1 15:42 ssh-keys
```

**Additional info**
- OS: Ubuntu 20.04
- CPU architecture or model: amd64
- `1.16.3`

**Additional context**
Adding a 5 mins timer after the installation of multipass solves the problem.

Contributor guide

Open the contributing guide

Research direction

Reproduce the failure with `sudo snap install multipass` followed by `multipass find`, then inspect the multipassd service and the `snap logs multipass` output around certificate creation and startup. Trace the install and daemon initialization entry points responsible for `/var/snap/multipass/common/data/multipassd/multipass_root_cert.pem`; done means a fresh install creates the file and `multipass find` completes without an exception.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, linux
Domain
infrastructure, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.