[Bug 2132014] [NEW] Offline install fails in ubuntu 24.04 and 25.10 due to subiquity refresh controller flaw
David van Nes
2132014 at bugs.launchpad.net
Thu Nov 20 12:57:30 UTC 2025
Public bug reported:
In an offline installation subiquity is attempting to check for snap updates.
This obviously fails since there is no internet, unfortunately it brings my automated install to a halt.
I need a modern minimal ubuntu to install in an air-gapped environment. currently i am simulating this behavior by running the ubuntu 25.10 / 24.04.3 LTS in virtualbox without a connected network adapter.
This was not an issue in ubuntu 22 LTS nor 20 LTS
>From the code and documentation it looks like this whole update check should be skipped when
autoinstall:
refresh-installer:
update: false
However it looks like this setting is not loaded correctly in
root/subiquity/server/controllers/refresh.py
i would expect:
```
self.ai_data["update"]
```
to be false, and so active should be false
```
def active(self):
if "update" in self.ai_data:
return self.ai_data["update"]
else:
return self.interactive()
```
self.active == false should mean the refresh controller should not do anything
```
def start(self):
if not self.active:
return
```
However in the log i see "controllers.refresh:193 checking for snap update failed"
This is a check that happens after this "self.active" check.
I tried this exact install with ubuntu 25.10 (ubuntu-25.10-live-server-
amd64) but it fails with 24.04.3 too (ubuntu-24.04.3-live-server-amd64)
in the same way.
In my grub:
```
menuentry "Offline Ubuntu Server 25.10" {
set gfxpayload=keep
linux /casper/vmlinuz autoinstall ds="nocloud;s=/cdrom/autoinstall/" ---
initrd /casper/initrd
}
```
I have the following cloud config. That seems to be loaded in correctly
```
#cloud-config
autoinstall:
version: 1
updates: none
refresh-installer:
update: false
channel: latest/edge
apt:
preserve_sources_list: true
identity:
hostname: ub-offline-test
username: ubuntu
password: "test"
storage:
layout:
name: lvm
```
Let me know if there is anything else I can provide or do to help mitigate this issue.
I may try and add some debug lines once I can figure out how to edit that file and re-try the install.
This is my first bug report on here, I hope it meets the guidelines.
Adding a little context:
Offline installs are critical for automated roll-out in locations with unreliable/no internet connections. My employer would also like to be sure we can roll out even if some snap mirror is down.
This is a real use case.
** Affects: subiquity
Importance: Undecided
Status: New
** Affects: subiquity (Ubuntu)
Importance: Undecided
Status: New
** Attachment added: "log screenshot"
https://bugs.launchpad.net/bugs/2132014/+attachment/5927959/+files/debug_log.png
** Also affects: subiquity (Ubuntu)
Importance: Undecided
Status: New
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to subiquity in Ubuntu.
https://bugs.launchpad.net/bugs/2132014
Title:
Offline install fails in ubuntu 24.04 and 25.10 due to subiquity
refresh controller flaw
Status in subiquity:
New
Status in subiquity package in Ubuntu:
New
Bug description:
In an offline installation subiquity is attempting to check for snap updates.
This obviously fails since there is no internet, unfortunately it brings my automated install to a halt.
I need a modern minimal ubuntu to install in an air-gapped environment. currently i am simulating this behavior by running the ubuntu 25.10 / 24.04.3 LTS in virtualbox without a connected network adapter.
This was not an issue in ubuntu 22 LTS nor 20 LTS
From the code and documentation it looks like this whole update check should be skipped when
autoinstall:
refresh-installer:
update: false
However it looks like this setting is not loaded correctly in
root/subiquity/server/controllers/refresh.py
i would expect:
```
self.ai_data["update"]
```
to be false, and so active should be false
```
def active(self):
if "update" in self.ai_data:
return self.ai_data["update"]
else:
return self.interactive()
```
self.active == false should mean the refresh controller should not do anything
```
def start(self):
if not self.active:
return
```
However in the log i see "controllers.refresh:193 checking for snap update failed"
This is a check that happens after this "self.active" check.
I tried this exact install with ubuntu 25.10 (ubuntu-25.10-live-
server-amd64) but it fails with 24.04.3 too (ubuntu-24.04.3-live-
server-amd64) in the same way.
In my grub:
```
menuentry "Offline Ubuntu Server 25.10" {
set gfxpayload=keep
linux /casper/vmlinuz autoinstall ds="nocloud;s=/cdrom/autoinstall/" ---
initrd /casper/initrd
}
```
I have the following cloud config. That seems to be loaded in correctly
```
#cloud-config
autoinstall:
version: 1
updates: none
refresh-installer:
update: false
channel: latest/edge
apt:
preserve_sources_list: true
identity:
hostname: ub-offline-test
username: ubuntu
password: "test"
storage:
layout:
name: lvm
```
Let me know if there is anything else I can provide or do to help mitigate this issue.
I may try and add some debug lines once I can figure out how to edit that file and re-try the install.
This is my first bug report on here, I hope it meets the guidelines.
Adding a little context:
Offline installs are critical for automated roll-out in locations with unreliable/no internet connections. My employer would also like to be sure we can roll out even if some snap mirror is down.
This is a real use case.
To manage notifications about this bug go to:
https://bugs.launchpad.net/subiquity/+bug/2132014/+subscriptions
More information about the foundations-bugs
mailing list