[1]Relax-and-Recover * [2]Home * [3]Features * [4]Documentation * [5]Downloads * [6]Support * [7]Development * [8]Events

                      Release Notes for Relax-and-Recover Version 2.9

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

Relax-and-Recover website: 9

GitHub project: 10

For the release notes of previous Relax-and-Recover versions see the Relax-and-Recover website release notes: 11

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 backup management software. In many enterprise environments, 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' andrsync' that are used for backup and restore.

ReaR integrates support for 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 [12]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 [13]Dell PowerProtect Data Manager * RBME [14]Rsync Backup Made Easy * REQUESTRESTORE Request restore from a human operator * RSYNC ReaR built-in backup using rsync via rsync or ssh protocol * SESAM [15]SEP Sesam * TSM IBM Storage Protect / Tivoli Storage Manager / IBM Spectrum Protect * VEEAM Veeam Backup

ReaR integrates well with Disaster Recovery Linux Manager (DRLM) [16]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 [17]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.9 see 18

ReaR 2.9 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.9 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.9 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. [19]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.9 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.9 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.9 is supported on: * Intel x86 (32bit and 64bit) architectures * AMD x86 (64bit) architecture * PPC64LE architecture

ReaR 2.9 may or may not work on: * PPC64 processors * Intel Itanium processors * ARM type of processors * IBM Z "s390x" type of processors

ReaR 2.9 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.9: * 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) * [20]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 recent releases only, please refer to [21]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.

To see all changes use the `git log' command on a local git clone/checkout or view the current ReaR GitHub master branch code changes [22]https://github.com/rear/rear/commits/master.

Relax-and-Recover Version 2.9 (January 2025)

Interim release to solve packaging issues on RPM-based distributions and several other fixes: * Create /var/run symlink dynamically during mkrescue. Not having it as an actual symlink in the source tree avoids the packaging problem that [23]RPM is not able to change a directory into a symlink and vice-versa during package upgrade (before ReaR 2.8 it was a directory, not a symlink). See [24]https://github.com/rear/rear/pull/3380 and [25]https://github.com/rear/rear/issues/3375. * Adapted the RPM spec to the [26]merge of /usr/bin with /usr/sbin in Fedora 42+. See [27]https://github.com/rear/rear/pull/3382. * Add `timeout' to REQUIRED_PROGS - avoids a false "ERROR: Stale NFS mount point" in the recovery system. See [28]https://github.com/rear/rear/pull/3387 and [29]https://github.com/rear/rear/issues/3386.

Details

To view all ReaR 2.9 changes go to GitHub [30]https://github.com/rear/rear/commits/rear-2.9.

Relax-and-Recover Version 2.8 (December 2024)

Things like issue NNNN' or only#NNNN' refer to the GitHub issues tracker [31]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
   [32]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 [33]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 view all ReaR 2.8 changes go to GitHub [34]https://github.com/rear/rear/commits/rear-2.8.

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-include.txt and backup-exclude.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 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

[35]

If you like Relax-and-Recover please consider sponsorship

References

  1. https://relax-and-recover.org/
  2. https://relax-and-recover.org/
  3. https://relax-and-recover.org/about/
  4. https://relax-and-recover.org/documentation/
  5. https://relax-and-recover.org/download/
  6. https://relax-and-recover.org/support/
  7. https://relax-and-recover.org/development/
  8. https://relax-and-recover.org/events/
  9. https://relax-and-recover.org/
  10. https://github.com/rear
  11. https://relax-and-recover.org/documentation
  12. https://docs.bareos.org/Appendix/DisasterRecoveryUsingBareos.html#linux
  13. https://infohub.delltechnologies.com/en-us/t/simplifying-linux-bmr-for-powerprotect-data-manager-using-rear-relax-and-recover-disaster-recovery-solution/
  14. https://github.com/schlomo/rbme
  15. https://wiki.sep.de/wiki/index.php/Bare_Metal_Recovery_Linux
  16. https://drlm.org/
  17. https://relax-and-recover.org/support
  18. https://github.com/rear/rear/wiki/Test-Matrix-ReaR-2.9
  19. https://en.opensuse.org/Portal:Tumbleweed
  20. https://docs.oracle.com/en/database/oracle/oracle-database/23/ostmg/asm-intro.html
  21. https://relax-and-recover.org/documentation
  22. https://github.com/rear/rear/commits/master
  23. https://docs.fedoraproject.org/en-US/packaging-guidelines/Directory_Replacement/
  24. https://github.com/rear/rear/pull/3380
  25. https://github.com/rear/rear/issues/3375
  26. https://fedoraproject.org/wiki/Changes/Unify_bin_and_sbin
  27. https://github.com/rear/rear/pull/3382
  28. https://github.com/rear/rear/pull/3387
  29. https://github.com/rear/rear/issues/3386
  30. https://github.com/rear/rear/commits/rear-2.9
  31. https://github.com/rear/rear/issues
  32. https://github.com/rear/rear/blob/master/doc/user-guide/17-Portable-Mode.adoc
  33. https://github.com/aschnell/barrel
  34. https://github.com/rear/rear/commits/rear-2.8
  35. https://relax-and-recover.org/support/sponsors