In Bullseye and later, the `/etc/machine-id` file needs to have the
value `uninitialized` for it to be recognized as first boot and
therefor trigger the generation of a new machine-id.
Fixes: #52
All RPi models which have wireless, also have bluetooth, so add the
firmware package to those images so that the hardware is supported.
Also remove the 'Extra' from the wireless firmware comment.
The wireless firmware is in the firmware-brcm80211 package, but that is
still in 'non-free', so add 'non-free' back to the sources until all
the needed firmware packages are in 'non-free-firmware'.
https://salsa.debian.org/kernel-team/firmware-nonfree/-/merge_requests/36
is where the move to non-free-firmware is proposed, but not yet merged.
Previous commit not only replaced 'non-free' with 'non-free-firmware',
it also removed the 'contrib' archive area from the sources.list.
It added a note about it in the code comments, which I think is the
wrong place. The 'why' of a change belongs in a git commit message,
where one can be as verbose as needed.
Code comments should be used to clarify the 'what' (it does) in case it
would not be immediately obvious.
The removal of 'contrib' totally makes sense though.
We did not use it and 'contrib' and 'non-free' are not part of
(official) Debian, whereas 'non-free-firmware' is now part of Debian
(official media) as a consequence of the change to the Debian Social
Contract following the GR vote.
With this change, we only use what Debian itself would only use.
Fixes: 1ffce8e6bb
When the image was build also determines which package versions got
installed in the generated image and could help explain why a user has
problems with the downloaded image.
Signed-off-by: Diederik de Haas <didi.debian@cknow.org>
It used to be pulled this way (up to Bullseye), via systemd:
Depends: […] systemd-timesyncd | time-daemon […]
Starting with Bookworm, this was downgraded to:
Recommends: […] systemd-timesyncd | time-daemon
Install it all the time: NTP support is important on Raspberry Pi
devices, which usually don't feature an RTC.
But be careful since Buster had systemd itself provide that feature (no
separate systemd-timesyncd package yet).
Thanks, David Tomaschik!
See 3f9e671fed in the boot-consistency
branch, later adjusted in 2b2bb9d6d7 for
the master branch and the new bookworm builds.
With the pythonize approach, a single change is needed.
Commit 26a7de63b0 in master:
/etc/machine-id needs to exist and be empty on buster, while bullseye
needs this file not to exist at all. For now, treat both bullseye and
bookworm the same way.
Group raspi-firmware and firmware-brcm80211 together, and make the
firmware package a regular list item in the master YAML file (making
editors happy about it).
Of course, this means that in all generated recipes, linux-image and
raspi*-firmware switch places.
This is a proof of concept rather than an ideal, final situation.
It can be used this way:
for v in 1 2 3 4 ; do
for s in buster bullseye; do
./generate-recipe.py $v $s
done
done
and it has been verified to produce very similar results compared to the
existing many-sed approach.
Differences are as follows:
- Missing newline after some backports stanza, due to the removal of
the other APT line. There's already MR#51 that aims at fixing some
newline-related issues anyway, so this can be addressed separately.
- Less schizophrenia in the generated sources.list for buster/4, as we
are now only showing a reason for enabling the backports, instead
of starting by explaining why backports are disabled by default.
- Dropping APT::Default-Release = buster in the buster/4 case, which
is no longer needed as we are pulling things from buster-backports
rather than pulling them from unstable (see 57e90df103).
- No longer trying to fix the firmware package name by throwing a
broken sed at rpi-reconfigure-raspi-firmware.service in the buster/4
case: the syntax was buggy and fixing it would have made us try to
replace raspi-firmware with raspi-firmware/buster-backports, while
the correct thing to do is to not touch it in the first place
(raspi-firmware is the correct name for the firmware package, pulled
from buster-backports).
As a side effect, this transforms the existing __EXTRA_SHELL_CMDS__ into
a slightly more explicit __EXTRA_ROOT_SHELL_CMDS__ which now has its
__EXTRA_CHROOT_SHELL_CMDS__ twin. That's the entry point that was
missing and made 45cb5619d4 necessary in the past.