commit
da4faf6d69
@ -0,0 +1 @@
|
|||||||
|
20a52ee200099c22550e344dc041590dd570c896 SOURCES/dracut-057.tar.xz
|
@ -0,0 +1 @@
|
|||||||
|
SOURCES/dracut-057.tar.xz
|
@ -0,0 +1,270 @@
|
|||||||
|
From b13e8ee2caaa84046e25a73e52dedb9c0f5c57a3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pavel Valena <pvalena@redhat.com>
|
||||||
|
Date: Tue, 12 Jul 2022 14:12:04 +0200
|
||||||
|
Subject: [PATCH] ci: all layered RHEL-9 changes
|
||||||
|
|
||||||
|
- previous downstream changes
|
||||||
|
- use dracut.spec as submitted in the PR
|
||||||
|
- sync selected changes from upstream
|
||||||
|
- add new-main for pull-requests temporarily
|
||||||
|
|
||||||
|
rhel-only
|
||||||
|
Related: #2066816
|
||||||
|
---
|
||||||
|
.github/workflows/container.yml | 7 ++--
|
||||||
|
.github/workflows/differential-shellcheck.yml | 19 ++++++++++
|
||||||
|
.github/workflows/integration.yml | 47 ++++++++++++++++++++++--
|
||||||
|
.github/workflows/lint.yml | 4 +-
|
||||||
|
.packit.yml | 36 ++++++++++++++++++
|
||||||
|
test/container/Dockerfile-CentOS-9-Stream | 53 +++++++++++++++++++++++++++
|
||||||
|
6 files changed, 158 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/.github/workflows/container.yml b/.github/workflows/container.yml
|
||||||
|
index 03c9c5ec..99d57f5b 100644
|
||||||
|
--- a/.github/workflows/container.yml
|
||||||
|
+++ b/.github/workflows/container.yml
|
||||||
|
@@ -3,12 +3,12 @@ on:
|
||||||
|
schedule:
|
||||||
|
- cron: '30 11 * * *' # every day at 4:40
|
||||||
|
push:
|
||||||
|
- branches: [ master ]
|
||||||
|
+ branches: [ main ]
|
||||||
|
paths:
|
||||||
|
- 'test/container/**'
|
||||||
|
- '.github/workflows/container.yml'
|
||||||
|
pull_request:
|
||||||
|
- branches: [ master ]
|
||||||
|
+ branches: [ main new-main ]
|
||||||
|
paths:
|
||||||
|
- 'test/container/**'
|
||||||
|
- '.github/workflows/container.yml'
|
||||||
|
@@ -31,6 +31,7 @@ jobs:
|
||||||
|
- { dockerfile: 'Dockerfile-Fedora-latest', tag: 'fedora:latest' }
|
||||||
|
- { dockerfile: 'Dockerfile-OpenSuse-latest', tag: 'opensuse:latest' }
|
||||||
|
- { dockerfile: 'Dockerfile-Arch', tag: 'arch:latest' }
|
||||||
|
+ - { dockerfile: 'Dockerfile-CentOS-9-Stream', tag: 'centos:stream9' }
|
||||||
|
- { dockerfile: 'Dockerfile-Debian', tag: 'debian:latest' }
|
||||||
|
steps:
|
||||||
|
- name: Check out the repo
|
||||||
|
@@ -49,5 +50,5 @@ jobs:
|
||||||
|
uses: docker/build-push-action@v2
|
||||||
|
with:
|
||||||
|
file: test/container/${{ matrix.config.dockerfile }}
|
||||||
|
- tags: ghcr.io/dracutdevs/${{ matrix.config.tag }}
|
||||||
|
+ tags: ghcr.io/${{ github.repository_owner }}/${{ matrix.config.tag }}
|
||||||
|
push: ${{ github.event_name == 'push' || github.event_name == 'schedule' }}
|
||||||
|
diff --git a/.github/workflows/differential-shellcheck.yml b/.github/workflows/differential-shellcheck.yml
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000..c4b05fad
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/.github/workflows/differential-shellcheck.yml
|
||||||
|
@@ -0,0 +1,19 @@
|
||||||
|
+name: Differential ShellCheck
|
||||||
|
+on:
|
||||||
|
+ pull_request:
|
||||||
|
+ branches: [ main new-main ]
|
||||||
|
+
|
||||||
|
+jobs:
|
||||||
|
+ test:
|
||||||
|
+ runs-on: ubuntu-20.04
|
||||||
|
+
|
||||||
|
+ steps:
|
||||||
|
+ - name: Repository checkout
|
||||||
|
+ uses: actions/checkout@v3
|
||||||
|
+ with:
|
||||||
|
+ fetch-depth: 0
|
||||||
|
+
|
||||||
|
+ - name: Differential ShellCheck
|
||||||
|
+ uses: redhat-plumbers-in-action/differential-shellcheck@v2
|
||||||
|
+ with:
|
||||||
|
+ token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml
|
||||||
|
index 3d78555f..aa354e3e 100644
|
||||||
|
--- a/.github/workflows/integration.yml
|
||||||
|
+++ b/.github/workflows/integration.yml
|
||||||
|
@@ -2,7 +2,7 @@ name: Integration Test
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
- branches: [ master ]
|
||||||
|
+ branches: [ main new-main ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
basic:
|
||||||
|
@@ -24,7 +24,7 @@ jobs:
|
||||||
|
]
|
||||||
|
fail-fast: false
|
||||||
|
container:
|
||||||
|
- image: ghcr.io/dracutdevs/${{ matrix.container }}
|
||||||
|
+ image: ghcr.io/${{ github.repository_owner }}/${{ matrix.container }}
|
||||||
|
options: "--privileged -v /dev:/dev"
|
||||||
|
steps:
|
||||||
|
- name: "Checkout Repository"
|
||||||
|
@@ -69,7 +69,48 @@ jobs:
|
||||||
|
]
|
||||||
|
fail-fast: false
|
||||||
|
container:
|
||||||
|
- image: ghcr.io/dracutdevs/${{ matrix.container }}
|
||||||
|
+ image: ghcr.io/${{ github.repository_owner }}/${{ matrix.container }}
|
||||||
|
+ options: "--privileged -v /dev:/dev"
|
||||||
|
+ steps:
|
||||||
|
+ - name: "Checkout Repository"
|
||||||
|
+ uses: actions/checkout@v2
|
||||||
|
+ with:
|
||||||
|
+ fetch-depth: 0
|
||||||
|
+
|
||||||
|
+ - name: "${{ matrix.container }} TEST-${{ matrix.test }}"
|
||||||
|
+ run: ./tools/test-github.sh "TEST-${{ matrix.test }}" ${{ matrix.test }}
|
||||||
|
+ centos-9-stream:
|
||||||
|
+ runs-on: ubuntu-latest
|
||||||
|
+ timeout-minutes: 45
|
||||||
|
+ concurrency:
|
||||||
|
+ group: ${{ github.workflow }}-${{ github.ref }}-${{ matrix.container }}-${{ matrix.test }}
|
||||||
|
+ cancel-in-progress: true
|
||||||
|
+ strategy:
|
||||||
|
+ matrix:
|
||||||
|
+ container: [
|
||||||
|
+ "centos:stream9",
|
||||||
|
+ ]
|
||||||
|
+ # Disabled tests (due to dropped packages in RHEL/CentOS):
|
||||||
|
+ # 03, 04, 15: requires btrfs
|
||||||
|
+ # 14: requires dmraid
|
||||||
|
+ # 30, 31, 35, 36: requires scsi-target-utils
|
||||||
|
+ test: [
|
||||||
|
+ "01",
|
||||||
|
+ "02",
|
||||||
|
+ "10",
|
||||||
|
+ "11",
|
||||||
|
+ "12",
|
||||||
|
+ "13",
|
||||||
|
+ "17",
|
||||||
|
+ "20",
|
||||||
|
+ "21",
|
||||||
|
+ "40",
|
||||||
|
+ "41",
|
||||||
|
+ "98",
|
||||||
|
+ ]
|
||||||
|
+ fail-fast: false
|
||||||
|
+ container:
|
||||||
|
+ image: ghcr.io/${{ github.repository_owner }}/${{ matrix.container }}
|
||||||
|
options: "--privileged -v /dev:/dev"
|
||||||
|
steps:
|
||||||
|
- name: "Checkout Repository"
|
||||||
|
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
|
||||||
|
index 7b1b8ee7..5e3a299f 100644
|
||||||
|
--- a/.github/workflows/lint.yml
|
||||||
|
+++ b/.github/workflows/lint.yml
|
||||||
|
@@ -2,9 +2,9 @@ name: Lint
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
- branches: [ master ]
|
||||||
|
+ branches: [ main ]
|
||||||
|
pull_request:
|
||||||
|
- branches: [ master ]
|
||||||
|
+ branches: [ main new-main ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lint-c:
|
||||||
|
diff --git a/.packit.yml b/.packit.yml
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000..86ba83d2
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/.packit.yml
|
||||||
|
@@ -0,0 +1,36 @@
|
||||||
|
+---
|
||||||
|
+# This file is part of dracut.
|
||||||
|
+# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
+#
|
||||||
|
+# vi:ts=2 sw=2 et:
|
||||||
|
+#
|
||||||
|
+# Docs: https://packit.dev/docs/
|
||||||
|
+
|
||||||
|
+specfile_path: pkgbuild/dracut.spec
|
||||||
|
+synced_files:
|
||||||
|
+ - .packit.yaml
|
||||||
|
+upstream_package_name: dracut
|
||||||
|
+downstream_package_name: dracut
|
||||||
|
+upstream_tag_template: "{version}"
|
||||||
|
+
|
||||||
|
+actions:
|
||||||
|
+ post-upstream-clone:
|
||||||
|
+ # Use the current specfile
|
||||||
|
+ - "cp pkgbuild/dracut.spec ."
|
||||||
|
+
|
||||||
|
+# Available targets can be listed via `copr-cli list-chroots`
|
||||||
|
+jobs:
|
||||||
|
+# Build test
|
||||||
|
+- job: copr_build
|
||||||
|
+ trigger: pull_request
|
||||||
|
+ metadata:
|
||||||
|
+ targets:
|
||||||
|
+ - centos-stream-9-x86_64
|
||||||
|
+ - centos-stream-9-aarch64
|
||||||
|
+
|
||||||
|
+# Run tests (via testing farm)
|
||||||
|
+- job: tests
|
||||||
|
+ trigger: pull_request
|
||||||
|
+ metadata:
|
||||||
|
+ targets:
|
||||||
|
+ - centos-stream-9-x86_64
|
||||||
|
diff --git a/test/container/Dockerfile-CentOS-9-Stream b/test/container/Dockerfile-CentOS-9-Stream
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000..c9a96020
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/test/container/Dockerfile-CentOS-9-Stream
|
||||||
|
@@ -0,0 +1,53 @@
|
||||||
|
+FROM quay.io/centos/centos:stream9
|
||||||
|
+
|
||||||
|
+MAINTAINER https://github.com/dracutdevs/dracut
|
||||||
|
+
|
||||||
|
+ENV container docker
|
||||||
|
+LABEL RUN="docker run -it --name NAME --privileged --ipc=host --net=host --pid=host -e NAME=NAME -e IMAGE=IMAGE IMAGE"
|
||||||
|
+
|
||||||
|
+RUN echo 'export DRACUT_NO_XATTR=1 KVERSION=$(cd /lib/modules; ls -1 | tail -1)' > /etc/profile.d/dracut-test.sh
|
||||||
|
+
|
||||||
|
+# Install needed packages for the dracut CI container
|
||||||
|
+# FIXME: properly re-add dash once C9S EPEL is available
|
||||||
|
+RUN dnf -y install --enablerepo crb --setopt=install_weak_deps=False \
|
||||||
|
+ http://mirrors.kernel.org/fedora/releases/34/Everything/x86_64/os/Packages/d/dash-0.5.10.2-8.fc34.x86_64.rpm \
|
||||||
|
+ qemu-kvm \
|
||||||
|
+ NetworkManager \
|
||||||
|
+ asciidoc \
|
||||||
|
+ bash-completion \
|
||||||
|
+ bzip2 \
|
||||||
|
+ cryptsetup \
|
||||||
|
+ dbus-daemon \
|
||||||
|
+ dhcp-client \
|
||||||
|
+ dhcp-server \
|
||||||
|
+ e2fsprogs \
|
||||||
|
+ gcc \
|
||||||
|
+ git \
|
||||||
|
+ iproute \
|
||||||
|
+ iputils \
|
||||||
|
+ iscsi-initiator-utils \
|
||||||
|
+ kbd \
|
||||||
|
+ kernel \
|
||||||
|
+ kmod-devel \
|
||||||
|
+ lvm2 \
|
||||||
|
+ make \
|
||||||
|
+ mdadm \
|
||||||
|
+ nfs-utils \
|
||||||
|
+ pigz \
|
||||||
|
+ rpm-build \
|
||||||
|
+ strace \
|
||||||
|
+ sudo \
|
||||||
|
+ tar \
|
||||||
|
+ tcpdump \
|
||||||
|
+ wget \
|
||||||
|
+ which \
|
||||||
|
+ xz \
|
||||||
|
+ && dnf -y update && dnf clean all
|
||||||
|
+
|
||||||
|
+# C9S ships only qemu-kvm, but it disables the KVM accel when it's not
|
||||||
|
+# available
|
||||||
|
+RUN ln -sv /usr/libexec/qemu-kvm /usr/bin/qemu-kvm && \
|
||||||
|
+ ln -sv /usr/libexec/qemu-kvm /usr/bin/qemu-system-$(uname -m)
|
||||||
|
+
|
||||||
|
+# Set default command
|
||||||
|
+CMD ["/usr/bin/bash"]
|
||||||
|
|
@ -0,0 +1,55 @@
|
|||||||
|
From a6c4171117924cacaa727a9828e72f70e09b1fa9 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pavel Valena <pvalena@redhat.com>
|
||||||
|
Date: Tue, 12 Jul 2022 14:15:25 +0200
|
||||||
|
Subject: [PATCH] fix(fips): enhance commit 'handle s390x OSTree systems'
|
||||||
|
|
||||||
|
78557f05a69fe718a97df85d2ed741ce10d3f806
|
||||||
|
|
||||||
|
Refactored to enhance readability.
|
||||||
|
|
||||||
|
Related: rhbz#2050567
|
||||||
|
---
|
||||||
|
modules.d/01fips/fips.sh | 15 +++++++++++----
|
||||||
|
modules.d/01fips/module-setup.sh | 2 +-
|
||||||
|
2 files changed, 12 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/modules.d/01fips/fips.sh b/modules.d/01fips/fips.sh
|
||||||
|
index 26f65414..6ad61df8 100755
|
||||||
|
--- a/modules.d/01fips/fips.sh
|
||||||
|
+++ b/modules.d/01fips/fips.sh
|
||||||
|
@@ -132,10 +132,17 @@ do_fips() {
|
||||||
|
if [ -e "/boot/vmlinuz-${KERNEL}" ]; then
|
||||||
|
BOOT_IMAGE="vmlinuz-${KERNEL}"
|
||||||
|
elif [ -d /boot/loader/entries ]; then
|
||||||
|
- bls=$(find /boot/loader/entries -name '*.conf' | sort -rV | sed -n "$((BOOT_IMAGE + 1))p")
|
||||||
|
- if [ -e "${bls}" ]; then
|
||||||
|
- BOOT_IMAGE=$(grep ^linux "${bls}" | cut -d' ' -f2)
|
||||||
|
- fi
|
||||||
|
+ i=0
|
||||||
|
+ # shellcheck disable=SC2012
|
||||||
|
+ for bls in $(ls -d /boot/loader/entries/*.conf | sort -rV); do
|
||||||
|
+ if [ "$i" -eq "${BOOT_IMAGE:-0}" ] && [ -r "$bls" ]; then
|
||||||
|
+ BOOT_IMAGE="$(grep -e '^linux' "$bls" | grep -o ' .*$')"
|
||||||
|
+ BOOT_IMAGE=${BOOT_IMAGE## }
|
||||||
|
+ break
|
||||||
|
+ fi
|
||||||
|
+
|
||||||
|
+ i=$((i + 1))
|
||||||
|
+ done
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
diff --git a/modules.d/01fips/module-setup.sh b/modules.d/01fips/module-setup.sh
|
||||||
|
index 8860159d..cc9d15ce 100755
|
||||||
|
--- a/modules.d/01fips/module-setup.sh
|
||||||
|
+++ b/modules.d/01fips/module-setup.sh
|
||||||
|
@@ -67,7 +67,7 @@ install() {
|
||||||
|
inst_hook pre-udev 01 "$moddir/fips-load-crypto.sh"
|
||||||
|
inst_script "$moddir/fips.sh" /sbin/fips.sh
|
||||||
|
|
||||||
|
- inst_multiple sha512hmac rmmod insmod mount uname umount grep sed cut find sort
|
||||||
|
+ inst_multiple sha512hmac rmmod insmod mount uname umount grep sed sort
|
||||||
|
|
||||||
|
inst_simple /etc/system-fips
|
||||||
|
[ -c "${initdir}"/dev/random ] || mknod "${initdir}"/dev/random c 1 8 \
|
||||||
|
|
@ -0,0 +1,41 @@
|
|||||||
|
From ec58df436c7ecaa04a9a4a8f72615c59739f890d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pavel Valena <pvalena@redhat.com>
|
||||||
|
Date: Wed, 16 Feb 2022 02:42:11 +0100
|
||||||
|
Subject: [PATCH] build(spec): do not use recommends for base packages
|
||||||
|
|
||||||
|
rhel-only
|
||||||
|
Resolves: rhbz#1947892
|
||||||
|
---
|
||||||
|
pkgbuild/dracut.spec | 11 ++++-------
|
||||||
|
1 file changed, 4 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/pkgbuild/dracut.spec b/pkgbuild/dracut.spec
|
||||||
|
index 71b7421c..38de47b4 100644
|
||||||
|
--- a/pkgbuild/dracut.spec
|
||||||
|
+++ b/pkgbuild/dracut.spec
|
||||||
|
@@ -71,20 +71,17 @@ Requires: kmod
|
||||||
|
Requires: sed
|
||||||
|
Requires: xz
|
||||||
|
Requires: gzip
|
||||||
|
+Requires: hardlink
|
||||||
|
+Requires: pigz
|
||||||
|
+Requires: kpartx
|
||||||
|
|
||||||
|
%if 0%{?fedora} || 0%{?rhel}
|
||||||
|
-Recommends: memstrack
|
||||||
|
-Recommends: hardlink
|
||||||
|
-Recommends: pigz
|
||||||
|
-Recommends: kpartx
|
||||||
|
+Suggests: memstrack
|
||||||
|
Requires: util-linux >= 2.21
|
||||||
|
Requires: systemd >= 219
|
||||||
|
Requires: systemd-udev >= 219
|
||||||
|
Requires: procps-ng
|
||||||
|
%else
|
||||||
|
-Requires: hardlink
|
||||||
|
-Requires: gzip
|
||||||
|
-Requires: kpartx
|
||||||
|
Requires: udev > 166
|
||||||
|
Requires: util-linux-ng >= 2.21
|
||||||
|
%endif
|
||||||
|
|
@ -0,0 +1,35 @@
|
|||||||
|
From 3a0a1774798178f709fc4aa54b6fc3c78e30add7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Lukas Nykryn <lnykryn@redhat.com>
|
||||||
|
Date: Mon, 19 Jul 2021 11:27:28 +0200
|
||||||
|
Subject: [PATCH] fix(95nfs): set correct ownership and permissions for statd
|
||||||
|
directory
|
||||||
|
|
||||||
|
The directory ownership for the statd directory should be
|
||||||
|
rpcuser:rpcuser.
|
||||||
|
|
||||||
|
Resolves: #2017846
|
||||||
|
---
|
||||||
|
modules.d/95nfs/module-setup.sh | 9 +++++++--
|
||||||
|
1 file changed, 7 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/modules.d/95nfs/module-setup.sh b/modules.d/95nfs/module-setup.sh
|
||||||
|
index 16bafe30..5351c2d5 100755
|
||||||
|
--- a/modules.d/95nfs/module-setup.sh
|
||||||
|
+++ b/modules.d/95nfs/module-setup.sh
|
||||||
|
@@ -120,8 +120,13 @@ install() {
|
||||||
|
mkdir -m 0755 -p "$initdir/var/lib/nfs"
|
||||||
|
mkdir -m 0755 -p "$initdir/var/lib/nfs/rpc_pipefs"
|
||||||
|
mkdir -m 0770 -p "$initdir/var/lib/rpcbind"
|
||||||
|
- [ -d "/var/lib/nfs/statd/sm" ] && mkdir -m 0755 -p "$initdir/var/lib/nfs/statd/sm"
|
||||||
|
- [ -d "/var/lib/nfs/sm" ] && mkdir -m 0755 -p "$initdir/var/lib/nfs/sm"
|
||||||
|
+ [ -d "$dracutsysrootdir/var/lib/nfs/statd/sm" ] \
|
||||||
|
+ && mkdir -m 0700 -p "$initdir/var/lib/nfs/statd" \
|
||||||
|
+ && mkdir -m 0755 -p "$initdir/var/lib/nfs/statd/sm" \
|
||||||
|
+ && chown -R rpcuser:rpcuser "$initdir/var/lib/nfs/statd"
|
||||||
|
+ [ -d "$dracutsysrootdir/var/lib/nfs/sm" ] \
|
||||||
|
+ && mkdir -m 0755 -p "$initdir/var/lib/nfs/sm" \
|
||||||
|
+ && chown -R rpcuser:rpcuser "$initdir/var/lib/nfs/sm"
|
||||||
|
|
||||||
|
# Rather than copy the passwd file in, just set a user for rpcbind
|
||||||
|
# We'll save the state and restart the daemon from the root anyway
|
||||||
|
|
@ -0,0 +1,27 @@
|
|||||||
|
From 21b7898d5c3a074203d6cb8a71962010874f87bb Mon Sep 17 00:00:00 2001
|
||||||
|
From: Lukas Nykryn <lnykryn@redhat.com>
|
||||||
|
Date: Tue, 15 Feb 2022 13:47:40 +0100
|
||||||
|
Subject: [PATCH] fix(95resume): only exclude this module, when swap is netdev
|
||||||
|
|
||||||
|
Resolves: #2017787
|
||||||
|
---
|
||||||
|
modules.d/95resume/module-setup.sh | 5 ++---
|
||||||
|
1 file changed, 2 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/modules.d/95resume/module-setup.sh b/modules.d/95resume/module-setup.sh
|
||||||
|
index 5e891048..4b8d8422 100755
|
||||||
|
--- a/modules.d/95resume/module-setup.sh
|
||||||
|
+++ b/modules.d/95resume/module-setup.sh
|
||||||
|
@@ -10,10 +10,9 @@ check() {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
- # Only support resume if hibernation is currently on
|
||||||
|
- # and no swap is mounted on a net device
|
||||||
|
+ # Only support resume if no swap is mounted on a net device
|
||||||
|
[[ $hostonly ]] || [[ $mount_needs ]] && {
|
||||||
|
- swap_on_netdevice || [[ -f /sys/power/resume && "$(cat /sys/power/resume)" == "0:0" ]] && return 255
|
||||||
|
+ swap_on_netdevice && return 255
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0
|
@ -0,0 +1,65 @@
|
|||||||
|
From c1dee82d80d1b4d76a476d822cdf817686da7ebb Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pavel Valena <pvalena@redhat.com>
|
||||||
|
Date: Tue, 19 Jul 2022 16:42:59 +0200
|
||||||
|
Subject: [PATCH] ci: fix branch to run integration tests in
|
||||||
|
|
||||||
|
---
|
||||||
|
.github/workflows/container.yml | 2 +-
|
||||||
|
.github/workflows/differential-shellcheck.yml | 2 +-
|
||||||
|
.github/workflows/integration.yml | 2 +-
|
||||||
|
.github/workflows/lint.yml | 2 +-
|
||||||
|
4 files changed, 4 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/.github/workflows/container.yml b/.github/workflows/container.yml
|
||||||
|
index 99d57f5b..82d7a097 100644
|
||||||
|
--- a/.github/workflows/container.yml
|
||||||
|
+++ b/.github/workflows/container.yml
|
||||||
|
@@ -8,7 +8,7 @@ on:
|
||||||
|
- 'test/container/**'
|
||||||
|
- '.github/workflows/container.yml'
|
||||||
|
pull_request:
|
||||||
|
- branches: [ main new-main ]
|
||||||
|
+ branches: [ main ]
|
||||||
|
paths:
|
||||||
|
- 'test/container/**'
|
||||||
|
- '.github/workflows/container.yml'
|
||||||
|
diff --git a/.github/workflows/differential-shellcheck.yml b/.github/workflows/differential-shellcheck.yml
|
||||||
|
index c4b05fad..63a022bf 100644
|
||||||
|
--- a/.github/workflows/differential-shellcheck.yml
|
||||||
|
+++ b/.github/workflows/differential-shellcheck.yml
|
||||||
|
@@ -1,7 +1,7 @@
|
||||||
|
name: Differential ShellCheck
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
- branches: [ main new-main ]
|
||||||
|
+ branches: [ main ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml
|
||||||
|
index aa354e3e..82d01457 100644
|
||||||
|
--- a/.github/workflows/integration.yml
|
||||||
|
+++ b/.github/workflows/integration.yml
|
||||||
|
@@ -2,7 +2,7 @@ name: Integration Test
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
- branches: [ main new-main ]
|
||||||
|
+ branches: [ main ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
basic:
|
||||||
|
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
|
||||||
|
index 5e3a299f..f6778a65 100644
|
||||||
|
--- a/.github/workflows/lint.yml
|
||||||
|
+++ b/.github/workflows/lint.yml
|
||||||
|
@@ -4,7 +4,7 @@ on:
|
||||||
|
push:
|
||||||
|
branches: [ main ]
|
||||||
|
pull_request:
|
||||||
|
- branches: [ main new-main ]
|
||||||
|
+ branches: [ main ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lint-c:
|
||||||
|
|
@ -0,0 +1,42 @@
|
|||||||
|
From d754571fea528af061db46a0284e996d012f14c9 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pavel Valena <pvalena@redhat.com>
|
||||||
|
Date: Tue, 19 Jul 2022 17:06:25 +0200
|
||||||
|
Subject: [PATCH] ci: run integration tests only on C9s
|
||||||
|
|
||||||
|
---
|
||||||
|
.github/workflows/container.yml | 4 ----
|
||||||
|
.github/workflows/integration.yml | 3 ---
|
||||||
|
2 files changed, 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/.github/workflows/container.yml b/.github/workflows/container.yml
|
||||||
|
index 82d7a097..34038f57 100644
|
||||||
|
--- a/.github/workflows/container.yml
|
||||||
|
+++ b/.github/workflows/container.yml
|
||||||
|
@@ -28,11 +28,7 @@ jobs:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
config:
|
||||||
|
- - { dockerfile: 'Dockerfile-Fedora-latest', tag: 'fedora:latest' }
|
||||||
|
- - { dockerfile: 'Dockerfile-OpenSuse-latest', tag: 'opensuse:latest' }
|
||||||
|
- - { dockerfile: 'Dockerfile-Arch', tag: 'arch:latest' }
|
||||||
|
- { dockerfile: 'Dockerfile-CentOS-9-Stream', tag: 'centos:stream9' }
|
||||||
|
- - { dockerfile: 'Dockerfile-Debian', tag: 'debian:latest' }
|
||||||
|
steps:
|
||||||
|
- name: Check out the repo
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml
|
||||||
|
index 82d01457..40da300c 100644
|
||||||
|
--- a/.github/workflows/integration.yml
|
||||||
|
+++ b/.github/workflows/integration.yml
|
||||||
|
@@ -14,10 +14,7 @@ jobs:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
container: [
|
||||||
|
- "arch:latest",
|
||||||
|
- "debian:latest",
|
||||||
|
"fedora:latest",
|
||||||
|
- "opensuse:latest",
|
||||||
|
]
|
||||||
|
test: [
|
||||||
|
"04",
|
||||||
|
|
@ -0,0 +1,29 @@
|
|||||||
|
From 263b9095200cf277db3bff4753b06306175b1534 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pavel Valena <pvalena@redhat.com>
|
||||||
|
Date: Thu, 21 Jul 2022 17:40:20 +0200
|
||||||
|
Subject: [PATCH] fix(dracut.sh): do not fail on irregular files
|
||||||
|
|
||||||
|
If file is not a regular file (test -f), dracut.sh fails,
|
||||||
|
which is unexpected change of behaviour.
|
||||||
|
The workaround would be to create an empty file.
|
||||||
|
|
||||||
|
rhel-only
|
||||||
|
Fixes: #1835
|
||||||
|
---
|
||||||
|
dracut.sh | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/dracut.sh b/dracut.sh
|
||||||
|
index a1ea1bc3..210a8275 100755
|
||||||
|
--- a/dracut.sh
|
||||||
|
+++ b/dracut.sh
|
||||||
|
@@ -905,7 +905,7 @@ if [[ -z $conffile ]]; then
|
||||||
|
else
|
||||||
|
conffile="$dracutsysrootdir/etc/dracut.conf"
|
||||||
|
fi
|
||||||
|
-elif [[ ! -f $conffile ]]; then
|
||||||
|
+elif [[ ! -e $conffile ]]; then
|
||||||
|
printf "%s\n" "dracut: Configuration file '$conffile' not found." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
@ -0,0 +1,61 @@
|
|||||||
|
From 96116c784edda6675c80fdf95823188c72b28652 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Lukas Nykryn <lnykryn@redhat.com>
|
||||||
|
Date: Mon, 18 Jul 2022 16:29:27 +0200
|
||||||
|
Subject: [PATCH] fix(98dracut-systemd): partly revert "emergency mode: use
|
||||||
|
sulogin"
|
||||||
|
|
||||||
|
Partly reverts 32f68c1f9ac3720e8ce4b95a09c0ce680d5da786
|
||||||
|
In RHEL we don't want to have a password to log in into emergency mode.
|
||||||
|
|
||||||
|
RHEL-only
|
||||||
|
|
||||||
|
Resolves: #2057365
|
||||||
|
---
|
||||||
|
modules.d/98dracut-systemd/dracut-emergency.sh | 2 +-
|
||||||
|
modules.d/98dracut-systemd/module-setup.sh | 2 --
|
||||||
|
modules.d/99base/module-setup.sh | 8 ++------
|
||||||
|
3 files changed, 3 insertions(+), 9 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/modules.d/98dracut-systemd/dracut-emergency.sh b/modules.d/98dracut-systemd/dracut-emergency.sh
|
||||||
|
index c6637a5c..48062f49 100755
|
||||||
|
--- a/modules.d/98dracut-systemd/dracut-emergency.sh
|
||||||
|
+++ b/modules.d/98dracut-systemd/dracut-emergency.sh
|
||||||
|
@@ -34,7 +34,7 @@ if getargbool 1 rd.shell -d -y rdshell || getarg rd.break -d rdbreak; then
|
||||||
|
done < /proc/consoles
|
||||||
|
[ -f /etc/profile ] && . /etc/profile
|
||||||
|
[ -z "$PS1" ] && export PS1="$_name:\${PWD}# "
|
||||||
|
- exec sulogin -e
|
||||||
|
+ exec sh -i -l
|
||||||
|
else
|
||||||
|
export hook="shutdown-emergency"
|
||||||
|
warn "$action has failed. To debug this issue add \"rd.shell rd.debug\" to the kernel command line."
|
||||||
|
diff --git a/modules.d/98dracut-systemd/module-setup.sh b/modules.d/98dracut-systemd/module-setup.sh
|
||||||
|
index b7da86db..6fb26efa 100755
|
||||||
|
--- a/modules.d/98dracut-systemd/module-setup.sh
|
||||||
|
+++ b/modules.d/98dracut-systemd/module-setup.sh
|
||||||
|
@@ -51,6 +51,4 @@ install() {
|
||||||
|
done
|
||||||
|
|
||||||
|
inst_simple "$moddir/dracut-tmpfiles.conf" "$tmpfilesdir/dracut-tmpfiles.conf"
|
||||||
|
-
|
||||||
|
- inst_multiple sulogin
|
||||||
|
}
|
||||||
|
diff --git a/modules.d/99base/module-setup.sh b/modules.d/99base/module-setup.sh
|
||||||
|
index 10a44d91..3fa2659a 100755
|
||||||
|
--- a/modules.d/99base/module-setup.sh
|
||||||
|
+++ b/modules.d/99base/module-setup.sh
|
||||||
|
@@ -30,12 +30,8 @@ install() {
|
||||||
|
fi
|
||||||
|
|
||||||
|
# add common users in /etc/passwd, it will be used by nfs/ssh currently
|
||||||
|
- # use password for hostonly images to facilitate secure sulogin in emergency console
|
||||||
|
- [[ $hostonly ]] && pwshadow='x'
|
||||||
|
- grep '^root:' "$initdir/etc/passwd" 2> /dev/null || echo "root:$pwshadow:0:0::/root:/bin/sh" >> "$initdir/etc/passwd"
|
||||||
|
- grep '^nobody:' "$dracutsysrootdir"/etc/passwd >> "$initdir/etc/passwd"
|
||||||
|
-
|
||||||
|
- [[ $hostonly ]] && grep '^root:' "$dracutsysrootdir"/etc/shadow >> "$initdir/etc/shadow"
|
||||||
|
+ grep '^root:' "$initdir/etc/passwd" 2> /dev/null || echo 'root:x:0:0::/root:/bin/sh' >> "$initdir/etc/passwd"
|
||||||
|
+ grep '^nobody:' /etc/passwd >> "$initdir/etc/passwd"
|
||||||
|
|
||||||
|
# install our scripts and hooks
|
||||||
|
inst_script "$moddir/init.sh" "/init"
|
@ -0,0 +1,29 @@
|
|||||||
|
From 733d47fb873c2b821a430a614d83b60475df2d13 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Lukas Nykryn <lnykryn@redhat.com>
|
||||||
|
Date: Mon, 15 Aug 2022 16:25:53 +0200
|
||||||
|
Subject: [PATCH] fix(kernel-modules): always include nvmem driver on
|
||||||
|
nvmem_on_arm
|
||||||
|
|
||||||
|
These drivers are needed to boot on some SoCs like NXP i.MX
|
||||||
|
We should include them so installation images will work.
|
||||||
|
|
||||||
|
(cherry picked from commit bc965cd8890013a6362733d217c18756134bbcdf)
|
||||||
|
|
||||||
|
Resolves: #2109498
|
||||||
|
---
|
||||||
|
modules.d/90kernel-modules/module-setup.sh | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh
|
||||||
|
index e2073a04..191af041 100755
|
||||||
|
--- a/modules.d/90kernel-modules/module-setup.sh
|
||||||
|
+++ b/modules.d/90kernel-modules/module-setup.sh
|
||||||
|
@@ -85,6 +85,7 @@ installkernel() {
|
||||||
|
"=drivers/mfd" \
|
||||||
|
"=drivers/mmc/core" \
|
||||||
|
"=drivers/mmc/host" \
|
||||||
|
+ "=drivers/nvmem" \
|
||||||
|
"=drivers/phy" \
|
||||||
|
"=drivers/power" \
|
||||||
|
"=drivers/regulator" \
|
||||||
|
|
@ -0,0 +1,32 @@
|
|||||||
|
From 58a310fdbfc1a7e07703c6ab9b21c43a73330a92 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Lukas Nykryn <lnykryn@redhat.com>
|
||||||
|
Date: Mon, 15 Aug 2022 16:32:51 +0200
|
||||||
|
Subject: [PATCH] fix(drm): add video drivers needed on hyper-v and similar
|
||||||
|
|
||||||
|
Due to non-availability of Hyper-V video driver hyperv_drm in kdump
|
||||||
|
initramfs, the console seems to be in hang state with no text over it.
|
||||||
|
|
||||||
|
We should also go through the /sys/bus/vmbus/devices and include drivers
|
||||||
|
referenced there.
|
||||||
|
|
||||||
|
(cherry picked from commit 85149b85961aa535a3c61d492cd3594794e5cc3f)
|
||||||
|
|
||||||
|
Resolves: #2099502
|
||||||
|
---
|
||||||
|
modules.d/50drm/module-setup.sh | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/modules.d/50drm/module-setup.sh b/modules.d/50drm/module-setup.sh
|
||||||
|
index cff0550c..1fb38677 100755
|
||||||
|
--- a/modules.d/50drm/module-setup.sh
|
||||||
|
+++ b/modules.d/50drm/module-setup.sh
|
||||||
|
@@ -31,7 +31,7 @@ installkernel() {
|
||||||
|
if [[ $hostonly ]]; then
|
||||||
|
local i modlink modname
|
||||||
|
|
||||||
|
- for i in /sys/bus/{pci/devices,platform/devices,virtio/devices,soc/devices/soc?}/*/modalias; do
|
||||||
|
+ for i in /sys/bus/{pci/devices,platform/devices,virtio/devices,soc/devices/soc?,vmbus/devices}/*/modalias; do
|
||||||
|
[[ -e $i ]] || continue
|
||||||
|
[[ -n $(< "$i") ]] || continue
|
||||||
|
# shellcheck disable=SC2046
|
||||||
|
|
@ -0,0 +1,51 @@
|
|||||||
|
From a84df47afae75a0b4068c78d8201a515a841f353 Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Tardon <dtardon@redhat.com>
|
||||||
|
Date: Tue, 16 Aug 2022 13:30:16 +0200
|
||||||
|
Subject: [PATCH] fix(skipcpio): ignore broken pipe
|
||||||
|
|
||||||
|
If lsinitrd is called from a context in which SIGPIPE is ignored (e.g.,
|
||||||
|
from a systemd unit with default setting of IgnoreSIGPIPE=), the
|
||||||
|
following line will result in an error being issued:
|
||||||
|
|
||||||
|
bin="$($SKIP "$image" | { read -r -N 6 bin && echo "$bin"; })"
|
||||||
|
|
||||||
|
An example error from `kdumpctl start` (which internally just calls
|
||||||
|
`systemctl start kdump.service`):
|
||||||
|
|
||||||
|
kdumpctl[1287]: ERROR: src/skipcpio/skipcpio.c:191:main(): fwrite
|
||||||
|
|
||||||
|
A minimal reproducer:
|
||||||
|
|
||||||
|
systemd-run -t sh -c '/path/to/skipcpio /path/to/any/file | false'
|
||||||
|
|
||||||
|
(cherry-picked from e9a4d73b73b716a9d2d5f01ceb7b427ef544ed9b)
|
||||||
|
|
||||||
|
Resolves: #2109803
|
||||||
|
---
|
||||||
|
src/skipcpio/skipcpio.c | 5 ++++-
|
||||||
|
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/skipcpio/skipcpio.c b/src/skipcpio/skipcpio.c
|
||||||
|
index 13bfaf53..f66c1869 100644
|
||||||
|
--- a/src/skipcpio/skipcpio.c
|
||||||
|
+++ b/src/skipcpio/skipcpio.c
|
||||||
|
@@ -23,6 +23,7 @@
|
||||||
|
#define _GNU_SOURCE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#include <errno.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
@@ -187,8 +188,10 @@ cat_rest:
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ errno = 0;
|
||||||
|
if (fwrite(buf.copy_buffer, 1, s, stdout) != s) {
|
||||||
|
- pr_err("fwrite\n");
|
||||||
|
+ if (errno != EPIPE)
|
||||||
|
+ pr_err("fwrite\n");
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
From bdd3fa585fcfa21f20d66f01568967c0d7a771d6 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pavel Valena <pvalena@redhat.com>
|
||||||
|
Date: Tue, 16 Aug 2022 15:21:05 +0200
|
||||||
|
Subject: [PATCH] ci: pull request template
|
||||||
|
|
||||||
|
rhel-only
|
||||||
|
---
|
||||||
|
.github/pull_request_template.md | 11 +++--------
|
||||||
|
1 file changed, 3 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
|
||||||
|
index ef281c3d..8fcf4d33 100644
|
||||||
|
--- a/.github/pull_request_template.md
|
||||||
|
+++ b/.github/pull_request_template.md
|
||||||
|
@@ -1,10 +1,5 @@
|
||||||
|
-This pull request changes...
|
||||||
|
+<description/>
|
||||||
|
|
||||||
|
-## Changes
|
||||||
|
+(cherry picked from commit ... )
|
||||||
|
|
||||||
|
-## Checklist
|
||||||
|
-- [ ] I have tested it locally
|
||||||
|
-- [ ] I have reviewed and updated any documentation if relevant
|
||||||
|
-- [ ] I am providing new code and test(s) for it
|
||||||
|
-
|
||||||
|
-Fixes #
|
||||||
|
+Resolves: #
|
||||||
|
|
@ -0,0 +1,42 @@
|
|||||||
|
From f93ac80a0b3e9017bf2c374b72126908a7f5cbde Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Tardon <dtardon@redhat.com>
|
||||||
|
Date: Mon, 8 Aug 2022 13:42:51 +0200
|
||||||
|
Subject: [PATCH] refactor(url-lib): write curl output directly to file
|
||||||
|
|
||||||
|
The redirection to stdout was originally added to workaround
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=989133 (curl would create no
|
||||||
|
file if the source was empty), but I don't see that problem with current
|
||||||
|
curl.
|
||||||
|
|
||||||
|
A nice side-effect of this change is that curl shows download progress.
|
||||||
|
|
||||||
|
(cherry picked from commit 1343d21d8c0d1f7239e27165e9c7633b504f777f)
|
||||||
|
|
||||||
|
Resolves: #2112475
|
||||||
|
---
|
||||||
|
modules.d/45url-lib/url-lib.sh | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/modules.d/45url-lib/url-lib.sh b/modules.d/45url-lib/url-lib.sh
|
||||||
|
index e88fbc14..b009fd09 100755
|
||||||
|
--- a/modules.d/45url-lib/url-lib.sh
|
||||||
|
+++ b/modules.d/45url-lib/url-lib.sh
|
||||||
|
@@ -67,7 +67,7 @@ curl_fetch_url() {
|
||||||
|
echo "$url" > /proc/self/fd/0
|
||||||
|
if [ -n "$outloc" ]; then
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
- curl $curl_args --output - -- "$url" > "$outloc" || return $?
|
||||||
|
+ curl $curl_args --output "$outloc" -- "$url" || return $?
|
||||||
|
else
|
||||||
|
local outdir
|
||||||
|
outdir="$(mkuniqdir /tmp curl_fetch_url)"
|
||||||
|
@@ -101,7 +101,7 @@ ctorrent_fetch_url() {
|
||||||
|
echo "$url" > /proc/self/fd/0
|
||||||
|
if [ -n "$outloc" ]; then
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
- curl $curl_args --output - -- "$url" > "$torrent_outloc" || return $?
|
||||||
|
+ curl $curl_args --output "$torrent_outloc" -- "$url" || return $?
|
||||||
|
else
|
||||||
|
local outdir
|
||||||
|
outdir="$(mkuniqdir /tmp torrent_fetch_url)"
|
||||||
|
|
@ -0,0 +1,45 @@
|
|||||||
|
From f5ef6694eae2696b10b4f6e5a0d72a29223651ce Mon Sep 17 00:00:00 2001
|
||||||
|
From: Kairui Song <kasong@tencent.com>
|
||||||
|
Date: Tue, 20 Sep 2022 02:13:01 +0800
|
||||||
|
Subject: [PATCH] fix(dracut-initramfs-restore.sh): initramfs detection not
|
||||||
|
working
|
||||||
|
|
||||||
|
The path detection is not working on latest Fedora and some other
|
||||||
|
distros, and it fails to extract the initramfs. It seems the if
|
||||||
|
statement is broken by a previous commit, so let's fix it.
|
||||||
|
|
||||||
|
Fixes: 3d8e1ad ('fix(dracut-initramfs-restore.sh): add missing default paths')
|
||||||
|
Signed-off-by: Kairui Song <kasong@tencent.com>
|
||||||
|
(cherry picked from commit 481b87fa7a82be54663071ad9ad76c34e378ddc7)
|
||||||
|
|
||||||
|
Resolves: #2149232
|
||||||
|
---
|
||||||
|
dracut-initramfs-restore.sh | 12 ++++++------
|
||||||
|
1 file changed, 6 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/dracut-initramfs-restore.sh b/dracut-initramfs-restore.sh
|
||||||
|
index 68ea3873..df6cb9a8 100644
|
||||||
|
--- a/dracut-initramfs-restore.sh
|
||||||
|
+++ b/dracut-initramfs-restore.sh
|
||||||
|
@@ -27,14 +27,14 @@ fi
|
||||||
|
|
||||||
|
mount -o ro /boot &> /dev/null || true
|
||||||
|
|
||||||
|
-if [[ -d /efi/loader/entries ]] || [[ -L /efi/loader/entries ]] \
|
||||||
|
- || [[ -d /efi/$MACHINE_ID ]] || [[ -L /efi/$MACHINE_ID ]]; then
|
||||||
|
+if [[ -d /efi/loader/entries || -L /efi/loader/entries ]] \
|
||||||
|
+ && [[ -d /efi/$MACHINE_ID || -L /efi/$MACHINE_ID ]]; then
|
||||||
|
IMG="/efi/${MACHINE_ID}/${KERNEL_VERSION}/initrd"
|
||||||
|
-elif [[ -d /boot/loader/entries ]] || [[ -L /boot/loader/entries ]] \
|
||||||
|
- || [[ -d /boot/$MACHINE_ID ]] || [[ -L /boot/$MACHINE_ID ]]; then
|
||||||
|
+elif [[ -d /boot/loader/entries || -L /boot/loader/entries ]] \
|
||||||
|
+ && [[ -d /boot/$MACHINE_ID || -L /boot/$MACHINE_ID ]]; then
|
||||||
|
IMG="/boot/${MACHINE_ID}/${KERNEL_VERSION}/initrd"
|
||||||
|
-elif [[ -d /boot/efi/loader/entries ]] || [[ -L /boot/efi/loader/entries ]] \
|
||||||
|
- || [[ -d /boot/efi/$MACHINE_ID ]] || [[ -L /boot/efi/$MACHINE_ID ]]; then
|
||||||
|
+elif [[ -d /boot/efi/loader/entries || -L /boot/efi/loader/entries ]] \
|
||||||
|
+ && [[ -d /boot/efi/$MACHINE_ID || -L /boot/efi/$MACHINE_ID ]]; then
|
||||||
|
IMG="/boot/efi/$MACHINE_ID/$KERNEL_VERSION/initrd"
|
||||||
|
elif [[ -f /lib/modules/${KERNEL_VERSION}/initrd ]]; then
|
||||||
|
IMG="/lib/modules/${KERNEL_VERSION}/initrd"
|
||||||
|
|
@ -0,0 +1,31 @@
|
|||||||
|
From 6a1d39e50d9f8a7f3765fa6cb85b34e6597d864d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pavel Valena <pvalena@redhat.com>
|
||||||
|
Date: Tue, 6 Dec 2022 21:46:01 +0100
|
||||||
|
Subject: [PATCH] fix(90kernel-modules): install blk modules using symbol
|
||||||
|
blk_alloc_disk
|
||||||
|
|
||||||
|
Corresponding kernel symbol blk_cleanup_disk is no longer used in the nvdimm
|
||||||
|
driver and calls are made directly instead.
|
||||||
|
|
||||||
|
blk_alloc_disk is used:
|
||||||
|
https://elixir.bootlin.com/linux/v6.1-rc8/source/drivers/nvdimm/pmem.c#L522
|
||||||
|
|
||||||
|
Resolves: #2149781
|
||||||
|
---
|
||||||
|
modules.d/90kernel-modules/module-setup.sh | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh
|
||||||
|
index 191af041..0b9488c3 100755
|
||||||
|
--- a/modules.d/90kernel-modules/module-setup.sh
|
||||||
|
+++ b/modules.d/90kernel-modules/module-setup.sh
|
||||||
|
@@ -2,7 +2,7 @@
|
||||||
|
|
||||||
|
# called by dracut
|
||||||
|
installkernel() {
|
||||||
|
- local _blockfuncs='ahci_platform_get_resources|ata_scsi_ioctl|scsi_add_host|blk_cleanup_queue|register_mtd_blktrans|scsi_esp_register|register_virtio_device|usb_stor_disconnect|mmc_add_host|sdhci_add_host|scsi_add_host_with_dma|blk_mq_alloc_disk|blk_cleanup_disk'
|
||||||
|
+ local _blockfuncs='ahci_platform_get_resources|ata_scsi_ioctl|scsi_add_host|blk_cleanup_queue|register_mtd_blktrans|scsi_esp_register|register_virtio_device|usb_stor_disconnect|mmc_add_host|sdhci_add_host|scsi_add_host_with_dma|blk_alloc_disk|blk_mq_alloc_disk|blk_cleanup_disk'
|
||||||
|
local -A _hostonly_drvs
|
||||||
|
|
||||||
|
find_kernel_modules_external() {
|
||||||
|
|
@ -0,0 +1,99 @@
|
|||||||
|
From 8ab3020205ea92cbef3ca250c924d9b500c5d9aa Mon Sep 17 00:00:00 2001
|
||||||
|
From: Hari Bathini <hbathini@linux.ibm.com>
|
||||||
|
Date: Tue, 12 Jul 2022 13:55:47 +0530
|
||||||
|
Subject: [PATCH] fix(squash): build ld cache for squash loader
|
||||||
|
|
||||||
|
Commit dc21638c3f0a fixes kdump kernel crash, due to non-conventional
|
||||||
|
library path in powerpc, by copying /etc/ld.so.cache under initdir.
|
||||||
|
While that works in general, it is vulnerable to failure because of
|
||||||
|
missing links, when the CPU is reconfigured to run in compatibility
|
||||||
|
mode of older CPU version. Avoid this by running ldconfig for squash
|
||||||
|
loader to create the necessary links & ld cache for it. Doing this
|
||||||
|
also saves a few kilobyes of space as the copied ld cache is bigger
|
||||||
|
in size than the one needed for squash loader environment.
|
||||||
|
|
||||||
|
Fixes: dc21638c3f0a ("fix(squash): keep ld cache under initdir")
|
||||||
|
Cc: Pingfan Liu <piliu@redhat.com>
|
||||||
|
Signed-off-by: Hari Bathini <hbathini@linux.ibm.com>
|
||||||
|
|
||||||
|
Resolves: rhbz#2122274
|
||||||
|
---
|
||||||
|
dracut-init.sh | 14 ++++++++++++++
|
||||||
|
dracut.sh | 11 +----------
|
||||||
|
modules.d/99squash/module-setup.sh | 8 +++-----
|
||||||
|
3 files changed, 18 insertions(+), 15 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/dracut-init.sh b/dracut-init.sh
|
||||||
|
index 900e8b83..fe1b1426 100644
|
||||||
|
--- a/dracut-init.sh
|
||||||
|
+++ b/dracut-init.sh
|
||||||
|
@@ -504,6 +504,20 @@ inst_rules_wildcard() {
|
||||||
|
[[ $_found ]] || dinfo "Skipping udev rule: $_rule"
|
||||||
|
}
|
||||||
|
|
||||||
|
+# make sure that library links are correct and up to date
|
||||||
|
+build_ld_cache() {
|
||||||
|
+ for f in "$dracutsysrootdir"/etc/ld.so.conf "$dracutsysrootdir"/etc/ld.so.conf.d/*; do
|
||||||
|
+ [[ -f $f ]] && inst_simple "${f#$dracutsysrootdir}"
|
||||||
|
+ done
|
||||||
|
+ if ! $DRACUT_LDCONFIG -r "$initdir" -f /etc/ld.so.conf; then
|
||||||
|
+ if [[ $EUID == 0 ]]; then
|
||||||
|
+ derror "ldconfig exited ungracefully"
|
||||||
|
+ else
|
||||||
|
+ derror "ldconfig might need uid=0 (root) for chroot()"
|
||||||
|
+ fi
|
||||||
|
+ fi
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
prepare_udev_rules() {
|
||||||
|
if [ -z "$UDEVVERSION" ]; then
|
||||||
|
UDEVVERSION=$(udevadm --version)
|
||||||
|
diff --git a/dracut.sh b/dracut.sh
|
||||||
|
index 210a8275..d2f07ac6 100755
|
||||||
|
--- a/dracut.sh
|
||||||
|
+++ b/dracut.sh
|
||||||
|
@@ -2360,16 +2360,7 @@ fi
|
||||||
|
|
||||||
|
if [[ $kernel_only != yes ]]; then
|
||||||
|
# make sure that library links are correct and up to date
|
||||||
|
- for f in "$dracutsysrootdir"/etc/ld.so.conf "$dracutsysrootdir"/etc/ld.so.conf.d/*; do
|
||||||
|
- [[ -f $f ]] && inst_simple "${f#$dracutsysrootdir}"
|
||||||
|
- done
|
||||||
|
- if ! $DRACUT_LDCONFIG -r "$initdir" -f /etc/ld.so.conf; then
|
||||||
|
- if [[ $EUID == 0 ]]; then
|
||||||
|
- derror "ldconfig exited ungracefully"
|
||||||
|
- else
|
||||||
|
- derror "ldconfig might need uid=0 (root) for chroot()"
|
||||||
|
- fi
|
||||||
|
- fi
|
||||||
|
+ build_ld_cache
|
||||||
|
fi
|
||||||
|
|
||||||
|
if dracut_module_included "squash"; then
|
||||||
|
diff --git a/modules.d/99squash/module-setup.sh b/modules.d/99squash/module-setup.sh
|
||||||
|
index c42eb679..f31ff556 100644
|
||||||
|
--- a/modules.d/99squash/module-setup.sh
|
||||||
|
+++ b/modules.d/99squash/module-setup.sh
|
||||||
|
@@ -28,11 +28,6 @@ installpost() {
|
||||||
|
[[ $squash_dir == "$i"/* ]] || mv "$i" "$squash_dir"/
|
||||||
|
done
|
||||||
|
|
||||||
|
- # initdir also needs ld.so.* to make ld.so work
|
||||||
|
- inst /etc/ld.so.cache
|
||||||
|
- inst /etc/ld.so.conf
|
||||||
|
- inst_dir /etc/ld.so.conf.d
|
||||||
|
-
|
||||||
|
# Create mount points for squash loader
|
||||||
|
mkdir -p "$initdir"/squash/
|
||||||
|
mkdir -p "$squash_dir"/squash/
|
||||||
|
@@ -67,6 +62,9 @@ installpost() {
|
||||||
|
ln_r /usr/bin /bin
|
||||||
|
ln_r /usr/sbin /sbin
|
||||||
|
inst_simple "$moddir"/init-squash.sh /init
|
||||||
|
+
|
||||||
|
+ # make sure that library links are correct and up to date for squash loader
|
||||||
|
+ build_ld_cache
|
||||||
|
}
|
||||||
|
|
||||||
|
install() {
|
||||||
|
|
@ -0,0 +1,59 @@
|
|||||||
|
From 37e73a30c5b75a57de9e2bb6843eb9a1dab12abf Mon Sep 17 00:00:00 2001
|
||||||
|
From: Laszlo Gombos <laszlo.gombos@gmail.com>
|
||||||
|
Date: Sun, 14 Aug 2022 22:46:10 +0000
|
||||||
|
Subject: [PATCH] test(16-DMSQUASH): make it pass on arch
|
||||||
|
|
||||||
|
Include additional kernel drivers and install squashfs-tools
|
||||||
|
into the arch container.
|
||||||
|
|
||||||
|
(cherry picked from commit b8ffc87d13989f95c8f48ec64613dd9138835618)
|
||||||
|
|
||||||
|
Related: #2135060
|
||||||
|
---
|
||||||
|
test/TEST-16-DMSQUASH/test.sh | 4 +++-
|
||||||
|
test/container/Dockerfile-Arch | 2 +-
|
||||||
|
2 files changed, 4 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/test/TEST-16-DMSQUASH/test.sh b/test/TEST-16-DMSQUASH/test.sh
|
||||||
|
index cf433489..52029375 100755
|
||||||
|
--- a/test/TEST-16-DMSQUASH/test.sh
|
||||||
|
+++ b/test/TEST-16-DMSQUASH/test.sh
|
||||||
|
@@ -6,7 +6,7 @@ TEST_DESCRIPTION="live root on a squash filesystem"
|
||||||
|
KVERSION="${KVERSION-$(uname -r)}"
|
||||||
|
|
||||||
|
# Uncomment this to debug failures
|
||||||
|
-# DEBUGFAIL="rd.shell rd.debug loglevel=7"
|
||||||
|
+#DEBUGFAIL="rd.shell rd.debug loglevel=7"
|
||||||
|
|
||||||
|
test_run() {
|
||||||
|
dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
|
||||||
|
@@ -72,6 +72,7 @@ test_setup() {
|
||||||
|
# devices, volume groups, encrypted partitions, etc.
|
||||||
|
"$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
|
||||||
|
--modules "rootfs-block qemu" \
|
||||||
|
+ --drivers "ext4 sd_mod" \
|
||||||
|
--no-hostonly --no-hostonly-cmdline --no-early-microcode --nofscks --nomdadmconf --nohardlink --nostrip \
|
||||||
|
--force "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
|
||||||
|
rm -rf -- "$TESTDIR"/overlay
|
||||||
|
@@ -109,6 +110,7 @@ test_setup() {
|
||||||
|
"$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
|
||||||
|
--modules "dmsquash-live qemu" \
|
||||||
|
--omit "rngd" \
|
||||||
|
+ --drivers "ext4 sd_mod" \
|
||||||
|
--no-hostonly --no-hostonly-cmdline \
|
||||||
|
--force "$TESTDIR"/initramfs.testing "$KVERSION" || return 1
|
||||||
|
|
||||||
|
diff --git a/test/container/Dockerfile-Arch b/test/container/Dockerfile-Arch
|
||||||
|
index 922b8ede..ac1513a1 100644
|
||||||
|
--- a/test/container/Dockerfile-Arch
|
||||||
|
+++ b/test/container/Dockerfile-Arch
|
||||||
|
@@ -9,7 +9,7 @@ RUN echo 'export DRACUT_NO_XATTR=1 KVERSION=$(cd /lib/modules; ls -1 | tail -1)'
|
||||||
|
|
||||||
|
# Install needed packages for the dracut CI container
|
||||||
|
RUN pacman --noconfirm -Sy \
|
||||||
|
- linux dash strace dhclient asciidoc cpio pigz \
|
||||||
|
+ linux dash strace dhclient asciidoc cpio pigz squashfs-tools \
|
||||||
|
qemu btrfs-progs mdadm dmraid nfs-utils nfsidmap lvm2 nbd \
|
||||||
|
dhcp networkmanager multipath-tools vi tcpdump open-iscsi \
|
||||||
|
git shfmt shellcheck astyle which base-devel && yes | pacman -Scc
|
||||||
|
|
@ -0,0 +1,425 @@
|
|||||||
|
From 8aa62b8cb28a41d4739633aee9b02e40dc4a75d0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Matt Coleman <matt@datto.com>
|
||||||
|
Date: Fri, 23 Sep 2022 19:28:25 -0400
|
||||||
|
Subject: [PATCH] feat(dmsquash-live): add new dmsquash-live-autooverlay module
|
||||||
|
|
||||||
|
Adapt to test properly with the CentOS Stream 9 container too.
|
||||||
|
|
||||||
|
(cherry picked from commit a3c67d27e75223bb45df19f850d246ced9a09938)
|
||||||
|
|
||||||
|
Co-authored-by: Neal Gompa <ngompa@datto.com>
|
||||||
|
|
||||||
|
Resolves: #2135060
|
||||||
|
---
|
||||||
|
.github/workflows/integration.yml | 1 +
|
||||||
|
man/dracut.cmdline.7.asc | 4 +
|
||||||
|
.../create-overlay-genrules.sh | 10 ++
|
||||||
|
.../90dmsquash-live-autooverlay/create-overlay.sh | 119 +++++++++++++++++++++
|
||||||
|
.../90dmsquash-live-autooverlay/module-setup.sh | 25 +++++
|
||||||
|
pkgbuild/dracut.spec | 3 +-
|
||||||
|
test/TEST-16-DMSQUASH/create-root.sh | 12 ++-
|
||||||
|
test/TEST-16-DMSQUASH/test-init.sh | 6 ++
|
||||||
|
test/TEST-16-DMSQUASH/test.sh | 38 ++++++-
|
||||||
|
test/container/Dockerfile-Arch | 2 +-
|
||||||
|
test/container/Dockerfile-CentOS-9-Stream | 2 +
|
||||||
|
test/container/Dockerfile-Debian | 1 +
|
||||||
|
test/container/Dockerfile-Fedora-latest | 1 +
|
||||||
|
test/container/Dockerfile-OpenSuse-latest | 2 +-
|
||||||
|
14 files changed, 218 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml
|
||||||
|
index 40da300c..c22bf916 100644
|
||||||
|
--- a/.github/workflows/integration.yml
|
||||||
|
+++ b/.github/workflows/integration.yml
|
||||||
|
@@ -98,6 +98,7 @@ jobs:
|
||||||
|
"11",
|
||||||
|
"12",
|
||||||
|
"13",
|
||||||
|
+ "16",
|
||||||
|
"17",
|
||||||
|
"20",
|
||||||
|
"21",
|
||||||
|
diff --git a/man/dracut.cmdline.7.asc b/man/dracut.cmdline.7.asc
|
||||||
|
index fda62fd1..40d13d83 100644
|
||||||
|
--- a/man/dracut.cmdline.7.asc
|
||||||
|
+++ b/man/dracut.cmdline.7.asc
|
||||||
|
@@ -1161,6 +1161,10 @@ rd.live.overlay=/dev/sdb1:persistent-overlay.img
|
||||||
|
rd.live.overlay=UUID=99440c1f-8daa-41bf-b965-b7240a8996f4
|
||||||
|
--
|
||||||
|
|
||||||
|
+**rd.live.overlay.cowfs=**__[btrfs|ext4|xfs]__::
|
||||||
|
+Specifies the filesystem to use when formatting the overlay partition.
|
||||||
|
+The default is ext4.
|
||||||
|
+
|
||||||
|
**rd.live.overlay.size=**__<size_MiB>__::
|
||||||
|
Specifies a non-persistent Device-mapper overlay size in MiB. The default is
|
||||||
|
_32768_.
|
||||||
|
diff --git a/modules.d/90dmsquash-live-autooverlay/create-overlay-genrules.sh b/modules.d/90dmsquash-live-autooverlay/create-overlay-genrules.sh
|
||||||
|
new file mode 100755
|
||||||
|
index 00000000..ed168d9f
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/modules.d/90dmsquash-live-autooverlay/create-overlay-genrules.sh
|
||||||
|
@@ -0,0 +1,10 @@
|
||||||
|
+#!/bin/sh
|
||||||
|
+
|
||||||
|
+# shellcheck disable=SC2154
|
||||||
|
+case "$root" in
|
||||||
|
+ live:/dev/*)
|
||||||
|
+ printf 'SYMLINK=="%s", RUN+="/sbin/initqueue --settled --onetime --unique /sbin/create-overlay %s"\n' \
|
||||||
|
+ "${root#live:/dev/}" "${root#live:}" >> /etc/udev/rules.d/95-create-overlay.rules
|
||||||
|
+ wait_for_dev -n "${root#live:}"
|
||||||
|
+ ;;
|
||||||
|
+esac
|
||||||
|
diff --git a/modules.d/90dmsquash-live-autooverlay/create-overlay.sh b/modules.d/90dmsquash-live-autooverlay/create-overlay.sh
|
||||||
|
new file mode 100755
|
||||||
|
index 00000000..c89bda2b
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/modules.d/90dmsquash-live-autooverlay/create-overlay.sh
|
||||||
|
@@ -0,0 +1,119 @@
|
||||||
|
+#!/bin/sh
|
||||||
|
+
|
||||||
|
+type getarg > /dev/null 2>&1 || . /lib/dracut-lib.sh
|
||||||
|
+
|
||||||
|
+if getargbool 0 rd.live.debug -n -y rdlivedebug; then
|
||||||
|
+ exec > /tmp/create-overlay.$$.out
|
||||||
|
+ exec 2>> /tmp/create-overlay.$$.out
|
||||||
|
+ set -x
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
+gatherData() {
|
||||||
|
+ overlay=$(getarg rd.live.overlay)
|
||||||
|
+ if [ -z "$overlay" ]; then
|
||||||
|
+ info "Skipping overlay creation: kernel command line parameter 'rd.live.overlay' is not set"
|
||||||
|
+ exit 0
|
||||||
|
+ fi
|
||||||
|
+ # shellcheck disable=SC2086
|
||||||
|
+ if ! str_starts ${overlay} LABEL=; then
|
||||||
|
+ die "Overlay creation failed: the partition must be set by LABEL in the 'rd.live.overlay' kernel parameter"
|
||||||
|
+ fi
|
||||||
|
+
|
||||||
|
+ overlayLabel=${overlay#LABEL=}
|
||||||
|
+ # shellcheck disable=SC2086
|
||||||
|
+ if [ -b /dev/disk/by-label/${overlayLabel} ]; then
|
||||||
|
+ info "Skipping overlay creation: overlay already exists"
|
||||||
|
+ exit 0
|
||||||
|
+ fi
|
||||||
|
+
|
||||||
|
+ filesystem=$(getarg rd.live.overlay.cowfs)
|
||||||
|
+ [ -z "$filesystem" ] && filesystem="ext4"
|
||||||
|
+ if [ "$filesystem" != "ext4" ] && [ "$filesystem" != "xfs" ] && [ "$filesystem" != "btrfs" ]; then
|
||||||
|
+ die "Overlay creation failed: only ext4, xfs, and btrfs are supported in the 'rd.live.overlay.cowfs' kernel parameter"
|
||||||
|
+ fi
|
||||||
|
+
|
||||||
|
+ live_dir=$(getarg rd.live.dir)
|
||||||
|
+ [ -z "$live_dir" ] && live_dir="LiveOS"
|
||||||
|
+
|
||||||
|
+ [ -z "$1" ] && exit 1
|
||||||
|
+ rootDevice=$1
|
||||||
|
+
|
||||||
|
+ # The kernel command line's 'root=' parameter was parsed into the $root variable by the dmsquash-live module.
|
||||||
|
+ # $root contains the path to a symlink within /dev/disk/by-label, which points to a partition.
|
||||||
|
+ # This script needs that partition's parent block device.
|
||||||
|
+ # shellcheck disable=SC2046
|
||||||
|
+ # shellcheck disable=SC2086
|
||||||
|
+ rootDeviceAbsolutePath=$(readlink -f ${rootDevice})
|
||||||
|
+ rootDeviceSysfsPath=/sys/class/block/${rootDeviceAbsolutePath##*/}
|
||||||
|
+ if [ -f "${rootDeviceSysfsPath}/partition" ]; then
|
||||||
|
+ # shellcheck disable=SC2086
|
||||||
|
+ partition=$(cat ${rootDeviceSysfsPath}/partition)
|
||||||
|
+ else
|
||||||
|
+ partition=0
|
||||||
|
+ fi
|
||||||
|
+ # shellcheck disable=SC2086
|
||||||
|
+ readonly=$(cat ${rootDeviceSysfsPath}/ro)
|
||||||
|
+ # shellcheck disable=SC2086
|
||||||
|
+ if [ "$partition" != "1" ] || [ "$readonly" != "0" ]; then
|
||||||
|
+ info "Skipping overlay creation: unpartitioned or read-only media detected"
|
||||||
|
+ exit 0
|
||||||
|
+ fi
|
||||||
|
+ # shellcheck disable=SC2046
|
||||||
|
+ # shellcheck disable=SC2086
|
||||||
|
+ fullDriveSysfsPath=$(readlink -f ${rootDeviceSysfsPath}/..)
|
||||||
|
+ blockDevice=/dev/${fullDriveSysfsPath##*/}
|
||||||
|
+ currentPartitionCount=$(grep --count -E "${blockDevice#/dev/}[0-9]+" /proc/partitions)
|
||||||
|
+
|
||||||
|
+ # shellcheck disable=SC2086
|
||||||
|
+ freeSpaceStart=$(parted --script ${blockDevice} unit % print free \
|
||||||
|
+ | awk -v x=${currentPartitionCount} '$1 == x {getline; print $1}')
|
||||||
|
+ if [ -z "$freeSpaceStart" ]; then
|
||||||
|
+ info "Skipping overlay creation: there is no free space after the last partition"
|
||||||
|
+ exit 0
|
||||||
|
+ fi
|
||||||
|
+ partitionStart=$((${freeSpaceStart%.*} + 1))
|
||||||
|
+ if [ $partitionStart -eq 100 ]; then
|
||||||
|
+ info "Skipping overlay creation: there is not enough free space after the last partition"
|
||||||
|
+ exit 0
|
||||||
|
+ fi
|
||||||
|
+
|
||||||
|
+ overlayPartition=${blockDevice}$((currentPartitionCount + 1))
|
||||||
|
+
|
||||||
|
+ label=$(blkid --match-tag LABEL --output value "$rootDevice")
|
||||||
|
+ uuid=$(blkid --match-tag UUID --output value "$rootDevice")
|
||||||
|
+ if [ -z "$label" ] || [ -z "$uuid" ]; then
|
||||||
|
+ die "Overlay creation failed: failed to look up root device label and UUID"
|
||||||
|
+ fi
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+createPartition() {
|
||||||
|
+ # shellcheck disable=SC2086
|
||||||
|
+ parted --script --align optimal ${blockDevice} mkpart primary ${partitionStart}% 100%
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+createFilesystem() {
|
||||||
|
+ # shellcheck disable=SC2086
|
||||||
|
+ mkfs.${filesystem} -L ${overlayLabel} ${overlayPartition}
|
||||||
|
+
|
||||||
|
+ baseDir=/run/initramfs/create-overlayfs
|
||||||
|
+ mkdir -p ${baseDir}
|
||||||
|
+ # shellcheck disable=SC2086
|
||||||
|
+ mount -t auto ${overlayPartition} ${baseDir}
|
||||||
|
+
|
||||||
|
+ mkdir -p ${baseDir}/${live_dir}/ovlwork
|
||||||
|
+ # shellcheck disable=SC2086
|
||||||
|
+ mkdir ${baseDir}/${live_dir}/overlay-${label}-${uuid}
|
||||||
|
+
|
||||||
|
+ umount ${baseDir}
|
||||||
|
+ rm -r ${baseDir}
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+main() {
|
||||||
|
+ gatherData "$1"
|
||||||
|
+ createPartition
|
||||||
|
+ udevsettle
|
||||||
|
+ createFilesystem
|
||||||
|
+ udevsettle
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+main "$1"
|
||||||
|
diff --git a/modules.d/90dmsquash-live-autooverlay/module-setup.sh b/modules.d/90dmsquash-live-autooverlay/module-setup.sh
|
||||||
|
new file mode 100755
|
||||||
|
index 00000000..c3712eba
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/modules.d/90dmsquash-live-autooverlay/module-setup.sh
|
||||||
|
@@ -0,0 +1,25 @@
|
||||||
|
+#!/bin/bash
|
||||||
|
+
|
||||||
|
+check() {
|
||||||
|
+ # including a module dedicated to live environments in a host-only initrd doesn't make sense
|
||||||
|
+ [[ $hostonly ]] && return 1
|
||||||
|
+ return 255
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+depends() {
|
||||||
|
+ echo dmsquash-live
|
||||||
|
+ return 0
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+installkernel() {
|
||||||
|
+ instmods btrfs ext4 xfs
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+install() {
|
||||||
|
+ inst_multiple awk blkid cat grep mkdir mount parted readlink rmdir tr umount
|
||||||
|
+ inst_multiple -o mkfs.btrfs mkfs.ext4 mkfs.xfs
|
||||||
|
+ # shellcheck disable=SC2154
|
||||||
|
+ inst_hook pre-udev 25 "$moddir/create-overlay-genrules.sh"
|
||||||
|
+ inst_script "$moddir/create-overlay.sh" "/sbin/create-overlay"
|
||||||
|
+ dracut_need_initqueue
|
||||||
|
+}
|
||||||
|
diff --git a/pkgbuild/dracut.spec b/pkgbuild/dracut.spec
|
||||||
|
index 38de47b4..e148bbf7 100644
|
||||||
|
--- a/pkgbuild/dracut.spec
|
||||||
|
+++ b/pkgbuild/dracut.spec
|
||||||
|
@@ -138,7 +138,7 @@ Requires: %{name} >= %{version}-%{dist_free_release}
|
||||||
|
Requires: %{name} = %{version}-%{release}
|
||||||
|
%endif
|
||||||
|
Requires: %{name}-network = %{version}-%{release}
|
||||||
|
-Requires: tar gzip coreutils bash device-mapper curl
|
||||||
|
+Requires: tar gzip coreutils bash device-mapper curl parted
|
||||||
|
%if 0%{?fedora}
|
||||||
|
Requires: fuse ntfs-3g
|
||||||
|
%endif
|
||||||
|
@@ -461,6 +461,7 @@ echo 'dracut_rescue_image="yes"' > $RPM_BUILD_ROOT%{dracutlibdir}/dracut.conf.d/
|
||||||
|
%files live
|
||||||
|
%{dracutlibdir}/modules.d/99img-lib
|
||||||
|
%{dracutlibdir}/modules.d/90dmsquash-live
|
||||||
|
+%{dracutlibdir}/modules.d/90dmsquash-live-autooverlay
|
||||||
|
%{dracutlibdir}/modules.d/90dmsquash-live-ntfs
|
||||||
|
%{dracutlibdir}/modules.d/90livenet
|
||||||
|
|
||||||
|
diff --git a/test/TEST-16-DMSQUASH/create-root.sh b/test/TEST-16-DMSQUASH/create-root.sh
|
||||||
|
index 9bc1aa5d..c11e17e0 100755
|
||||||
|
--- a/test/TEST-16-DMSQUASH/create-root.sh
|
||||||
|
+++ b/test/TEST-16-DMSQUASH/create-root.sh
|
||||||
|
@@ -11,9 +11,17 @@ udevadm control --reload
|
||||||
|
set -e
|
||||||
|
|
||||||
|
udevadm settle
|
||||||
|
-mkfs.ext4 -q -L dracut /dev/disk/by-id/ata-disk_root
|
||||||
|
+
|
||||||
|
+# create a single partition using 50% of the capacity of the image file created by test_setup() in test.sh
|
||||||
|
+sfdisk /dev/disk/by-id/ata-disk_root << EOF
|
||||||
|
+2048,161792
|
||||||
|
+EOF
|
||||||
|
+
|
||||||
|
+udevadm settle
|
||||||
|
+
|
||||||
|
+mkfs.ext4 -q -L dracut /dev/disk/by-id/ata-disk_root-part1
|
||||||
|
mkdir -p /root
|
||||||
|
-mount /dev/disk/by-id/ata-disk_root /root
|
||||||
|
+mount /dev/disk/by-id/ata-disk_root-part1 /root
|
||||||
|
mkdir -p /root/run /root/testdir
|
||||||
|
echo "Creating squashfs"
|
||||||
|
mksquashfs /source /root/testdir/rootfs.img -quiet
|
||||||
|
diff --git a/test/TEST-16-DMSQUASH/test-init.sh b/test/TEST-16-DMSQUASH/test-init.sh
|
||||||
|
index 068e8f38..959fa25f 100755
|
||||||
|
--- a/test/TEST-16-DMSQUASH/test-init.sh
|
||||||
|
+++ b/test/TEST-16-DMSQUASH/test-init.sh
|
||||||
|
@@ -9,6 +9,12 @@ exec > /dev/console 2>&1
|
||||||
|
|
||||||
|
echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
|
||||||
|
|
||||||
|
+if grep -qF ' rd.live.overlay=LABEL=persist ' /proc/cmdline; then
|
||||||
|
+ # Writing to a file in the root filesystem lets test_run() verify that the autooverlay module successfully created
|
||||||
|
+ # and formatted the overlay partition and that the dmsquash-live module used it when setting up the rootfs overlay.
|
||||||
|
+ echo "dracut-autooverlay-success" > /overlay-marker
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
export TERM=linux
|
||||||
|
export PS1='initramfs-test:\w\$ '
|
||||||
|
[ -f /etc/mtab ] || ln -sfn /proc/mounts /etc/mtab
|
||||||
|
diff --git a/test/TEST-16-DMSQUASH/test.sh b/test/TEST-16-DMSQUASH/test.sh
|
||||||
|
index 52029375..58d73b0d 100755
|
||||||
|
--- a/test/TEST-16-DMSQUASH/test.sh
|
||||||
|
+++ b/test/TEST-16-DMSQUASH/test.sh
|
||||||
|
@@ -5,8 +5,9 @@ TEST_DESCRIPTION="live root on a squash filesystem"
|
||||||
|
|
||||||
|
KVERSION="${KVERSION-$(uname -r)}"
|
||||||
|
|
||||||
|
-# Uncomment this to debug failures
|
||||||
|
-#DEBUGFAIL="rd.shell rd.debug loglevel=7"
|
||||||
|
+# Uncomment these to debug failures
|
||||||
|
+#DEBUGFAIL="rd.shell rd.debug rd.live.debug loglevel=7"
|
||||||
|
+#DEBUGTOOLS="setsid ls cat sfdisk"
|
||||||
|
|
||||||
|
test_run() {
|
||||||
|
dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
|
||||||
|
@@ -23,6 +24,27 @@ test_run() {
|
||||||
|
-initrd "$TESTDIR"/initramfs.testing
|
||||||
|
|
||||||
|
grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success -- "$TESTDIR"/marker.img || return 1
|
||||||
|
+
|
||||||
|
+ rootPartitions=$(sfdisk -d "$TESTDIR"/root.img | grep -c 'root\.img[0-9]')
|
||||||
|
+ [ "$rootPartitions" -eq 1 ] || return 1
|
||||||
|
+
|
||||||
|
+ "$testdir"/run-qemu \
|
||||||
|
+ "${disk_args[@]}" \
|
||||||
|
+ -boot order=d \
|
||||||
|
+ -append "rd.live.image rd.live.overlay.overlayfs=1 rd.live.overlay=LABEL=persist rd.live.dir=testdir root=LABEL=dracut console=ttyS0,115200n81 quiet selinux=0 rd.info rd.shell=0 panic=1 oops=panic softlockup_panic=1 $DEBUGFAIL" \
|
||||||
|
+ -initrd "$TESTDIR"/initramfs.testing-autooverlay
|
||||||
|
+
|
||||||
|
+ rootPartitions=$(sfdisk -d "$TESTDIR"/root.img | grep -c 'root\.img[0-9]')
|
||||||
|
+ [ "$rootPartitions" -eq 2 ] || return 1
|
||||||
|
+
|
||||||
|
+ (
|
||||||
|
+ # Ensure that this test works when run with the `V=1` parameter, which runs the script with `set -o pipefail`.
|
||||||
|
+ set +o pipefail
|
||||||
|
+
|
||||||
|
+ # Verify that the string "dracut-autooverlay-success" occurs in the second partition in the image file.
|
||||||
|
+ dd if="$TESTDIR"/root.img bs=1MiB skip=80 status=none \
|
||||||
|
+ | grep -U --binary-files=binary -F -m 1 -q dracut-autooverlay-success
|
||||||
|
+ ) || return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
test_setup() {
|
||||||
|
@@ -49,7 +71,7 @@ test_setup() {
|
||||||
|
ln -s dracut-util "${initdir}/usr/bin/dracut-getarg"
|
||||||
|
ln -s dracut-util "${initdir}/usr/bin/dracut-getargs"
|
||||||
|
|
||||||
|
- inst_multiple mkdir ln dd stty mount poweroff
|
||||||
|
+ inst_multiple mkdir ln dd stty mount poweroff grep "$DEBUGTOOLS"
|
||||||
|
|
||||||
|
cp -a -- /etc/ld.so.conf* "$initdir"/etc
|
||||||
|
ldconfig -r "$initdir"
|
||||||
|
@@ -115,6 +137,16 @@ test_setup() {
|
||||||
|
--force "$TESTDIR"/initramfs.testing "$KVERSION" || return 1
|
||||||
|
|
||||||
|
ls -sh "$TESTDIR"/initramfs.testing
|
||||||
|
+
|
||||||
|
+ "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
|
||||||
|
+ --modules "dmsquash-live-autooverlay qemu" \
|
||||||
|
+ --omit "rngd" \
|
||||||
|
+ --drivers "ext4 sd_mod" \
|
||||||
|
+ --no-hostonly --no-hostonly-cmdline \
|
||||||
|
+ --force "$TESTDIR"/initramfs.testing-autooverlay "$KVERSION" || return 1
|
||||||
|
+
|
||||||
|
+ ls -sh "$TESTDIR"/initramfs.testing-autooverlay
|
||||||
|
+
|
||||||
|
rm -rf -- "$TESTDIR"/overlay
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/test/container/Dockerfile-Arch b/test/container/Dockerfile-Arch
|
||||||
|
index ac1513a1..4112cc5b 100644
|
||||||
|
--- a/test/container/Dockerfile-Arch
|
||||||
|
+++ b/test/container/Dockerfile-Arch
|
||||||
|
@@ -12,7 +12,7 @@ RUN pacman --noconfirm -Sy \
|
||||||
|
linux dash strace dhclient asciidoc cpio pigz squashfs-tools \
|
||||||
|
qemu btrfs-progs mdadm dmraid nfs-utils nfsidmap lvm2 nbd \
|
||||||
|
dhcp networkmanager multipath-tools vi tcpdump open-iscsi \
|
||||||
|
- git shfmt shellcheck astyle which base-devel && yes | pacman -Scc
|
||||||
|
+ git shfmt shellcheck astyle which base-devel glibc parted && yes | pacman -Scc
|
||||||
|
|
||||||
|
RUN useradd -m build
|
||||||
|
RUN su build -c 'cd && git clone https://aur.archlinux.org/perl-config-general.git && cd perl-config-general && makepkg -s --noconfirm'
|
||||||
|
diff --git a/test/container/Dockerfile-CentOS-9-Stream b/test/container/Dockerfile-CentOS-9-Stream
|
||||||
|
index c9a96020..abcc067e 100644
|
||||||
|
--- a/test/container/Dockerfile-CentOS-9-Stream
|
||||||
|
+++ b/test/container/Dockerfile-CentOS-9-Stream
|
||||||
|
@@ -33,8 +33,10 @@ RUN dnf -y install --enablerepo crb --setopt=install_weak_deps=False \
|
||||||
|
make \
|
||||||
|
mdadm \
|
||||||
|
nfs-utils \
|
||||||
|
+ parted \
|
||||||
|
pigz \
|
||||||
|
rpm-build \
|
||||||
|
+ squashfs-tools \
|
||||||
|
strace \
|
||||||
|
sudo \
|
||||||
|
tar \
|
||||||
|
diff --git a/test/container/Dockerfile-Debian b/test/container/Dockerfile-Debian
|
||||||
|
index b4c1704e..15eb9958 100644
|
||||||
|
--- a/test/container/Dockerfile-Debian
|
||||||
|
+++ b/test/container/Dockerfile-Debian
|
||||||
|
@@ -42,6 +42,7 @@ RUN apt-get update -y -qq && apt-get upgrade -y -qq && DEBIAN_FRONTEND=nonintera
|
||||||
|
network-manager \
|
||||||
|
nfs-common \
|
||||||
|
open-iscsi \
|
||||||
|
+ parted \
|
||||||
|
pigz \
|
||||||
|
pkg-config \
|
||||||
|
procps \
|
||||||
|
diff --git a/test/container/Dockerfile-Fedora-latest b/test/container/Dockerfile-Fedora-latest
|
||||||
|
index 87c749f9..a38a72ef 100644
|
||||||
|
--- a/test/container/Dockerfile-Fedora-latest
|
||||||
|
+++ b/test/container/Dockerfile-Fedora-latest
|
||||||
|
@@ -49,6 +49,7 @@ RUN dnf -y install --setopt=install_weak_deps=False \
|
||||||
|
which \
|
||||||
|
ShellCheck \
|
||||||
|
shfmt \
|
||||||
|
+ parted \
|
||||||
|
&& dnf -y update && dnf clean all
|
||||||
|
|
||||||
|
# Set default command
|
||||||
|
diff --git a/test/container/Dockerfile-OpenSuse-latest b/test/container/Dockerfile-OpenSuse-latest
|
||||||
|
index 637d50c6..9aaf07b1 100644
|
||||||
|
--- a/test/container/Dockerfile-OpenSuse-latest
|
||||||
|
+++ b/test/container/Dockerfile-OpenSuse-latest
|
||||||
|
@@ -13,7 +13,7 @@ RUN dnf -y install --setopt=install_weak_deps=False \
|
||||||
|
strace libkmod-devel gcc bzip2 xz tar wget rpm-build make git bash-completion \
|
||||||
|
sudo kernel dhcp-client qemu-kvm /usr/bin/qemu-system-$(uname -m) e2fsprogs \
|
||||||
|
tcpdump iproute iputils kbd NetworkManager btrfsprogs tgt dbus-broker \
|
||||||
|
- iscsiuio open-iscsi which ShellCheck procps pigz \
|
||||||
|
+ iscsiuio open-iscsi which ShellCheck procps pigz parted squashfs \
|
||||||
|
&& dnf -y update && dnf clean all
|
||||||
|
|
||||||
|
RUN shfmt_version=3.2.4; wget "https://github.com/mvdan/sh/releases/download/v${shfmt_version}/shfmt_v${shfmt_version}_linux_amd64" -O /usr/local/bin/shfmt \
|
@ -0,0 +1,39 @@
|
|||||||
|
From 3e912f878de8d310bd06199e03602c63d2b60dba Mon Sep 17 00:00:00 2001
|
||||||
|
From: Radek Vykydal <rvykydal@redhat.com>
|
||||||
|
Date: Tue, 20 Dec 2022 16:40:23 +0100
|
||||||
|
Subject: [PATCH] fix(network-manager): allow running nm-run.sh multiple times
|
||||||
|
|
||||||
|
This partially reverts
|
||||||
|
https://github.com/redhat-plumbers/dracut-rhel9/commit/77630365aed201a729c73a9ffda0733a75f3fee4
|
||||||
|
|
||||||
|
Anaconda needs to be able to run nm-run.sh to trigger online hooks again
|
||||||
|
after kickstart is fetched from storage and network is configured
|
||||||
|
accordingly.
|
||||||
|
|
||||||
|
rhel-only
|
||||||
|
Resolves: rhbz#2157082
|
||||||
|
---
|
||||||
|
modules.d/35network-manager/nm-run.sh | 9 +++++----
|
||||||
|
1 file changed, 5 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/modules.d/35network-manager/nm-run.sh b/modules.d/35network-manager/nm-run.sh
|
||||||
|
index 7d8d61fa..6110733d 100755
|
||||||
|
--- a/modules.d/35network-manager/nm-run.sh
|
||||||
|
+++ b/modules.d/35network-manager/nm-run.sh
|
||||||
|
@@ -2,11 +2,12 @@
|
||||||
|
|
||||||
|
type source_hook > /dev/null 2>&1 || . /lib/dracut-lib.sh
|
||||||
|
|
||||||
|
-if [ -e /tmp/nm.done ]; then
|
||||||
|
- return
|
||||||
|
-fi
|
||||||
|
-
|
||||||
|
if [ -z "$DRACUT_SYSTEMD" ]; then
|
||||||
|
+
|
||||||
|
+ if [ -e /tmp/nm.done ]; then
|
||||||
|
+ return
|
||||||
|
+ fi
|
||||||
|
+
|
||||||
|
# Only start NM if networking is needed
|
||||||
|
if [ -e /run/NetworkManager/initrd/neednet ]; then
|
||||||
|
for i in /usr/lib/NetworkManager/system-connections/* \
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue