Compare commits
9 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a6f6d3e9d7 | ||
|
|
06b41a222e | ||
|
|
71a1f8be5f | ||
|
|
52884d20e4 | ||
|
|
750a452d9d | ||
| 7fad539f14 | |||
|
|
0aa593407d | ||
| ad5623c52a | |||
|
|
16c554471c |
26 changed files with 443 additions and 276 deletions
17
bootupd.yaml
17
bootupd.yaml
|
|
@ -1,7 +1,7 @@
|
||||||
# KEEP THIS IN SYNC WITH https://github.com/coreos/fedora-coreos-config/blob/testing-devel/manifests/bootupd.yaml
|
# 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
|
# See also: https://pagure.io/workstation-ostree-config/blob/main/f/bootupd.yaml
|
||||||
#
|
#
|
||||||
# Integration with https://github.com/coreos/bootupd
|
#Integration with https://github.com/coreos/bootupd
|
||||||
packages:
|
packages:
|
||||||
- bootupd
|
- bootupd
|
||||||
|
|
||||||
|
|
@ -9,18 +9,5 @@ postprocess:
|
||||||
- |
|
- |
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -xeuo pipefail
|
set -xeuo pipefail
|
||||||
|
|
||||||
# Transforms /usr/lib/ostree-boot into a bootupd-compatible update payload
|
# Transforms /usr/lib/ostree-boot into a bootupd-compatible update payload
|
||||||
/usr/bin/bootupctl backend generate-update-metadata
|
/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
57
ci/validate
|
|
@ -1,57 +0,0 @@
|
||||||
#!/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")
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
# Enable composefs
|
# Force disable composefs
|
||||||
# See: https://fedoraproject.org/wiki/Changes/ComposefsAtomicDesktops
|
# See: https://github.com/ostreedev/ostree/pull/3353
|
||||||
# https://fedoraproject.org/wiki/Changes/ComposefsAtomicCoreOSIoT
|
|
||||||
postprocess:
|
postprocess:
|
||||||
- |
|
- |
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
@ -8,5 +7,5 @@ postprocess:
|
||||||
|
|
||||||
cat >> /usr/lib/ostree/prepare-root.conf << 'EOF'
|
cat >> /usr/lib/ostree/prepare-root.conf << 'EOF'
|
||||||
[composefs]
|
[composefs]
|
||||||
enabled = yes
|
enabled = no
|
||||||
EOF
|
EOF
|
||||||
|
|
|
||||||
|
|
@ -10,9 +10,9 @@ os_pretty_name = Fedora IoT
|
||||||
tree_name = docker-host
|
tree_name = docker-host
|
||||||
tree_file = %(os_name)s-%(tree_name)s.json
|
tree_file = %(os_name)s-%(tree_name)s.json
|
||||||
arch = x86_64
|
arch = x86_64
|
||||||
release = f46
|
release = f41
|
||||||
ref = %(os_name)s/rawhide/%(arch)s/%(tree_name)s
|
ref = %(os_name)s/stable/%(arch)s/%(tree_name)s
|
||||||
yum_baseurl = http://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/%(arch)s/os/
|
yum_baseurl = http://dl.fedoraproject.org/pub/fedora/linux/releases/41/Everything/%(arch)s/os/
|
||||||
# lorax_additional_repos = http://127.0.0.1/fedora-iot/local-overrides
|
# lorax_additional_repos = http://127.0.0.1/fedora-iot/local-overrides
|
||||||
lorax_include_packages = fedora-productimg-iot
|
lorax_include_packages = fedora-productimg-iot
|
||||||
docker_os_name = fedora
|
docker_os_name = fedora
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
[fedora-46]
|
[fedora-41]
|
||||||
name=Fedora 46 - $basearch
|
name=Fedora 41 - $basearch
|
||||||
failovermethod=priority
|
failovermethod=priority
|
||||||
#baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/46/Everything/$basearch/os/
|
#baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/41/Everything/$basearch/os/
|
||||||
metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-46&arch=$basearch
|
metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-41&arch=$basearch
|
||||||
enabled=1
|
enabled=1
|
||||||
#metadata_expire=7d
|
#metadata_expire=7d
|
||||||
repo_gpgcheck=0
|
repo_gpgcheck=0
|
||||||
type=rpm
|
type=rpm
|
||||||
gpgcheck=1
|
gpgcheck=1
|
||||||
gpgkey=file:///usr/share/pki/rpm-gpg/RPM-GPG-KEY-fedora-46-$basearch
|
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-41-$basearch
|
||||||
skip_if_unavailable=False
|
skip_if_unavailable=False
|
||||||
29
fedora-bootc-base/basic-fixes.yaml
Normal file
29
fedora-bootc-base/basic-fixes.yaml
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
# Fix general bugs
|
||||||
|
|
||||||
|
postprocess:
|
||||||
|
# See also https://github.com/openshift/os/blob/f6cde963ee140c02364674db378b2bc4ac42675b/common.yaml#L156
|
||||||
|
# This one is undoes the effect of
|
||||||
|
# # RHEL-only: Disable /tmp on tmpfs.
|
||||||
|
#Wants=tmp.mount
|
||||||
|
# in /usr/lib/systemd/system/basic.target
|
||||||
|
# We absolutely must have tmpfs-on-tmp for multiple reasons,
|
||||||
|
# but the biggest is that when we have composefs for / it's read-only,
|
||||||
|
# and for units with ProtectSystem=full systemd clones / but needs
|
||||||
|
# a writable place.
|
||||||
|
- |
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -xeuo pipefail
|
||||||
|
mkdir -p /usr/lib/systemd/system/local-fs.target.wants
|
||||||
|
if test '!' -f /usr/lib/systemd/system/local-fs.target.wants/tmp.mount; then
|
||||||
|
ln -sf ../tmp.mount /usr/lib/systemd/system/local-fs.target.wants
|
||||||
|
fi
|
||||||
|
|
||||||
|
# See https://github.com/containers/bootc/issues/358
|
||||||
|
# basically systemd-tmpfiles doesn't follow symlinks; ordinarily our
|
||||||
|
# tmpfiles.d unit for `/var/roothome` is fine, but this actually doesn't
|
||||||
|
# work if we want to use tmpfiles.d to write to `/root/.ssh` because
|
||||||
|
# tmpfiles gives up on that before getting to `/var/roothome`.
|
||||||
|
sed -ie 's, /root, /var/roothome,' /usr/lib/tmpfiles.d/provision.conf
|
||||||
|
# Because /var/roothome is also defined in rpm-ostree-0-integration.conf
|
||||||
|
# we need to delete /var/roothome
|
||||||
|
sed -ie '/^d- \/var\/roothome /d' /usr/lib/tmpfiles.d/provision.conf
|
||||||
0
fedora-bootc-base/bootc-config.yaml
Normal file
0
fedora-bootc-base/bootc-config.yaml
Normal file
12
fedora-bootc-base/bootc.yaml
Normal file
12
fedora-bootc-base/bootc.yaml
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
# The bootc components.
|
||||||
|
packages:
|
||||||
|
- systemd
|
||||||
|
- bootc
|
||||||
|
# Required by bootc install today, though we'll likely switch bootc to use a Rust crate instead of sgdisk
|
||||||
|
- gdisk xfsprogs e2fsprogs dosfstools
|
||||||
|
|
||||||
|
exclude-packages:
|
||||||
|
# Exclude kernel-debug-core to make sure that it doesn't somehow get
|
||||||
|
# chosen as the package to satisfy the `kernel-core` dependency from
|
||||||
|
# the kernel package.
|
||||||
|
- kernel-debug-core
|
||||||
31
fedora-bootc-base/bootupd.yaml
Normal file
31
fedora-bootc-base/bootupd.yaml
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
# Integration with https://github.com/coreos/bootupd and bootloader logic
|
||||||
|
# xref https://github.com/coreos/fedora-coreos-tracker/issues/510
|
||||||
|
packages:
|
||||||
|
- bootupd
|
||||||
|
|
||||||
|
# bootloader
|
||||||
|
packages-aarch64:
|
||||||
|
- grub2-efi-aa64 efibootmgr shim
|
||||||
|
packages-ppc64le:
|
||||||
|
- grub2 ostree-grub2
|
||||||
|
packages-s390x:
|
||||||
|
# On Fedora, this is provided by s390utils-core. on RHEL, this is for now
|
||||||
|
# provided by s390utils-base, but soon will be -core too.
|
||||||
|
- /usr/sbin/zipl
|
||||||
|
packages-x86_64:
|
||||||
|
- grub2-efi-x64 efibootmgr shim
|
||||||
|
- microcode_ctl
|
||||||
|
|
||||||
|
conditional-include:
|
||||||
|
- if: basearch != "s390x"
|
||||||
|
# And remove some cruft from grub2
|
||||||
|
include: grub2-removals.yaml
|
||||||
|
|
||||||
|
postprocess:
|
||||||
|
- |
|
||||||
|
#!/bin/bash
|
||||||
|
set -xeuo pipefail
|
||||||
|
# Until we have https://github.com/coreos/rpm-ostree/pull/2275
|
||||||
|
mkdir -p /run
|
||||||
|
# Transforms /usr/lib/ostree-boot into a bootupd-compatible update payload
|
||||||
|
/usr/bin/bootupctl backend generate-update-metadata
|
||||||
46
fedora-bootc-base/group
Normal file
46
fedora-bootc-base/group
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
root:x:0:
|
||||||
|
bin:x:1:
|
||||||
|
daemon:x:2:
|
||||||
|
sys:x:3:
|
||||||
|
adm:x:4:
|
||||||
|
tty:x:5:
|
||||||
|
disk:x:6:
|
||||||
|
lp:x:7:
|
||||||
|
mem:x:8:
|
||||||
|
kmem:x:9:
|
||||||
|
wheel:x:10:
|
||||||
|
cdrom:x:11:
|
||||||
|
mail:x:12:
|
||||||
|
man:x:15:
|
||||||
|
sudo:x:16:
|
||||||
|
dialout:x:18:
|
||||||
|
floppy:x:19:
|
||||||
|
games:x:20:
|
||||||
|
tape:x:33:
|
||||||
|
video:x:39:
|
||||||
|
ftp:x:50:
|
||||||
|
lock:x:54:
|
||||||
|
audio:x:63:
|
||||||
|
nobody:x:99:
|
||||||
|
users:x:100:
|
||||||
|
ssh_keys:x:999:
|
||||||
|
systemd-journal:x:190:
|
||||||
|
polkitd:x:998:
|
||||||
|
etcd:x:997:
|
||||||
|
dip:x:40:
|
||||||
|
cgred:x:996:
|
||||||
|
avahi-autoipd:x:170:
|
||||||
|
sssd:x:993:
|
||||||
|
dockerroot:x:986:
|
||||||
|
rpcuser:x:29:
|
||||||
|
nfsnobody:x:65534:
|
||||||
|
kube:x:994:
|
||||||
|
chrony:x:992:
|
||||||
|
tcpdump:x:72:
|
||||||
|
ceph:x:167:
|
||||||
|
input:x:104:
|
||||||
|
systemd-timesync:x:991:
|
||||||
|
systemd-network:x:990:
|
||||||
|
systemd-resolve:x:989:
|
||||||
|
systemd-bus-proxy:x:988:
|
||||||
|
cockpit-ws:x:987:
|
||||||
8
fedora-bootc-base/grub2-removals.yaml
Normal file
8
fedora-bootc-base/grub2-removals.yaml
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
remove-from-packages:
|
||||||
|
# The grub bits are mainly designed for desktops, and IMO haven't seen
|
||||||
|
# enough testing in concert with ostree. At some point we'll flesh out
|
||||||
|
# the full plan in https://github.com/coreos/fedora-coreos-tracker/issues/47
|
||||||
|
- [grub2-tools, /etc/grub.d/08_fallback_counting,
|
||||||
|
/etc/grub.d/10_reset_boot_success,
|
||||||
|
/etc/grub.d/12_menu_auto_hide,
|
||||||
|
/usr/lib/systemd/.*]
|
||||||
18
fedora-bootc-base/initramfs.yaml
Normal file
18
fedora-bootc-base/initramfs.yaml
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Configuration for the initramfs
|
||||||
|
postprocess:
|
||||||
|
- |
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
mkdir -p /usr/lib/dracut/dracut.conf.d
|
||||||
|
cat > /usr/lib/dracut/dracut.conf.d/20-bootc-base.conf << 'EOF'
|
||||||
|
# We want a generic image; hostonly makes no sense as part of a server side build
|
||||||
|
hostonly=no
|
||||||
|
add_dracutmodules+=" kernel-modules dracut-systemd systemd-initrd base ostree "
|
||||||
|
EOF
|
||||||
|
cat > /usr/lib/dracut/dracut.conf.d/22-bootc-generic.conf << 'EOF'
|
||||||
|
# Extra modules that we want by default that are known to exist in the kernel
|
||||||
|
add_dracutmodules+=" virtiofs "
|
||||||
|
EOF
|
||||||
|
cat > /usr/lib/dracut/dracut.conf.d/49-bootc-tpm2-tss.conf << 'EOF'
|
||||||
|
# We want this for systemd-cryptsetup tpm2 locking
|
||||||
|
add_dracutmodules+=" systemd-cryptsetup tpm2-tss "
|
||||||
|
EOF
|
||||||
113
fedora-bootc-base/iot.yaml
Normal file
113
fedora-bootc-base/iot.yaml
Normal file
|
|
@ -0,0 +1,113 @@
|
||||||
|
# Fedora IoT specific packages
|
||||||
|
packages:
|
||||||
|
- fedora-release-iot
|
||||||
|
- aardvark-dns
|
||||||
|
- atheros-firmware
|
||||||
|
- attr
|
||||||
|
- authselect
|
||||||
|
- basesystem
|
||||||
|
- 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
|
||||||
|
- dbus-parsec
|
||||||
|
- dnf5-plugins
|
||||||
|
- dosfstools
|
||||||
|
- dracut-config-generic
|
||||||
|
- dracut-network
|
||||||
|
- e2fsprogs
|
||||||
|
- efibootmgr
|
||||||
|
- fdo-client
|
||||||
|
- 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
|
||||||
|
- ima-evm-utils
|
||||||
|
- iproute
|
||||||
|
- iputils
|
||||||
|
- iwd
|
||||||
|
- iwlwifi-mvm-firmware
|
||||||
|
- kernel-tools
|
||||||
|
- keyutils
|
||||||
|
- less
|
||||||
|
- libsss_sudo
|
||||||
|
- linux-firmware
|
||||||
|
- lvm2
|
||||||
|
- netavark
|
||||||
|
- NetworkManager
|
||||||
|
- NetworkManager-wifi
|
||||||
|
- NetworkManager-wwan
|
||||||
|
- nss-altfiles
|
||||||
|
- openssl
|
||||||
|
- openssh-clients
|
||||||
|
- openssh-server
|
||||||
|
- passt
|
||||||
|
- passt-selinux
|
||||||
|
- parsec
|
||||||
|
- pinentry
|
||||||
|
- podman
|
||||||
|
- policycoreutils
|
||||||
|
- policycoreutils-python-utils
|
||||||
|
- polkit
|
||||||
|
- procps-ng
|
||||||
|
- realtek-firmware
|
||||||
|
- rootfiles
|
||||||
|
- rpm
|
||||||
|
- screen
|
||||||
|
- selinux-policy-targeted
|
||||||
|
- setools-console
|
||||||
|
- setup
|
||||||
|
- shadow-utils
|
||||||
|
- skopeo
|
||||||
|
- slirp4netns
|
||||||
|
- sssd-client
|
||||||
|
- sudo
|
||||||
|
- systemd
|
||||||
|
- systemd-resolved
|
||||||
|
- tar
|
||||||
|
- tmux
|
||||||
|
- tpm2-pkcs11
|
||||||
|
- traceroute
|
||||||
|
- usbguard
|
||||||
|
- util-linux
|
||||||
|
- vim-minimal
|
||||||
|
- wpa_supplicant
|
||||||
|
- wireless-regdb
|
||||||
|
- xfsprogs
|
||||||
|
- xz
|
||||||
|
- zezere-ignition
|
||||||
|
- 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
|
||||||
6
fedora-bootc-base/kernel.yaml
Normal file
6
fedora-bootc-base/kernel.yaml
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
# Enable the Linux kernel; see also kernel-rt.
|
||||||
|
packages:
|
||||||
|
- kernel
|
||||||
|
|
||||||
|
exclude-packages:
|
||||||
|
- kernel-debug
|
||||||
68
fedora-bootc-base/manifest.yaml
Normal file
68
fedora-bootc-base/manifest.yaml
Normal file
|
|
@ -0,0 +1,68 @@
|
||||||
|
|
||||||
|
# Modern defaults we want
|
||||||
|
boot-location: modules
|
||||||
|
tmp-is-dir: true
|
||||||
|
# https://github.com/CentOS/centos-bootc/issues/167
|
||||||
|
machineid-compat: true
|
||||||
|
# Be minimal
|
||||||
|
recommends: false
|
||||||
|
|
||||||
|
ignore-removed-users:
|
||||||
|
- root
|
||||||
|
ignore-removed-groups:
|
||||||
|
- root
|
||||||
|
etc-group-members:
|
||||||
|
- wheel
|
||||||
|
- sudo
|
||||||
|
- systemd-journal
|
||||||
|
- adm
|
||||||
|
|
||||||
|
# Default to `bash` in our container, the same as other containers we ship.
|
||||||
|
container-cmd:
|
||||||
|
- /sbin/init
|
||||||
|
|
||||||
|
# Note that the default for c9s+ is sqlite; we can't rely on rpm being
|
||||||
|
# in the target (it isn't in tier-0!) so turn this to host here. This
|
||||||
|
# does break the "hermetic build" aspect a bit. Maybe eventually
|
||||||
|
# what we should do is special case this and actually install RPM temporarily
|
||||||
|
# and then remove it...
|
||||||
|
rpmdb: host
|
||||||
|
|
||||||
|
check-passwd:
|
||||||
|
type: "file"
|
||||||
|
filename: "passwd"
|
||||||
|
check-groups:
|
||||||
|
type: "file"
|
||||||
|
filename: "group"
|
||||||
|
|
||||||
|
automatic-version-prefix: "${releasever}.<date:%Y%m%d>"
|
||||||
|
mutate-os-release: "${releasever}"
|
||||||
|
|
||||||
|
remove-from-packages:
|
||||||
|
# Generally we expect other tools to do this (e.g. Ignition or cloud-init)
|
||||||
|
- [systemd, /usr/lib/systemd/system/sysinit.target.wants/systemd-firstboot.service]
|
||||||
|
# We don't want auto-generated mount units. See also
|
||||||
|
# https://github.com/systemd/systemd/issues/13099
|
||||||
|
- [systemd-udev, /usr/lib/systemd/system-generators/systemd-gpt-auto-generator]
|
||||||
|
# Drop some buggy sysusers fragments which do not match static IDs allocation:
|
||||||
|
# https://bugzilla.redhat.com/show_bug.cgi?id=2105177
|
||||||
|
- [dbus-common, /usr/lib/sysusers.d/dbus.conf]
|
||||||
|
|
||||||
|
include:
|
||||||
|
- bootc.yaml
|
||||||
|
- bootupd.yaml
|
||||||
|
- ostree.yaml
|
||||||
|
- initramfs.yaml
|
||||||
|
- basic-fixes.yaml
|
||||||
|
- iot.yaml
|
||||||
|
|
||||||
|
packages:
|
||||||
|
# needed for building derived container images
|
||||||
|
- dnf5
|
||||||
|
# Even in tier-0, we have this. If you don't want SELinux today, you'll need
|
||||||
|
# to build a custom image.
|
||||||
|
- selinux-policy-targeted
|
||||||
|
# And we want container-selinux because trying to layer it on later currently causes issues.
|
||||||
|
- container-selinux
|
||||||
|
# Needed for tpm2 bound luks
|
||||||
|
- tpm2-tools
|
||||||
17
fedora-bootc-base/ostree.yaml
Normal file
17
fedora-bootc-base/ostree.yaml
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
packages:
|
||||||
|
- ostree nss-altfiles
|
||||||
|
|
||||||
|
# We want content lifecycled with the image
|
||||||
|
opt-usrlocal: "root"
|
||||||
|
|
||||||
|
postprocess:
|
||||||
|
# Set up default root config
|
||||||
|
- |
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
mkdir -p /usr/lib/ostree
|
||||||
|
cat > /usr/lib/ostree/prepare-root.conf << EOF
|
||||||
|
[composefs]
|
||||||
|
enabled = yes
|
||||||
|
[sysroot]
|
||||||
|
readonly = true
|
||||||
|
EOF
|
||||||
32
fedora-bootc-base/passwd
Normal file
32
fedora-bootc-base/passwd
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
adm:x:3:4:adm:/var/adm:/usr/sbin/nologin
|
||||||
|
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/usr/sbin/nologin
|
||||||
|
bin:x:1:1:bin:/bin:/usr/sbin/nologin
|
||||||
|
ceph:x:167:167:Ceph daemons:/var/lib/ceph:/usr/sbin/nologin
|
||||||
|
chrony:x:994:992::/var/lib/chrony:/usr/sbin/nologin
|
||||||
|
cockpit-ws:x:988:987:User for cockpit-ws:/:/usr/sbin/nologin
|
||||||
|
daemon:x:2:2:daemon:/sbin:/usr/sbin/nologin
|
||||||
|
dbus:x:81:81:System Message Bus:/:/usr/sbin/nologin
|
||||||
|
dockerroot:x:997:986:Docker User:/var/lib/docker:/usr/sbin/nologin
|
||||||
|
etcd:x:998:997:etcd user:/var/lib/etcd:/usr/sbin/nologin
|
||||||
|
ftp:x:14:50:FTP User:/var/ftp:/usr/sbin/nologin
|
||||||
|
games:x:12:100:games:/usr/games:/usr/sbin/nologin
|
||||||
|
halt:x:7:0:halt:/sbin:/sbin/halt
|
||||||
|
kube:x:996:994:Kubernetes user:/:/usr/sbin/nologin
|
||||||
|
lp:x:4:7:lp:/var/spool/lpd:/usr/sbin/nologin
|
||||||
|
mail:x:8:12:mail:/var/spool/mail:/usr/sbin/nologin
|
||||||
|
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/usr/sbin/nologin
|
||||||
|
nobody:x:99:99:Kernel Overflow User:/:/usr/sbin/nologin
|
||||||
|
operator:x:11:0:operator:/root:/usr/sbin/nologin
|
||||||
|
polkitd:x:999:998:User for polkitd:/:/usr/sbin/nologin
|
||||||
|
root:x:0:0:Super User:/root:/bin/bash
|
||||||
|
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/usr/sbin/nologin
|
||||||
|
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/usr/sbin/nologin
|
||||||
|
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
|
||||||
|
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/usr/sbin/nologin
|
||||||
|
sssd:x:995:993:User for sssd:/:/usr/sbin/nologin
|
||||||
|
sync:x:5:0:sync:/sbin:/bin/sync
|
||||||
|
systemd-bus-proxy:x:989:988:systemd Bus Proxy:/:/usr/sbin/nologin
|
||||||
|
systemd-network:x:991:990:systemd Network Management:/:/usr/sbin/nologin
|
||||||
|
systemd-resolve:x:990:989:systemd Resolver:/:/usr/sbin/nologin
|
||||||
|
systemd-timesync:x:993:991:systemd Time Synchronization:/:/usr/sbin/nologin
|
||||||
|
tcpdump:x:72:72::/:/usr/sbin/nologin
|
||||||
|
|
@ -1,17 +1,18 @@
|
||||||
include:
|
include:
|
||||||
- bootupd.yaml
|
- bootupd.yaml
|
||||||
# Enable composefs
|
# Workaround for https://bugzilla.redhat.com/show_bug.cgi?id=2305291
|
||||||
|
- grub2-workaround.yaml
|
||||||
|
# Force disable composefs
|
||||||
- composefs.yaml
|
- composefs.yaml
|
||||||
# Read only sysroot
|
ref: fedora/stable/${basearch}/iot
|
||||||
- sysroot-ro.yaml
|
|
||||||
ref: fedora/rawhide/${basearch}/iot
|
|
||||||
repos: []
|
repos: []
|
||||||
selinux: true
|
selinux: true
|
||||||
|
ima: true
|
||||||
tmp-is-dir: true
|
tmp-is-dir: true
|
||||||
recommends: false
|
recommends: false
|
||||||
documentation: false
|
documentation: false
|
||||||
automatic_version_prefix: '46'
|
automatic_version_prefix: '41'
|
||||||
mutate-os-release: '46'
|
mutate-os-release: '41'
|
||||||
initramfs-args:
|
initramfs-args:
|
||||||
- "--no-hostonly"
|
- "--no-hostonly"
|
||||||
- "--add"
|
- "--add"
|
||||||
|
|
@ -74,17 +75,17 @@ check-groups:
|
||||||
type: file
|
type: file
|
||||||
filename: group
|
filename: group
|
||||||
packages:
|
packages:
|
||||||
# This list of packages should be kept in sync with
|
# This list of packages should be kept in sync with
|
||||||
# the iot-commit definition is osbuild, as found here:
|
# the iot-commit definition is osbuild, as found here:
|
||||||
# https://github.com/osbuild/images/blob/0584c20b0c14a89e833b875252114ceff61805e8/pkg/distro/fedora/package_sets.go#L123
|
# https://github.com/osbuild/images/blob/0584c20b0c14a89e833b875252114ceff61805e8/pkg/distro/fedora/package_sets.go#L73
|
||||||
- fedora-release-iot
|
- fedora-release-iot
|
||||||
- fedora-iot-config
|
- fedora-iot-config
|
||||||
- aardvark-dns
|
- aardvark-dns
|
||||||
- atheros-firmware
|
- atheros-firmware
|
||||||
- attr
|
- attr
|
||||||
- authselect
|
- authselect
|
||||||
|
- basesystem
|
||||||
- bash
|
- bash
|
||||||
- bash-completion
|
|
||||||
- bootc
|
- bootc
|
||||||
- brcmfmac-firmware
|
- brcmfmac-firmware
|
||||||
- chrony
|
- chrony
|
||||||
|
|
@ -100,6 +101,7 @@ packages:
|
||||||
- criu-libs
|
- criu-libs
|
||||||
- cryptsetup
|
- cryptsetup
|
||||||
- curl
|
- curl
|
||||||
|
- dbus-parsec
|
||||||
- dnf5
|
- dnf5
|
||||||
- dnf5-plugins
|
- dnf5-plugins
|
||||||
- dosfstools
|
- dosfstools
|
||||||
|
|
@ -109,7 +111,6 @@ packages:
|
||||||
- efibootmgr
|
- efibootmgr
|
||||||
- fdo-client
|
- fdo-client
|
||||||
- fdo-owner-cli
|
- fdo-owner-cli
|
||||||
- filesystem
|
|
||||||
- firewalld
|
- firewalld
|
||||||
- fwupd
|
- fwupd
|
||||||
- fwupd-efi
|
- fwupd-efi
|
||||||
|
|
@ -122,6 +123,7 @@ packages:
|
||||||
- greenboot-default-health-checks
|
- greenboot-default-health-checks
|
||||||
- gzip
|
- gzip
|
||||||
- hostname
|
- hostname
|
||||||
|
- ignition
|
||||||
- ignition-edge
|
- ignition-edge
|
||||||
- ima-evm-utils
|
- ima-evm-utils
|
||||||
- iproute
|
- iproute
|
||||||
|
|
@ -129,8 +131,8 @@ packages:
|
||||||
- iwd
|
- iwd
|
||||||
- iwlwifi-mvm-firmware
|
- iwlwifi-mvm-firmware
|
||||||
- kernel
|
- kernel
|
||||||
|
- kernel-tools
|
||||||
- keyutils
|
- keyutils
|
||||||
- kmscon
|
|
||||||
- less
|
- less
|
||||||
- libsss_sudo
|
- libsss_sudo
|
||||||
- linux-firmware
|
- linux-firmware
|
||||||
|
|
@ -145,9 +147,11 @@ packages:
|
||||||
- openssh-server
|
- openssh-server
|
||||||
- passt
|
- passt
|
||||||
- passt-selinux
|
- passt-selinux
|
||||||
|
- parsec
|
||||||
- pinentry
|
- pinentry
|
||||||
- podman
|
- podman
|
||||||
- policycoreutils
|
- policycoreutils
|
||||||
|
- policycoreutils-python-utils
|
||||||
- polkit
|
- polkit
|
||||||
- procps-ng
|
- procps-ng
|
||||||
- realtek-firmware
|
- realtek-firmware
|
||||||
|
|
@ -160,10 +164,10 @@ packages:
|
||||||
- shadow-utils
|
- shadow-utils
|
||||||
- skopeo
|
- skopeo
|
||||||
- slirp4netns
|
- slirp4netns
|
||||||
|
- ssh-key-dir
|
||||||
- sssd-client
|
- sssd-client
|
||||||
- sudo
|
- sudo
|
||||||
- systemd
|
- systemd
|
||||||
- systemd-pam
|
|
||||||
- systemd-resolved
|
- systemd-resolved
|
||||||
- tar
|
- tar
|
||||||
- tmux
|
- tmux
|
||||||
|
|
@ -176,6 +180,7 @@ packages:
|
||||||
- wireless-regdb
|
- wireless-regdb
|
||||||
- xfsprogs
|
- xfsprogs
|
||||||
- xz
|
- xz
|
||||||
|
- zezere-ignition
|
||||||
- zram-generator
|
- zram-generator
|
||||||
- zram-generator-defaults
|
- zram-generator-defaults
|
||||||
packages-aarch64:
|
packages-aarch64:
|
||||||
|
|
@ -196,10 +201,13 @@ units:
|
||||||
- fedora-iot-config-remote-fix.service
|
- fedora-iot-config-remote-fix.service
|
||||||
- firewalld.service
|
- firewalld.service
|
||||||
- sshd.service
|
- sshd.service
|
||||||
- systemd-firstboot.service
|
|
||||||
- greenboot-grub2-set-counter.service
|
- greenboot-grub2-set-counter.service
|
||||||
- greenboot-grub2-set-success.service
|
- greenboot-grub2-set-success.service
|
||||||
- greenboot-healthcheck.service
|
- greenboot-healthcheck.service
|
||||||
- greenboot-rpm-ostree-grub2-check-fallback.service
|
- greenboot-rpm-ostree-grub2-check-fallback.service
|
||||||
- greenboot-status.service
|
- greenboot-status.service
|
||||||
- greenboot-task-runner.service
|
- greenboot-task-runner.service
|
||||||
|
- parsec.service
|
||||||
|
- dbus-parsec.service
|
||||||
|
- zezere_ignition.timer
|
||||||
|
- zezere_ignition_banner.service
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
releasever: rawhide
|
releasever: 41
|
||||||
variables:
|
variables:
|
||||||
distro: "fedora-iot"
|
distro: "fedora-iot"
|
||||||
|
|
||||||
repos:
|
repos:
|
||||||
- fedora-rawhide
|
- fedora-41
|
||||||
|
|
||||||
metadata:
|
metadata:
|
||||||
name: fedora-iot-bootc-base
|
name: fedora-iot-bootc-base
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,2 @@
|
||||||
include: fedora-iot-base.yaml
|
include: fedora-iot-base.yaml
|
||||||
ref: fedora/rawhide/${basearch}/updates/iot
|
ref: fedora/stable/${basearch}/updates/iot
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,2 @@
|
||||||
include: fedora-iot-base.yaml
|
include: fedora-iot-base.yaml
|
||||||
ref: fedora/rawhide/${basearch}/testing/iot
|
ref: fedora/stable/${basearch}/testing/iot
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
include: fedora-iot-base.yaml
|
include: fedora-iot-base.yaml
|
||||||
ref: fedora/rawhide/${basearch}/iot
|
ref: fedora/stable/${basearch}/iot
|
||||||
|
|
||||||
repos:
|
repos:
|
||||||
- fedora-46
|
- fedora-41
|
||||||
|
|
|
||||||
22
grub2-workaround.yaml
Normal file
22
grub2-workaround.yaml
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
# Temporarily disable new GRUB2 config options until we can ensure that we
|
||||||
|
# have an updated bootloader via bootupd.
|
||||||
|
# This is workaround for: https://bugzilla.redhat.com/show_bug.cgi?id=2305291
|
||||||
|
# See: https://github.com/fedora-silverblue/issue-tracker/issues/587
|
||||||
|
postprocess:
|
||||||
|
- |
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -xeuo pipefail
|
||||||
|
|
||||||
|
# Completely disable this module
|
||||||
|
sed -i '2i exit 0' /etc/grub.d/25_bli
|
||||||
|
|
||||||
|
# Skip check that was not performed in previous Fedora versions
|
||||||
|
sed -i '/fwsetup --is-supported/d' /etc/grub.d/30_uefi-firmware
|
||||||
|
sed -i '/\tif/d' /etc/grub.d/30_uefi-firmware
|
||||||
|
sed -i '/\tfi/d' /etc/grub.d/30_uefi-firmware
|
||||||
|
sed -i 's/\t\t/\t/' /etc/grub.d/30_uefi-firmware
|
||||||
|
|
||||||
|
# Verify that the content matches what we expect the file to look like.
|
||||||
|
# This will fail the build here instead of breaking users' systems.
|
||||||
|
hash="5a77a16c6a94e664e2e96a870f4531b9a0b4e63be1f46751d01e774629a8c84b"
|
||||||
|
echo "$hash /etc/grub.d/30_uefi-firmware" | sha256sum -c
|
||||||
156
justfile
156
justfile
|
|
@ -1,156 +0,0 @@
|
||||||
# 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
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
# 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
|
|
||||||
|
|
@ -18,7 +18,7 @@ done
|
||||||
|
|
||||||
# Remove loader directory causing issues in Anaconda in unified core mode
|
# Remove loader directory causing issues in Anaconda in unified core mode
|
||||||
# Will be obsolete once we start using bootupd
|
# Will be obsolete once we start using bootupd
|
||||||
# See - https://forge.fedoraproject.org/atomic-desktops/config/pulls/344
|
# See - https://pagure.io/workstation-ostree-config/pull-request/344
|
||||||
rm -rf /usr/lib/ostree-boot/loader
|
rm -rf /usr/lib/ostree-boot/loader
|
||||||
|
|
||||||
# Undo RPM scripts enabling units; we want the presets to be canonical
|
# Undo RPM scripts enabling units; we want the presets to be canonical
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue