#1171 PR merged
: Removed needless login shell from chroot calls where possible¶
Labels: cleanup
, fixed / solved / done
, minor bug
jsmeix opened issue at 2017-01-18 15:46:¶
see https://github.com/rear/rear/issues/862
jsmeix commented at 2017-01-18 15:49:¶
The only "chroot ... bash --login" call that is left is in
finalize/Debian/i386/170_rebuild_initramfs.sh
chroot $TARGET_FS_ROOT /bin/bash --login -c "/usr/share/mdadm/mkconf >/etc/mdadm/mdadm.conf"
because of the stdout redirection.
jsmeix commented at 2017-01-19 12:57:¶
Do not merge it!
It does not yet work.
This one is RFC 1925 (8): "It is more complicated than you think."
jsmeix commented at 2017-01-19 13:52:¶
Now it works for me on SLES12:
RESCUE e205:~ # rear -d -D recover ... Restoring finished. ... Running mkinitrd... Recreated initrd (/sbin/mkinitrd). Installing GRUB2 boot loader Finished recovering your system. You can explore it under '/mnt/local'.
FYI:
I need in local.conf
OS_MASTER_VENDOR="SUSE_LINUX/i386"
(or something else like that) because otherwise
finalize/SUSE_LINUX/i386/170_rebuild_initramfs.sh
is not sourced.
Whether or not a rebuild_initramfs script should be sourced
in any case is a different issue - I never had issues with the
initrd on my test systems so that a rebuild_initramfs script
seems to be not really mandatory.
jsmeix commented at 2017-01-19 14:03:¶
@gdha
could you please review whether or not
it still works for you with my changes in
finalize/Fedora/i386/170_rebuild_initramfs.sh
FYI:
By the way I found a chroot call in
finalize/Linux-i386/220_install_grub2.sh
where I think that cannot work:
chroot $TARGET_FS_ROOT $grub_name-mkconfig -o /boot/$grub_name/grub.cfg
because $grub_name evaluates to "grub2" or "grub"
but chroot requires usually a full path to be executed like
RESCUE e205:~ # chroot /mnt/local ifconfig chroot: failed to run command 'ifconfig': No such file or directory RESCUE e205:~ # chroot /mnt/local /sbin/ifconfig eth0 Link encap:Ethernet HWaddr 52:54:00:25:A4:49 ...
see also my new code regarding "mkinitrd_binary" in
finalize/Fedora/i386/170_rebuild_initramfs.sh
gdha commented at 2017-01-20 10:19:¶
@jsmeix Merged it - results will be posted in https://github.com/gdha/rear-automated-testing/issues/13
jsmeix commented at 2017-01-20 12:58:¶
@gdha
many thanks for your careful review!
FYI regarding who the 'I' actually is:
To find out who made what in a file I use usually
the git command "git log -p --follow file.sh".
For the 170_rebuild_initramfs.sh files
that command shows as the oldest entry always
commit 844d50b75ac4b7722f4fee7a5ee3350b93f3adb7 Author: Schlomo SchapiroDate: Sun Jun 6 08:30:21 2010 +0000 - Integrated P2V patch from Heinlein Support. We start with 1.9 now to
It is the same commit
https://github.com/rear/rear/commit/844d50b75ac4b7722f4fee7a5ee3350b93f3adb7
for
finalize/Fedora/i386/170_rebuild_initramfs.sh
finalize/Debian/i386/170_rebuild_initramfs.sh
finalize/SUSE_LINUX/i386/170_rebuild_initramfs.sh
so that I think the 'I' could be Peer Heinlein
and Schlomo only comitted his changes?
gdha commented at 2017-01-20 16:53:¶
@jsmeix I can confirm the modifications work well on CentOS7
jsmeix commented at 2017-01-23 09:50:¶
@schlomo
many thanks for the information!
I will do a separated pull request
where I let ReaR show same kind of warning
as near the end of the code about
"Cannot create initramfs"
if the udev requirement is not fulfilled.
Regarding LogPrint messages like
WARNING: Cannot create initramfs ... Check the recreated system (mounted at /mnt/local) and decide yourself, whether the system will boot or not.
@schlomo
because I know what you think about warning messages:
Schould I remove the word "WARNING:" from those
messages and make it a plain information?
schlomo commented at 2017-01-23 10:21:¶
Thanks @jsmeix for your consideration.
One one hand the warning is justified as it really means "I don't know".
On the other hand we should try to give the user even more information here. For example, which systems don't have udev nowadays? Maybe we can say that ReaR 2 actually requires udev and fails without? Then you could get rid of this warning.
Another thought: Maybe we should expand this to be a generic feature and
collect such warnings in a list of RECOVERY_NOTICE[@]
which we display
at the end. In an automated recovery having a non-empty list of recovery
notices would be an error, in a manual recovery it would be printed as
user info.
jsmeix commented at 2017-01-23 11:39:¶
I have to think a bit more about it.
I think the idea behind something like a RECOVERY_NOTICE array
is related to
https://github.com/rear/rear/issues/1134
because also in an automated recovery proper exit codes
could be used to signal something to the user.
In other words:
If in an automated recovery a RECOVERY_NOTICE
would be an error, rear should exit with an appropriate
non-zero exit code in this case to singal the user:
Not a fatal error (e.g. after calling the Error function)
but also not a clean recovery.
jsmeix commented at 2017-05-08 07:58:¶
It seems using no login shell for chroot calls
causes more issues that it solves, see
https://github.com/rear/rear/pull/1345
[Export of Github issue for rear/rear.]