Compare commits

...
Sign in to create a new pull request.

107 commits

Author SHA1 Message Date
Paul Whalen
87eaa6a42b Update gpgkey path in fedora-46.repo, drop unused fedora-45.repo
Update gpgkey path in fedora-46.repo from /etc/pki/rpm-gpg/ to
/usr/share/pki/rpm-gpg/ for the F45 GPG key relocation.

See: https://discussion.fedoraproject.org/t/f45-change-proposal-relocate-rpm-repo-configs-to-usr-selfcontained/188916

Remove fedora-45.repo from main (rawhide) - it belongs on f45-branch.

Assisted-by: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2026-08-17 14:41:53 -04:00
Paul Whalen
f570c87de9 Bump rawhide to Fedora 46 2026-08-12 10:17:54 -04:00
Paul Whalen
63d2e9c3f5 Update workstation-ostree-config references to Forge
- bootupd.yaml: Update comment URL to atomic-desktops/config on Forge
- treecompose-post.sh: Update comment URL to atomic-desktops/config on Forge

Assisted-by: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2026-07-28 16:15:56 -04:00
Kenneth Giusti
3738d4889f
fix: use kmscon as default VT console
The kernel console fbcon has been replaced with the userspace console
kmscon in Fedora 45.

See: https://github.com/fedora-iot/iot-distro/issues/137

Signed-off-by: Kenneth Giusti <kgiusti@redhat.com>
2026-06-15 12:56:47 -04:00
ce42103746
Remove ignition package
Since [1], the ignition-edge subpackage requires ignition, so it's no
longer needed to require ignition explicitly here.

[1] https://src.fedoraproject.org/rpms/ignition/c/3ccce9fe2c0462f4a17923937933ab9c26db0aa5?branch=rawhide
2026-03-12 09:46:51 +01:00
Paul Whalen
e49d841a84 fix: drop sshd-authorized-keys workaround
Openssh config snippet now shipped with ignition.

See: https://src.fedoraproject.org/rpms/ignition/pull-request/143

Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2026-02-26 15:07:19 -05:00
Paul Whalen
1b3ede31d9 fix: use 90- prefix for authorized-keys-file.conf
Updates the config file numbering to ensure crypto policies(40)
and security configs(50) are applied before user keys are sourced.

Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2026-02-24 17:04:31 -05:00
Paul Whalen
7a121ed5e7 fix: do not create etc/ssh/sshd_config.d
Do not create etc/ssh/sshd_config.d, it should already exist and is
owned by openssh-clients and systemd.

Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2026-02-24 15:52:24 -05:00
Paul Whalen
e0898e8a38 fix: restore SSH key management for Ignition
Configures OpenSSH to read keys from ~/.ssh/authorized_keys.d/* in
addition to authorized_keys, restoring functionality lost when
ssh-key-dir was removed.

Follows the same approach as CoreOS:
https://github.com/coreos/fedora-coreos-config/pull/3885

Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2026-02-24 15:36:39 -05:00
Paul Whalen
240bff70e7 fix: add systemd-pam to fix rootless podman
In Fedora 44 systemd changed systemd-pam to recommends and it
was dropped from the compose.

See: https://github.com/fedora-iot/iot-distro/issues/127

Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2026-02-10 15:44:02 -05:00
Paul Whalen
dccd3a2e18 IoT: Update rawhide for F-45
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2026-02-06 11:22:08 -05:00
Paul Whalen
fc7be03512 fix: drop ssh-key-dir
Package has been deprecated in F44.

See: https://github.com/coreos/ssh-key-dir/issues/188

Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2026-02-04 11:07:52 -05:00
Paul Whalen
cc96761b13 IoT: Update rawhide for F-44
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2025-08-11 14:25:38 -04:00
Paul Whalen
c7f2ffe7cb Default root config to mount sysroot as read only
See: https://github.com/fedora-iot/iot-distro/issues/81
     https://gitlab.com/fedora/bootc/base-images/-/blob/main/tier-0/ostree.yaml

Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2025-03-17 13:19:32 -04:00
465d88c040 Add a justfile with common commands 2025-03-07 13:50:20 +01:00
ce81f37ea5 ci: Add a script to help validate manifest syntax 2025-03-07 13:50:20 +01:00
e4bd292f1a Whitespace & indentation cleanup 2025-03-07 13:50:19 +01:00
6b92bbcbbc Remove fedora-bootc-base
Now moved to https://github.com/fedora-iot/fedora-iot-bootc
2025-03-07 13:50:10 +01:00
Paul Whalen
2fda060e85 Remove grub2-workaround
Remove grub2-workaround, bug has been fixed.

See: https://bugzilla.redhat.com/show_bug.cgi?id=2305291

Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2025-03-06 14:02:39 -05:00
6529ca201d iot: drop kernel-tools
It too should be layered, not included in the base image.

Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2025-02-28 17:09:28 +00:00
Paul Whalen
c739a8c05a Enable composefs by default
See: https://pagure.io/workstation-ostree-config/pull-request/591
     https://fedoraproject.org/wiki/Changes/ComposefsAtomicCoreOSIoT
     https://fedoraproject.org/wiki/Changes/ComposefsAtomicDesktops

Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2025-02-27 11:02:20 -05:00
Paul Whalen
a6e7212b56 Migrate systems to a static GRUB config
See: https://pagure.io/workstation-ostree-config/pull-request/591
     https://fedoraproject.org/wiki/Changes/ComposefsAtomicCoreOSIoT
     https://fedoraproject.org/wiki/Changes/ComposefsAtomicDesktops

Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2025-02-27 10:58:35 -05:00
Paul Whalen
b3fd2930a9 Disable ima in ostree due to ongoing compose issues
See: https://bugzilla.redhat.com/show_bug.cgi?id=2346265

Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2025-02-24 10:43:18 -05:00
ce25ead8e5 drop policycoreutils-python-utils in base
The policycoreutils-python-utils pulls in a bunch of extra
SELinux utils which aren't used in day to day, it pulls in
a bunch of python packages, it can easily be layered and
isn't generally needed.

Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2025-02-19 15:34:27 +00:00
Paul Whalen
17d9d31eb8 Drop parsec no longer supported upstream
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2025-02-19 15:17:54 +00:00
Paul Whalen
b799fe0c9d Remove Zezere and enable systemd-firstboot
Remove Zezere and enable systemd-firstboot for local configuration.

See: https://fedoraproject.org/wiki/Changes/Retire_Zezere

Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2025-02-19 15:17:42 +00:00
625d763195 Replace basesystem with filesystem
See https://src.fedoraproject.org/rpms/filesystem/c/3f741bf2a89c9e1bb685943c41fd298e6683dd50?branch=rawhide

Signed-off-by: Adam Williamson <awilliam@redhat.com>
2025-02-07 09:34:26 -08:00
Paul Whalen
d6ec8e0b0e IoT: Update rawhide for F-43
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2025-02-04 15:29:24 -05:00
djach7
c611d4da96 Adds bootupd update to boot process
Updates bootupd.yaml to enable bootupctl-update upon system boot. This allows bootupd to work as expected on Fedora IoT raw image systems, with all expected components installed.

Signed-off-by: djach7 <djachimo@redhat.com>
2024-12-16 16:42:00 -05:00
David Jachimowicz
91539fbf82
Update fedora-iot-base.yaml to sync with osbuild iot-commit
Adds ssh-key-dir and ignition-edge packages to base yaml. ssh-key-dir is needed to transfer ssh keys to the iot system during boot
and ignition-edge is needed to allow ssh-key-dir to work properly.

Explicitly adds fedora-iot-config package. Was previously pulled in as a requirement, added for clarity.

Adds fdo-owner-cli package to increase FDO functionality.

These changes should help bring the package list more in line with the osbuild iot-commit, as well as rectifying issue 70 and issue 49 (relating to ssh key login and home directory creation on iot systems).

Issue 70: https://github.com/fedora-iot/iot-distro/issues/70
Issue 49: https://github.com/fedora-iot/iot-distro/issues/49

Signed-off-by: djach7 <djachimo@redhat.com>
2024-11-19 12:09:25 -05:00
Paul Whalen
597796c53f Add iot base bootc image
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-09-25 08:57:05 -04:00
176b0add79 drop dnsmasq
Not sure why it was included, I suspect it was once used
for container networking.

Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2024-09-20 15:28:56 +01:00
Paul Whalen
36ab3daaf0 fedora-iot-base: Add workaround for issue with newer GRUB2
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-09-03 09:38:53 -04:00
1a898a7337 bootupd: add some contextual comments
Signed-off-by: Micah Abbott <miabbott@redhat.com>
2024-08-28 13:54:39 -04:00
Paul Whalen
023d15b50f IoT: Update rawhide for F-42
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-08-12 15:26:49 -04:00
Paul Whalen
985a450f7c F41: Add dnf5 to packages
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-07-15 13:39:36 -04:00
Paul Whalen
c1ecf382b8 F41: add bootc to packages
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-05-03 10:49:13 -04:00
Paul Whalen
1314f2a3f2 F41: Adjust repo to use mirrors
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-04-16 13:43:24 -04:00
Paul Whalen
8329945ded F41: Add base bootc container
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-04-15 11:47:11 -04:00
Paul Whalen
187a596a33 F41: enable fdo-client-linuxapp.service
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-04-12 08:48:50 -04:00
b908de5dc7 add passt userspace network for podmn5 requirements
It seems podman5 has changed the rootless container network
stack to passt so add this into our compose alongside the
exisitng slirp4netns while we find out how the migration
works so we can document it.

Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2024-03-19 14:13:26 +00:00
Paul Whalen
4ef41ffa05 f41: enable bootupd
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-02-21 15:46:40 -05:00
Paul Whalen
ede36f3a2c Drop podman-plugins package
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-02-14 16:53:30 -05:00
Paul Whalen
efa4770938 IoT: Update rawhide for F-41
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-02-13 13:06:27 -05:00
Paul Whalen
20661a3bb1 Add fedora-iot-config service to presets
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-02-12 10:31:25 -05:00
Paul Whalen
ff8dab07b1 Drop passwd, now provided by shadow-utils
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-02-08 09:56:34 -05:00
Paul Whalen
0fdf7b3424 Revert adding bootupd for now.
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-02-01 10:06:05 -05:00
Paul Whalen
6cb006c96f Add bootupd, minor clean up
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-01-30 15:19:39 -05:00
Paul Whalen
eef364fa51 Convert json to yaml
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-01-26 20:16:47 -05:00
Paul Whalen
6b0bb8dcf6 Add min-free-space-percent to fix compose failure
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2023-12-05 16:25:59 -05:00
Paul Whalen
d085d6d819 Undo rpm scripts enabling units, use only systemd presets
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2023-11-27 15:30:29 -05:00
efc8d5c336 Enable IMA signatures
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2023-11-08 13:13:27 +00:00
f1fdb7a4d9 Add criu-libs as criu doesn't pull it in
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2023-10-25 16:38:48 +01:00
Paul Whalen
d6a3afca84 IoT: Update rawhide for F-40
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2023-08-14 13:50:42 -04:00
1349eef26a Add a missing dep from copy/paste
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2023-07-26 20:27:35 +01:00
1d9600d8e3 Add kernel back, remove trailing space
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2023-07-26 17:28:10 +01:00
Paul Whalen
b994f0b5a4 Remove trailing comma in fedora-iot-base.json
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2023-07-26 11:29:44 -04:00
d9d9360619 IoT: Update the package set and sort alphanetically
Some minor updates to the package set, we add the FDO client
and drop bluez/libgpiod, if they're needed it's easy to layer
them, and then we sort it all alphabetically.

Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2023-07-26 14:55:54 +01:00
Paul Whalen
513aced27d Move boot-location to modules
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2023-07-10 20:26:26 -04:00
2af239a979 aarch64: add optee_client package
The optee_client TEE supplicant client and library enable interaction
with the OP-TEE trusted execution environment which runs in the Arm
TrustZone. The client is useful for certain devices.

Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2023-07-08 13:37:54 +01:00
2c3ce94904 firmware: Updates for changes in iwlwifi packaging
The Intel WiFi firmware was consolidated/adjusted to better
align with the kernel drivers.

Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2023-07-06 11:11:56 +01:00
Paul Whalen
7fb6ff3c32 Fix json formatting
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2023-04-21 14:05:50 -04:00
a3b9689aea Add split out wifi firmwares explicitly
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2023-04-20 14:51:16 +01:00
Paul Whalen
f0727787bc Add workaround for anaconda unified-core issue.
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2023-03-24 13:47:40 -04:00
Paul Whalen
91e80aecf0 IoT: Update rawhide for F-39
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2023-02-10 10:52:28 -05:00
91c9bdb99f Set tmp-is-dir = True
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2022-08-27 09:32:57 +01:00
f22dd5b085 IoT: Update rawhide for F-38
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2022-08-13 15:02:37 +01:00
8d4aec8722 Fix missing directory in treecompose-post.sh
Signed-off-by: Paul Whalen <pwhalen@redhat.com>
2022-05-30 13:22:03 -04:00
179518bbab fedora-iot-base: Update persistent journal workaround
Add a systemd configuration drop-in instead of modyfing the default
configuration file.

Imported from:
https://github.com/coreos/fedora-coreos-config/blob/testing-devel/overlay.d/05core/usr/lib/systemd/journald.conf.d/10-coreos-persistent.conf
2022-05-16 17:03:45 +02:00
603a779550 Remove fedora-iot-rawhide.tdl & fedora-iot.spec
- fedora-iot-rawhide.tdl has out of date content
- fedora-iot.spec: support for jigdo/rojig was dropped from rpm-ostree.
  See: https://github.com/coreos/rpm-ostree/pull/2841 &
  https://github.com/coreos/rpm-ostree/pull/2842
2022-05-16 17:03:45 +02:00
906ef69416 README: Minor update 2022-05-16 17:03:45 +02:00
1811f79132 Drop xfsprogs, it's not a default IoT filesystem
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2022-03-26 19:52:35 +00:00
f51a1e4263 drop rsync
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2022-03-26 19:47:21 +00:00
bd8545ee95 Add aardvark-dns for local container lookups
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2022-03-20 10:40:21 +00:00
0c7f01f93b Add netavark for new podman 4 network
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2022-03-18 08:12:18 +00:00
1c0a8aa02f De-dupe and cleanup architecture specific packages
With ARMv7 we can clean up a few exceptions that are identical across
the two aarch64/x86_64 architectures.

We also explicitly drop traditional BIOS piecs, we've never officially
supported it and including it stops enhancements around security so
explicitly definte it.

Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2022-02-09 17:01:07 +00:00
28a6a67776 Drop ARMv7 specific package set
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2022-02-09 13:47:29 +00:00
57af563759 Updates for F-36+
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2022-02-09 13:45:55 +00:00
1c4f3e7dcd add authselect for Fedora feature, drop rng-tools
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2022-02-09 11:11:20 +00:00
88df205fd3 IoT: Update rawhide for F-37
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2022-02-09 10:18:58 +00:00
97fc77899b no fwupd-plugin-uefi-capsule-data on armhfp
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2021-12-12 20:55:06 +00:00
80e2ffbc85 Drop uboot-tools, now unnessary
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2021-12-11 17:40:45 +00:00
bf190f3148 Add fwupd-plugin-uefi-capsule-data
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2021-12-11 16:55:04 +00:00
d0ac7aebe2 Update greenboot packages for upstream changes
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2021-11-10 14:35:42 +00:00
df56f712a9 Add Intel Wireless AX2xx firmware
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2021-10-10 13:30:11 +01:00
0dec23f77f drop audit from package set
audit for unknown and unexplained reasons keeps depending on the long
legacy Sys-V initscripts/chkconfig and we don't want to pull in the
legacy deps so drop audit.

Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2021-08-28 13:29:30 +01:00
97aeeeccb1 IoT: Update rawhide for F-36
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2021-08-20 08:54:29 +01:00
c269f11ae9 Drop fuse-overlayfs
It's no longer needed for rootless containers

Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2021-08-20 08:37:38 +01:00
df477fc624 add systemd-resolved
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2021-07-29 20:21:56 +01:00
a3112cdac0 treefile: remove redboot-* service units
The redboot services should not be started by the default target.

Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1959861
2021-06-11 13:45:54 +02:00
6490f41732 fwupd-efi is only on x86_64/aarch64
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2021-05-25 13:09:21 +01:00
32111f79bb Add fwupd-efi
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2021-05-08 13:05:38 +01:00
abc66898e9 Add fwupd-plugin-modem-manager
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2021-05-03 17:49:40 +01:00
0f8a7c76f8 Fedora repo metadata isn't signed by default
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2021-04-27 12:54:35 +01:00
fb64a374e8 initrd: include the watchdog module
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2021-04-21 13:00:08 +01:00
Alexander Wellbrock
ab7db2e1f0 treefile: fix unit file names
Observed from dmesg since F33 the unit symlinks created with this treefile have invalid names and
are ignored by systemd.

It seems that it worked nonetheless since the units are started anyway and most have correct
symlinks placed alongside the invalid ones. This should get rid of those warnings in dmesg.

Apparently rpm-ostree takes the specified strings here and places them as-is in the .wants/ dir.
2021-03-30 12:03:02 +00:00
c5e20d4103 IoT: Update rawhide for F-35
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2021-02-14 14:38:01 +00:00
635d2c5f12 Add zram-generator, zram-generator-defaults which replace zram
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2021-02-14 11:57:05 +00:00
c073a1e957 Add wireless-regdb to ensure wireless location can be set
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2020-12-31 10:57:36 +00:00
3bcf4fcde0 add openssl option explicitly to allow for certificate pieces
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2020-12-19 11:35:36 +00:00
b84ecbd52d Add podman-plugins as it's not pulled in now
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2020-10-08 18:33:33 +01:00
16bae90f46 fix typo in redboot service
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2020-09-30 12:31:08 +01:00
f8b9a68f92 Revert "Add tpm2-abrmd"
This reverts commit bcc9459ea2.

Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2020-09-17 14:28:22 +01:00
aefa3387f8 Add tpm2-abrmd
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2020-09-17 09:04:33 +01:00
a933bdf17b Add and enable parsec/dbus-parsec, minor tweaks
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2020-09-16 14:13:41 +01:00
c8bdd80ca4 Add new clevis tpm2 pin
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2020-08-24 13:16:12 +01:00
b8e040235f IoT: Update rawhide for F-34
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2020-08-17 09:28:41 +01:00
21 changed files with 525 additions and 197 deletions

View file

@ -1,3 +1,3 @@
# ostree
# Fedora IoT ostree/rpm-ostree treefiles
This is the repo for the ostree compose configs for Fedora IoT.

26
bootupd.yaml Normal file
View file

@ -0,0 +1,26 @@
# KEEP THIS IN SYNC WITH https://github.com/coreos/fedora-coreos-config/blob/testing-devel/manifests/bootupd.yaml
# See also: https://forge.fedoraproject.org/atomic-desktops/config/src/branch/main/bootupd.yaml
#
# Integration with https://github.com/coreos/bootupd
packages:
- bootupd
postprocess:
- |
#!/bin/bash
set -xeuo pipefail
# Transforms /usr/lib/ostree-boot into a bootupd-compatible update payload
/usr/bin/bootupctl backend generate-update-metadata
# Enable migration to a static GRUB config
install -dm0755 /usr/lib/systemd/system/bootloader-update.service.d
cat > /usr/lib/systemd/system/bootloader-update.service.d/migrate-static-grub-config.conf << 'EOF'
[Service]
ExecStart=/usr/bin/bootupctl migrate-static-grub-config
EOF
echo "enable bootloader-update.service" >> /usr/lib/systemd/system-preset/80-iot.preset
# Turn permissive mode on for bootupd until all SELinux issues are fixed
semanage permissive --noreload --add bootupd_t

57
ci/validate Executable file
View file

@ -0,0 +1,57 @@
#!/usr/bin/python3
# Validate basic syntax of shell script and yaml.
import os
import stat
import subprocess
import yaml
validated=0
def openat(dirfd, name, mode='r'):
def opener(path, flags):
return os.open(path, flags, dir_fd=dirfd)
return open(name, mode, opener=opener)
def validate_shell(rootfd, name):
subprocess.check_call(['bash', '-n', name], preexec_fn=lambda: os.fchdir(rootfd))
global validated
validated +=1
for root, dirs, files, rootfd in os.fwalk('.'):
# Skip folders that do not include content to validate
for d in ['.git', '.github', 'repo', 'cache', 'tmp', 'logs', 'fedora-comps']:
if d in dirs:
dirs.remove(d)
for f in ['.gitlab-ci.yml']:
if f in files:
files.remove(f)
for name in files:
if name.endswith(('.yaml', '.yml')):
print("Validating:", name)
with open(os.open(name, dir_fd=rootfd, flags=os.O_RDONLY)) as f:
yaml.safe_load(f)
result = subprocess.run(['grep', '-RniEv', '^( )*[a-z#/-]|^( )*\\[|^$|^#', name], encoding='UTF-8',
preexec_fn=lambda: os.fchdir(rootfd))
if result.returncode == 0:
raise Exception("Found likely invalid indentation in YAML file: {}".format(name))
validated +=1
continue
elif name.endswith('.sh'):
print("Validating:", name)
validate_shell(rootfd, name)
continue
stbuf = os.lstat(name, dir_fd=rootfd)
if not stat.S_ISREG(stbuf.st_mode):
continue
if not stbuf.st_mode & stat.S_IXUSR:
continue
mimetype = subprocess.check_output(['file', '-b', '--mime-type', name], encoding='UTF-8',
preexec_fn=lambda: os.fchdir(rootfd)).strip()
if mimetype == 'text/x-shellscript':
print("Validating:", name)
validate_shell(rootfd, name)
print(f"Validated {validated} files")

12
composefs.yaml Normal file
View file

@ -0,0 +1,12 @@
# Enable composefs
# See: https://fedoraproject.org/wiki/Changes/ComposefsAtomicDesktops
# https://fedoraproject.org/wiki/Changes/ComposefsAtomicCoreOSIoT
postprocess:
- |
#!/usr/bin/env bash
set -xeuo pipefail
cat >> /usr/lib/ostree/prepare-root.conf << 'EOF'
[composefs]
enabled = yes
EOF

View file

@ -10,9 +10,9 @@ os_pretty_name = Fedora IoT
tree_name = docker-host
tree_file = %(os_name)s-%(tree_name)s.json
arch = x86_64
release = f33
release = f46
ref = %(os_name)s/rawhide/%(arch)s/%(tree_name)s
yum_baseurl = http://dl.fedoraproject.org/pub/fedora/linux//development/rawhide/%(arch)s/os/
yum_baseurl = http://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/%(arch)s/os/
# lorax_additional_repos = http://127.0.0.1/fedora-iot/local-overrides
lorax_include_packages = fedora-productimg-iot
docker_os_name = fedora

View file

@ -1,12 +1,12 @@
[fedora-33]
name=Fedora 33 - $basearch
[fedora-46]
name=Fedora 46 - $basearch
failovermethod=priority
#baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/33/Everything/$basearch/os/
metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-33&arch=$basearch
#baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/46/Everything/$basearch/os/
metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-46&arch=$basearch
enabled=1
#metadata_expire=7d
repo_gpgcheck=1
repo_gpgcheck=0
type=rpm
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-33-$basearch
gpgkey=file:///usr/share/pki/rpm-gpg/RPM-GPG-KEY-fedora-46-$basearch
skip_if_unavailable=False

View file

@ -1,131 +0,0 @@
{
"ref": "fedora/rawhide/${basearch}/iot",
"ex-jigdo-spec": "fedora-iot.spec",
"repos": [],
"selinux": true,
"recommends": false,
"documentation": false,
"automatic_version_prefix": "33",
"mutate-os-release": "33",
"initramfs-args": ["--no-hostonly",
"--add", "ignition"],
"boot_location": "new",
"install-langs-comment": "Keep this in sync with treecompose-post.sh",
"install-langs": [
"pt_BR",
"fr",
"fr_FR",
"de",
"de_DE",
"it",
"it_IT",
"ru",
"ru_RU",
"es",
"es_ES",
"en_US",
"zh_CN",
"ja",
"ja_JP",
"ko",
"ko_KR",
"zh_TW",
"as",
"as_IN",
"bn",
"bn_IN",
"gu",
"gu_IN",
"hi",
"hi_IN",
"kn",
"kn_IN",
"ml",
"ml_IN",
"mr",
"mr_IN",
"or",
"or_IN",
"pa",
"pa_IN",
"ta",
"ta_IN",
"te",
"te_IN"
],
"postprocess-script": "treecompose-post.sh",
"etc-group-members": ["wheel", "docker"],
"ignore-removed-users": ["root"],
"ignore-removed-groups": ["root"],
"check-passwd": { "type": "file", "filename": "passwd" },
"check-groups": { "type": "file", "filename": "group" },
"packages": ["fedora-release-iot",
"glibc", "glibc-minimal-langpack", "nss-altfiles",
"sssd-client", "libsss_sudo", "shadow-utils",
"kernel",
"dracut-config-generic", "dracut-network",
"rpm-ostree", "polkit", "lvm2",
"cryptsetup", "pinentry",
"keyutils", "cracklib-dicts",
"e2fsprogs", "xfsprogs", "dosfstools",
"gnupg2",
"basesystem", "python3", "bash",
"xz", "gzip",
"coreutils", "which", "curl",
"firewalld", "iptables",
"NetworkManager", "NetworkManager-wifi", "NetworkManager-wwan",
"wpa_supplicant", "iwd", "tpm2-pkcs11",
"dnsmasq", "traceroute",
"hostname", "iproute", "iputils",
"openssh-clients", "openssh-server", "passwd",
"policycoreutils", "procps-ng", "rootfiles", "rpm",
"selinux-policy-targeted", "setup", "shadow-utils",
"sudo", "systemd", "util-linux", "vim-minimal",
"less", "tar",
"fwupd", "usbguard",
"greenboot", "greenboot-grub2", "greenboot-rpm-ostree-grub2", "greenboot-reboot", "greenboot-status",
"ignition", "zezere-ignition",
"rsync", "attr",
"ima-evm-utils",
"bash-completion",
"tmux", "screen",
"policycoreutils-python-utils",
"setools-console",
"audit", "rng-tools", "chrony",
"bluez", "bluez-libs", "bluez-mesh", "wpan-tools",
"kernel-tools", "libgpiod-utils",
"podman", "container-selinux", "skopeo", "criu",
"slirp4netns", "fuse-overlayfs",
"clevis", "clevis-dracut", "clevis-luks"],
"packages-aarch64": ["grub2-efi-aa64", "efibootmgr", "shim-aa64",
"uboot-tools", "uboot-images-armv8", "bcm283x-firmware",
"arm-image-installer", "iwl7260-firmware"],
"packages-armhfp": ["grub2-efi-arm", "efibootmgr",
"uboot-tools", "uboot-images-armv7", "bcm283x-firmware",
"arm-image-installer"],
"packages-x86_64": ["grub2", "grub2-efi-x64", "efibootmgr", "shim-x64", "microcode_ctl",
"iwl1000-firmware", "iwl100-firmware", "iwl105-firmware", "iwl135-firmware",
"iwl2000-firmware", "iwl2030-firmware", "iwl3160-firmware", "iwl5000-firmware",
"iwl5150-firmware", "iwl6000-firmware", "iwl6050-firmware", "iwl7260-firmware"],
"default_target": "multi-user.target",
"units": ["NetworkManager.service", "firewalld.service", "rngd.service", "sshd.service",
"zezere_ignition.timer", "zezere_ignition_banner.service",
"greenboot-grub2-set-counter", "greenboot-grub2-set-success", "greenboot-healthcheck", "greenboot-rpm-ostree-grub2-check-fallback",
"greenboot-status", "greenboot-task-runner", "redboot-auto-reboot", "edboot-task-runner"]
}

205
fedora-iot-base.yaml Normal file
View file

@ -0,0 +1,205 @@
include:
- bootupd.yaml
# Enable composefs
- composefs.yaml
# Read only sysroot
- sysroot-ro.yaml
ref: fedora/rawhide/${basearch}/iot
repos: []
selinux: true
tmp-is-dir: true
recommends: false
documentation: false
automatic_version_prefix: '46'
mutate-os-release: '46'
initramfs-args:
- "--no-hostonly"
- "--add"
- ignition watchdog
boot_location: modules
# Keep this in sync with treecompose-post.sh
install-langs:
- pt_BR
- fr
- fr_FR
- de
- de_DE
- it
- it_IT
- ru
- ru_RU
- es
- es_ES
- en_US
- zh_CN
- ja
- ja_JP
- ko
- ko_KR
- zh_TW
- as
- as_IN
- bn
- bn_IN
- gu
- gu_IN
- hi
- hi_IN
- kn
- kn_IN
- ml
- ml_IN
- mr
- mr_IN
- or
- or_IN
- pa
- pa_IN
- ta
- ta_IN
- te
- te_IN
postprocess-script: treecompose-post.sh
etc-group-members:
- wheel
- docker
ignore-removed-users:
- root
ignore-removed-groups:
- root
check-passwd:
type: file
filename: passwd
check-groups:
type: file
filename: group
packages:
# This list of packages should be kept in sync with
# the iot-commit definition is osbuild, as found here:
# https://github.com/osbuild/images/blob/0584c20b0c14a89e833b875252114ceff61805e8/pkg/distro/fedora/package_sets.go#L123
- fedora-release-iot
- fedora-iot-config
- aardvark-dns
- atheros-firmware
- attr
- authselect
- bash
- bash-completion
- bootc
- brcmfmac-firmware
- chrony
- clevis
- clevis-dracut
- clevis-luks
- clevis-pin-tpm2
- container-selinux
- containernetworking-plugins
- coreutils
- cracklib-dicts
- criu
- criu-libs
- cryptsetup
- curl
- dnf5
- dnf5-plugins
- dosfstools
- dracut-config-generic
- dracut-network
- e2fsprogs
- efibootmgr
- fdo-client
- fdo-owner-cli
- filesystem
- firewalld
- fwupd
- fwupd-efi
- fwupd-plugin-modem-manager
- fwupd-plugin-uefi-capsule-data
- glibc
- glibc-minimal-langpack
- gnupg2
- greenboot
- greenboot-default-health-checks
- gzip
- hostname
- ignition-edge
- ima-evm-utils
- iproute
- iputils
- iwd
- iwlwifi-mvm-firmware
- kernel
- keyutils
- kmscon
- less
- libsss_sudo
- linux-firmware
- lvm2
- netavark
- NetworkManager
- NetworkManager-wifi
- NetworkManager-wwan
- nss-altfiles
- openssl
- openssh-clients
- openssh-server
- passt
- passt-selinux
- pinentry
- podman
- policycoreutils
- polkit
- procps-ng
- realtek-firmware
- rootfiles
- rpm
- screen
- selinux-policy-targeted
- setools-console
- setup
- shadow-utils
- skopeo
- slirp4netns
- sssd-client
- sudo
- systemd
- systemd-pam
- systemd-resolved
- tar
- tmux
- tpm2-pkcs11
- traceroute
- usbguard
- util-linux
- vim-minimal
- wpa_supplicant
- wireless-regdb
- xfsprogs
- xz
- zram-generator
- zram-generator-defaults
packages-aarch64:
- arm-image-installer
- bcm283x-firmware
- grub2-efi-aa64
- optee_client
- shim-aa64
- uboot-images-armv8
packages-x86_64:
- grub2-efi-x64
- microcode_ctl
- shim-x64
default_target: multi-user.target
units:
- NetworkManager.service
- fdo-client-linuxapp.service
- fedora-iot-config-remote-fix.service
- firewalld.service
- sshd.service
- systemd-firstboot.service
- greenboot-grub2-set-counter.service
- greenboot-grub2-set-success.service
- greenboot-healthcheck.service
- greenboot-rpm-ostree-grub2-check-fallback.service
- greenboot-status.service
- greenboot-task-runner.service

15
fedora-iot-bootc.yaml Normal file
View file

@ -0,0 +1,15 @@
releasever: rawhide
variables:
distro: "fedora-iot"
repos:
- fedora-rawhide
metadata:
name: fedora-iot-bootc-base
summary: Fedora IoT bootc base image
include:
- fedora-bootc-base/manifest.yaml
- fedora-bootc-base/kernel.yaml

View file

@ -1,13 +0,0 @@
<template>
<name>rawhide</name>
<os>
<name>Fedora</name>
<version>20</version>
<arch>x86_64</arch>
<install type='url'>
<url>http://dl.fedoraproject.org/pub/fedora/linux/development/22/x86_64/os/</url>
</install>
<rootpw>ewwwwwww</rootpw>
</os>
</template>

View file

@ -1,5 +0,0 @@
"ref": "fedora/devel/${basearch}/updates/iot",
"ex-jigdo-spec": "fedora-iot.spec",
"include": "fedora-iot-base.json"
}

View file

@ -0,0 +1,2 @@
include: fedora-iot-base.yaml
ref: fedora/rawhide/${basearch}/updates/iot

View file

@ -1,5 +0,0 @@
{
"ref": "fedora/rawhide/${basearch}/testing/iot",
"ex-jigdo-spec": "fedora-iot.spec",
"include": "fedora-iot-base.json"
}

View file

@ -0,0 +1,2 @@
include: fedora-iot-base.yaml
ref: fedora/rawhide/${basearch}/testing/iot

View file

@ -1,6 +0,0 @@
{
"ref": "fedora/rawhide/${basearch}/iot",
"ex-jigdo-spec": "fedora-iot.spec",
"repos": ["fedora-33"],
"include": "fedora-iot-base.json"
}

View file

@ -1,22 +0,0 @@
# Suppress most build root processing since we are just carrying binary data
%global __os_install_post /usr/lib/rpm/brp-compress %{nil}
Name: fedora-iot
Version: %{ostree_version}
Release: 1%{?dist}
Summary: Image (rpm-ostree jigdo) for Fedora IoT
License: MIT
#@@@rpmostree_jigdo_meta@@@
%description
%{summary}
%prep
%build
%install
mkdir -p %{buildroot}%{_prefix}/lib/ostree-jigdo/%{name}
for x in *; do mv ${x} %{buildroot}%{_prefix}/lib/ostree-jigdo/%{name}; done
%files
%{_prefix}/lib/ostree-jigdo/%{name}

5
fedora-iot.yaml Normal file
View file

@ -0,0 +1,5 @@
include: fedora-iot-base.yaml
ref: fedora/rawhide/${basearch}/iot
repos:
- fedora-46

6
fedora-rawhide.repo Normal file
View file

@ -0,0 +1,6 @@
[fedora-rawhide]
name=Fedora rawhide $basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=rawhide&arch=$basearch
enabled=1
gpgcheck=1
metadata_expire=1d

156
justfile Normal file
View file

@ -0,0 +1,156 @@
# This is a justfile. See https://github.com/casey/just
# This is only used for local development. The builds made on the Fedora
# infrastructure are run via Pungi in a Koji runroot.
# Set a default for some recipes
default_variant := "fedora-iot"
default_arch := "default"
# Current default in Pungi
force_nocache := "true"
# Just doesn't have a native dict type, but quoted bash dictionary works fine
pretty_names := '(
[fedora-iot]="IoT"
)'
# Default is to only validate the manifests
all: validate
# Basic validation to make sure the manifests are not completely broken
validate:
./ci/validate
# Output the processed manifest for a given variant (defaults to Silverblue)
manifest variant=default_variant:
#!/bin/bash
set -euo pipefail
rpm-ostree compose tree --print-only --repo=repo {{variant}}.yaml
# Perform dependency resolution for a given variant (defaults to Silverblue)
compose-dry-run variant=default_variant:
#!/bin/bash
set -euxo pipefail
mkdir -p repo cache logs
if [[ ! -f "repo/config" ]]; then
pushd repo > /dev/null || exit 1
ostree init --repo . --mode=bare-user
popd > /dev/null || exit 1
fi
rpm-ostree compose tree --unified-core --repo=repo --dry-run {{variant}}.yaml
# Alias/shortcut for compose-image command
compose variant=default_variant: (compose-image variant)
# Compose a variant using the legacy non container path (defaults to Silverblue)
compose-legacy variant=default_variant:
#!/bin/bash
set -euxo pipefail
declare -A pretty_names={{pretty_names}}
variant={{variant}}
variant_pretty=${pretty_names[$variant]-}
if [[ -z $variant_pretty ]]; then
echo "Unknown variant"
exit 1
fi
./ci/validate > /dev/null || (echo "Failed manifest validation" && exit 1)
mkdir -p repo cache logs
if [[ ! -f "repo/config" ]]; then
pushd repo > /dev/null || exit 1
ostree init --repo . --mode=bare-user
popd > /dev/null || exit 1
fi
# Set option to reduce fsync for transient builds
ostree --repo=repo config set 'core.fsync' 'false'
buildid="$(date '+%Y%m%d.0')"
timestamp="$(date --iso-8601=sec)"
echo "${buildid}" > .buildid
version="$(rpm-ostree compose tree --print-only --repo=repo ${variant}.yaml | jq -r '."mutate-os-release"')"
echo "Composing ${variant_pretty} ${version}.${buildid} ..."
ARGS="--repo=repo --cachedir=cache"
ARGS+=" --unified-core"
if [[ {{force_nocache}} == "true" ]]; then
ARGS+=" --force-nocache"
fi
CMD="rpm-ostree"
if [[ ${EUID} -ne 0 ]]; then
CMD="sudo rpm-ostree"
fi
${CMD} compose tree ${ARGS} \
--add-metadata-string="version=${variant_pretty} ${version}.${buildid}" \
"${variant}.yaml" \
|& tee "logs/${variant}_${version}_${buildid}.${timestamp}.log"
if [[ ${EUID} -ne 0 ]]; then
sudo chown --recursive "$(id --user --name):$(id --group --name)" repo cache
fi
ostree summary --repo=repo --update
# Compose an Ostree Native Container OCI image
compose-image variant=default_variant:
#!/bin/bash
set -euxo pipefail
declare -A pretty_names={{pretty_names}}
variant={{variant}}
variant_pretty=${pretty_names[$variant]-}
if [[ -z $variant_pretty ]]; then
echo "Unknown variant"
exit 1
fi
./ci/validate > /dev/null || (echo "Failed manifest validation" && exit 1)
mkdir -p repo cache
if [[ ! -f "repo/config" ]]; then
pushd repo > /dev/null || exit 1
ostree init --repo . --mode=bare-user
popd > /dev/null || exit 1
fi
# Set option to reduce fsync for transient builds
ostree --repo=repo config set 'core.fsync' 'false'
buildid="$(date '+%Y%m%d.0')"
timestamp="$(date --iso-8601=sec)"
echo "${buildid}" > .buildid
version="$(rpm-ostree compose tree --print-only --repo=repo ${variant}.yaml | jq -r '."mutate-os-release"')"
echo "Composing ${variant_pretty} ${version}.${buildid} ..."
ARGS="--cachedir=cache --initialize"
if [[ {{force_nocache}} == "true" ]]; then
ARGS+=" --force-nocache"
fi
# To debug with gdb, use: gdb --args ...
CMD="rpm-ostree"
if [[ ${EUID} -ne 0 ]]; then
CMD="sudo rpm-ostree"
fi
${CMD} compose image ${ARGS} \
--label="quay.expires-after=4w" \
"${variant}.yaml" \
"${variant}.ociarchive"
# Clean up everything
clean-all:
just clean-repo
just clean-cache
# Only clean the ostree repo
clean-repo:
rm -rf ./repo
# Only clean the package and repo caches
clean-cache:
rm -rf ./cache

15
sysroot-ro.yaml Normal file
View file

@ -0,0 +1,15 @@
# Set up default root config to mount sysroot as read only
# https://fedoraproject.org/wiki/Changes/Silverblue_Kinoite_readonly_sysroot
# See: https://gitlab.com/fedora/bootc/base-images/-/blob/main/tier-0/ostree.yaml
# See: https://github.com/fedora-iot/iot-distro/issues/81
postprocess:
- |
#!/usr/bin/env bash
set -xeuo pipefail
install -dm 0755 -o 0 -g 0 /usr/lib/ostree
cat >> /usr/lib/ostree/prepare-root.conf << 'EOF'
[sysroot]
readonly = true
EOF

View file

@ -2,12 +2,9 @@
set -xeuo pipefail
# Work around https://bugzilla.redhat.com/show_bug.cgi?id=1265295
# Also note the create-new-then-rename dance for rofiles-fuse compat
if ! grep -q '^Storage=persistent' /etc/systemd/journald.conf; then
(cat /etc/systemd/journald.conf && echo 'Storage=persistent') > /etc/systemd.journald.conf.new
mv /etc/systemd.journald.conf{.new,}
fi
# From https://github.com/coreos/fedora-coreos-config/blob/testing-devel/overlay.d/05core/usr/lib/systemd/journald.conf.d/10-coreos-persistent.conf
install -dm0755 /usr/lib/systemd/journald.conf.d/
echo -e "[Journal]\nStorage=persistent" > /usr/lib/systemd/journald.conf.d/10-persistent.conf
# See: https://src.fedoraproject.org/rpms/glibc/pull-request/4
# Basically that program handles deleting old shared library directories
@ -18,3 +15,15 @@ for x in /usr/sbin/glibc_post_upgrade.*; do
ln -srf /usr/bin/true ${x}
fi
done
# Remove loader directory causing issues in Anaconda in unified core mode
# Will be obsolete once we start using bootupd
# See - https://forge.fedoraproject.org/atomic-desktops/config/pulls/344
rm -rf /usr/lib/ostree-boot/loader
# Undo RPM scripts enabling units; we want the presets to be canonical
# https://github.com/projectatomic/rpm-ostree/issues/1803
rm -rf /etc/systemd/system/*
systemctl preset-all
rm -rf /etc/systemd/user/*
systemctl --user --global preset-all