Re: Feedback from bigger installations - installer improvment potential

Jose R Rodriguez <[email protected]> Sun, 29 Mar 2026 21:18:23 -0700
Newsgroups gmane.linux.debian.devel.boot,gmane.comp.file-systems.reiserfs.general
Organization Metztli IT
Message-ID <[email protected]>
Sorry I missed, too, your detailed email ;-)

On 2026-03-20 07:29, Marc Haber wrote:
> Hi,
>=20
> =3D me =3D
>=20
> I'm Marc. I have not been present much on debian-boot in the last=20
> decades, but I have been around for a while. I do remember Debian when=20
> d-i was not yet availebl. You might know me as the person taking care=20
> of adduser and sudo.
>=20
> In my other life, I am not only the can-opener for four lovely cats,=20
> but also a freelance IT consultant in Germany. I do quite some work in=20
> larger Linux environments, and customers using Debian get a (small)=20
> discount. My largest (sadly, ex-) customer is running a mid-size=20
> five-digit number of Debian installations, the majority of those on=20
> bare metal.
>=20
> =3D Why this mail =3D
>=20
> First let me thank you to provide d-i. Debian would not be here without=
=20
> you guys providing the way to get Debian on systems and running. But I=20
> am kind of concerned about recent developments in Debian, for example=20
> debian-live growing more and more into "the method to install Debian on=
=20
> Laptop and desktop" recommended in the press, social media and user=20
> groups, leaving d-i as the method to install servers, moving into the=20
> role of a second-class citizen.
>=20
> Whenever I talk with people running mid-size to large numbers of Debian=
=20
> installations, people roll their eyes when one talks about the=20
> Installer, in particular its way to partition disks. I must admit that=20
> I am not partman's best friend either.

A few years back there was an effort to introduce Growlight as a Partman=20
replacement. I even began to experiment by preliminary adding reiser4/5=20
support to Growlight code at the time. Please see old thread:
< https://lists.debian.org/debian-devel/2021/09/msg00401.html >

Additionally, I even created a small video clip taken from an Debian=20
native reiser5 installation into a VirtualBox slice instance which /root=20
was formatted with reiser5 filesystem and showcasing a test Growlight=20
invocation:
<=20
https://metztli.blog/media/blogs/calli/Bullseye-SFRN5/xonecuiltzin-5.13.1=
9-reizer4-sfrn-5.1.3.mp4?mtime=3D1636642043=20
 >

Yet, I do not know what happen to the project as it went silent.=20
Probably the developer of Growlight might be interested in working with=20
you on such an ambitious project[?!]

> Most of those installation don't use d-i to install Debian on their=20
> systems (rolling their own installer or using a golden image to clone=20
> new systems from), and I have seen sites migrate away from Debian=20
> because Anaconda is so much better automatable.
>=20
> The big installation mentioned above is the only larger installation I=20
> have ever been working with who actually uses d-i: They boot d-i from=20
> the network, using a preseed-file that is generated from their CMDB and=
=20
> after installation hand over the system to puppet, using a=20
> 400-or-so-character late_command that made my eyes water. In this=20
> installation, the inflexibility of disk partitioning has been constant=20
> gripe of the other workgroups that end up using the systems installed=20
> by this method. They all want more flexibility. I haven't worked with=20
> them in eight years so I don't know whether they still use this.
>=20
> Myself, I developed my own Debian installation method that involves=20
> booting a live linux=C2=B9 and then running debootstrap and and a numbe=
r of=20
> idempotent scripts. That was before d-i was invented and I just never=20
> got around to migrate to d-i beause my method was still working=20
> reasonably well. Nowadays, I use an ansible playbook to install Debian=20
> (which allows me to reuse code from the normal configuration management=
=20
> that takes care of my Debian systems during their lifecycle). I am=20
> therefore not very familiar with current d-i mechanisms. I do=20
> occasionally use d-i to install Debian on notebooks and desktop=20
> computers that don't run in a datacenter and in installations where=20
> only a handful of Debian systems are in use (or when the customer=20
> explicitly doesn't want automation).
>=20
> =C2=B9 you might remember Linuxcare's Bootable Business Card from the e=
arly=20
> 2000 years, and there is a reason why the first grml-small release had=20
> the codename "Zugschlus" back in - i think - 2005.
>=20
> Whenever I use d-i manually, partman shows up as my nemesis. I don't=20
> think that I ever was able to get partman non-trivial partitioning=20
> right on the first try.
>=20
> I would like to give you input to improve this. Sadly, I neither do=20
> have time nor the knowledge to be of actual help, but I'd like to offer=
=20
> my input, wishlist reports to help you improve and I am also willing to=
=20
> write docs and specs. I might be able to contribute code, but please=20
> don't expect my code to be directly useable. I am way too bad a=20
> programmer for that. But I am willing to test.
>=20
> I'd like to provide input about the following topics.
>=20
> =3D Find preseeding data, make it easy to place preseeding data =3D
>=20
> Preseeding usually means network boot or rolling your own .iso. As far=20
> as I know, if you do neither, you have to give a (network) path to the=20
> preseed file on the boot prompt otherwise. That doesn't scale, and it=20
> is even not nice for just installing a single system. I am wondering=20
> whether you have considered more default places to have the installer=20
> look for preseed files. For example, I'd like to have the following=20
> default places for preseed files in addition to the places where the=20
> installer already looks for:
>  * (any EFI partition on any hdd)/d-i/preseed.cfg
>    * that is likely to already exist or can trivially be pre-created
>  * /d-i/preseed.cfg on the (virtual) cdrom on the second CD-ROM drive
>    * having a second CD-ROM drive is trivially achievable in     =20
> virtualization
>  * /d-i/preseed.cfg on any filesystem carrying a certain label or   =20
> partlabel.
>    * that can be on the target disk as well, or on an USB key, ...
>  * /d-i/preseed.cfg on a second filesystem on the installer .iso
>    * not sure whether this will actually work with an (emulated) cd-rom=
=20
>      drive, but live linuxes use this mechanism on usb boot media to   =
=20
>   allow customization of system boot with an unchanged .iso
> The file names searched for could be mutated using a firmware asset=20
> tag, MAC address prefixes of different length (like PXE clients already=
=20
> do), ISO release numbers, etc bla foo.
>=20
> The installer then could put up a dialog "preseed file foo found on=20
> (path), do you want to use it?" by default. Of course, to facilitate a=20
> fully automated install, there must be a (preseedable) option to=20
> silence this.
>=20
> Gold Plating: If no preseed file was found, the (expert) installer=20
> could put up a dialog "No preseed file found, do you want to enter the=20
> path to one" to allow the user to add a preseed file after missing the=20
> timeout boot prompt (that could also be used as an indicator that the=20
> search for a preseed file failed).
>=20
> =3D verification of preseed files =3D
>=20
> There is the option to add a checksum to the preseed file option. The=20
> fact that md5 is ths only option offered here suggests that this part=20
> hasnt been touched in quite a while. Have there been thoughts of=20
> introducing signed preseed files, putting the public part(s) of key(s)=20
> in there and just processing preseed files that have the right=20
> signature?
>=20
> =3D Kickstart, anyone? =3D
>=20
> Other installers after a manual install leave a file in the installed=20
> system that can directly be used to preseed another installation, which=
=20
> then will run identically to the one that was just finished, just=20
> unattended. Searching for this on the Web suggests that this was left=20
> out of d-i intentionally, but I didn't find the rationale for that. I=20
> one was in charge of a classroom setting with 15 identical machines,=20
> and I would have been really nice be able to tell a tutor "Just do the=20
> install manually on machine 1, and I can then identically repeat the=20
> installation on machines 2-15".
>=20
> The method outlined in the installation manual B.3 is a bit arcane, I=20
> am not very happy about that. There could be a framework to automate=20
> this, probably removing those items that "should not be preseeded".
>=20
> Also the recommendation to use an editor in a running installation to=20
> check for possible options sounds like an excuse. Nobody should be=20
> forced to manually read debconf template files.
>=20
> There could be a framework that reads the templates when the installer=20
> is built and as a corollary generates a nice web page or an .md=20
> document giving the templates and the possible values. Or, the example=20
> preseed file (like=20
> https://www.debian.org/releases/trixie/example-preseed.txt) could be=20
> automatically augmented with the valid values.
>=20
> =3D Which preseed setting corresponds to which question in d-i =3D
>=20
> In addition, I have found it quite hard to see the connection between=20
> the questions that the installer asked and the respective configuration=
=20
> being put into the debconf database. If the Installer would write its=20
> own preseed file instead of referring people to debconf-get-selections=20
> --installer, it would be possible to put the title of the respective=20
> installer dialog in a comment, making it way easier to find out which=20
> answer to the installer dialogs has resulted in this particular preseed=
=20
> option being generated.
>=20
> =3D Interactive Preseed Preparation =3D
>=20
> I would love to have a possibility to run through a virtual installer=20
> inside a running Debian system in a window, and get a preseed file that=
=20
> contains my answers. I could live with running an actual installation=20
> in a VM and having some side-channel into that VM to interactively and=20
> directly see what is being written to the installer's debconf database=20
> without having to change virtual console hundreds of times. Maybe=20
> another virtual serial port that I could attach to would be a good=20
> method.
>=20
> =3D syslog =3D
>=20
> Can the Installer be made to optionally log to syslog once the network=20
> is up? Maybe I could give a syslog=3Dsyslogserver.example.com on the=20
> kernel command line? In an ideal world, dmesg and everything that is=20
> already logged at this time would be (optionally) dumped to the syslog=20
> server at the beginning, and a meaningful host name would be given in=20
> the syslog messages as well.
>=20
> =3D Make early_command easier =3D
>=20
> Would it make sense to automatically search for an=20
> (preseed|partman)/early_command in the same way than it looks for the=20
> preseed file? That might be an easier way to influence installation and=
=20
> partitioning without having to do a full preseed? I guess that it would=
=20
> be easier for many people to just drop a shell script in some=20
> pre-defined place than having to grok the preseeding file format.
>=20
> When this is addressed, a similar process could be used for the=20
> late_command that many installations use to hand over the system to=20
> puppet, ansible or relatives.
>=20
> =3D Partitioning =3D
>=20
> This is a huge issue in Linux installation, always. I have yet to see a=
=20
> Linux installation tool for any distribution that does this as flexibly=
=20
> as big installations want. Most installations that I am aware of that=20
> have rolled their own installation procedure did that because of the=20
> inflexibility of the distribution-provided partitioning tools. This is=20
> probably caused by the fact that partitioning naturally happens before=20
> anything is installed and that a partitioning process therefore is=20
> spartanic at best.
>=20
> I don't expect Debian to be the first distribution to provide a perfect=
=20
> partitioning tool. But I would like to have some methods to=20
> bypass/replace partman while still being able to use Debian Installer=20
> proper.
>=20
> I think there is too much documentation out there that explains how to=20
> use partman. Therefore, partman as it is should stay. While part of me=20
> is all for a rewrite (see above), I would also be happy with=20
> alternative ways to partition for a Debian installation, while still=20
> making it possible to make use of the Installer.
>=20
> =3D=3D early_command =3D=3D
>=20
> I could for example imagine having an early_command (or even a partman=20
> early_command) that does the partitioning in the way I want it.=20
> Probably the easiest way I can imaging would be making partman and the=20
> rest of the Installer assume that if something is mounted on /target at=
=20
> the point when partman gets invoked, that is already the way the system=
=20
> should be installed. That way, partman could (preseedably) ask "do you=20
> want to use /target as already mounted" and if yes, just advance in d-i=
=20
> wihout even doing anything.
>=20
> =3D=3D pre-partition =3D=3D
>=20
> Just in case one is too lazy to write a proper early_command (which=20
> probably must run in busybox with a rather limited userland), the=20
> system could first be booted to a rescue system with more capabilities=20
> to do the partitioning and building the file systems, with a much=20
> simpler early_command that only needs to mount the prepared filesystems=
=20
> once the installer is booted.
>=20
> =3D=3D fstab import =3D=3D
>=20
> Developing the use cases outlined above further leads to the idea of=20
> the preparation system leaving an /etc/fstab file around that the=20
> installer could directly use to mount /target and as /etc/fstab for the=
=20
> installed system. That would completely eliminate the need for an=20
> early_command if partitioning is done before the actual installer is=20
> booted.
>=20
> =3D=3D YAML Import =3D=3D
>=20
> Partman could be extended in a form that allows it to read YAML, which=20
> could be  * pasted into a free-text field of the installer
>  * read from the network
>  * searched for in a similar way like preseed and (early|late)_command
> That YAML input could be pre-crafted or generated to allow the=20
> partitioning to be exactly like people want it, without having to learn=
=20
> partman's preseed partitioning syntax, and without having to live with=20
> partman-auto's limitations.
>=20
> After having written this, I feel that I begin to be a fan of the=20
> early_command approach.
>=20
> That's what I have for you today, I hope that we can discussion the=20
> options and what I missed. Once the discussion is finished, I intend to=
=20
> file wishlist bug requests against the appropraite parts of d-i to=20
> suggest implementation of our results, if feasible.
>=20
> I will join #debian-boot later today and will be available there in the=
=20
> next weeks.
>=20
> Greetings
> Marc

(I am cc'ing the Growlight developer and hope he does not mind.)

--=20
Best Professional Regards.

--
Jose R R
http://metztli.it
-------------------------------------------------------------------------=
--------------------
Download Metztli Reiser4: Debian Trixie w/ Linux 5.17.15-2 AMD64
-------------------------------------------------------------------------=
--------------------
feats ZSTD compression https://sf.net/projects/metztli-reiser4/
-------------------------------------------------------------------------=
------------------
Official current Reiser4 resources: https://reiser4.wiki.kernel.org/