Commit Graph

251 Commits

Author SHA1 Message Date
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
Gunnar Wolf cef8519ab7 Document the usage of bmap files 2021-08-02 12:17:25 -05:00
Gunnar Wolf 6cc7bc3666 Merge remote-tracking branch 'smcv/bmap' 2021-08-02 12:08:47 -05:00
Gunnar Wolf bc811c0b53 Use ASCII-only chars in the comments of wlan0 configuration
Very minor change with no functional differences, jsut for un-uglifying its display
on a base system.
2021-07-30 12:26:56 -05:00
Gunnar Wolf feb61f3361 Fix rpi-generate-ssh-host-keys.service to use the correct package name in buster 2021-07-02 13:01:22 -05:00
Diederik de Haas 84b6ac3864
Add check whether 'fakemachine' exists.
Give a warning message if it does and an error when it does not.

Signed-off-by: Diederik de Haas <didi.debian@cknow.org>
2021-06-24 20:22:55 +02:00
Simon McVittie 821aff4e19 Makefile: Automatically use fakemachine if not uid 0
fakemachine launches a virtual machine reusing the host system's /usr,
and runs commands as root on that virtual machine. It's used by debos,
but can also be used to wrap arbitrary commands, in particular vmdb2;
it's enough to run the parts of vmdb2 that need to mount filesystems
and run apt.

This won't work if fakemachine isn't available (in particular on non-x86),
but that seems better than just failing altogether.

Signed-off-by: Simon McVittie <smcv@debian.org>
2021-06-24 19:33:33 +02:00
Gunnar Wolf 5aadb0116a Ugh, pointed to wrong directory (should be /var/lib/dbus). Fixed. 2021-06-08 11:57:34 -05:00
Gunnar Wolf 75698b0feb Clearing machine-id requires also removing the info from /var/lib/bus/ 2021-06-08 11:51:34 -05:00
Diederik de Haas 8af1ec6cc6
Add 'ca-certificates' to installed packages.
This is needed to use Debian repos served over https, but also a LOT of
other programs, like reportbug, which want to communicate securely.

Also sorted the list of packages alphabatically as I couldn't find a
reason for the current order and then a logical sort order is better.

Signed-off-by: Diederik de Haas <didi.debian@cknow.org>
2021-06-04 23:23:23 +02:00
Gunnar Wolf 99c34cc1d6 Remove /etc/machine-id so that it gets generated upon the (real) first boot 2021-05-28 18:48:39 -05:00
Andres Salomon 0f23b8e378 rpi-resizerootfs: switch the root filesystem resizing away from a systemd oneshot service
Switch away from using a systemd service for the initial root resize.
Instead, we resize the root partition and filesystem in the initrd.

To simplify things, the initrd script will check whether it should resize
the partition on every boot. It does this by checking if the entire disk
(ignoring an empty 4MB) is in use.  However, the scripts themselves are
deleted from the system after the initrd is generated. After the image
is installed, the resize script should exist only in the initrd. When the
kernel gets upgraded (eg, for a security update) or a new initrd is generated
due to a package install, the new initrd will not contain the resize script.
At that point, nothing will remain from the image's initial resize
bootstrapping process.

This process (but not the scripts) is similar to what cloud-initramfs-growroot
does. However, that particular package has an indirect dependency on Python,
and we don't necessarily want that overhead in our images just for resizing.
2021-05-10 14:08:07 -04:00
Gunnar Wolf 41ee2c55a7 Use security.d.o for the security mirror 2021-05-07 13:35:05 -05:00
Gunnar Wolf e826d97050 Enable security updates for Bullseye images 2021-05-07 12:58:56 -05:00
Simon McVittie e6defffb23 Makefile: Optionally generate a bmaptool map file
bmaptool(1), from the bmap-tools package, can write the used blocks
in a sparse disk image to media, while saving time and I/O by not writing
zeroes to the unused blocks. Typical use:

    make raspi2_bullseye.img.bmap raspi2_bullseye.img.xz
    ... upload those two files ...
    ... download those two files ...
    bmaptool copy raspi2_bullseye.img.xz /dev/disk/by-id/usb-Generic-_SD_MMC_*-0:0

Signed-off-by: Simon McVittie <smcv@debian.org>
2021-04-25 11:22:59 +01:00
Simon McVittie 44b845e83f rootfs: Eliminate circular dependency between systemd units
rpi-reconfigure-raspi-firmware.service requires /boot/firmware to be
mounted, but mounting local filesystems requires local-fs-pre.target,
so trying to run rpi-reconfigure-raspi-firmware.service before
local-fs-pre.target results in a cyclic order dependency. systemd
breaks the cycle in an arbitrary place, and the result is unlikely to be
what we want.

Instead, delay reconfiguration of config.txt until after local
filesystems are mounted, but before sysinit.target. This breaks the cycle
(image-specs#49).

This still orders it before all non-early-boot services, because
sysinit.target is part of the DefaultDependencies; so in particular
it will finish before rpi-generate-ssh-host-keys.service starts, which
avoids the two services fighting over the dpkg lock (image-specs#45).

Resolves: image-specs#45
Resolves: image-specs#49
Signed-off-by: Simon McVittie <smcv@debian.org>
2021-04-25 11:17:50 +01:00
Gunnar Wolf 09805aa49b Un-blacklist vc4
Distributing vc4-blacklisted images is a disservice to our users as soon as
vc4+serial work again, and RPi4 is quite often used for desktop or multimedia
tasks.
2021-04-13 22:55:07 -05:00
Gunnar Wolf 6779ca8ad0 Blacklist vc4 module for Bullseye on RPi4, as it leads to serial console corruption 2021-04-13 16:58:25 -05:00
Diederik de Haas 6f9766906b Merge branch 'feature/add_missing_dependencies' into 'master'
add missing dependencies

See merge request raspi-team/image-specs!37
2021-03-26 17:57:17 +00:00
Gunnar Wolf d4fa0532a5 Merge remote-tracking branch 'diedrik/fix-sha256-makefile-target' 2021-03-26 10:16:19 -06:00
Gunnar Wolf 6603b2fc4a Merge remote-tracking branch 'diedrik/fix-alignment' 2021-03-26 10:14:44 -06:00
Gunnar Wolf 0eea2bc2aa Merge remote-tracking branch 'diedrik/update-readme-for-bullseye' 2021-03-26 10:09:41 -06:00
Gunnar Wolf 5544b9c018 Merge remote-tracking branch 'diedrik/update-git-ignore' 2021-03-26 10:07:30 -06:00
Gunnar Wolf 99ebf67b29 Merge branch 'fix-serial-consoles' into 'master'
Replace ttyACM0 with ttyAMA0 for the serial console.

See merge request raspi-team/image-specs!36
2021-03-26 16:05:58 +00:00
Gunnar Wolf 7151dc68cb Added ipv6 support (commented) to wlan0 2021-03-26 10:02:44 -06:00
Gunnar Wolf 1c63302066 Merge branch 'feature/ipv6' into 'master'
add iface line for ipv6

See merge request raspi-team/image-specs!38
2021-03-26 16:01:04 +00:00
Christian Decker b81e5ad86f add iface line for ipv6 2021-03-19 22:07:13 +01:00
Christian Decker 1af8472759 add missing dependencies 2021-03-04 08:41:51 +00:00
Diederik de Haas 267e7fe332 Replace ttyACM0 with ttyAMA0 for the serial console.
Signed-off-by: Diederik de Haas <didi.debian@cknow.org>
2021-02-21 11:30:55 +01:00
Diederik de Haas 4205fd427f Change base of sha256 target to .img as checksum is based on that.
It now xz compresses the image and then still calculates the sha256 hash
on the non-compressed file. The xz.sha256 target (already) compresses it
and calculates the hash on the xz file.

Signed-off-by: Diederik de Haas <didi.debian@cknow.org>
2021-02-19 12:58:33 +01:00
Diederik de Haas afc486f116 Update make targets for the new names/parameters.
Signed-off-by: Diederik de Haas <didi.debian@cknow.org>
2021-02-19 11:58:04 +01:00
Diederik de Haas 1b802e100b Start first partition at 4MiB for proper alignment.
See
https://www.gnu.org/software/parted/manual/html_node/mkpart.html#FOOT2
which then points to Arnd Bergmann's article on LWN:
https://lwn.net/Articles/428584/

Signed-off-by: Diederik de Haas <didi.debian@cknow.org>
2021-02-19 11:41:43 +01:00