TODO list

See also [WartyWarthog/usplash] (Usersplash/microsplash/Ubuntusplash) aka Mad Phat Splash

fsck attention seeking

Current code that runs fsck is in:

  • /etc/init.d/

    echo "Checking all file systems..."
    fsck $spinner -R -A $fix $force
    if [ $? -gt 1 ]
      echo "fsck failed.  Please repair manually."
      echo "CONTROL-D will exit from this shell and continue system startup."
      # Start a single user shell on the console
      /sbin/sulogin $CONSOLE

A chvt/unotify can be added before the sulogin command. *However*, fsck supports an option -r for interactive conformations to repair the filesystem; ...but it's the default and there doesn't seem to be an option to *not* interactively repair the filesystem (we need it fail so that we can chvt to it).

       -r     Interactively repair the filesystem (ask  for  confirmations).   ...

Looks like this can be got around with -n:

       -n     Open the filesystem read-only, and assume an answer
              of `no' to all questions.  Allows e2fsck to be used

fsck progress bar

       -C fd  This  option  causes  e2fsck  to  write  completion
              information to the  specified  file  descriptor  so
              that  the  progress  of the filesystem check can be

fsck on rootfs

Similar code appears in /etc/init.d/ This will have been run before usplashd (confirm this), but after usplat, meaning that the console has already been switched away. In this case it needs to do a `chvt' on error, as it can't call usquirt to switch (usplashd isn't running). I thing this wants a little standaline program that tries to call usquirt and if that fails does an explicit chvt to the virtual terminal it was called from.

inittab sulogin


  • /etc/inittab

# What to do in single-user mode.

Started the Single-User login, this needs to have a chvt in front of it. Not sure whether init can have more than one command per entry (eg /sbin/chvt 1; /sbin/sulogin). Shells are not necessarily available at this time, so a small binary wrapper needs to be created that does:

int main(int argc, char **argv)
  ioctl (...);
  for(; *++argv;)
    execve(*argv, NULL, NULL);

This can this be called as:

~~:S:wait:/sbin/uwrapper /sbin/sulogin

And hope that works.

ColinWatson: Why aren't shells necessarily available? You can boot with init=/bin/sh, after all.

Viper550: If we want to show activity during FSCK (espically the ones that happen every 30 mounts), why not we do this? Also depicted is my idea for a progress indicator on the Ubuntu logo while I'm here...



UsplashTodo (last edited 2008-08-06 16:41:37 by localhost)