Bug#900366: postinst creation of /etc/machine-id breaks CustomFirstBoot unit parameter
I spotted this when trying to use the ConditionFirstBoot option writing out and enabling a new systemd service in the installer, and wondering why it was never firing on the first 'real' boot. While I appreciate that removing machine-id or playing around with it are options, they aren't general ones - you wouldn't want to put 'rm /etc/machine-id' in a package for general distribution! The man page for systemd-machine-id-setup says: Use systemd-firstboot(1) to initialize the machine ID on mounted (but not booted) system images. which was what made me think that calling systemd-mahcine-id-setup in postinst might not be the correct thing to do, and perhaps enabling a systemd-firstboot.service might be another approach. (However I'm not that knowledgeable on the intricacies of systemd, so am happy to be wrong here). The 'inverse bug' as it were is then: if the postinst remains unchanged, what can be done to make it clear that ConditionFirstBoot is always False to those following the systemd docs and writing units? Thanks, Matthew On 29/05/18 17:17, Michael Biebl wrote: > Am 29.05.2018 um 16:53 schrieb Matthew Richardson: >> Package: systemd >> Version: 238-5 >> >> The postinst for the systemd deb pkg contains the following: >> >> # Create /etc/machine-id >> systemd-machine-id-setup >> >> This generates /etc/machine-id as the package is installed. >> >> However the systemd unit option ConditionFirstBoot uses the presence or >> absence of this file to detect whether or not this is the first boot. >> From 'man systemd.unit' >> >> "ConditionFirstBoot= takes a boolean argument. This condition may be >> used to conditionalize units on whether the system is booting up with an >> unpopulated /etc directory (specifically: an /etc with no >> /etc/machine-id). This may be used to populate /etc on the first boot >> after factory reset, or when a new system instance boots up for the >> first time." >> >> Since no unit can start until after systemd is installed, and the >> install always creates this file, this test will always be False which >> renders this option useless. > > Well, if you remove /etc/machine-id as part of your debootstrap process, > then /etc/machine-id will not be present during boot. > > Or if you use a stateless system, then /etc might be empty as well. > > So the Condition still makes sense. > > Can you elaborate, what this bug report is supposed to achieve? > > signature.asc Description: OpenPGP digital signature The University of Edinburgh is a charitable body, registered in Scotland, with registration number SC005336.
Bug#900366: postinst creation of /etc/machine-id breaks CustomFirstBoot unit parameter
Am 29.05.2018 um 16:53 schrieb Matthew Richardson: > Package: systemd > Version: 238-5 > > The postinst for the systemd deb pkg contains the following: > > # Create /etc/machine-id > systemd-machine-id-setup > > This generates /etc/machine-id as the package is installed. > > However the systemd unit option ConditionFirstBoot uses the presence or > absence of this file to detect whether or not this is the first boot. > From 'man systemd.unit' > > "ConditionFirstBoot= takes a boolean argument. This condition may be > used to conditionalize units on whether the system is booting up with an > unpopulated /etc directory (specifically: an /etc with no > /etc/machine-id). This may be used to populate /etc on the first boot > after factory reset, or when a new system instance boots up for the > first time." > > Since no unit can start until after systemd is installed, and the > install always creates this file, this test will always be False which > renders this option useless. Well, if you remove /etc/machine-id as part of your debootstrap process, then /etc/machine-id will not be present during boot. Or if you use a stateless system, then /etc might be empty as well. So the Condition still makes sense. Can you elaborate, what this bug report is supposed to achieve? -- Why is it that all of the instruments seeking intelligent life in the universe are pointed away from Earth? signature.asc Description: OpenPGP digital signature
Bug#900366: postinst creation of /etc/machine-id breaks CustomFirstBoot unit parameter
Package: systemd Version: 238-5 The postinst for the systemd deb pkg contains the following: # Create /etc/machine-id systemd-machine-id-setup This generates /etc/machine-id as the package is installed. However the systemd unit option ConditionFirstBoot uses the presence or absence of this file to detect whether or not this is the first boot. From 'man systemd.unit' "ConditionFirstBoot= takes a boolean argument. This condition may be used to conditionalize units on whether the system is booting up with an unpopulated /etc directory (specifically: an /etc with no /etc/machine-id). This may be used to populate /etc on the first boot after factory reset, or when a new system instance boots up for the first time." Since no unit can start until after systemd is installed, and the install always creates this file, this test will always be False which renders this option useless. signature.asc Description: OpenPGP digital signature The University of Edinburgh is a charitable body, registered in Scotland, with registration number SC005336.