I have a physical x86 machine I’m trying to convert into an incus container. It’s running Debian 12.13 (Bookworm), with all updates applied. Migrating to a server running Ubuntu 24.04.3 LTS. And bin.linux.incus-migrate.x86_64 v6.22 downloaded from github yesterday.
There’s no 32-bit version of bin.linux.incus-migrate that I can find.
I tried copying the disk image to the incus server (dd|nc>file.raw) and using bin.linux.incus-migrate.x86_64 to import the raw image. Incus does not seem recognize the raw disk image:
./bin.linux.incus-migrate.x86_64
The local Incus server is the target [default=yes]:
What would you like to create?
1) Container
2) Virtual Machine
3) Virtual Machine (from .ova)
4) Custom Volume
Please enter the number of your choice: 1
Name of the new instance: test32bit
Please provide the path to a root filesystem: /tmp/test32bit.raw
Do you want to add additional filesystem mounts? [default=no]:
Instance to be created:
Name: test32bit
Project: default
Type: container
Source: /tmp/test32bit.raw
Additional overrides can be applied at this stage:
1) Begin the migration with the above configuration
2) Override profile list
3) Set additional configuration options
4) Change instance storage pool or volume size
5) Change instance network
6) Add additional disk
7) Change additional disk storage pool
Please pick one of the options above [default=1]:
Error: Failed to setup the source: Failed to mount /tmp/test32bit.raw: not a directory
I tried using losetup to try pointing to just the root fs in the disk image:
./bin.linux.incus-migrate.x86_64
The local Incus server is the target [default=yes]:
What would you like to create?
1) Container
2) Virtual Machine
3) Virtual Machine (from .ova)
4) Custom Volume
Please enter the number of your choice: 1
Name of the new instance: test32bit
Please provide the path to a root filesystem: /dev/loop0p2
Do you want to add additional filesystem mounts? [default=no]:
Instance to be created:
Name: test32bit
Project: default
Type: container
Source: /dev/loop0p2
Additional overrides can be applied at this stage:
1) Begin the migration with the above configuration
2) Override profile list
3) Set additional configuration options
4) Change instance storage pool or volume size
5) Change instance network
6) Add additional disk
7) Change additional disk storage pool
Please pick one of the options above [default=1]:
Error: Failed to setup the source: Failed to mount /dev/loop0p2: not a directory
I tried mounting the image (losetup + mount), and get a different, but still not working migration. Now it complains about rsync xattr mismatches:
./bin.linux.incus-migrate.x86_64
The local Incus server is the target [default=yes]:
What would you like to create?
1) Container
2) Virtual Machine
3) Virtual Machine (from .ova)
4) Custom Volume
Please enter the number of your choice: 1
Name of the new instance: test32bit
Please provide the path to a root filesystem: /mnt/
Do you want to add additional filesystem mounts? [default=no]:
Instance to be created:
Name: test32bit
Project: default
Type: container
Source: /mnt/
Additional overrides can be applied at this stage:
1) Begin the migration with the above configuration
2) Override profile list
3) Set additional configuration options
4) Change instance storage pool or volume size
5) Change instance network
6) Add additional disk
7) Change additional disk storage pool
Please pick one of the options above [default=1]:
Error: Offered rsync features ([xattrs delete compress]) differ from those in the migration response ([xattrs delete])
Any ideas on how to get this machine converted into a container?
From reading the code, the most likely cause of the missing compress feature on the receiving side would be the storage pool having rsync.compress=false in its configuration.
Hmm, that’s weird. From what I can tell, that’s the only code path that would lead to the missing feature.
I’ve also done a quick test here with an empty filesystem tree (as its content is irrelevant here) on a system using ZFS and things are working fine:
stgraber@castiana:~/Code/lxc/incus (git:stgraber/main)$ sudo incus-migrate
Please touch the FIDO authenticator.
The local Incus server is the target [default=yes]:
What would you like to create?
1) Container
2) Virtual Machine
3) Virtual Machine (from .ova)
4) Custom Volume
Please enter the number of your choice: 1
Project to create the instance in [default=default]:
Name of the new instance: foo
Please provide the path to a root filesystem: /mnt
Do you want to add additional filesystem mounts? [default=no]:
Instance to be created:
Name: foo
Project: default
Type: container
Source: /mnt
Additional overrides can be applied at this stage:
1) Begin the migration with the above configuration
2) Override profile list
3) Set additional configuration options
4) Change instance storage pool or volume size
5) Change instance network
6) Add additional disk
7) Change additional disk storage pool
Please pick one of the options above [default=1]:
Instance foo successfully created
stgraber@castiana:~/Code/lxc/incus (git:stgraber/main)$ incus delete -f foo
stgraber@castiana:~/Code/lxc/incus (git:stgraber/main)$
Do you have multiple pools? Is that the correct target pool for this migration?
Ah ha! Looks like it was not auto-detecting the storage-pool correctly, This run seems to have worked.
./bin.linux.incus-migrate.x86_64
The local Incus server is the target [default=yes]:
What would you like to create?
1) Container
2) Virtual Machine
3) Virtual Machine (from .ova)
4) Custom Volume
Please enter the number of your choice: 1
Name of the new instance: test32bit
Please provide the path to a root filesystem: /mnt
Do you want to add additional filesystem mounts? [default=no]:
Instance to be created:
Name: test32bit
Project: default
Type: container
Source: /mnt
Additional overrides can be applied at this stage:
1) Begin the migration with the above configuration
2) Override profile list
3) Set additional configuration options
4) Change instance storage pool or volume size
5) Change instance network
6) Add additional disk
7) Change additional disk storage pool
Please pick one of the options above [default=1]: 4
Please provide the storage pool to use: zfs-hopper0
Do you want to change the storage size? [default=no]:
Instance to be created:
Name: test32bit
Project: default
Type: container
Source: /mnt
Storage pool: zfs-hopper0
Additional overrides can be applied at this stage:
1) Begin the migration with the above configuration
2) Override profile list
3) Set additional configuration options
4) Change instance storage pool or volume size
5) Change instance network
6) Add additional disk
7) Change additional disk storage pool
Please pick one of the options above [default=1]:
Instance test32bit successfully created