diff --git a/0001-skip-kernel-buildin-modules.patch b/0001-skip-kernel-buildin-modules.patch new file mode 100644 index 0000000..c7d07f5 --- /dev/null +++ b/0001-skip-kernel-buildin-modules.patch @@ -0,0 +1,47 @@ +From df5e18b8d7c8359b48bc133bfa29734934d18160 Mon Sep 17 00:00:00 2001 +From: Johannes Meixner +Date: Mon, 10 Aug 2020 16:20:38 +0200 +Subject: [PATCH] Merge pull request #2469 from + rear/skip-kernel-builtin-modules-issue2414 + +In 400_copy_modules.sh skip copying kernel modules that are builtin modules. +The new behaviour is that when modules are listed in modules.builtin +and are also shown by modinfo then those modules are now skipped. +Before for such modules the modules file(s) would have been included +in the recovery system. +See https://github.com/rear/rear/issues/2414 +--- + usr/share/rear/build/GNU/Linux/400_copy_modules.sh | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +diff --git a/usr/share/rear/build/GNU/Linux/400_copy_modules.sh b/usr/share/rear/build/GNU/Linux/400_copy_modules.sh +index d8d733d2..641b7f83 100644 +--- a/usr/share/rear/build/GNU/Linux/400_copy_modules.sh ++++ b/usr/share/rear/build/GNU/Linux/400_copy_modules.sh +@@ -133,8 +133,13 @@ for dummy in "once" ; do + module=${module#.o} + # Strip trailing ".ko" if there: + module=${module#.ko} +- # Continue with the next module if the current one does not exist: ++ # Continue with the next module if the current one does not exist as a module file: + modinfo $module 1>/dev/null || continue ++ # Continue with the next module if the current one is a kernel builtin module ++ # cf. https://github.com/rear/rear/issues/2414#issuecomment-668632798 ++ # Quoting the grep search value is mandatory here ($module might be empty or blank), ++ # cf. "Beware of the emptiness" in https://github.com/rear/rear/wiki/Coding-Style ++ grep -q "$( echo $module | tr '_-' '..' )" /lib/modules/$KERNEL_VERSION/modules.builtin && continue + # Resolve module dependencies: + # Get the module file plus the module files of other needed modules. + # This is currently only a "best effort" attempt because +@@ -166,7 +171,10 @@ done + + # Remove those modules that are specified in the EXCLUDE_MODULES array: + for exclude_module in "${EXCLUDE_MODULES[@]}" ; do +- # Continue with the next module if the current one does not exist: ++ # Continue with the next module only if the current one does not exist as a module file ++ # but do not continue with the next module if the current one is a kernel builtin module ++ # so when a module file exists that gets removed regardless if it is also a builtin module ++ # cf. https://github.com/rear/rear/issues/2414#issuecomment-669115481 + modinfo $exclude_module 1>/dev/null || continue + # In this case it is ignored when a module exists but 'modinfo -F filename' cannot show its filename + # because then it is assumed that also no module file had been copied above: diff --git a/rear-2.4.tar.gz b/rear-2.4.tar.gz deleted file mode 100644 index 089f241..0000000 Binary files a/rear-2.4.tar.gz and /dev/null differ diff --git a/rear-2.6.tar.gz b/rear-2.6.tar.gz new file mode 100644 index 0000000..adabc69 Binary files /dev/null and b/rear-2.6.tar.gz differ diff --git a/rear.cron b/rear.cron new file mode 100644 index 0000000..b0fbf27 --- /dev/null +++ b/rear.cron @@ -0,0 +1,4 @@ +# cronjob for ReaR +# periodically check if disk layout has changed and update +# the rescue image +30 1 * * * root /usr/sbin/rear checklayout || /usr/sbin/rear mkrescue diff --git a/rear.service b/rear.service new file mode 100644 index 0000000..e1e359a --- /dev/null +++ b/rear.service @@ -0,0 +1,6 @@ +[Unit] +Description=Update ReaR rescue image + +[Service] +Type=oneshot +ExecStart=/usr/sbin/rear checklayout || /usr/sbin/rear mkrescue diff --git a/rear.spec b/rear.spec index 1555cc5..7682009 100644 --- a/rear.spec +++ b/rear.spec @@ -1,15 +1,25 @@ %define debug_package %{nil} Name: rear -Version: 2.4 -Release: 4 +Version: 2.6 +Release: 1 License: GPLv3 Summary: Relax-and-Recover is a setup-and-forget Linux bare metal disaster recovery solution URL: http://relax-and-recover.org/ Source0: https://sourceforge.net/projects/rear/files/rear/%{version}/rear-%{version}.tar.gz +# Add cronjob and systemd timer as documentation +Source1: rear.cron +Source2: rear.service +Source3: rear.timer +# https://github.com/rear/rear/commit/df5e18b8d7c8359b48bc133bfa29734934d18160 +Patch0: 0001-skip-kernel-buildin-modules.patch ExclusiveArch: x86_64 loongarch64 Requires: binutils ethtool gzip iputils parted tar openssl gawk attr bc crontabs iproute -Requires: genisoimage util-linux syslinux +Requires: genisoimage util-linux +%ifarch x86_64 i686 +Requires: syslinux +%endif +BuildRequires: make asciidoctor BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) %description @@ -29,32 +39,44 @@ if [ $1 -gt 1 ] ; then fi %prep -%autosetup +%autosetup -p1 + +sed -E -e "s:([\"' ])/lib:\1/usr/lib:g" \ + -i usr/share/rear/prep/GNU/Linux/*include*.sh + +sed -e 's:/lib/:/usr/lib/:g' \ + -e 's:/lib\*/:/usr/lib\*/:g' \ + -e 's:/usr/usr/lib:/usr/lib:g' \ + -i 'usr/share/rear/conf/GNU/Linux.conf' %build +make doc %install -rm -rf %{buildroot} -make install DESTDIR="%{buildroot}" -echo "30 1 * * * root /usr/sbin/rear checklayout || /usr/sbin/rear mkrescue" > rear.cron -install -Dp -m 0644 rear.cron %{buildroot}%{_sysconfdir}/cron.d/rear +%make_install +install -p -d %{buildroot}%{_docdir}/%{name}/ +install -m 0644 %{SOURCE1} %{buildroot}%{_docdir}/%{name}/ +install -m 0644 %{SOURCE2} %{buildroot}%{_docdir}/%{name}/ +install -m 0644 %{SOURCE3} %{buildroot}%{_docdir}/%{name}/ %clean rm -rf %{buildroot} %files -%doc MAINTAINERS COPYING README.adoc doc/*.txt -%config(noreplace) %{_sysconfdir}/cron.d/rear +%doc MAINTAINERS COPYING README.adoc doc/*.txt doc/user-guide/*.html %config(noreplace) %{_sysconfdir}/rear/ -%config(noreplace) %{_sysconfdir}/rear/cert/ +%doc %{_docdir}/%{name}/rear.* %{_datadir}/rear/ -%{_localstatedir}/lib/rear/ +%{_sharedstatedir}/rear/ %{_sbindir}/rear %files help %doc %{_mandir}/man8/rear.8* %changelog +* Tue Oct 17 2023 yaoxin - 2.6-1 +- Upgrade to 2.6 + * Tue Nov 15 2022 huajingyun - 2.4-4 - Add loongarch64 support diff --git a/rear.timer b/rear.timer new file mode 100644 index 0000000..6012724 --- /dev/null +++ b/rear.timer @@ -0,0 +1,10 @@ +[Unit] +Description=Update ReaR rescue image + +[Timer] +OnCalendar=daily +RandomizedDelaySec=1h +Persistent=true + +[Install] +WantedBy=timers.target