[systemd-devel] No maintenance shell on local fs failure (/bin/sh: no such file or directory)

Lennart Poettering lennart at poettering.net
Sun Jan 17 08:19:38 PST 2016


On Fri, 15.01.16 11:40, Frank Steiner (fsteiner-mail1 at bio.ifi.lmu.de) wrote:

> In case someone else steps in this;
> 
> Frank Steiner wrote
> 
> > Hi,
> > 
> > on one of my serves I have a LVM that, due to an error in my lvm.conf,
> > couldn't be mounted on boot. But I didn't get a  maintenance shell as
> > I usually got on other servers, the output just stopped after complaining
> > with
> > [ TIME ] Timed out waiting for device dev-mapper-exportraidcu...tcurry2.device.
> > [DEPEND] Dependency failed for /export.
> > [DEPEND] Dependency failed for Local File Systems.
> > ...
> > 
> > So I debugged this and could grep the output from a serial console.
> > It seem that the rootfs vanishes at some point, because I see such
> > messages:
> > 
> > About to execute: /bin/echo -e 'Welcome to emergency mode! After logging in, type "journalctl -xb" to view\nsystem logs, "systemctl reboot" to reboot, "systemctl default" to try again\nto boot into default mode.'
> > Forked /bin/echo as 4290
> > Failed at step CHDIR spawning /bin/echo: No such file or directory
> > ...
> 
> This didn't mean that /bin/echo was not found, but the CHDIR failed!
> That was caused by /root being a symbolic link to /local/home/root
> (we strictly separate any user data including root from the system, so
> that we can reformat / on reinstalling or upgrading the system).
> But /usr/lib/systemd/system/emergency.service contains:

Well, it's a really bad idea to move the root user's home directory
out of the root dir, and we don't really support that. /root is
hard-coded as the root user's home directory at a veriety of places in
systemd and other packages, hence you'll run into problems with this
not just here but at many other places too. Having /root on an
external partition in particular is doomed, precisely because it
creates the problems you just ran into. There's a reason why Linux
distributions place root's home directory at /root, rather than
/home/root, after all...

That said, we probably shouldn't choke on this in this case, hence
I'll prep a patch that changes WorkingDirectory=/root for those
services to WorkingDirectory=-/root, i.e. make the non-existence of
the specified working directory non-fatal.

Lennart

-- 
Lennart Poettering, Red Hat


More information about the systemd-devel mailing list