Comment 39 for bug 963106

The /DEBUG file shows that modem-manager is still running, and at line
114 you can see that the init process has /var/log/upstart/modemmanager
open for write. That explains the "mount: / is busy" message.

I would think that modem-manager should have exited before umountroot is
run. Looking at /etc/init.d/sendsigs, it appears that processes
associated with upstart jobs (like modemmanager) aren't killed, and I
see no facility there for waiting on them to exit.

I'm not an ubuntu developer, but if you care to try an experiment, you
could try adding a sync command to line 64 of /etc/init.d/sendsigs .
This is just before a comment that starts 'Upstart jobs have their own'
and a sequence of code that collects the pids of upstart jobs into a
list of pids to ignore (i.e. pids not to kill). If modem-manager or
init are waiting on i/o to complete, a sync here might give
modem-manager time to exit before it gets put into the OMITPIDS list.

If you decide to change sendsigs, be sure to make a backup copy first:

sudo cp -p /etc/init.d/sendsigs ~

Other than that, I don't have any new ideas. Let's hope that Mathieu or
another one of the powers-that-be will now jump in with some suggestions
as to how to proceed.