Bug#1088104: partman-auto-raid: Recipe delimiter parsing shortcoming restricts mdadm $EXTRA_ARGS
Package: partman-auto-raid
Version: 51
Severity: normal
Tags: d-i patch
Dear Maintainer,
I was trying to get a preseeded Debian installation to create a md software
RAID array with superblock version 1.0. To do that, one has to issue `mdadm
--create ... --metadata=1.0 ...` at array creation time.
partman-auto-raid's auto-raidcfg/create_raid() optionally consumes EXTRA_ARGS
from a pre-seeded partman-auto-raid/recipe (the 8th argument in a single
recipe record) key, which is documented in partman-auto-raid-recipe.txt[0].
By massaging the recipe correctly, it should be possible to supply
`--metadata=1.0` on mdadm's resulting argv.
HOWEVER, since recipe records are currently separated from each other by means
of any single . character (ASCII 0x2e, a dot), it is effectively impossible to
pass this argument to mdadm: There is a simple `while` loop near the end of
auto-raidcfg that will try to split the recipe string as returned by
confmodule's get_db() at each occurence of ., which breaks when the EXTRA_ARG
intended for mdadm's argv contains that particular character.
If the recipe record separator were to be changed to a single ASCII dot
surrounded by any amount of whitespace, which all the preseed examples I could
find in circulation on the web as well as in official Debian documentation
already follow, having any mdadm metadata specification that requires a . in
its optarg would become possible.
I created a merge request on salsa with two patches that implement the new,
fixed split logic available at [1], and hope you will find this useful.
Thanks for all the hard and fruitful work you all are doing - on Debian in
general, and d-i in particular! :)
[0]: https://sources.debian.org/src/debian-installer/20240914/doc/devel/partman-auto-raid-recipe.txt/
[1]: https://salsa.debian.org/installer-team/partman-auto-raid/-/merge_requests/3
-- System Information:
Debian Release: 12.8
APT prefers stable-updates
APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500, 'stable')
Architecture: amd64 (x86_64)
Kernel: Linux 6.1.0-27-amd64 (SMP w/2 CPU threads; PREEMPT)
Kernel taint flags: TAINT_USER
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Reply to: