Commit Graph

232 Commits

Author SHA1 Message Date
Diederik de Haas
189a145e0e Merge branch 'add_basic_ci' into 'master'
Add basic .gitlab-ci.yml

See merge request raspi-team/image-specs!55
2022-11-03 20:43:19 +00:00
Anton Gladky
3d9acc17d1 Add basic .gitlab-ci.yml 2022-11-03 20:43:17 +00:00
Ansgar
105c2a7621 add __RELEASE__-updates to sources.list
Closes: #62
2022-11-01 23:54:06 +01:00
Diederik de Haas
b81aa80301 Enlarge firmware partition to 508MB
The firmware partition holds a copy of the initramfs and the kernel and
over the years we have seen a steady increase in its sizes.
Resizing the firmware partition later on is cumbersome as the root
partition follows directly, so it's better to make the firmware
partition not too small. A size of 508MB should be enough to accommodate
4-5 kernels+initramfs, which seems desirable.
2022-11-01 23:51:45 +01:00
Diederik de Haas
05bb2b3557 Switch to MiB units for partition sizes.
Previously one had to calculate how large the /boot/firmware partition
would be, but expressing it directly in MiB units is much clearer.

This also has the benefit that the /boot/firmware partition's size would
not change if the total image size would be changed.
Such a change should be a deliberate decision and not some side-effect.
As that 'side-effect' did happen since first submitting this patch,
revert the /boot/firmware partition's size back to 300MB.

Signed-off-by: Diederik de Haas <didi.debian@cknow.org>
2022-11-01 23:51:35 +01:00
Diederik de Haas
0f80bfa650 Remove unneeded apt-get update step.
Vmdb2 already does more then enough 'apt-get update', so no need to add
one ourselves.

Signed-off-by: Diederik de Haas <didi.debian@cknow.org>
2022-11-01 16:50:40 +01:00
Diederik de Haas
a712206f62 Add raspi_*_bookworm.yaml to .gitignore 2022-11-01 16:05:31 +01:00
Diederik de Haas
dc7558eb3f Re-add 'non-free' to sources till all firmware is moved
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.
2022-10-31 01:32:47 +01:00
Diederik de Haas
d71140b08a Move 'contrib' removal comment to git commit msg
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
2022-10-30 23:56:51 +01:00
Gunnar Wolf
1ffce8e6bb For Bookworm, use the new non-free-firmware section instead of non-free 2022-10-12 10:25:53 -05:00
Diederik de Haas
1211f8af04 Add buildtime to raspi-image-id in the image itself
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>
2022-01-14 00:19:57 +01:00
Anton Gladky
afe64f3b1f Add git commit information into the image. Fixes #43 2022-01-13 23:49:27 +01:00
Cyril Brulebois
7c65ab3d7d Mention bookworm in addition to buster and bullseye. 2021-12-09 00:07:11 +01:00
Cyril Brulebois
71bff50a8d Drop first buster mention.
We know how to build buster, bullseye, and bookworm at this point.
2021-12-09 00:07:11 +01:00
Cyril Brulebois
30850be68e Document python3 as a requirement.
It's pulled in via vmdb2 at least, but let's be explicit.
2021-12-09 00:07:00 +01:00
Cyril Brulebois
773d24900d Fix buster builds.
Regression introduced in f89f71560d:
the sed call modifies /etc/default/raspi-firmware, which used to be
/etc/default/raspi3-firmware; while not ideal, working on
/etc/default/raspi*-firmware shouldn't interfere on unrelated files.
2021-12-08 21:59:12 +01:00
Cyril Brulebois
96ac1dcec7 Install systemd-timesyncd explicitly (fixes: #58).
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!
2021-12-08 21:38:36 +01:00
Cyril Brulebois
53b35993c7 Merge branch 'pythonize' 2021-12-08 20:49:34 +01:00
Gunnar Wolf
2ef7490999 Bumping up original image to 2GB, as we are hitting ENOSPC while building 2021-12-06 00:11:02 -06:00
Cyril Brulebois
cab748ab0c Drop cma= tweaking in /etc/kernel/postinst.d/z50-raspi-firmware.
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.
2021-11-20 15:11:25 +01:00
Cyril Brulebois
7bcb42a2ba Merge branch 'master' into pythonize
Let's catch up with the recent changes (boot-consistency merge, mainly).

Conflicts:
	Makefile
	raspi_master.yaml
2021-11-20 14:01:01 +01:00
Cyril Brulebois
2b2bb9d6d7 Drop extraneous sed-ing of cma= in z50-raspi-firmware hook for Pi 4 (bookworm).
Commit 3f9e671fed in the boot-consistency
branch, which requires an extension to cover the new raspi_4_bookworm
build.
2021-11-20 13:57:20 +01:00
Cyril Brulebois
cba96ddb16 Merge branch 'boot-consistency' 2021-11-20 13:43:53 +01:00
Diederik de Haas
66f43b854f Fix _clean_shasums to also remove *.img.sha256.
Commit 422a0d60 fixed the img.sha256 target itself, but it didn't update
the corresponding clean variant, so add that too.

Signed-off-by: Diederik de Haas <didi.debian@cknow.org>
(cherry picked from commit 60513d46f6)
Signed-off-by: Cyril Brulebois <cyril@debamax.com>
2021-11-20 04:19:23 +01:00
Cyril Brulebois
650da9d351 Pull firmware-brcm80211 from buster-backports for the Pi 3.
Commit 611b5c6d5c in master.
2021-11-20 04:17:26 +01:00
Cyril Brulebois
592c0df22e Adjust /etc/machine-id logic for buster.
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.
2021-11-20 04:09:52 +01:00
Cyril Brulebois
5f7a28d8ec Add support for bookworm. 2021-11-20 03:57:19 +01:00
Gunnar Wolf
68ebe5c385 Enable builds for Bookworm 2021-11-09 23:48:29 -06:00
Cyril Brulebois
6251ebfbe0 Move the console= parameter for the serial console.
See https://salsa.debian.org/raspi-team/image-specs/-/issues/57 for
detailed background.

Summary, e.g. on the Pi 4:
 - fresh build and first boot means:
    console=ttyS1,115200 console=tty0
 - after dpkg-reconfigure raspi-firmware has run, with the default
   settings:
    console=tty0 console=ttyS1,115200

Having some consistency across boots seems desirable (esp. when the Pi
fails to boot and the hints are on a serial console which might not be
wired), so insert the console= parameter for the serial console right
before the root= parameter.

Currently, the /etc/kernel/postinst.d/z50-raspi-firmware hook uses:

    ${pre_cmdline} root=$ROOTPART […]

and console= parameters are inserted via ${pre_cmdline}, so inserting
the serial console before root= should get us the same results.
2021-10-21 16:59:14 +02:00
Cyril Brulebois
f89f71560d Make label-based booting persistent (see: #996915).
Without this, the block device holding the root filesystem would be
resolved at the first boot when reconfiguring raspi-firmware (e.g.
/dev/mmcblk1p2) which would then make the system fail to boot if it
ever shows up under a different name (e.g. /dev/mmcblk0p2).

Set ROOTPART parameter explicitly to stick to label-based booting.
2021-10-21 16:35:43 +02:00
Cyril Brulebois
46ead8a58d Improve pattern when replacing root=/dev/mmcblk0p2 in cmdline.txt
Let's make it clear what we are replacing.
2021-10-21 16:34:32 +02:00
Cyril Brulebois
3f9e671fed Drop extraneous sed-ing of cma= in z50-raspi-firmware hook for Pi 4.
For starters, the pattern no longer exists since this commit in
raspi-firmware:

    commit dd456f4746a800ac85bdf376b5efcdb1fac133de
    Author: Gunnar Wolf <gwolf@gwolf.org>
    Date:   Wed Aug 5 12:02:57 2020 -0500

        Don't set CMA in RPi4 unless specified expressly

and there's now a SET_CMA variable instead.

And more importantly, the Pi 4 gets appropriate treatment thanks to this
commit (empty SET_CMA), which the Pi Compute Module 4 might get soon too
(see #996937).

This commit first shipped in debian/1.20200601-2, and we are using one
of those at the moment for the Pi 4 family:
 - 1.20210303+ds-2 (bullseye)
 - 1.20210303+ds-2~bpo10+1 (buster-backports)
2021-10-21 16:10:14 +02:00
Diederik de Haas
60513d46f6 Fix _clean_shasums to also remove *.img.sha256.
Commit 422a0d60 fixed the img.sha256 target itself, but it didn't update
the corresponding clean variant, so add that too.

Signed-off-by: Diederik de Haas <didi.debian@cknow.org>
2021-09-09 01:00:59 +02:00
Diederik de Haas
611b5c6d5c Fix missing firmware error on RPi 3 Buster.
The RPi 3 wants an extra firmware file which isn't available in normal
Buster, but is available in buster-backports, so install that version of
firmware-brcm80211.
Note that dmesg shows it as an error, but wifi should work without it.

Signed-off-by: Diederik de Haas <didi.debian@cknow.org>
2021-09-09 00:31:55 +02:00
Diederik de Haas
26a7de63b0 Fix machine-id mechanism for Buster.
The logic wrt /etc/machine-id changed between Buster and Bullseye.
While on Bullseye the file should not exist, on Buster the file must
exist, but be empty, in order to generate a new machine-id on first
boot.
It seems that /var/lib/dbus/machine-id is a symlink to /etc/machine-id
on Buster, while a separate file on Bullseye, so nothing needs to be
done with that file/symlink.

Signed-off-by: Diederik de Haas <didi.debian@cknow.org>
2021-09-09 00:28:05 +02:00
Diederik de Haas
7aed761507 Change 'sed' separator to '#'.
For (at least) rpi4 Buster target, it gets replaced (again) by a package
from backports, resulting in <pkgname>/backports, making the sed
statement invalid. That isn't the case when using '#' as separator.

Signed-off-by: Diederik de Haas <didi.debian@cknow.org>
2021-09-09 00:23:05 +02:00
Cyril Brulebois
252a694848 Improve loop readability.
Split dynamic target generation across several lines to make the nested
loops more obvious. Backslashes are needed for make to be happy about
what would otherwise be detected as unfinished foreach function calls.
2021-08-28 06:08:27 +02:00
Cyril Brulebois
0f8884c39c Replace the sed maze with one generate-recipe call for each combination. 2021-08-28 06:08:27 +02:00
Cyril Brulebois
1410839911 Add an empty line before __EXTRA_CHROOT_SHELL_CMDS__
This means the generated recipes are getting two empty lines if there
are no such commands (that's the case for everyone right now), but this
emphasizes the existence of this placeholder, the same way as for its
__EXTRA_ROOT_SHELL_CMDS__ twin.
2021-08-28 06:08:27 +02:00
Cyril Brulebois
2108ed0a80 Reorder replacements.
Let's have variables being set and replacements being performed in
roughly the same order.
2021-08-28 06:08:27 +02:00
Cyril Brulebois
b339942ca4 Fix missing trailing newline in sources.list
Re-implement MR #49 by Diederik de Haas.
2021-08-28 06:07:45 +02:00
Cyril Brulebois
433100f5cb Standardize firmware handling.
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.
2021-08-28 06:07:45 +02:00
Cyril Brulebois
4483f4cdfb Generate recipes using a Python script instead of multiplying sed calls.
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.
2021-08-28 06:07:45 +02:00
Cyril Brulebois
eef3f4d3c1 Use the $< automatic variable.
That's the name of the first prerequisite.
2021-08-28 06:02:43 +02:00
Cyril Brulebois
422a0d6054 Fix shasums target.
Without this, a plain `make` would result in:

    make: *** No rule to make target 'raspi_1_buster.img.sha256', needed by 'shasums'.  Stop.
2021-08-28 06:00:29 +02:00
Andres Salomon
4816680ba6 resizerootfs: switch from using sfdisk to parted for resizing partitions
sfdisk is a bit crusty - it doesn't understand gpt partition tables very well,
for example. By switching to parted, we can handle gpt issues (which may be
useful in the future, and is definitely useful for other boards), and we no
longer have to hardcode that 4M alignment workaround. Parted will tell us
the free space at the end of the disk.

Because we're already using partprobe, there's no additional dependencies
needed.
2021-08-25 01:23:20 +02:00
Gunnar Wolf
9e206c86ff Fix generated suffix for .img.sha256 files 2021-08-24 13:22:36 -05:00
Gunnar Wolf
06ec954d82 Shasums for the compressed images should use consistent naming -- generate them as .img.xz.sha256 2021-08-23 11:58:32 -05:00
Cyril Brulebois
3058cf8e82 Run sed on rpi-reconfigure-raspi-firmware.service within $ROOT.
This fixes the build of all buster-based images (regression in
feb61f3361).
2021-08-22 23:05:01 +02:00
Cyril Brulebois
45cb5619d4 Add cma= tweaks only once for raspi_4_* recipes.
Otherwise, the two same sed calls would be added twice, once after the
console= tweak, once after the LABEL= tweak.
2021-08-22 23:05:01 +02:00