= 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/checkfs.sh {{{ echo "Checking all file systems..." fsck $spinner -R -A $fix $force if [ $? -gt 1 ] then echo echo "fsck failed. Please repair manually." echo echo "CONTROL-D will exit from this shell and continue system startup." echo # Start a single user shell on the console /sbin/sulogin $CONSOLE fi }}} 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 non-interactively. }}} == 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 monitored. }}} == fsck on rootfs == Similar code appears in /etc/init.d/checkroot.sh. 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 == In * /etc/inittab {{{ # What to do in single-user mode. ~~:S:wait:/sbin/sulogin }}} 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... {{attachment:usplash2_mockup.gif}} CategoryArchive