Wrong debian partition table

Problem: Can’t provisioning new Debian systems, because the partition table is invalid

Expected outcome: Debian installer installs automatically the system

Foreman and Proxy versions: 3.16.0

Foreman and Proxy plugin versions: 3.16.0

Distribution and version: Debian 12 (bookworm)

Other relevant data:
Debian 12 partition template (bios)

<%#
kind: ptable
name: Preseed BIOS LVM
model: Ptable
oses:
- Debian
- Ubuntu
%>

<% if host_param('install-disk') -%>
d-i partman-auto/disk string <%= host_param('install-disk') %>
d-i grub-installer/bootdev string <%= host_param('install-disk') %>
<% else -%>
# Use the first detected hard disk
d-i partman-auto/disk string /dev/vda
d-i grub-installer/bootdev string /dev/vda
<% end -%>

d-i partman-partitioning/choose_label select gpt
d-i partman-partitioning/default_label string gpt

d-i partman-auto/method string lvm
d-i partman-auto-lvm/new_vg string vg00
#d-i partman-auto-lvm/growpart boolean true
d-i partman-auto/choose_recipe select root-vg

d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-lvm/confirm boolean true
d-i partman-lvm/confirm_nooverwrite boolean true

d-i partman-auto/expert_recipe string                           \
      root-vg ::                                                \
          1 2 4 biosgrub                                        \
                method{ biosgrub }                              \
          .                                                     \
          1024 1024 1024 ext4                                   \
                $bootable{}                                     \
                method{ format } format{}                       \
                use_filesystem{} filesystem{ ext4 }             \
                mountpoint{ /boot }                             \
          .                                                     \
          61440 -1 -1 lvm                                    \
                method{ lvm }                                   \
                vg_name{ vg00 }                                 \
          .                                                     \
          1024 8192 8192 linux-swap                             \
                $lvmok{}                                        \
                method{ swap } format{}                         \
                lv_name{ swap }                                 \
                in_vg{ vg00 }                                   \
          .                                                     \
          1024 8192 8192 xfs                                    \
                $lvmok{}                                        \
                method{ format } format{}                       \
                use_filesystem{} filesystem{ xfs }              \
                mountpoint{ /usr }                              \
                lv_name{ usr }                                  \
                in_vg{ vg00 }                                   \
          .                                                     \
          1024 8192 8192 xfs                                    \
                $lvmok{}                                        \
                method{ format } format{}                       \
                use_filesystem{} filesystem{ xfs }              \
                mountpoint{ /opt }                              \
                lv_name{ opt }                                  \
                in_vg{ vg00 }                                   \
          .                                                     \
          1024 6144 6144 xfs                                    \
                $lvmok{}                                        \
                method{ format } format{}                       \
                use_filesystem{} filesystem{ xfs }              \
                mountpoint{ /home }                             \
                lv_name{ home }                                 \
                in_vg{ vg00 }                                   \
          .                                                     \
          1024 10240 10240 xfs                                  \
                $lvmok{}                                        \
                method{ format } format{}                       \
                use_filesystem{} filesystem{ xfs }              \
                mountpoint{ /var }                              \
                lv_name{ var }                                  \
                in_vg{ vg00 }                                   \
          .                                                     \
          1024 12288 12288 xfs                                  \
                $lvmok{}                                        \
                method{ format } format{}                       \
                use_filesystem{} filesystem{ xfs }              \
                mountpoint{ /tmp }                              \
                lv_name{ tmp }                                  \
                in_vg{ vg00 }                                   \
          .                                                     \
          1024 10240 10240 xfs                                 \
                $lvmok{}                                        \
                method{ format } format{}                       \
                use_filesystem{} filesystem{ xfs }              \
                mountpoint{ / }                                \
                lv_name{ root }                                 \
                in_vg{ vg00 }                                    \
          .
d-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true

d-i debian-installer/verbose boolean true
d-i debian-installer/allow_unauthenticated boolean true

When I start an installation, it doesn’t use the template, but asks interactively.

If I press continue, the installer could not find a root file system:

This is the installer log after I manually continued:

Thanks

tadopai

Hi,
while I do not know what the issue in your partition template is, I can share you an old template we used some years ago with Ubuntu 20.04 with fixed values for partitions - but it is also for EFI and not BIOS:

kind: ptable
name: Preseed static
model: Ptable
oses:
- Debian
- Ubuntu
%>
# Use the first detected hard disk as default installation disk
d-i partman/early_command string debconf-set partman-auto/disk "$(list-devices disk | head -n1)"

### Partitioning
# The presently available methods are: "regular", "lvm" and "crypto"
d-i partman-auto/method string lvm

# If one of the disks that are going to be automatically partitioned
# contains an old LVM configuration, the user will normally receive a
# warning. This can be preseeded away...
d-i partman-lvm/device_remove_lvm boolean true
# The same applies to pre-existing software RAID array:
d-i partman-md/device_remove_md boolean true
# And the same goes for the confirmation to write the lvm partitions.
d-i partman-lvm/confirm boolean true
d-i partman-lvm/confirm_nooverwrite boolean true

# For LVM partitioning, you can select how much of the volume group to use
# for logical volumes.
d-i partman-auto-lvm/guided_size string max
d-i partman-auto-lvm/new_vg_name string vg00

# test gpt
d-i partman-basicfilesystems/choose_label string gpt
d-i partman-basicfilesystems/default_label string gpt
d-i partman-partitioning/choose_label string gpt
d-i partman-partitioning/default_label string gpt
d-i partman/choose_label string gpt
d-i partman/default_label string gpt

# You can choose one of the three predefined partitioning recipes:
# - atomic: all files in one partition
# - home: separate /home partition
# - multi: separate /home, /var, and /tmp partitions (/usr was removed in jessie)
d-i partman-auto/choose_recipe select multi

# Or provide a recipe of your own...
# If you have a way to get a recipe file into the d-i environment, you can
# just point at it.
d-i partman-auto/expert_recipe string \
4096 8241 4096 linux-swap \
$lvmok{ } \
method{ swap } \
format{ } \
. \
512 100 512 fat16 \
$primary{ } \
method{ efi } \
format{ } . \
1024 768 1024 ext4 \
$defaultignore{ } \
method{ format } \
format{ } \
use_filesystem{ } \
filesystem{ ext4 } \
mountpoint{ /boot } . \
5120 800 5120 xfs \
$lvmok{ } \
method{ format } \
format{ } \
use_filesystem{ } \
filesystem{ xfs } \
mountpoint{ /var/log }  \
. \
1024 800 1024 xfs \
$lvmok{ } \
method{ format } \
format{ } \
use_filesystem{ } \
filesystem{ xfs } \
mountpoint{ /srv }  \
. \
1024 3000 1024 xfs \
$lvmok{ } \
method{ format } \
format{ } \
use_filesystem{ } \
filesystem{ xfs } \
mountpoint{ /home } . \
\
10240 1500 10240 xfs \
$lvmok{ } \
method{ format } \
format{ } \
use_filesystem{ } \
filesystem{ xfs } \
mountpoint{ /opt }  \
. \
10240 300 10240 xfs \
$lvmok{ } \
method{ format } \
format{ } \
use_filesystem{ } \
filesystem{ xfs } \
mountpoint{ /var }  \
. \
10240 300 10240 xfs \
$lvmok{ } \
method{ format } \
format{ } \
use_filesystem{ } \
filesystem{ xfs } \
mountpoint{ / }  \
. \
87552 20000 87552 ext4 \
$lvmok{ } \
method{ format } \
format{ } \
use_filesystem{ } \
filesystem{ xfs } \
mountpoint{ /tmp/hack } \
.

# If you just want to change the default filesystem to something
# else, you can do that without providing a full recipe.

# This makes partman automatically partition without confirmation, provided
# that you told it what to do using one of the methods above.
d-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true

its not that nice formated as yours, but we included a hack to keep a part of the volume group free. For this we created that part /tmp/hack, which is then later removed in the finish script to make that part “free space” of the volume group. This is needed as preseed expects to have every space used in the partition table.

The only thing I see is that you partition table seems to start with the root-vg :: which is not in our template. Maybe try to remove that line and check if the preseed installer will recognize your partitioning as a correct format?