git: initrd/oinit: chdir to the new root before chroot to it
Sascha Wildner
swildner at crater.dragonflybsd.org
Mon Mar 12 00:23:24 PDT 2018
commit e112f3ff35c1e493d85b52014ad2bbdf7c9a9c39
Author: Aaron LI <aly at aaronly.me>
Date: Mon Mar 12 12:10:39 2018 +0800
initrd/oinit: chdir to the new root before chroot to it
chroot(2) doesn't change the working directory of the current process,
therefore a single chroot(2) to a new root (during the early boot with
encrypted root) causes getcwd(3) fail, which further causes problems for
some rc scripts.
For example:
Without this fix, and by placing a 'echo "PWD=`pwd`"' to the beginning
of /etc/rc, the following messages were logged on the console:
Mar 12 10:40:28 dfly kernel: pwd: .: No such file or directory
Mar 12 10:40:28 dfly kernel: PWD=
Another example with "unbound" rc start:
Mar 3 09:28:11 dfly kernel: Obtaining a trust anchor:
Mar 3 09:28:11 dfly kernel: _su: No such file or directory
Mar 3 09:28:11 dfly kernel: _su: Trying to start from "/"
Mar 3 09:28:12 dfly kernel: .
Mar 3 09:28:12 dfly kernel: [1520040492] unbound-checkconf[1138:0] error: cannot getcwd: No such file or directory
Mar 3 09:28:12 dfly kernel: Starting unbound.
Mar 3 09:28:12 dfly kernel: [1520040492] unbound[1139:0] warning: unbound is already running as pid 1139.
uWSGI rc startup also failed to setup correct working directory due to
this problem.
Summary of changes:
share/initrd/mini_init/oinit.c | 4 ++++
1 file changed, 4 insertions(+)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/e112f3ff35c1e493d85b52014ad2bbdf7c9a9c39
--
DragonFly BSD source repository
More information about the Commits
mailing list