This document contains the latest release notes for the Open Source Software project Relax-and-Recover.

Relax-and-Recover website: relax-and-recover.org

GitHub project: github.com/rear

For the release notes of previous Relax-and-Recover versions see the Relax-and-Recover website release notes: relax-and-recover.org/documentation

Overview

Relax-and-Recover (abbreviated ReaR) is the de facto standard disaster recovery framework on Linux.

It is in particular used on enterprise Linux distributions like Red Hat Enterprise Linux (RHEL) and SUSE Linux Enterprise Server (SLES).

ReaR is a system administrator tool and framework to create a bootable disaster recovery system image for bare metal disaster recovery with data backup restore on physical or virtual replacement hardware.

For bare metal disaster recovery the ReaR recovery system is booted on pristine replacement hardware. On replacement hardware first the storage setup/layout is recreated (disk partitioning, filesystems, mount points), then a backup restore program is called to restore the data (system files) into the recreated storage, and finally a boot loader is installed.

System administrators use the ReaR framework to set up a disaster recovery procedure as part of their disaster recovery policy (which complements their existing backup policy).

ReaR complements backup and restore of data with bare metal disaster recovery. ReaR can also act as local backup software, but ReaR is not a a backup management software. In many enterprise environmentments, data backup and restore happens via dedicated backup software which is integrated by ReaR and used to restore the data onto a replacement system as part of the automated disaster recovery procedure implemented by ReaR.

ReaR has support for built-in backup methods using 'tar' and 'rsync' that are used for backup and restore.

ReaR integrates supports the following 3rd party, also commercial, tools for restoring a backup.

The complete list of backup methods (BACKUP=...) is:

  • AVA Dell EMC Avamar / EMC Avamar
  • BACULA Bacula
  • BAREOS Bareos
  • BLOCKCLONE block device cloning via dd
  • BORG Borg Backup
  • CDM Rubrik Cloud Data Management
  • DP OpenText Data Protector
  • DUPLICITY Duplicity / Duply
  • EXTERNAL External custom restore method
  • FDRUPSTREAM FDR/Upstream
  • GALAXY11 Commvault Galaxy 11 / Commvault Simpana
  • NBKDC NovaStor DataCenter
  • NBU Veritas NetBackup / Symantec NetBackup
  • NETFS ReaR built-in backup and restore via rsync or tar to a network file system or to a locally attached backup disk (USB, eSATA, ...)
  • NFS4SERVER NFS4 server to push data to the rescue system
  • NSR Dell EMC NetWorker / EMC NetWorker / Legato NetWorker
  • OBDR One Button Disaster Recovery via tape
  • PPDM Dell PowerProtect Data Manager
  • RBME Rsync Backup Made Easy
  • REQUESTRESTORE Request restore from a human operator
  • RSYNC ReaR built-in backup using rsync via rsync or ssh protocol
  • SESAM SEP Sesam
  • TSM IBM Storage Protect / Tivoli Storage Manager / IBM Spectrum Protect
  • VEEAM Veeam Backup

ReaR integrates well with Disaster Recovery Linux Manager (DRLM) drlm.org, which can act as a central management tool for ReaR deployments.

System and Software Requirements

ReaR is written entirely in the native language for system administration: as shell (bash) scripts. The intent is that experienced users and system admins can adapt or extend the ReaR scripts as needed to make things work for their specific cases.

We need Bash version 4 which is standard on current GNU/Linux systems.

The default backup software used by ReaR is standard GNU/tar.

ReaR is known to work on x86 (32bit and 64bit) and ppc64le architectures. ReaR was also ported to ia64 and arm architectures, but these are rarely tested.

Support

Relax-and-Recover (ReaR) is a Free and Open Source Software project under GPLv3 license.

The creators of ReaR have spend many, many hours in development and support. We may give voluntary support, but only as work-life balance allows it. Some of the maintainers also provide paid support as a commercial service.

ReaR has a long history (since 2006) and we can therefore only support the latest release version. If you have a problem, we urge you to install the latest stable ReaR version or the snapshot (development) version available on GitHub before submitting an issue. We understand that it is not always possible to install the latest version on hundreds of systems, so we are willing to support previous versions of ReaR when you buy a support contract. We cannot handle all those various support requests on a voluntary base and we give paid projects priority, therefore, we urge our customers to buy a support contract for one or more systems. Buying a support contract actually buys time for the core developers to work on ReaR.

See the Relax-and-Recover website support relax-and-recover.org/support

Supported and Unsupported Operating Systems

We try to keep our "Test Matrix" wiki pages up-to-date with feedback we receive from the community. For example for ReaR 2.8 see https://github.com/rear/rear/wiki/Test-Matrix-ReaR-2.8

ReaR 2.8 is supported on the following Linux operating systems:

  • Fedora 40, 41 (Silverblue not supported)
  • RHEL 7, 8, and 9
  • RHEL clones (CentOS, Scientific Linux, Alma Linux, Oracle Linux) 7, 8, and 9
  • SLES 15
  • openSUSE Leap 15.x
  • Debian 10 and 11
  • Ubuntu 20.04, 22.04, 24.04
  • Arch Linux / Manjaro

ReaR 2.8 dropped official support for the following Linux operating systems:

  • Fedora < 39
  • RHEL < 7
  • RHEL clones (CentOS, Scientific Linux, Alma Linux, Oracle Linux) < 7
  • SLES < 15
  • openSUSE Leap < 15.x and older openSUSE versions
  • openSUSE Tumbleweed
  • Debian < 10
  • Ubuntu < 20

Usually ReaR 2.8 should also work on newer versions of the above listed supported Linux operating systems but sometimes arbitrary failures can happen when software that is used by ReaR (like partitioning tools, filesystem tools, bootloader tools, ISO image creating tools, networking tools, and so on) changes in not fully backward compatible ways or when there are innovations of the basic system (like kernel, storage, bootloader, init, networking, and so on) that are not yet supported by ReaR.

In theory ReaR 2.8 should work on openSUSE Tumbleweed but in practice arbitrary failures could happen at any time because the Tumbleweed distribution is a pure rolling release version of openSUSE containing the latest stable versions of all software (cf. https://en.opensuse.org/Portal:Tumbleweed) so arbitrary changes of any software are possible at any time that could arbitrarily break how ReaR works.

ReaR 2.8 may still work for SLES < 15 and openSUSE Leap < 15.x but it is no longer tested there so arbitrary regressions could appear, in particular on systems with Bash before version 4.

ReaR 2.8 and earlier versions are known to no longer work for the following Linux operating systems:

  • RHEL 5 (and probably also CentOS 5): See issue #1766
  • SLES 9 and 10: See issue #1842

If you need support for an unsupported Linux operating system you must acquire a ReaR support contract.

Requests to port ReaR to another operating system (not Linux) can only be achieved with serious sponsoring.

Supported and Unsupported Architectures

ReaR 2.8 is supported on:

  • Intel x86 (32bit and 64bit) architectures
  • AMD x86 (64bit) architecture
  • PPC64LE architecture

ReaR 2.8 may or may not work on:

  • PPC64 processors
  • Intel Itanium processors
  • ARM type of processors
  • IBM Z "s390x" type of processors

ReaR 2.8 is known to not support:

  • old PPC (32bit) processors

If you need to get ReaR working on an architecture that is currently not supported, you can buy consultancy from one of our official developers.

Unsupported Features and Known Issues

We are aware of the following issues and limitations in ReaR 2.8:

  • BTRFS support is limited to single-device configurations and doesn't cover advanced BTRFS features like spanning file systems over multiple devices, BTRFS built-in RAID and multi disk configurations. (#2028)
  • Oracle ASM is not supported by ReaR. (#3284)

All of those can be resolved via sponsoring or support contracts, unfortunately we cannot handle all those various requests on a voluntary base. Alternatively we'll be very happy to accept contributions to resolve those issues via GitHub pull requests.

Relax-and-Recover Releases

The first release of ReaR, version 1.0, was posted to the web in July 2006. This document lists new features, backward incompatible changes, and defect fixes for the current release only, please refer to our documentation for the older release notes for previous versions. Unless otherwise noted releases of ReaR are intended to work reasonably backward compatible with previous versions. In addition to the GPL disclaimer of warranty and liability there is no guarantee that all works backward compatible. In general the older a system is the less likely it is that a newer ReaR version works. For each ReaR version upgrade and for each change of a software that is used by ReaR and for each change of your basic system you must re-validate that your disaster recovery procedure still works for you.

Relax-and-Recover Version 2.8 (December 2024)

Things like 'issue NNNN' or only '#NNNN' refer to the GitHub issues tracker https://github.com/rear/rear/issues

New features, bigger enhancements, and possibly backward incompatible changes:

  • New support for additional commercial backup software

  • Veeam Backup.

  • Dell PowerProtect Data Manager.

  • CommvaultGalaxy 11 (Simpana).

  • Bareos integration was rewritten and updated.

  • New portable mode --portable and OUTPUT=PORTABLE, see https://github.com/rear/rear/blob/master/doc/user-guide/17-Portable-Mode.adoc for more information.

  • Improved handling and protecting of secrets in ReaR configuration variables. New -e/--expose-secrets option to show secrets in configuration variables.

  • New non-interactive mode -n/--non-interactive to suppress all interactive questions and answers and facilitate truly unattended recovery automation.

  • NFS4SERVER as new restore method where the rescue systems starts an NFS4 server to push the data to the rescue system.

  • New OpalPBA AuthToken feature.

  • Layout changes and fixes for S/390 DASDs (major code overhauling).

  • Initial basic barrel support, see https://github.com/aschnell/barrel

  • By default rear recover wipes disks that get completely recreated via DISKS_TO_BE_WIPED="" in default.conf.

Details (mostly in chronological order - newest topmost):

Only changes of the ReaR software and its documentation that could be of common interest are listed here. For example changes of ReaR GitHub infrastructure things (like GitHub workflows, actions, CI, and package building) or minor changes in documentation (like unimportant typo fixes) are not listed here. To see all changes use the 'git log' command on a local git clone/checkout or view the ReaR 2.8 changes at GitHub https://github.com/rear/rear/commits/rear-2.8 or the current ReaR GitHub master code changes https://github.com/rear/rear/commits/master

The following entries are basically excerpts of what the command

git log --format="%ae %H %ad%n%s :%n%b%n" --graph | fmt -w 160 -u -t

shows in a local git clone:

 

In default.conf improve the USB_BOOTLOADER description 
to make it clear that for UEFI with GRUB2 also 
USING_UEFI_BOOTLOADER must be set appropriately, 
see https://github.com/rear/rear/issues/3362 
and https://github.com/rear/rear/pull/3364

 

savelayout: error out on mounted multi-disk BTRFS filesystems (#3365) :
error out on mounted multi-disk BTRFS filesystems
because ReaR does not support this scenario at the moment, see 
https://github.com/rear/rear.github.com/pull/22#issuecomment-2540763985 
and https://github.com/rear/rear/issues/2028

 

In 100_copy_as_is.sh error out if symlinking VAR_DIR SHARE_DIR fails (#3356) :
In build/GNU/Linux/100_copy_as_is.sh 
error out if symlinking VAR_DIR and/or SHARE_DIR fails 
because with non-default VAR_DIR and/or SHARE_DIR 
(e.g. when running from checkout) 
it is mandatory that in the ReaR recovery system 
all ReaR files are accessible via the default 
/var/lib/rear and /usr/share/rear directories, 
see https://github.com/rear/rear/pull/3356 
So old systems with 'ln' from coreutils < 8.16 
that does not support the '-r/--relative' option 
are no longer supported because the 
relative symlink is needed for portable mode, 
see https://github.com/rear/rear/pull/3206

 

Merge pull request #3351 :
fix: add -xdev option to find to avoid hanging NFS (#3350)

 

Call 'lsblk' with 'MOUNTPOINTS' to show all mounted btrfs subvolumes (#3348) :
In layout/save/GNU/Linux/100_create_layout_file.sh 
try to call 'lsblk' with 'MOUNTPOINTS' with plural 'S' 
to show all mounted btrfs subvolumes 
in contrast to 'MOUNTPOINT' that shows only 
a random one of the mounted btrfs subvolumes 
which is misleading when several btrfs subvolumes 
of one btrfs are mounted,
see https://github.com/rear/rear/pull/3348

 

Update 400_create_include_exclude_files.sh (#3347) :
In backup/NETFS/default/400_create_include_exclude_files.sh 
skip to add /.snapshots by default to the backup include list 
see https://github.com/rear/rear/issues/3346

 

Minor os-detection improvements (#3344) :
See https://github.com/rear/rear/pull/3344 
* Remove incorrect check for SUSE_LINUX: 
  On SUSE, the OS_MASTER_VENDOR variable is set to SUSE and not SUSE_LINUX. 
  Since the code was still executed on this platform and no problems have been 
  reported so far, let's assume that it is safe and remove this redundant condition. 
  Related: https://github.com/rear/rear/issues/3149#issuecomment-1966068640 
* Set OS_VENDOR to Arch_Linux on Arch Linux: 
  Because the plain 'Arch' could be confused with 'Architecture'. 
  Related: https://github.com/rear/rear/issues/3149#issuecomment-1972731026

 

Minimal changes to fix detection of Fedora from `/etc/os-release` (#3171) :
See https://github.com/rear/rear/pull/3171 
and https://github.com/rear/rear/issues/3149 
* Search for `rhel` when detecting RHEL: 
  The `redhat` substring is present only in auxiliary variables and URLs
  in `/etc/os-release` both on Fedora and RHEL. 
  Therefore, the `grep` worked only by accident on RHEL and was broken 
  on Fedora because it wrongly classified Fedora as RHEL because 
  its BUG_REPORT_URL refers to Red Hat's Bugzilla. 
  On the other hand, `rhel` is the actual `ID` of RHEL and this string 
  is not present in Fedora's `/etc/os-release` at all. 
  Resolves: https://github.com/rear/rear/issues/3149#issuecomment-1964290116 
* Always source a script in SourceStage at most once: 
  Use `sort -u` to ensure that each relevant script is listed 
  and sourced only once and that duplicates get discarded. 
  Otherwise, some scripts could have been executed repeatedly 
  (see the last linked comment '.../3149#issuecomment-1935586311'). 
  Especially, when `OS_VENDOR` and `OS_MASTER_VENDOR` 
  have the same value which is the case at least on Fedora. 
  Related: https://github.com/rear/rear/pull/3171#pullrequestreview-2053278291 
  Resolves: https://github.com/rear/rear/issues/3149#issuecomment-1935586311 

 

Make sourcing DUPLY_PROFILE reasonably secure (#3345) :
See https://github.com/rear/rear/issues/3293 
and https://github.com/rear/rear/issues/3259 
Overhauled prep/DUPLICITY/default/200_find_duply_profile.sh 
so that now only an explicitly user specified DUPLY_PROFILE 
will get sourced to avoid that some automatism 
finds and sources whatever it may have found. 
Error out when DUPLY_PROFILE is empty or does not exist 
to make the user aware that he must explicitly 
specify his correct DUPLY_PROFILE. 
In default.conf explain the new DUPLY_PROFILE behaviour 
that is backward incompatible but much more secure. 
In 500_make_duplicity_backup.sh overhauled the code 
that makes a backup with duply in particular 
regarding command output which appears in the logfile 
only in debug modes. 
Also stdout to stderr redirections are no longer needed, see 
https://github.com/rear/rear/wiki/Coding-Style#what-to-do-with-stdin-stdout-and-stderr 

 

Update default.conf :
In default.conf fixed a typo in the 
DISABLE_DEPRECATION_ERRORS description 
('sete' in "Users who sete this")
and by the way improved the text a bit 
e.g. telling more about "feature" than about "code" 
and be more outspoken that without talking to us 
deprecated features get removed without further notice 
to urge users to actually do open GitHub issues

 

Make get_disklabel_type() also work for 'multipath' devices (#3334) :
Without this fix, get_disklabel_type() used to find a disk to install GRUB on 
was returning nothing when the disk was a multipath device. 
The reason is that then the line in disklayout.conf starts with 'multipath' 
but ReaR had searched for 'disk' only. Now it also searches for 'multipath'. 
See https://github.com/rear/rear/pull/3334 

 

Merge pull request #3329 :
Fix partition naming on RHEL when migrating devices :
The previous code was appending a "p" to the device name
unconditionally, which ended up having partition names such as 'wwidp0'
instead of 'wwid1', when the device name (e.g. 'wwid') ended with a
letter and not a digit.
The new code applies the proper naming, which is 'wwid1' when device
doesn't end with a digit (e.g. 'wwid'), and 'wwid0000p1' when the device
(e.g. 'wwid0000') ends with a digit.

 

Use OS_MASTER_VERSION for major releases (#3331) :
Use OS_MASTER_VERSION for major releases, see 
https://github.com/rear/rear/pull/3331 
Contrary to its name, the OS_MASTER_VERSION variable 
was already used for this purpose for some versions, e.g. RHEL 7. 
This fixes version comparison on RHEL 10 and newer. 
Related: https://github.com/rear/rear/issues/3149#issuecomment-1966068640 
Fixes commit: f4932c1cfe13d4a855bec93c1d3aa0b2b9128c6a 
"Add OS version mappings for RHEL 8 and RHEL 9"

 

Merge pull request #3312 :
#3178 improve USB device detection
#3312 improve the text output; add example on how to fetch NVME RAW_USB_DEVICE device
#3312 parse string through uniq for RAW_USB_DEVICE

 

BACKUP=NSR: Deprecate 650_check_iso_recoverable.sh (#3309) :
Deprecate layout/save/NSR/default/650_check_iso_recoverable.sh 
because it conflicts with "rear checklayout", see 
https://github.com/rear/rear/issues/3069 

 

In 990_verify_rootfs.sh show relative paths in user messages for files in ROOTFS_DIR (#3308) :
In build/default/990_verify_rootfs.sh 
enhanced how files from within the ReaR recovery system 
(i.e. files from within ROOTFS_DIR) are shown to the user: 
In user messages it is misleading to show the full path from 
within the recovery system without leading ROOTFS_DIR 
for example showing /bin/parted for what actually is 
/var/tmp/rear.XXX/rootfs/bin/parted 
because for the user /bin/parted means the full path 
on his original system but there is no /bin/parted on 
the original system because there it is /usr/sbin/parted 
so to show files inside the recovery system to the user 
even without (the long) leading ROOTFS_DIR we can show them 
as relative path i.e. without leading slash e.g. as bin/parted 
when from the context it should be clear enough 
that a file inside the recovery system is meant. 

 

Merge pull request #3281 :
conf: reintroduce Linux-s390.conf :
The conf directory is the expected location for architecture-specific settings.
Moreover, the 305_include_s390_tools.sh script contained a potentially harmful
check that could result in all s390/s390x tools being omitted from the recovery
image with disastrous results.
Fixes: cba3590b27bedb526e5b439cd8d4d01e1ec0169a ("pull #2142")
Resolves: https://github.com/rear/rear/issues/3144

 

Overhauled SLE11-SLE12-SAP-HANA-UEFI-example.conf (#3306) :
In conf/examples/SLE11-SLE12-SAP-HANA-UEFI-example.conf 
removed the meanwhile outdated and obsolete 
information about ebiso, see 
https://github.com/rear/rear/issues/3084#issuecomment-1833496190 
so with /usr/bin/xorrisofs it "just works" 
to make a UEFI bootable ISO image 
that should boot even with Secure Boot, cf. 
https://github.com/rear/rear/issues/3084#issuecomment-1835773844 
Additionally I added a part about SECURE_BOOT_BOOTLOADER, see 
https://github.com/rear/rear/issues/3300 
Furthermore I overhauled the whole comment texts, in particular: 
Removed the parts about SSH_ROOT_PASSWORD. 
Added hint about SAN and multipath to look at 
conf/examples/RHEL7-PPC64LE-Multipath-PXE-GRUB.conf 
Plus several more general improvements of the comment texts.

 

Update local.conf description comment :
In the local.conf comment explain that 
one must ensure commands in configuration files 
work always without errors regardless in which
environment those commands will be run, 
in particular on the original system and 
also within the ReaR recovery system, 
see https://github.com/rear/rear/issues/3296

 

Autodetect secure boot via mokutil and guess the secure boot shim (#3278) :
* Autodetect Secure Boot status via mokutil and guess the secure boot shim 
* Check that a shim is found when Secure Boot is active, improved diagnostic messages 
Fixes #3276 

 

Improve layout configuration part of the user guide (#3125)

 

Automatically include mounted btrfs subvolumes in NETFS backups (#3175) :
* automatically exclude btrfs snapshot subvolumes from 'btrfsmountedsubvol' 
  Related: https://github.com/rear/rear/pull/3175#issuecomment-1983498175 
* automatically include mounted btrfs subvolumes in NETFS backups 
  ... unless they are explicitly excluded. 
  Resolves: https://github.com/rear/rear/issues/2928 
* always add the excluded component in RESTORE_EXCLUDE_FILE 
  Otherwise, the component itself would not be included if it had any child 
  components of the `fs` type. 
 * automatically exclude btrfs subvolume children of excluded components

 

Migrate MAC addresses and interface names in NetworkManager keyfiles
during network configuration migration (#3179) :
* Migrate NM keyfiles during network conf migration 
  See https://fedoramagazine.org/converting-networkmanager-from-ifcfg-to-keyfiles/ 
  for more details on NetworkManager keyfiles. 
  Only MAC addresses and interface names are migrated for now. 
  TODO: migrate also IP addresses and routes. 
* Quote name when assembling network files to patch 
  Otherwise patching fails on files with spaces in them, often used by NetworkManager.
* Quote network config filenames in log messages 
  - especially useful with file names containing spaces.

 

improve device recognition when creating efibootmgr entry (#3267) :
via the get_device_name function to normalize the device names

 

Merge pull request #3041 :
Reorder systemd units in the rescue system and make sure syslog is started
Start syslog after rescue system init :
The syslog socket used to be started early in the rescue system boot and
for some reason this does not work well: logging to /dev/log does not
trigger the start of rsyslogd and therefore the log data are never read
(happens on RHEL 9 at least).
Fix by ordering the syslog start after basic system initialization
(sysinit.target), just like usual daemons.
Separate automated ReaR startup :
Make it a separate script and systemd unit. This allows to run services
after sysinit (which initializes network) but before ReaR starts.
Especially useful for network backup daemons that are needed to restore
files during "rear recover".
Configure network-online.target in rescue system :
Services that need network to be configured can be made to be run after
this target.
This matches the usual systemd setup: https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/
Intended especially for 3rd party network backup solutions where restore
needs some daemon running and communicating over network in the rescue
system.

 

Merge pull request #3261 :
bareos: require Bareos Director >= 21 :
The Bareos ReaR integration uses features introduced with Bareos 20.
However, the oldest official supported version of Bareos is 21
(the current version is Bareos 23).
Therefore we add a requirement for a Bareos Director >= 21.

 

Rewrite Bareos integration (#3240) :
Major rework of Baros support provided by the Bareos company 
* remove untested bextract method, now we only use bconsole 
* update to support recent Bareos versions 
* autoconfigure client, job and fileset if possible 
* automatic (latest) and manual (bconsole commands) restore 
* improved logging of bconsole output 
* start bareos-fd in restore-only mode to prevent accidentally creating a backup of the rescue system 
* generate systemd unit for bareos-fd 
* ensure client is fully functional 
* create bareos specific functions to handle bareos tasks 
* significantly simplify code, improve readability 
* remove variables not needed any more 
* show progress information during restore 
* get jobid from restore command from returned result 
* bcommand now works without the "@out" command, which might get removed with Bareos >= 24. 

 

Merge pull request #3242 :
Fix IPv6 address support in OUTPUT_URL/BACKUP_URL :
Currently there is no proper support for IPv6 addresses in
OUTPUT_URL/BACKUP_URL properties:
- OUTPUT_URL=nfs://2001:db8:ca2:6::101/root/REAR is not recognized
  (and should not be)
- OUTPUT_URL=nfs://[2001:db8:ca2:6::101]/root/REAR fails
  because of bash substitutions occurring in various places
- OUTPUT_URL="nfs://\[2001:db8:ca2:6::101\]/root/REAR" works
  but is somehow cumbersome (double quotes + square brackets quoting).
This patch makes the following (proper) scheme work with both NFS and SSHFS:
  OUTPUT_URL=nfs://[2001:db8:ca2:6::101]/root/REAR
  OUTPUT_URL=sshfs://[2001:db8:ca2:6::101]/root/REAR
For this to occur, a lot of bash quoting had to be fixed.

 

In 990_verify_rootfs.sh fix issue #3021 (#3250) :
In build/default/990_verify_rootfs.sh 
for each 'not found' shared object 
(i.e. a shared object that was 'not found' by 'ldd') 
check whether or not the shared object 
may exist nevertheless in the recovery system 
and if yes, we may sufficiently safely assume 
things are OK in the ReaR recovery system 
so we do not report it as missing to the user 
(for debugging we have all in the log), see 
https://github.com/rear/rear/issues/3021#issuecomment-2165453757 
Additionally in 990_verify_rootfs.sh 
more consistent level when messages are shown, 
i.e. now only LogPrint and LogPrintError 
to show nothing (except errors) when not in verbose mode 
and all messages when in verbose mode 
to make the messages as a whole 
better understandable by the user. 

 

On POWER tell the user when the initrd is big (#3233) :
In pack/GNU/Linux/900_create_initramfs.sh 
tell the user on POWER architecture 
when the initrd is bigger than 100 MiB 
that this may cause a boot failure, see 
https://github.com/rear/rear/issues/3189 
Show initrd size in MiB (not in bytes) to the user. 
Added user info messages to consider things like 
REAR_INITRD_COMPRESSION='lzma' 
MODULES=('loaded_modules') 
FIRMWARE_FILES=('no') 
and COPY_AS_IS_EXCLUDE_TSM in case of BACKUP=TSM 

 

Fix version test in udev start by desupporting systemd < 190  (#3239)

 

Set RECOVERY_MODE also in PORTABLE mode (#3228) :
In sbin/rear set RECOVERY_MODE also in PORTABLE mode, 
because the PORTABLE mode is meant to be used only 
to run 'rear recover' within a foreign rescue system 
see https://github.com/rear/rear/pull/3206#issuecomment-2122159018 
and https://github.com/rear/rear/pull/3206#issuecomment-2122173021

 

Update 400_save_directories.sh (#3232) :
In prep/default/400_save_directories.sh 
dirty hack to fix 
https://github.com/rear/rear/issues/3222 
for now until a proper solution is found, cf. 
https://github.com/rear/rear/pull/3223

 

In 400_create_include_exclude_files.sh fixed regression of pull request 3221 :
In backup/NETFS/default/400_create_include_exclude_files.sh 
fixed a regression of 
https://github.com/rear/rear/pull/3221 
that errors out in case of 
rear -C something_else_backup mkbackuponly 
when not the basic system but only something else 
should be backed up as documented in 
doc/user-guide/11-multiple-backups.adoc 
see https://github.com/rear/rear/pull/3221#issuecomment-2129240645

 

In sbin/rear make it clear when ReaR's TMP_DIR is used (#3225) :
In usr/sbin/rear make it more clear 
in a comment and in DebugPrint messages 
when ReaR's TMP_DIR gets used 
(in contrast to the system's TMPDIR), 
see https://github.com/rear/rear/pull/3225

 

Overhauled 400_create_include_exclude_files.sh (#3221) :
Overhauled backup/NETFS/default/400_create_include_exclude_files.sh 
* Now do first backup the mounted filesystems to backup '/' first 
  so the basic system files get stored first in the backup and 
  then backup what is specified in BACKUP_PROG_INCLUDE 
  see https://github.com/rear/rear/pull/3177#issuecomment-1985926458 
  and https://github.com/rear/rear/issues/3217#issue-2277985295 
* Report suspicious cases as LogPrintError to have the user at least informed. 
* Remove duplicates in backup-[in/ex]clude.txt but keep the ordering 
  to avoid possibly unwanted and unexpected subtle consequences 
  see https://github.com/rear/rear/pull/3175#issuecomment-1985382738 
* Verify that at least '/' is in backup-include.txt 
  see https://github.com/rear/rear/issues/3217 
* Redirect stdout into files exactly at the command where needed 
  instead of more global redirections, cf. "horrible coding style" 
  in https://github.com/rear/rear/pull/3175#issuecomment-2109554865 
Update backup/NETFS/default/500_make_backup.sh 
* In backup/NETFS/default/500_make_backup.sh 
  unique_unsorted is no longer needed because 
  backup-include.txt is already without duplicates 
  because unique_unsorted is now called in 
  backup/NETFS/default/400_create_include_exclude_files.sh 

 

change find backup procedure for Veeam V12.1 and later (#3214) :
Running rear recover on different hardware will not show the backups of the original system due to the way 
how Veeam registers the rescue system as a new client (under the same name, but with different ID). 
This change handles this situation by searching for all backups for HOSTNAME and selecting the newest one. 
Searching for HOSTNAME, which is guaranteed to be a short machine name, also to matches the fqdn
in case the system is registered in Veeam under the fqdn instead of the short machine name.

 

enable default ramdisk if not set to satisfy Veeam 12.1ff requirements (#3216) :
Closes #3213

 

default.conf example for COPY_AS_IS_EXCLUDE_TSM (#3212) :
In default.conf explain how one could reduce 
the size of the ReaR recovery system initrd 
in particular on POWER architecture 
via COPY_AS_IS_TSM and alternatively 
via COPY_AS_IS_EXCLUDE_TSM, see 
https://github.com/rear/rear/issues/3189 
and describe the about 123 MiB initrd size limit on POWER 
(128 MiB minus about 4 MiB for additional prep boot data), see 
https://github.com/rear/rear/pull/3212#issuecomment-2092481874 
Also tell about generic methods to reduce the size of the initrd 
like MODULES=( 'loaded_modules' ) 
and REAR_INITRD_COMPRESSION="lzma" 
and mention that on POWER by default 
FIRMWARE_FILES=( 'no' ) is used. 

 

Merge pull request #3182 :
#3067 use exit code of nc to check BACULA directory availability
#3082 improved the way to grab the BACULA_DIRECTOR and BACULA_CLIENT

 

Better describe OUTPUT_PREFIX and NETFS_PREFIX (#3204) :
In default.conf better descriptions 
for OUTPUT_PREFIX and NETFS_PREFIX 
(OUTPUT_PREFIX was not at all described) 
plus explanation how OUTPUT_PREFIX and NETFS_PREFIX 
belong to each other for the usual case 
OUTPUT=ISO and BACKUP=NETFS 
and made it explicit that by default 
NETFS_PREFIX="$OUTPUT_PREFIX" 
to get backup.tar.gz and ISO image stored 
at the same place.

 

Add veeam support (#3150) :
Initial VEEAM Bare Metal Recovery integration 
Register the Veeam Linux Agent to Veeam VBRServer with Role of Veeam Restore Operator 
Query latest Fullbackup, mount and copy it to the original restored operating system disks 

 

Implement portable mode --portable and OUTPUT=PORTABLE

 

New unique_unsorted() function (#3177) :
In lib/global-functions.sh added a 
new unique_unsorted() function 
that outputs lines in a file or from STDIN 
without subsequent duplicate lines 
which keeps the ordering of the lines, see 
https://github.com/rear/rear/pull/3177 
In backup/NETFS/default/500_make_backup.sh use 
unique_unsorted $TMP_DIR/backup-include.txt 
to ignore duplicate arguments provided 
to 'tar' and 'rsync' what should be archived 
to avoid that 'tar' and 'rsync' archive 
exact same things multiple times 
which needlessly increases backup time and 
in case of 'tar' the backup archive size and 
storage space and backup restore time, cf. 
https://github.com/rear/rear/pull/3175#issuecomment-1985306750 

 

move all /var/run to /run directories in skel :
Fixing b838a352136811900511a209d06c809ce552e636

 

Add OS version mappings for RHEL 8 and RHEL 9 Remember MASTER version
and combinations so that RHEL 9.3 will be mapped to Fedora/9

 

Check recover mode before applying remote update Remove double check for recovery system :
Fixes #3198

 

change /var/run to be a symlink to /run accommodating current systemd requirements and FHS recommendation :
fixes #3197
maybe also fixes #3139

 

Set GRUB2_IMAGE_FORMAT correctly in prep/Linux-i386/330_set_efi_arch.sh (#3192) :
In prep/Linux-i386/330_set_efi_arch.sh 
set GRUB2_IMAGE_FORMAT=i386-efi in case of i686|i586|i386 
and set GRUB2_IMAGE_FORMAT=x86_64-efi in case of x86_64 
to fix https://github.com/rear/rear/issues/3191 
and https://github.com/rear/rear/issues/3195 
Additionally describe current GRUB2_IMAGE_FORMAT usage 
only in case of EFI so that currently it does not matter 
when GRUB2_IMAGE_FORMAT is set to a value for EFI systems 
also on BIOS systems, cf. 
https://github.com/rear/rear/issues/3191#issuecomment-2036618057 

 

Set TMPDIR to ReaR's TMP_DIR for programs that are called by ReaR :
In usr/sbin/rear set TMPDIR to ReaR's TMP_DIR (within BUILD_DIR) 
(except in RECOVERY_MODE to avoid failures in "chroot /mnt/local"). 
This ensures that also for programs that are called by ReaR 
ReaR will clean up all temporary stuff carefully and completely 
via the function cleanup_build_area_and_end_program() and 
it ensures that temporary files from programs that are called by ReaR 
are sufficiently safe against unwanted access by non-root users 
via 'mktemp -d' where BUILD_DIR and implicitly TMP_DIR=$BUILD_DIR/tmp 
has permissions only for root but none for the group or others, 
see https://github.com/rear/rear/issues/3167 
Furthermore added the changes from 
https://github.com/rear/rear/pull/3181 
to fix https://github.com/rear/rear/issues/3180 
which is also about BUILD_DIR / TMPDIR related code. 

 

Merge pull request #3183 :
Stale NFS detection in a very early stage #3109

 

Merge pull request #3176 :
skip btrfs subvolumes when detecting ESP partitions :
The idea is to find all direct partitions that contain the ESP
mount point and to skip all other transitive `fs:` dependencies.
The `diskdeps.conf` file contains following entries on default Fedora
installations (the list was shortened to only the relevant ones):
 /dev/vda1 /dev/vda
 /dev/vda4 /dev/vda
 /dev/vda5 /dev/vda
 fs:/boot/efi /dev/vda1
 fs:/boot/efi fs:/boot
 fs:/boot/efi fs:/
 fs:/boot/efi btrfsmountedsubvol:/
 fs:/boot /dev/vda4
 fs:/boot fs:/
 fs:/boot btrfsmountedsubvol:/
 fs:/ /dev/vda5
 btrfsmountedsubvol:/ /dev/vda5
The ESP partition is only on `/dev/vda1`.  However, the `find_partition` call
was not taking into account the need to skip mounted btrfs subvolumes as well.
Therefore, `/dev/vda5` was listed as an ESP partition as well.
This change makes sure that only direct ESP partitions are listed and
fixes a bug where ReaR would create broken BootXXXX entries which point to
completely unrelated partitions.

 

docs: document booting of ReaR rescue initramfs on s390/s390x (#3158) :
In doc/user-guide/04-scenarios.adoc 
document booting of ReaR rescue initramfs on s390/s390x, see the related 
https://github.com/rear/rear/issues/3149#issuecomment-1943375764

 

Allow 'shell' workflow in recovery system :
Add 'shell' to the workflows that are allowed 
to be run from within the ReaR recovery system 
because it can be useful for special cases, cf. 
https://github.com/rear/rear/issues/3170#issuecomment-1981222992

 

Update 04-scenarios.adoc :
In doc/user-guide/04-scenarios.adoc 
removed parts that mention 'udev' 
from the section about USB devices, cf. 
https://github.com/rear/rear/pull/3103#issuecomment-1973785249 
and also removed some other parts there 
which are outdated, could be misleading, 
or are questionable or discursive 
to make the text simpler and more to the point

 

Fix some of the OS detection issues (#3149) :
Delete init/default/005_verify_os_conf.sh - reasoning: 
The generation of the /etc/rear/os.conf file is permanent. 
Once it is created, it won't be regenerated unless it is manually removed. 
Therefore, it will contain incorrect values if ReaR detects them incorrectly 
like in https://github.com/rear/rear/issues/3149#issue-2125066459 
and/or it will contain stale information after major version system upgrades, 
see also https://github.com/rear/rear/issues/3149#issuecomment-1964290116 
Furthermore in lib/config-functions.sh in SetOSVendorAndVersion() 
fix the collection of VERSION_ID from /etc/os-release because 
the code had falsely assumed that the VERSION_ID value 
is enclosed in quotation marks which is false on Fedora, 
see https://github.com/rear/rear/pull/3165 and the related 
https://github.com/rear/rear/issues/3149#issuecomment-1964290116

 

Replace the OUTPUT=IPL with equivalent OUTPUT=RAMDISK (#3153) :
The initial PR with s390 support in ReaR introduced 
undocumented OUTPUT=IPL which is redundant because 
it does the same thing as the documented OUTPUT=RAMDISK. 
This commit removes the IPL directory sub-tree and introduces 
a fallback that replaces OUTPUT=IPL with OUTPUT=RAMDISK 
during the prep phase with a deprecation warning, 
see https://github.com/rear/rear/pull/3153 and the related 
https://github.com/rear/rear/issues/3149#issuecomment-1941620475

 

Merge pull request #3163 :
Error out if TMPDIR is set in user config :
Setting TMPDIR in {site,local}.conf has not worked since
0022063 (PR #2633), as discussed in #2654.

 

Update 03-configuration.adoc :
In doc/user-guide/03-configuration.adoc 
removed the outdated and obsolete part about TMPDIR=/bigdisk 
because since the default is /var/tmp there is enough space 
for things like a big ISO image

 

Update rescue-and-backup-on-same-ISO-image-example.conf :
In conf/examples/rescue-and-backup-on-same-ISO-image-example.conf 
removed wrong TMPDIR=/mnt2/tmp 
that is no longer needed since the default is /var/tmp which has enough space, cf. 
https://github.com/rear/rear/pull/3163#issuecomment-1965886579

 

Use dracut by default in SUSE 550_rebuild_initramfs.sh (#3155) :
Overhauled finalize/SUSE_LINUX/i386/550_rebuild_initramfs.sh 
Now it uses dracut by default and mkinitrd as fallback 
see https://github.com/rear/rear/issues/3152 
Additionally improved the user messages (in particular the warnings) 
to make it more clear that the point is to decide if the recreated system 
will boot with the initrd 'as is' from the backup restore, 
cf. https://github.com/rear/rear/issues/3162 
Furthermore removed the whole INITRD_MODULES code 
because INITRD_MODULES is not used and 
/etc/sysconfig/kernel does no longer exist since SLES12 
so the INITRD_MODULES code is dead code.

 

ErrorIfDeprecated when 'gpt_sync_mbr' is used (#3159) :
In layout/save/default/950_verify_disklayout_file.sh 
ErrorIfDeprecated when 'gpt_sync_mbr' is used 
see https://github.com/rear/rear/issues/3148

 

Fix issue 3151: missing .vimrc and overhauled 130_create_dotfiles.sh (#3154) :
Create an empty 
usr/share/rear/skel/default/root/.vimrc 
to fix https://github.com/rear/rear/issues/3151 
Furthermore in build/GNU/Linux/130_create_dotfiles.sh 
dynamically generate .bash_history entries depending on 
whether or not 'nano' and 'vi' are available, see 
https://github.com/rear/rear/issues/3151#issuecomment-1941544530 
and see https://github.com/rear/rear/pull/1306 regarding nano 
and https://github.com/rear/rear/issues/1298 when vi is not available. 

 

Merge pull request #3145 :
Support saving and restoring hybrid BIOS/UEFI bootloader setup and clean up bootloader detection.
Abort if BOOTLOADER=GRUB and GRUB 2 is installed:
BOOTLOADER = "GRUB" used to mean GRUB 2 if GRUB 2 was installed and GRUB
Legacy if not. With the improved GRUB detection, we don't want this
ambiguity any more. "GRUB" should mean GRUB Legacy and GRUB2 should mean
GRUB 2.
Warn when using BOOTLOADER = GRUB:
Update comments for the code that detects if the "GRUB" value for
BOOTLOADER actually means GRUB2 and emit warnings (using LogPrintError)
about "GRUB" value to mean GRUB 2 being deprecated and the GRUB Legacy
support itself being deprecated as well.
Do not error out in this situation as erroring out near the end of
recovery only to inform about a deprecated setting would be unhelpful.
Check that disk is suitable before installing GRUB:
Not all disks are suitable for GRUB installation into their MBR. For
example, GPT-partitioned disks need a BIOS boot partition
( https://www.gnu.org/software/grub/manual/grub/html_node/BIOS-installation.html )
and attempting to install GRUB on disks without it makes grub-install
error out. This is shown in the recovery log on a BIOS system with
GPT-partitioned disks, where /dev/vdb and the following disks are part
of the / volume, but don't have a BIOS boot partition.
To fix that, introduce function is_disk_grub_candidate and use it before
installing GRUB/GRUB2 on the disk. This functions currently performs the
check for the BIOS boot partition on GPT-formatted disks and the check
that the disk is not a LVM PV.
Support BOOTLOADER=GRUB with UEFI:
This will happen with hybrid boot: BOOTLOADER=GRUB indicates that there
is the BIOS version of GRUB installed and at the same time,
USING_UEFI_BOOTLOADER=1 indicates theat there is also an EFI bootloader.
Note that it is now perfectly legal to have USING_UEFI_BOOTLOADER=1
and BOOTLOADER neither EFI nor GRUB2-EFI nor ELILO. This will happen
with hybrid BIOS/UEFI booting: BOOTLOADER will be detected as GRUB2, but
USING_UEFI_BOOTLOADER=1.
BOOTLOADER=EFI is now intended as a fallback when no other bootloader is
found to avoid an empty BOOTLOADER value.
Detect GRUB2 when saving layout:
We used to distinguish between GRUB and GRUB2 when reinstalling the
bootloader. This meant that the saved bootloader was wrong: GRUB for
GRUB2. Detect GRUB2 earlier, already at the moment when we guess the
bootloader, and save the correct value.
This should help with the problem reported in PR #3128 (misdetection of
GRUB2 as GRUB on any non-SUSE distro).

 

OUTPUT=PXE: Support downloading kernel and initrd by HTTP (#3100) :
For OUTPUT=PXE added support for downloading kernel and initrd by HTTP. 
Details are described in default.conf. The main changes are: 
PXE_TFTP_URL: deprecated, use PXE_TFTP_UPLOAD_URL 
PXE_HTTP_URL: deprecated, use PXE_HTTP_DOWNLOAD_URL 
PXE_TFTP_UPLOAD_URL: where the TFTP files shall be put 
PXE_HTTP_UPLOAD_URL: where the HTTP files shall be put 
PXE_HTTP_DOWNLOAD_URL: where the HTTP files shall be downloaded from 
new prep/PXE/default/010_PXE_check.sh (deprecation warnings) 
new output/PXE/default/801_copy_to_http.sh 
see https://github.com/rear/rear/pull/3100 

 

Merge pull request #3136 :
Include GRUB tools unconditionally and don't create $VAR_DIR/recovery/bootdisk in prep.
Do not detect GRUB before including GRUB tools:
When there was a file matching grub* in /boot (e.g. /boot/grub2FAIL),
the code got confused by the glob pattern intended to match /boot/grub
or /boot/grub2 and subsequently the rest of the script was skipped, as
grubdir got assigned something like "/boot/grub2 /boot/grub2FAIL", which
does not exist, so grubdir was set to /boot/grub, which does not exist
either, and grub-probe fails.
As a result, the GRUB tools were not included in the recovery image.

 

Merge pull request #3138 :
Add support for new backup software Dell PowerProtect Data Manager.
Fully automated restore if lockbox works.
Ask admin to "set lockbox" and wait for working lockbox.
Point in time restore.
Restore EFI System Partition from ReaR rescue image if needed.
Modularise LD_LIBRARY_PATH handling for third-party backup tools.
Ensure minimum Bash version: Fixes #2941
Support automated keyboard configuration on systems with setupcon: Fixes #3133
Fix module names with underscore bug: Fixes #3137
Support Bash assoc arrays and improve rear shell.

 

Let is_write_protected() report devices without device node as not write protected (#3091) :
In lib/write-protect-functions.sh 
let the is_write_protected function report candidate devices 
without device node as not write protected 
because not all /sys/block devices have a "dev" file 
e.g. /sys/block/nvme0c0n1 has no /dev/nvme0c0n1 device node 
see https://github.com/rear/rear/issues/3085 
Because the is_write_protected function is meant to identify 
write-protected disks and partitions, only candidate devices 
with a device node are considered for write protection. 
Additionally completely overhauled lib/write-protect-functions.sh 
which now contains only the is_write_protected function 
(the only one intended to be called by other scripts). 
The former helper functions are not needed as functions because 
all what happens is a single straightforward sequence of actions. 

 

Merge pull request #3131 :
Improve the description of AUTOEXCLUDE_PATH:
Separate the example of AUTOEXCLUDE_PATH handling from the treatment of
/tmp. /tmp is a bad example, because it is handled specially by the
default setting of another config variable (BACKUP_PROG_EXCLUDE).
Use /mnt as an example for AUTOEXCLUDE_PATH instead and make clear that
AUTOEXCLUDE_PATH=( /tmp ) does not exclude files under /tmp from the
backup and an independent setting is used for that purpose.

 

Make initrd accessible only by root (#3123) :
In pack/GNU/Linux/900_create_initramfs.sh call 
chmod 0600 "$TMP_DIR/$REAR_INITRD_FILENAME" 
to let only 'root' access the ReaR initrd because 
the ReaR recovery system in the initrd can contain secrets 
(not by default but when certain things are explicitly 
configured by the user like SSH keys without passphrase) 
see https://github.com/rear/rear/issues/3122 
and https://bugzilla.opensuse.org/show_bug.cgi?id=1218728 

 

Merge pull request #3124 :
Take AUTOEXCLUDE_PATH into account in layout doc:
Since PR #2261, /media is included in the default AUTOEXCLUDE_PATH. This
means that a filesystem mounted on a directory like /media/backup will
not be included in the layout. This makes the example invalid, as it
describes how a filesystem mounted under /media/backup will be included
in the layout and what manual steps are needed to exclude it.
To preserve the validity of the example, change all paths in the example
from /media/backup to /backup.
Take this opportunity to also describe the AUTOEXCLUDE_PATH variable
among other autoexclusions.

 

More clear AUTOEXCLUDE_PATH description in default.conf :
In default.conf make it more clear how the defaults for 
AUTOEXCLUDE_PATH and BACKUP_PROG_EXCLUDE interact 
when /tmp is a separated filesystem, see 
https://github.com/rear/rear/pull/2261#discussion_r1444282008

 

Set 'dmesg -n [4-6]' in new 'setup' script 007_set_dmesg_level.sh (#3113) :
The new 'setup' stage script setup/default/007_set_dmesg_level.sh 
sets 'dmesg -n [4-6]' for the worksflows 
recover layoutonly restoreonly finalizeonly mountonly 
depending on verbose and debug modes for ReaR. 
This is related to https://github.com/rear/rear/pull/3108 

 

Set 'dmesg -n 5' in etc/scripts/boot (#3108) :
In [skel/default]/etc/scripts/boot set 'dmesg -n 5'
to limit console logging for 'dmesg' messages to level 5 
so that kernel error and warning messages appear 
(intermixed with ReaR messages) on the console 
so that the user can notice when things go wrong 
in kernel area which helps to understand problems, 
see the related issue 
https://github.com/rear/rear/issues/3107 

 

Fixed 800_enforce_usb_output.sh (#3110) :
Overhauled build/USB/default/800_enforce_usb_output.sh 
Now LogPrintError infos and BugError when OUTPUT=USB 
got somehow modified in $ROOTFS_DIR/etc/rear/local.conf 
plus explanatory comments in the code. 
Triggered by https://github.com/rear/rear/pull/3103 
and replacing this by a new pull request. 

 

Error() instead of BugError() in 850_make_USB_bootable.sh (#3104) :
In output/USB/Linux-i386/850_make_USB_bootable.sh replaced the 
BugError "Filesystem ... on $RAW_USB_DEVICE could not be found" 
with explanatory LogPrintError plus Error what the actual reason is, 
similar as in the related https://github.com/rear/rear/pull/3102 
because in most cases this is not a bug in ReaR but an error 
like a user configuration error for OUTPUT=USB e.g. 
see https://github.com/rear/rear/issues/1571 
and https://github.com/rear/rear/issues/3098 
Use first LogPrintError for an additional info message 
and then Error for the actual error message. 
In those LogPrintError plus Error message pairs 
show both $BUILD_DIR/outputfs and $RAW_USB_DEVICE 
because $BUILD_DIR/outputfs is a meaningless directory 
of the form /var/tmp/rear.XXXXXXXXXXXXXXX/outputfs 
so $RAW_USB_DEVICE provides some context to the user 
that those two messages are about his USB or disk device. 

 

Merge pull request #3105 :
Do not touch $BUILD_DIR/outputfs :
Remove a forgotten mkdir -p $BUILD_DIR/outputfs/$NETFS_PREFIX command in
restore/NETFS/default/400_restore_backup.sh.
Should have been deleted in 7dda23d708854db2d09db1308c159aea667763c0
with other code that touched the backup location.
For the YUM method, the same change was already done in 6b9d8d8508183144f56eec92b828ae037c03a6f7

 

Merge pull request #3102 :
OUTPUT=USB: add a check that OUTPUT_URL is mounted :
If OUTPUT_URL uses the file:// scheme, ReaR aborts with a weird error
message "BUG: Filesystem where the booting related files are on ...
could not be found" in output/USB/Linux-i386/850_make_USB_bootable.sh.

 

Tell WHY in DebugPrint in 320_autoexclude.sh :
In layout/save/default/320_autoexclude.sh tell WHY in DebugPrint message: 
Before (e.g. when something is mounted below tmp): 
"Automatically excluding filesystem /tmp/sdb" 
Now: 
"Automatically excluding filesystem /tmp/sdb (belongs to /tmp in AUTOEXCLUDE_PATH)" 
Noticed while reproducing https://github.com/rear/rear/issues/3101

 

New RECOVERY_COMMANDS array (#3089) :
New RECOVERY_COMMANDS array (plus RECOVERY_COMMANDS_LABEL) 
to specify the "rear recover" commands which are automatically called 
after the ReaR recovery system has started up to recreate the system 
in 'auto_recover'/'automatic' or 'unattended' mode. 
By default "rear recover" is called (which was hardcoded before). 
See https://github.com/rear/rear/pull/3070#discussion_r1397363473 
Additionally in skel/default/etc/scripts/system-setup call bash 'read' 
with a 'timeout' (normally 30 seconds or 3 seconds in unattended mode) 
to automatically proceed (in particular in unattended mode), 
cf. https://github.com/rear/rear/issues/1366 

 

Merge pull request #3070 :
New REBOOT_COMMANDS config array variable: 
In skel/default/etc/scripts/system-setup 
replaced the hardcoded 'reboot' 
by using a REBOOT_COMMANDS array 
(plus REBOOT_COMMANDS_LABEL string) 
so the user could specify a alternative command 
like 'shutdown' or 'poweroff' 
see https://github.com/rear/rear/issues/3068 
or a sequence of commands if needed 
(plus a label that is shown to the user). 
Additionally in skel/default/etc/scripts/system-setup: 
Use USER_INPUT_INTERRUPT_TIMEOUT 
and USER_INPUT_UNATTENDED_TIMEOUT 
instead of hardcoded 'sleep' timeout values 
to speed up things in 'unattended_recovery' mode. 
Show non-zero exit codes to the user 
when sourcing config files failed. 
Abort when /usr/share/rear/conf/default.conf 
does not exist (or is empty). 
Set SECRET_OUTPUT_DEV="null" 
also for sourcing other config files (e.g. local.conf), cf. 
https://github.com/rear/rear/commit/9629b29dbbb73efb6229c4bfc509d1fcb70b29e3 

 

Merge pull request #3079 :
Do not mount /sys if already mounted:
Newer versions of systemd (starting with Fedora 39) seem to mount /sys
themselves. Mounting it again leads to errors on the recovery system
startup (startup scripts failing with status=219/CGROUP ), see
https://github.com/rear/rear/issues/3017.
Do the same for the other system mountpoints like /proc, /dev, /dev/pts.
Not sure if they suffer from the same problem, but they probably could.

 

Merge pull request #3078 :
Mention xorrisofs when no ISO image tool is found:
xorrisofs is supposed to be the preferred method, so mention it first
among the suggested tools that the user can install to produce an ISO
image if none is found.

 

Merge pull request #3073 :
Resolve libs for executable links in COPY_AS_IS :
Do not skip symbolic links when adding libraries required by executables
in COPY_AS_IS. The symlink targets will be copied later by
build/default/490_fix_broken_links.sh.  We thus need library
dependencies for symlinked executables just like for normal executables
and build/default/490_fix_broken_links.sh does not perform library
dependency scan, so we need to do it at the same place as for normal
executables (in build/GNU/Linux/100_copy_as_is.sh). Otherwise it can
happen that we add a (broken) symlink via COPY_AS_IS, the actual
executable is then added by build/default/490_fix_broken_links.sh, but
without its libraries, and "rear mkrescue" then fails because required
libraries are missing. Happens for example with
/usr/lib/systemd/systemd-sysv-install, which is a symlink to
/bin/chkconfig and gets added to COPY_AS_IS in
prep/GNU/Linux/280_include_systemd.sh.
Gets rid of one exception for symlinks, which looks good in any case
(shorter and simpler code).

 

Merge pull request #3072 :
New USER_INPUT_UNATTENDED_TIMEOUT config variable 
to specify the timeout in seconds (by default 3) 
for how long UserInput() waits for user input 
when ReaR is run in 'unattended' or 'non-interactive' mode. 

 

Update default.conf :
In default.conf describe that 
with MIGRATION_MODE='TRUE' ('TRUE' in uppercase letters) 
one can enforce MIGRATION_MODE also when 
"rear recover" is run in 'unattended' or 'non-interactive' mode.

 

Update 250_compare_disks.sh :
In layout/prepare/default/250_compare_disks.sh 
use USER_INPUT_INTERRUPT_TIMEOUT (default 30) 
instead of USER_INPUT_TIMEOUT (default 300) 
because USER_INPUT_INTERRUPT_TIMEOUT matches better 
the intent of the user confirmation dialog 
when "Disk configuration looks identical"

 

Merge pull request #3061 :
Save LVM pool metadata volume size in disk layout:
Instead of letting LVM use the default pool metadata volume size when
restoring a layout with thin pools, use the size from the original
system. The pool metadata size will be saved in disklayout.conf as the
new key "poolmetadatasize" on the thin pool LV.
This makes the layout of the recovered system closer to the original
system.
Prevents some cases of recovery failures during layout restoration: if
the original system used a non-default (in particular, smaller) metadata
volume size, and the space in the VG was fully used, there would not be
enough space in the VG for recovery of all LVs (as layout restoration
would create a larger pool metadata size than before and if restoring to
disks of the same size, the space will be missing elsewhere).

 

Merge pull request #3058 :
Skip useless xfs mount options when mounting during recovery:
In the case of XFS, some of the mount options can be harmful for
mounting the filesystem during layout restoration:
The logbsize=... mount option is a purely performance/memory usage
optimization option, which can lead to mount failures, because it must
be an integer multiple of the log stripe unit and the log stripe unit
can be different in the recreated filesystem from the original
filesystem (for example when using MKFS_XFS_OPTIONS, or in some exotic
situations involving an old filesystem, see GitHub issue #2777 ). If
logbsize is not an integer multiple of the log stripe unit, mount fails
with the warning "XFS (...): logbuf size must be greater than or equal
to log stripe size" in the kernel log (and a confusing error message
"mount: ...: wrong fs type, bad option, bad superblock on ..., missing
codepage or helper program, or other error." from the mount command),
causing the layout restoration in the recovery process to fail.
Wrong sunit/swidth can cause mount to fail as well, with this in the
kernel log: "kernel: XFS (...): alignment check failed: sunit/swidth vs.
agsize".
Therefore, remove the logbsize=... and sunit=.../swidth=... from XFS
mount options before mounting the file system.

 

Update 450_check_BACULA_client_configured.sh :
In prep/BACULA/default/450_check_BACULA_client_configured.sh 
show the command or file name to the user if one is missing 
to make it clear to the user what exactly is missing. 
This enhancement was triggered by 
https://github.com/rear/rear/issues/3060

 

Merge pull request #2961 :
For the automated serial console setup for the recovery system 
use only the 'console=...' kernel arguments from the original system 
which fixes https://github.com/rear/rear/issues/2843 
and it means that no longer all "real serial devices" get 
auto-enabled as serial consoles in the recovery system, see 
https://github.com/rear/rear/pull/2749#issuecomment-1196650631 
That new default behaviour is described in default.conf. 
In particular prep/GNU/Linux/200_include_serial_console.sh 
and lib/serial-functions.sh were overhauled which results 
that rescue/GNU/Linux/400_use_serial_console.sh is obsolete. 

 

Update 510_current_disk_usage.sh :
In layout/save/GNU/Linux/510_current_disk_usage.sh 
USB_DEVICE_FILESYSTEM_LABEL must not be empty, otherwise 
readlink -f "/dev/disk/by-label/$USB_DEVICE_FILESYSTEM_LABEL" 
would result '/dev/disk/by-label'

 

Update 400_save_directories.sh :
In prep/default/400_save_directories.sh 
USB_DEVICE_FILESYSTEM_LABEL must not be empty, otherwise 
grep -vE "this|that|$USB_DEVICE_FILESYSTEM_LABEL" 
would output nothing at all.

 

Merge pull request #3054 :
Fail safe USB_DEVICE_BOOT_LABEL setting and fallback: 
In output/USB/Linux-i386/300_create_grub.sh 
check with "lsblk -no LABEL $RAW_USB_DEVICE" 
if something with USB_DEVICE_BOOT_LABEL exists on the USB device 
and if not try to use USB_DEVICE_FILESYSTEM_LABEL 
if something with that label exists on the USB device 
and if yes use that as USB_DEVICE_BOOT_LABEL, 
otherwise error out

 

Update default.conf :
In default.conf better (more generic) description 
of USB_DEVICE_FILESYSTEM_PERCENTAGE 
that also takes a possible 'bios_grub' partition 
and an optional boot partition into account.

 

Merge pull request #3053 :
Better description of BACKUP=RBME in default.conf - triggered by 
https://github.com/rear/rear/issues/3050#issuecomment-1748197886

 

Merge pull request #3047 :
Skip invalid disk drives (zero sized, no media) when saving layout:
Revert commit 0a1d634ed15500bb21f37ac1bbb11c8a4bb11545.
We now skip disks with no data (like when there is no medium), so
incomplete disk entries (without partition type) should not occur
anymore. Restore the code that aborted when such disks were encountered.
Incomplete entries should not be allowed to occur, as they could confuse
the layout restoration code. Moreover, the layout restoration wipes
all disks in the layout, so if during layout restoration there happens
to be a medium in the drive that was empty during layout save, the data
on the medium would get overwritten and lost. And if there is not medium,
the layout recreation script would fail.
See the discussion at https://github.com/rear/rear/issues/2958#issuecomment-1479588829
Validate disk when saving layout :
Introduce checks for disk usability beyond validating the device name.
In some cases the device name may be valid, but there are no data,
typically because it is a drive with removable media and there is no
medium in the tray. Happens typically with card (e.g. SD card) readers
with empty slot.
This is a normal occurrence, so do not Error out, only display a message
and skip the device.

 

Merge pull request #3043 :
Remove the lvmdevices file at the end of recovery :
The file /etc/lvm/devices/system.devices restricts LVM to disks with
given (hardware) IDs (serial numbers, WWNs). See lvmdevices(8).
Unfortunately, when restoring to different disks than in the original
system, it will mean that LVM is broken in the recovered system (it
won't find any disks).  Therefore it is safer to remove the file to
force the old behavior where LVM scans all disks. This used to be the
LVM default (use_devicesfile=0).

 

Merge pull request #3038 :
In the DoExitTasks function skip 'sleep 3' 
when all went well and DoExitTasks is called at normal exit 
to avoid needless 3 seconds delay of normal end of program.

 

Merge pull request #3037 :
Avoid multiple 'set -x' messages for one message output function call (like LogPrint): 
In lib/_input-output-functions.sh use '2>>/dev/$DISPENSABLE_OUTPUT_DEV' 
for all functions that output messages (print on the terminal or log something) 
to avoid that in debugscript mode 'set -x' debug messages 
about message output functions appear more than once in the log file. 
E.g. for "LogPrint 'text'" such 'set -x' debug messages appeared three times: 
The first one for the initial "LogPrint 'text'" call plus two more 
for the subsequently resulting "Log 'text'" and "echo 'text" calls. 
Now only one 'set -x' debug message appears in the log: 
Only the first one for the initial message output function call.

 

Merge pull request #3039 :
In doc/rear.8.adoc describe the new -e/--expose-secrets option 
see https://github.com/rear/rear/pull/3006 
and https://github.com/rear/rear/issues/2967 
Additionally a more exact description what the non-interactive mode does 
and some general simplifications of other GLOBAL OPTIONS texts.

 

Set SECRET_OUTPUT_DEV in etc/scripts/system-setup :
In usr/share/rear/skel/default/etc/scripts/system-setup 
set SECRET_OUTPUT_DEV="null" before sourcing default.conf 
see https://github.com/rear/rear/pull/3034#issuecomment-1691609782

 

Merge pull request #3036 :
Overhauled init/default/998_dump_variables.sh 
so that its intended functionality happens 
only when explicitly requested by the user 
by calling 'rear' with the 'expose-secrets' option 
to avoid that possibly confidential values 
are output into the log file by accident, see 
https://github.com/rear/rear/issues/2967

 

Merge pull request #3034 :
Use '{ SECRET COMMAND ; } 2>>/dev/$SECRET_OUTPUT_DEV' 
instead of '{ SECRET COMMAND ; } 2>/dev/null' 
because '{ ... ; } 2>>/dev/$SECRET_OUTPUT_DEV' 
makes debugging still possible for the user 
by calling rear with the '--expose-secrets' option 
and SECRET_OUTPUT_DEV makes it clear which redirections 
are explicitly meant to hide secrets to distinguish them 
from usual unwanted output discard via '2>/dev/null' 
see https://github.com/rear/rear/pull/3006 
and https://github.com/rear/rear/issues/2967 

 

Merge pull request #3031 :
Secure Boot support for OUTPUT=USB: 
In output/USB/Linux-i386/100_create_efiboot.sh 
added SECURE_BOOT_BOOTLOADER related code that is based 
on the code in output/ISO/Linux-i386/250_populate_efibootimg.sh 
with some adaptions to make it work within the existing USB code. 
The basic idea for Secure Boot booting of the ReaR recovery system 
is to "just copy" the (signed) EFI binaries of the Linux distribution 
(shim*.efi and grub*.efi as first and second stage UEFI bootloaders) 
instead of let ReaR make its own EFI binary via build_bootx86_efi() 
see https://github.com/rear/rear/pull/3031

 

Merge pull request #3030 :
In format/USB/default/200_check_usb_layout.sh 
error out if USB_DEVICE_FILESYSTEM is invalid 
instead of silently using the default value 'ext3' 
because it is clearer to abort for configuration errors 
than silently "correcting" a users's specified value, 
see https://github.com/rear/rear/issues/3029 

 

Merge pull request #3025 :
Fixed create_grub2_cfg function usage: 
Introduced GRUB2_SET_ROOT_COMMAND config variable 
in addition to the existing GRUB2_SEARCH_ROOT_COMMAND 
to get consistency how GRUB2 sets and/or searches its 'root' device 
and adapted the create_grub2_cfg function calls accordingly. 
Furthermore enhanced some messages regarding Secure Boot setup.

 

Merge pull request #3027 :
In build/GNU/Linux/100_copy_as_is.sh 
ensure to really get all COPY_AS_IS files copied by using 
'tar ... -i' when extracting to avoid a false regular exit of 'tar' 
in particular when padding zeroes get added when a file being read shrinks 
because for 'tar' (without '-i') two consecutive 512-blocks of zeroes mean EOF, 
cf. https://github.com/rear/rear/pull/3027

 

Update 830_copy_kernel_initrd.sh :
In output/USB/Linux-i386/830_copy_kernel_initrd.sh 
make it clear in the log file that the log file on USB is unfinished 
so when one is looking at such a log file on USB from another user 
one gets not confused why things are missing (e.g. the 'backup' stage) in such a log file 
cf. https://github.com/rear/rear/issues/3017#issuecomment-1620385835

 

Merge pull request #3023 :
In prep/SESAM/default/400_prep_sesam.sh 
do no longer add SESAM_WORK_DIR to COPY_AS_IS_EXCLUDE. 
After the SESAM excludes have been fixed 
via https://github.com/rear/rear/pull/3019 
tests with more recent sesam client versions have shown 
that the service fails to start up during recovery image boot 
due to missing semaphore files. Removing the sesam work directory 
where those information is stored from the excludes solves this problem. 
See https://github.com/rear/rear/issues/3018

 

Merge pull request #3019 :
In lib/sesam-functions.sh 
fix default exclude paths for BACKUP=SESAM 
because the exclude paths did contain a trailing '/' 
so 'tar' did not match ('tar' is picky about exclude items) 
and then things ended up in the ISO image, 
see https://github.com/rear/rear/issues/3018

 

Merge pull request #3006 :
New --expose-secrets option plus SECRET_OUTPUT_DEV: 
In sbin/rear added --expose-secrets option and SECRET_OUTPUT_DEV. 
Script code usage example: 
{ SECRET COMMAND ; } 2>>/dev/$SECRET_OUTPUT_DEV 
In lib/_input-output-functions.s added LogSecret function. 
Script code usage example: 
{ LogSecret "secret text" || Log "public text" ; } 2>>/dev/$SECRET_OUTPUT_DEV 
Both are requirements to solve 
https://github.com/rear/rear/issues/2967 

 

Merge pull request #2991 :
ISO OUTPUT Improvements to filter RESULT_FILES transferred

 

Merge pull request #2980 :
SYSLINUX timeout is now a configuration item

 

Merge pull request #2988 :
Implement non-interactive mode to abort on repeated UserInput calls in the absence of user interaction.
Add fully automated restore to REQUESTRESTORE, where ReaR waits for a signal file to appear.
Mention experimental state of non-interactive mode in README.

 

In layout/save/GNU/Linux/200_partition_layout.sh 
also show the disk device in the 
"Unsupported partition table" error message 
to make it meaningful on systems with more than one disk.
Add fallback wipefs command for CentOS 6.
Add -f (force) option to wipefs command in 120_include_raid_code.sh

 

Do not leak the SSH_ROOT_PASSWORD value into the log file: 
In build/default/500_ssh_setup.sh 
rescue/default/500_ssh.sh 
restore/YUM/default/970_set_root_password.sh 
restore/ZYPPER/default/970_set_root_password.sh 
run commands that deal with SSH_ROOT_PASSWORD 
in a confidential way via { confidential_command ; } 2>/dev/null 
see https://github.com/rear/rear/issues/2967

 

Do not leak the OPAL_PBA_DEBUG_PASSWORD value into the log file :
In prep/OPALPBA/Linux-i386/001_configure_workflow.sh 
run commands that deal with OPAL_PBA_DEBUG_PASSWORD 
in a confidential way via { confidential_command ; } 2>/dev/null 
see https://github.com/rear/rear/issues/2967

 

Merge pull request #2985 :
Do not leak the GALAXY11_PASSWORD value into the log file: 
In verify/GALAXY11/default/420_login_to_galaxy_and_setup_environment.sh 
run commands that deal with GALAXY11_PASSWORD 
in a confidential way via { confidential_command ; } 2>/dev/null 
see https://github.com/rear/rear/issues/2967

 

Update 04-scenarios.adoc :
In doc/user-guide/04-scenarios.adoc 
explain that when a command like 
export VAR='secret_value' 
is run on the original system, then one must ensure 
to not keep that command in a shell history file. 
This is an addedum to 
https://github.com/rear/rear/pull/2156 
which was triggered by what was done in 
https://github.com/rear/rear/pull/2982

 

Update default.conf :
In default.conf cleaned up all cases of variables for secret values 
by having a generic explanatory comment at the beginning 
(instead of several similar comments at each place) and 
by setting such variables always via { VAR=... ; } 2>/dev/null 
to mark them for us and our users that they are meant for secret values 
and also to provide templates how to set such variables properly 
in user config files (e.g. local.conf or site.conf).
In default.conf increased the default USER_INPUT_INTERRUPT_TIMEOUT 
from 10 seconds to 30 seconds because 10 seconds is far too little time 
to read and understand the possibly unexpected UserInput() message 
and then some more time to make a decision whether or not 
the automated action is actually the right one.
In default.conf make it clear that 
BACKUP_PROG_ARCHIVE is the backup file basename for BACKUP=NETFS 
but for BACKUP=RSYNC it is the backup log file basename and that 
RSYNC_PREFIX is the destination prefix directory 
where a 'backup' sub-directory will be created, see 
https://github.com/rear/rear/issues/2978

 

NFS4SERVER as new restore method (#2973) :
Added new backup method NFS4SERVER for restore via NFSv4 export (restore only)
Add ability to abort NFS4SERVER restore.

 

Merge pull request #2878 :
Exclusions for Veritas Cluster Filesystem, solving https://access.redhat.com/solutions/3214491 by default.

 

Merge pull request #2963 :
OBDR fixes for modern systems using hpsa driver:
Add more details in comment why and how we need to better handle output from lsscsi.
Previously we would search only on fixed character positions 2 4 6 8 in a line,
which on some systems with larger nubmber of devices doesn't have to be correct.
Search exactly only for 'cciss' and 'hpsa' modules. 
We need ISO to be created already in /var/lib/rear/output/rear-${HOSTNAME}.iso,
so add from ISO ../../ISO/Linux-i386/820_create_iso_image.sh.
Subsequentlyt we'll need to rename writing of ISO to tape to later stage,
so rename it from 810_write_image.sh to 840_write_image.sh.
Refactor how we'll look for a device.
In case of large number of connected devices f.x. [6:0:15:0] tape HP Ultrium 5-SCSI Y6PW /dev/st11
devices might not be recognized properly.
HP cciss driver was replaced by hpsa driver so consider it when checking tapes.

 

Merge pull request #2965 :
Add proper Python support / fix GALAXY11-related issues.
Add Galaxy Home Dir to checklayout verification.
Notice changes in GALAXY11 client to trigger recreation of rescue image.
Use dynamically determined path where galaxy home dir is located.
This is an example implementation for #2951 to run the complete prep stage
for checklayout as the Galaxy client configuration is determined there.
Include Python and dependencies.
Handling symlinks for Python interpreter.
Choose Python interpreter and stdlib only.
Copy full site and dist packages as well.

 

Update rear :
In sbin/rear quoting is mandatory in test -d "$TMP_DIR" 
otherwise 'test -d' falsely succeeds if $TMP_DIR is empty, cf. 
https://github.com/rear/rear/issues/2966#issuecomment-1497825493

 

Merge pull request #2950 :
ReaR in Docker for development & fix package dependencies.
Simple way to run a command via Docker in all, 
some or specific distros that are relevant for ReaR.
multi-arch support for run-in-docker

 

Merge pull request #2907 :
In rescue/GNU/Linux/310_network_devices.sh 
use now output of 'ls /sys/class/net/' to select all available interfaces 
regardless whether or not interfaces are configured / have an IP address 
(to exclude unwanted interfaces use EXCLUDE_NETWORK_INTERFACES) 
instead of before 'ip r' that defaults to 'ip -4 r' (so 'ip -6 r' was ignored) 
in particular to make networking also work with IPv6 only NICs 
see https://github.com/rear/rear/issues/2902 

 

Merge pull request #2956 :
New OpalPBA AuthToken feature: 
Added AuthToken generation & disk-unlocking into OpalPBA image. 
Currently encrypted tokens are stored on and read from 
plain Linux block device (e.g. USB drive, SDCard, etc). 
Supports TPM2-assisted encryption, so tokens can be made 
secure and tightly bound to device/boot environment. 
Supports 2FA authentication (additional password/pin to decrypt token) 
with basic brute-force protection. 
Allows for unattended cold booting optionally restricted 
to SecureBoot-active environment only. 
See https://github.com/rear/rear/pull/2956 

 

Update default.conf :
In default.conf added 'mt' command to REQUIRED_PROGS_OBDR 
because 'mt' is required for restore (e.g. seek with fsf), see 
https://github.com/rear/rear/issues/2637#issuecomment-1475690995

 

Merge pull request #2909 :
Inform the user when it could not umount something in certain cases: 
In output/ISO/Linux-i386/700_create_efibootimg.sh 
make umounting the EFI virtual image more fail-safe: 
When normal 'umount' fails 'sleep 1' and retry normal 'umount' 
and if it still fails log 'fuser' info and try 'umount --lazy' and if that 
also fails show the user a LogPrintError and proceed bona fide 
so the user can understand why later at the end 
cleanup_build_area_and_end_program() may show 
"Could not remove build area" 
if lazy umount could not clean up things until then, 
cf. https://github.com/rear/rear/issues/2908 
In restore/NETFS/default/400_restore_backup.sh and 
same also in restore/YUM/default/410_restore_backup.sh 
it calls umount "$BUILD_DIR/outputfs" 
because BUILD_DIR/outputfs is needed as mountpoint 
to mount something (a medium that contains the backup) 
so inform the user about an umounting failure 
(if there was something mounted at BUILD_DIR/outputfs) 
so he can understand why the subsequent mounting fails 
or why several things got mounted stacked one over the other.

 

Merge pull request #2937 :
Add support for Commvault Galaxy 11
New feature DISABLE_DEPRECATION_ERRORS to error out for deprecated code paths with option to override this.
New variable USE_RAMDISK configures rescue system to use a ramdisk for tools that need to check for free disk space.
Rework GALAXY11 to use ramdisk feature and set PATH globally.
Use Ramdisk for older Galaxy versions too.
Improve rear shell to stay in SHARE_DIR after using Source and add show helper.
Support multiple -C options and log runtime configuration.
Enable running from checkout and specify -C /etc/rear/local.conf to use host ReaR configuration.

 

Update 100_include_partition_code.sh :
In layout/prepare/GNU/Linux/100_include_partition_code.sh 
verify we could read the intended 'disk /dev/sdX ' entry (with trailing space) 
from disklayout.conf and BugError if that fails, cf. 
https://github.com/rear/rear/issues/2958#issuecomment-1477963982

 

Update 950_verify_disklayout_file.sh :
In layout/save/default/950_verify_disklayout_file.sh 
add 'dasd' to the error message because 'dasd' is 
also an allowed partition label in disklayout.conf 
since https://github.com/rear/rear/pull/2142

 

Merge pull request #2954 :
Better user messages for finalize/default/060_compare_files.sh 
In particular show some keywords to trigger the right idea 
in the user's mind what this stuff actually is about: 
Consistency of what was recreated with his restored backup. 
See https://github.com/rear/rear/issues/2952 
and https://github.com/rear/rear/pull/2954

 

Update 200_run_layout_code.sh :
lsblk MOUNTPOINTS works on SLES15-SP4 but not on SLES15-SP3 
(on SLES15-SP3 only MOUNTPOINT works)

 

Merge pull request #2953 :
New prep/default/990_verify_empty_rootfs.sh 
to verify untouched ROOTFS_DIR at the end of 'prep' 
plus enhanced prep/README to better explain 
why ROOTFS_DIR must not be touched by 'prep' scripts, 
see https://github.com/rear/rear/issues/2951

 

Update 001_verify_config_arrays.sh :
In init/default/001_verify_config_arrays.sh 
do not check comment lines for falsely assigned array variables 
cf. https://github.com/rear/rear/pull/2932 
and https://github.com/rear/rear/issues/2930

 

Merge pull request #2947 :
In layout/save/GNU/Linux/240_swaps_layout.sh
layout/save/GNU/Linux/230_filesystem_layout.sh
layout/save/GNU/Linux/200_partition_layout.sh
replaced the subshell that appends its stdout to DISKLAYOUT_FILE 
by a group command with redirection: { ... } >> $DISKLAYOUT_FILE 
see https://github.com/rear/rear/issues/2927#issuecomment-1440044143

 

Merge pull request #2943 :
s390x (IBM Z) disk formatting fixes
Enable DASDs also during "rear mountonly".
Add default value for FORMAT_DASDS to default.conf :
The default value is "" and it means to format the DASDs by default, in
an analogy with DISKS_TO_BE_WIPED.
Allow the user to skip DASD formatting entirely :
Allow to choose to skip DASD formatting from the DASD format script
confrmation dialog. Can be also set by setting the FORMAT_DASDS variable
to a false value.
Use mapping hints for comparing and mapping disks :
When disk mapping hints (DISK_MAPPING_HINTS) indicate we know the
correct mapping for a disk, use them in preference to device name and
size comparison. They are supposed to be more reliable and also they
are set by the s390-specific code for disks (DASDs) that are not yet
formatted and thus their size is not yet known, so guessing according to
disk size does not work properly.
Always let the user confirm the DASD format script :
Reformatting is a dangerous operation, equivalent to wiping disks (which
we also let the user always confirm).
Adapt DASD activation and formatting :
Move the DASD formatting code after the mapping code. Otherwise when
device names change, the code would format the old names, not the new
names.
Generate the DASD formatting code as a separate script and let the
user confirm it before it gets executed. Heavily inspired by the disk
wiping code (it is similarly destructive), but executed during the
"layout/prepare" stage and not during the "layout/recreate" stage. The
reason is that unformatted DASDs do not have their size in bytes known
(it depends on format), but other scripts in the "layout/prepare"
stage need to know the disk sizes (e.g. for resizing partitions).
The disk comparison and mapping script will now be less accurate,
because it won't know the current sizes if disks are not formatted. To
compensate, introduce a variable called DISK_MAPPING_HINTS that allows
the DASD activation code to pass the information on changed disk names
to the rest of the layout code (the identification is based on virtual
device numbers).
Layout changes and fixes for S/390 DASDs :
Simplify syntax of dasd_channel directive. The previous syntax had
some useless fields, like the major:minor number and status.
Fix obtaining the entry from lsdasd output: "grep $blockd" did not
work properly, because if $blockd == dasda and there also disks named
dasdaa and dasdab (this will be the case with more than 26 DASDs), the
command would print all three lines instead of just the correct one
and break the resulting format.
Eliminate the "dasdfmt" directive, merge its fields into
the "disk" directive. This has the advantage that the exclusion code
eliminates the "disk" lines for unused disks automatically.
Previously, the "dasdfmt" lines for unused disks stayed in the layout
file, which later caused the unused disks to be reformatted
unconditionally (including disk with the backup itself on
it if one used a local storage for backup).
Unfortunately it means that the format of the "disk" directive now
depends on the disk label type: dasd disks have extra fields that
other disk types don't have.
Add information about number of cylinders to the disk directive for
DASDs, it is more stable than the size in bytes (which depends on
the format). Currently unused.

 

Update rear :
In usr/sbin/rear show different messages for different things 
(config file cannot be read versus config file cannot be sourced) 
to avoid that the user gets two times the same message 
which looks like an unintended duplicated output 
but actually it is two messages for two similar things. 
Triggered by https://github.com/rear/rear/issues/2936

 

Merge pull request #2932 :
check for wrong syntax of array assignments in user configs
(disabled on ancient systems with bash 3)

 

Update 330_find_isolinux.sh :
In prep/ISO/Linux-i386/330_find_isolinux.sh 
less misleading error message when isolinux.bin cannot be found 
(no longer show a distribution specific software package name), 
see https://github.com/rear/rear/issues/2921

 

Update 230_filesystem_layout.sh :
In layout/save/GNU/Linux/230_filesystem_layout.sh 
add 'chattr' to REQUIRED_PROGS (and not only to PROGS) 
because 'chattr' is called in diskrestore.sh 
see https://github.com/rear/rear/issues/2927

 

Update 420_autoresize_last_partitions.sh :
Fixed fallback assignments of mandatory values 
to not let them evaluate to nonsense commands, see 
https://github.com/rear/rear/issues/2926

 

Merge pull request #2915 :
In lib/serial-functions.sh make the 
get_serial_console_devices() function 
fail-safe if no serial device node exists, see 
https://github.com/rear/rear/issues/2914

 

Merge pull request #2910 :
In finalize/Linux-ppc64le/660_install_grub2.sh remove the 
"mount --bind <proc|sys|dev> at TARGET_FS_ROOT" 
section because that is meanwhile done generically in 
finalize/default/110_bind_mount_proc_sys_dev_run.sh 
since https://github.com/rear/rear/issues/2045 
but there the file finalize/Linux-ppc64le/..._install_grub2.sh 
was accidentally forgotten (see its initial description), 
see https://github.com/rear/rear/pull/2910 

 

Merge pull request #2905 :
OUTPUT=USB: Use target=i386-pc for legacy BIOS GRUB2 install on EFI systems: 
grub-install defaults to '--target=x86_64-efi' when the system is booted with EFI. 
So setting a legacy BIOS target is needed when the system is booted with EFI. 
See https://github.com/rear/rear/issues/2883

 

Merge pull request #2904 :
In output/USB/Linux-i386/850_make_USB_bootable.sh 
install extlinux for OUTPUT=USB also for a vfat boot partition 
because since SYSLINUX version 4.00 extlinux also works for vfat 
see https://github.com/rear/rear/issues/2884

 

Merge pull request #2903 :
Protect against colons in pvdisplay output :
LVM can be configured to show device names under /dev/disk/by-path
in command output. These names often contain colons that separate fields
like channel and target (for example /dev/disk/by-path/pci-*-scsi-0:0:1:0-*,
similarly the pci-* part, which contains colon-separated PCI bus and
device numbers). Since the "pvdisplay -c" output also uses colons as
field separators and does not escape embedded colons in any way,
embedded colons break parsing of this output.
As a fix, use the pipe character '|' as the field separator in pvdisplay
output. (This would break if a PV device has a '|' in its name, but this
is very much less likely than having a ':' .)
Also, configure explicitly what fields to output - "pvdisplay -c"
prints many fields, but I have not found documentation about what fields
is it using exactly, so one had to guess what the output means. Using
"pvdisplay -C" and selecting the fields explicitly is much clearer.
This also changes the PV size field to match documentation, the comment
says that size is in bytes, but it actually was not in bytes. As nothing
is actually using the PV size field, this inconsistency has not caused
any problem in practice, and no code needs adjusting for the change.

 

Merge pull request #2901 :
BACKUP=BAREOS: fix bconsole CLI argument format in 
prep/BAREOS/default/500_check_BAREOS_bconsole_results.sh 
Bareos 22 introduced a breaking change how its CLI tools 
(such as bconsole) parse the arguments. 
Before it was "bconsole -xc" but since Bareos 22 it must be "bconsole --xc" 
(otherwise it terminates with exit code 113 so "rear mkrescue" will fail). 
Before "bconsole ...xc" is called, it now checks the bconsole version 
and uses the new argument format '--xc' when version >= 22. 
The backward compatible fallback is "bconsole -xc".

 

Merge pull request #2894 :
For BACKUP=SESAM with SESAM version 5.x two more directories 
$SM_BIN_SESAM/python3/ and $SM_BIN_SMS are needed 
in SESAM_LD_LIBRARY_PATH to avoid missing libraries 
(SM_BIN_SMS is defined in the config file set in sesam2000ini_file). 
The reason behind is that SEP has obsoleted python2 to python3, 
and additional libraries are now included within the python3 subdirectory. 
Additionally RTS components need additional libraries from the SMS subfolder. 
See https://github.com/rear/rear/pull/2894 

 

Update default.conf :
In default.conf tell what gets stored in the ESP on a USB disk: 
The ReaR recovery system kernel and initrd and BOOTX64.efi 
cf. https://github.com/rear/rear/pull/2829#issuecomment-1168547117 
and https://github.com/rear/rear/issues/2881
In default.conf also tell that grub.cfg is stored in the ESP 
on a USB disk to have that part of the description complete 
cf. https://github.com/rear/rear/pull/2829#issuecomment-1168547117

 

Merge pull request #2876 :
Implement initial basic 'barrel' support as a first step 
mainly in layout/recreate/default/200_run_layout_code.sh 
and in the new layout/save/default/550_barrel_devicegraph.sh 
Barrel is a command-line program for storage management 
in particular for a SUSE specific storage layout 
which is available since SLES15-SP4, see 
https://github.com/aschnell/barrel 
Barrel can save and recreate a whole storage layout, see 
https://github.com/rear/rear/issues/2863 
The current basic 'barrel' support is implemented as optional 
and additional possibility when the 'barrel' program is there. 
ReaR's native method via disklayout.conf and diskrestore.sh 
is still used and working unchanged as before in parallel 
so that when 'barrel' is used during "rear recover" but it fails, 
the user can switch back to recreating with diskrestore.sh 
which is the reason for some new choices during "rear recover", 
in particular "Again wipe the disks in DISKS_TO_BE_WIPED" 
to wipe what 'barrel' had setup before diskrestore.sh is run. 
Additionally during "rear recover" it shows now 'lsblk' output 
on the user's terminal to make it easier for the user to see 
what disk layout got recreated to decide if that is right or wrong. 
Furthermore there is now the new choice to 
"Confirm what is currently on the disks and continue 'rear recover'" 
so that the user can manually fix things (in particular smaller things) 
by only using the ReaR shell and then confirm what he created 
on his disks and continue with restoring the backup, see 
https://github.com/rear/rear/pull/2876 

 

Merge pull request #2873 :
Fix initrd regeneration on s390x and Fedora/RHEL :
For some reason, the 550_rebuild_initramfs.sh script was not included
for s390x on Fedora/RHEL so the initrd was not regenerated after backup
restore on this architecture.
Since all other architectures were actually using the same script,
let's just move it one level up to fix this bug and to also simplify
the directory structure a bit.

 

Merge pull request #2872 :
In default.conf more accurate description of BACKUP=EXTERNAL 
and PING to better match what is actually implemented, see 
https://github.com/rear/rear/issues/2870#issuecomment-1261045942 
plus some general improvements of all the comments 
e.g. removed the colloquial word 'stuff' where not useful and 
made blocks of config variables that belong together more clear 
by using '####' as indicators where a block begins and ends. 

 

Merge pull request #2868 :
In the UserInput function drain stdin if stdin is a terminal (i.e. in interactive mode): 
The primarily intended use case is to discard possibly already existing characters 
(in particular ENTER keystrokes) from stdin to avoid that 
when the user had accidentally hit ENTER more than once 
in (or after) a previous UserInput dialog (or another dialog) 
then those additional ENTER characters would be already in stdin 
and let the next UserInput dialog proceed unintendedly automatically 
without an explicit ENTER from the user for this current dialog, 
see https://github.com/rear/rear/issues/2866 

 

Merge pull request #2857 :
In output/PXE/default/810_create_pxelinux_cfg.sh 
insert missing '$pxe_link_prefix' for the IP case 
also for the "if has_binary gethostip" part, see 
https://github.com/rear/rear/pull/2851#issuecomment-1237939248 
Additionally clean up the indentation in 
output/PXE/default/810_create_pxelinux_cfg.sh 
plus some more "cleanup" code and comments changes 
(including minor bug fixes).

 

Merge pull request #2859 :
By default let "rear recover" wipe disks that get completely recreated 
via DISKS_TO_BE_WIPED="" in default.conf 
In ReaR 2.7 default.conf has DISKS_TO_BE_WIPED='false' 
but now after ReaR 2.7 release this feature should be used 
by default by users who use our GitHub master code 
so that we could use it by default in ReaR 2.8. 
See https://github.com/rear/rear/pull/2514 
and https://github.com/rear/rear/issues/799

 

Update _input-output-functions.sh :
Since https://github.com/rear/rear/commit/74de0966a5f21fb41531e9d4711932b6df83856a 
the default USER_INPUT_INTERRUPT_TIMEOUT is 10 seconds 
so set the same default value in the UserInput() function.

 

Merge pull request #2851 :
In output/PXE/default/810_create_pxelinux_cfg.sh 
insert missing '$pxe_link_prefix' for the MAC case 
because PXE_CONFIG_GRUB_STYLE=y 
did not work with PXE_CREATE_LINKS=MAC 
see https://github.com/rear/rear/issues/2850

 

Merge pull request #2846 :
Implement a new config variable BORGBACKUP_IGNORE_WARNING 
which ignores Borg warnings (see its description in default.conf). 
Borg warnings can happen if a file changed while backing it up. 
See https://github.com/rear/rear/pull/2846

 

Merge pull request #2844 :
Overhauled rescue/GNU/Linux/290_kernel_cmdline.sh 
in particular to make it possible to add several already existing 
kernel options by this script with same kernel option keyword 
for example when /proc/cmdline contains 
... console=ttyS0,9600 ... console=tty0 ... 
then via COPY_KERNEL_PARAMETERS+=( console ) 
cf. https://github.com/rear/rear/pull/2749#issuecomment-1197843273 

 

Merge pull request #2839 :
Pass -y to lvcreate instead of piping the output of yes

 

Better description of COPY_KERNEL_PARAMETERS in default.conf, 
cf. https://github.com/rear/rear/pull/2749#issuecomment-1197843273