Preparing a seed for the IncusOS installation: How to format/partition a usb stick?

24 views
Skip to first unread message

Johannes Kastl

unread,
Nov 13, 2025, 2:22:26 PMNov 13
to LXC users mailing-list
Dear IncusOS users,

I am just starting to play around with Incus and IncusOS (finally!).

I have a device booting from a USB stick, prepared with the
installation image.

I have another USB stick containing the seed data.

However I partition or format that seed usb stick, it is never
recognized. I always get a warning that the installation cannot
continue without the seed data.

It is a 16Gi USB 2.0 stick.

I tried

- MBR with 1 VFAT partition, containing the JSON files directly in the
file system
- MBR with 1 FAT16 partition (200Mi), containing the JSON files
directly in the file system
- GPT with 1 VFAT partition, containing the JSON files directly in the
file system
- different USB ports on the device
- plugging in the device later
- pulling and plugging the device once the warning appears

The commands I used to format were like this:

"sudo mkfs.vfat -n SEED_DATA /dev/sdb1"
"sudo mkfs.vfat -n SEED_DATA -F 16 /dev/sdb1"

The documentation says:

"Alternatively, a user-provided seed partition may be provided
independent of the install image. The partition label must be
SEED_DATA on either a USB drive formatted as FAT or an ISO image.
Rather than reading a tar archive, the install logic will attempt to
directly read the JSON or YAML configuration files from the mounted
file system"

https://linuxcontainers.org/incus-os/docs/main/reference/seed/

What am I doing wrong? What am I missing?

Thanks in advance!

Kind Regards,
Johannes
OpenPGP_signature.asc

Stéphane Graber

unread,
Nov 13, 2025, 4:23:02 PMNov 13
to Johannes Kastl, LXC users mailing-list
Hey there,

You need a GPT partitioned USB stick with one partition that's vfat
formatted and has a GPT label (name) set to "SEED_DATA".
Note that the partition label is different from the filesystem label.
I typically use gdisk to setup such a partition table and the "c"
command to set the label.

Stéphane
> --
> You received this message because you are subscribed to the Google Groups "lxc-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to lxc-users+...@lists.linuxcontainers.org.
> To view this discussion visit https://groups.google.com/a/lists.linuxcontainers.org/d/msgid/lxc-users/8ab0cd5d-8751-4a8d-b632-ca64fb0cc318%40ojkastl.de.



--
Stéphane

Johannes Kastl

unread,
Nov 14, 2025, 10:23:05 AMNov 14
to lxc-...@lists.linuxcontainers.org
Hi Stéphane

On 13.11.25 22:22 'Stéphane Graber' via lxc-users wrote:
> Hey there,
>
> You need a GPT partitioned USB stick with one partition that's vfat
> formatted and has a GPT label (name) set to "SEED_DATA".
> Note that the partition label is different from the filesystem label.
> I typically use gdisk to setup such a partition table and the "c"
> command to set the label.
Ah, I did not use GPT labels this often, no wonder I forgot about them.

But I still seem to miss something:

> GPT fdisk (gdisk) version 1.0.10
>
> Partition table scan:
> MBR: protective
> BSD: not present
> APM: not present
> GPT: present
>
> Found valid GPT with protective MBR; using GPT.
> Disk /dev/sdb: 31260672 sectors, 14.9 GiB
> Model: Cruzer Blade
> Sector size (logical/physical): 512/512 bytes
> Disk identifier (GUID): B801D07A-4388-4D7C-B788-E6AA98DF2BE6
> Partition table holds up to 128 entries
> Main partition table begins at sector 2 and ends at sector 33
> First usable sector is 34, last usable sector is 31260638
> Partitions will be aligned on 2048-sector boundaries
> Total free space is 4029 sectors (2.0 MiB)
>
> Number Start (sector) End (sector) Size Code Name
> 1 2048 31258623 14.9 GiB 0700 SEED_DATA

I formatted the partition using vfat (and also called it SEED_DATA).
However, I still get the error message that the installation cannot
continue without the seed...

Do you spot the error?

Kind Regards,
Johannes
OpenPGP_signature.asc

Johannes Kastl

unread,
Nov 17, 2025, 12:48:33 PMNov 17
to lxc-...@lists.linuxcontainers.org
Dear all,


On 14.11.25 16:22 Johannes Kastl wrote:

> But I still seem to miss something:
>
>> GPT fdisk (gdisk) version 1.0.10
>>
>> Partition table scan:
>> MBR: protective
>> BSD: not present
>> APM: not present
>> GPT: present
>>
>> Found valid GPT with protective MBR; using GPT.
>> Disk /dev/sdb: 31260672 sectors, 14.9 GiB
>> Model: Cruzer Blade
>> Sector size (logical/physical): 512/512 bytes
>> Disk identifier (GUID): B801D07A-4388-4D7C-B788-E6AA98DF2BE6
>> Partition table holds up to 128 entries
>> Main partition table begins at sector 2 and ends at sector 33
>> First usable sector is 34, last usable sector is 31260638
>> Partitions will be aligned on 2048-sector boundaries
>> Total free space is 4029 sectors (2.0 MiB)
>>
>> Number Start (sector) End (sector) Size Code Name
>> 1 2048 31258623 14.9 GiB 0700 SEED_DATA
>
> I formatted the partition using vfat (and also called it SEED_DATA).
> However, I still get the error message that the installation cannot
> continue without the seed...
>
> Do you spot the error?

Matthias was kind enough to reply (not sure if this was intentionally
off-list). This far I did not get this working and did not find any error.

I just tried tar-ing the files into a tar archive and used that with
the flashertool. I see that the image changed (sha256sum before and
after), so I think the seed was incorporated.

But I still get the "seed not present" error.

Quoting Matthias:

> I suppose the other "obvious" thing to check is that the json
> files are valid? Although I hope we'd return a parsing error if
> that's the case....
It might be that the files are not seen as valid, but the error is
just "no seed present".

I tried all files with "jq < file.json", without errors. So the JSON
is valid, but maybe not the structure inside.

Is there a way to verify the contents?

Kind Regards,
Johannes

OpenPGP_signature.asc

Johannes Kastl

unread,
Nov 17, 2025, 1:02:28 PMNov 17
to lxc-...@lists.linuxcontainers.org
On 17.11.25 18:48 Johannes Kastl wrote:

> Quoting Matthias:
>
>> I suppose the other "obvious" thing to check is that the json
>> files are valid? Although I hope we'd return a parsing error if
>> that's the case....
> It might be that the files are not seen as valid, but the error is
> just "no seed present".

OK, just having an install.json on the stick with '{}' as only
contents leads to a different error, as there is more than one device
to install, but no target is specified.

But as soon as I use the following content, the "missing seed" error
is back:

{
"target": "ata-SSD_2.5__TLC_240GB_InnovationIT_277992109200290"
}

So it might well be that I misinterpreted the docs and the files are
"wrong".

Are there example files somewhere? Or is the documentation all I have?

https://linuxcontainers.org/incus-os/docs/main/reference/seed/

Kind Regards,
Johannes
OpenPGP_signature.asc

Johannes Kastl

unread,
Nov 19, 2025, 2:23:09 AMNov 19
to lxc-...@lists.linuxcontainers.org
On 13.11.25 20:22 Johannes Kastl wrote:

> I have a device booting from a USB stick, prepared with the
> installation image.
>
> I have another USB stick containing the seed data.
>
> However I partition or format that seed usb stick, it is never
> recognized. I always get a warning that the installation cannot
> continue without the seed data.
OK, using the flashertool, a pre-downloaded image and the interactive
questions I could get the installation running.

I copied the network configuration snippet and the snippet with the
client's certificate when I was asked for them. The other questions
were asked and answered without using my snippets (applications,
install target disk-id, ...).

I used the IncusOS_202511150406.img image file.

The installation succeeded and I was asked to remove the installation
media. Then the machine rebooted, but ends up in emergency mode. :-(

The only message shown are "IncusOS starting" and then it takes ages
for anything else to appear (>5min).

No idea where this comes from, I will try again today without the
network settings and then without the pre-seed stuff.

Any tipps how to debug are highly welcome...

Kind Regards,
Johannes
OpenPGP_signature.asc

Lucas Bremgartner

unread,
Nov 19, 2025, 10:37:32 AMNov 19
to lxc-users, Johannes Kastl
Hi Johannes

Quick question, do all the seed files exist on your usb stick with the seed data? In the ISO files, that work correctly for me, the tarball contains the following files:

applications.yaml
incus.yaml
install.yaml
migration-manager.yaml
network.yaml
operations-center.yaml
provider.yaml

For the files, where there is no actual content, the yaml files do still contain an empty JSON object: {}.
I assume, that you try to deploy Incus as application on top of IncusOS, so I assume, that migration-manager.yaml and operations-center.yaml are not really required, but the other might well be required.

Maybe it will get you a step further, if you make sure, that all the files do exist and that there is at least an empty json object present.

BR
Lucas

Johannes Kastl

unread,
Nov 19, 2025, 11:09:21 AMNov 19
to lxc-...@lists.linuxcontainers.org
Hi Lucas,

On 19.11.25 16:37 Lucas Bremgartner wrote:

> Quick question, do all the seed files exist on your usb stick with the seed
> data?

As written I could not get this working with the seed data on a
separate USB stick. So I used the flashertool.

As it currently fails to download img files (ISO seems to work), I
gave it a pre-downloaded one.

I did the following in the tool:

- toggle the install
- select the application (only incus available)
- network
- pre-seed

Not sure what exactly the flashertool put into the image...

> In the ISO files, that work correctly for me, the tarball contains

I have not check the contents of the ISO file. How would I extract the
tarball from the ISO?

> Maybe it will get you a step further, if you make sure, that all the files
> do exist and that there is at least an empty json object present.

I'll resume my tests with the separate stick and try creating empty
files where needed. Thanks for the hint.
Kind Regards,
Johannes
OpenPGP_signature.asc

Johannes Kastl

unread,
Nov 19, 2025, 11:43:03 AMNov 19
to lxc-users
On 19.11.25 16:37 Lucas Bremgartner wrote:
> Hi Johannes
>
> Quick question, do all the seed files exist on your usb stick with the seed
> data? In the ISO files, that work correctly for me, the tarball contains
> the following files:
>
> applications.yaml
> incus.yaml
> install.yaml
> migration-manager.yaml
> network.yaml
> operations-center.yaml
> provider.yaml
I just retried installing with the seed data on a separate stick.
Having all of those files (*.json instead of *yaml), the same "seed
data not found" error appeared.

Kind Regards,
Johannes
OpenPGP_signature.asc

Johannes Kastl

unread,
Nov 21, 2025, 2:53:58 AMNov 21
to lxc-...@lists.linuxcontainers.org
On 19.11.25 08:22 Johannes Kastl wrote:

> The installation succeeded and I was asked to remove the installation
> media. Then the machine rebooted, but ends up in emergency mode. :-(

Tested again with 202511201340.

Tried with only the install question answered, no network, no seed, no
applications selected. Same result, emergency mode.

Tried with all questions answered, same result, emergency mode.

How do I debug this?

Is this just broken in the image based installations, but might work
with ISOs?

As it also happens without my network and seed snippets, I think the
reason is not an error in my snippets... :-)

And: Is there a way to find out which image version is deemed "stable"
currently?

Kind Regards,
Johannes
OpenPGP_signature.asc

Johannes Kastl

unread,
Nov 21, 2025, 3:25:14 AMNov 21
to lxc-...@lists.linuxcontainers.org
On 21.11.25 08:53 Johannes Kastl wrote:
> On 19.11.25 08:22 Johannes Kastl wrote:
>
>> The installation succeeded and I was asked to remove the installation
>> media. Then the machine rebooted, but ends up in emergency mode. :-(

OK, correction, it is the first start that runs into emergency mode.

"IncusOS starting" is the first line shown on the screen.

Then nothing happens for several minutes. Then the emergency mode
thingy appears.

However, using 202511201340 and answering all questions I seem to be
one step further. No I get a warning about existing partitions, while
the device does not have any...

Apparently my device selector (taken from /dev/disk/by-id/) did not work.

Kind Regards,
Johannes
OpenPGP_signature.asc
Reply all
Reply to author
Forward
0 new messages