Invalid fstab entry leads to an hanging system rather than a debug command line

Bug #1471258 reported by Sebastien Bacher
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
systemd (Ubuntu)
Fix Released
High
Martin Pitt

Bug Description

While playing with the new desktop iso I had a case of buggy fstab entry, that leads to a system hanging out boot, it should send you to a debug shell or friendly recovery instead

Martin Pitt (pitti)
Changed in systemd (Ubuntu):
importance: Undecided → High
status: New → Triaged
assignee: nobody → Martin Pitt (pitti)
Revision history for this message
Martin Pitt (pitti) wrote :

Keeping notes: I added "LABEL=mystery /var ext4 defaults 0 0" to /etc/fstab to try and reproduce this.

 - On a standard cloud image (server-ish, no graphical plymouth) boot waits for the device to appear for 90s, times out, and I get into the emergency shell. So that works alright.

 - On a standard desktop image (graphical plymouth) I see the running dots for 90s, then they stop. I need to switch to Alt+F7 to see the emergency shell, because plymouth does not get stopped. So that's something to fix. Is that the case for you as well? I. e. is it just that the emergency shell doesn't appear by itself but you can switch VT to it? Or do the plymouth dots just go on and on? Where can I download that desktop ISO?

Revision history for this message
Martin Pitt (pitti) wrote :

Our emergency.service already has an"ExecStartPre=/bin/plymouth quit", but it seems that's not sufficient. It also needs a plymouth --wait, then I do get the shell. It still has some clutter from previous bios/kernel messages, this needs an additional "clear".

Revision history for this message
Sebastien Bacher (seb128) wrote :

The image I was trying by then was a snappy personal with a buggy fstab, the images are built with udf and not stored. I'm going to try if I can reproduce with the current image by mount rw and changing fstab and rebooting

note that I'm testing those in a vm and that the plymouth logo is not displayed (unsure why) but I get the text output, I didn't try to change vt to see if the debug console was somewhere

Revision history for this message
Martin Pitt (pitti) wrote :

Upstream proposed fix for the worse half of this: https://github.com/systemd/systemd/pull/535

Changed in systemd (Ubuntu):
status: Triaged → In Progress
Martin Pitt (pitti)
Changed in systemd (Ubuntu):
status: In Progress → Fix Committed
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (4.5 KiB)

This bug was fixed in the package systemd - 222-2ubuntu1

---------------
systemd (222-2ubuntu1) wily; urgency=medium

  * Merge with Debian unstable. Remaining Ubuntu changes:
    - Hack to support system-image read-only /etc, and modify files in
      /etc/writable/ instead.
    - Keep our much simpler udev maintainer scripts (all platforms must
      support udev, no debconf).
    - initramfs init-bottom: If LVM is installed, settle udev,
      otherwise we get missing LV symlinks. Workaround for LP #1185394.
    - Add debian/udev.lvm2.init: Dummy SysV init script to satisfy insserv
      dependencies to "lvm2" which is handled with udev rules in Ubuntu.
    - Add debian/udev.lvm2.service to avoid running the dummy lvm2 init
      script.
    - Provide shutdown fallback for upstart. (LP: #1370329)
    - debian/extra/ifup@.service: Additionally run for "auto" class. We don't
      really support "allow-hotplug" in Ubuntu at the moment, so we need to
      deal with "auto" devices appearing after "/etc/init.d/networking start"
      already ran. (LP: #1374521) Also run ifup in the background during boot,
      to avoid blocking network.target. (LP: #1425376)
    - ifup@.service: Drop dependency on networking.service (i. e.
      /etc/init.d/networking), and merely ensure that /run/network exists.
      This avoids unnecessary dependencies/waiting during boot and dependency
      cycles if hooks wait for other interfaces to come up (like ifenslave
      with bonding interfaces). (LP: #1414544)
    - Add Get-RTC-is-in-local-time-setting-from-etc-default-rc.patch: In
      Ubuntu we currently keep the setting whether the RTC is in local or UTC
      time in /etc/default/rcS "UTC=yes|no", instead of /etc/adjtime.
      (LP: #1377258)
    - Put session scopes into all cgroup controllers. This makes unprivileged
      user LXC containers work under systemd. (LP: #1346734)
    - systemctl: Don't forward telinit u to upstart. This works around
      upstart's Restart() always reexec'ing /sbin/init on Restart(), even if
      that changes to point to systemd during the upgrade. This avoids running
      systemd during a dist-upgrade. (LP: #1430479)
    - Drop hwdb-update dependency from udev-trigger.service, which got
      introduced in v219-stable. This causes udev and plymouth to start too
      late and isn't really needed in Ubuntu yet as we don't support stateless
      systems yet and handle hwdb.bin updates through dpkg triggers. This can
      be dropped again with initramfs-tools 0.117.
    - Lower Breaks: to plymouth version which has the udev inotify fix in
      Ubuntu.
    - Lower apparmor Breaks: to the Ubuntu version that dropped $remote_fs.
    - Change systemd-sysv's conflicts to upstart-sysv. (LP: #1422681)

    Upgrade fixes, keep until 16.04 LTS release:
    - systemd Conflicts/Replaces/Provides systemd-services.
    - Remove obsolete systemd-logind upstart job.
    - Clean up obsolete /etc/udev/rules.d/README.
    - systemd.postinst: Migrate mountall specific fstab options to standard
      util-linux "nofail" option.

  * ifup@.service: Run ifup for "auto" class in ExecStart instead of
    ExecStartPost, as it spawns a long-run...

Read more...

Changed in systemd (Ubuntu):
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.