[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