Hi Luis,

After days of struggling with the "resume bug," I have finally found a hack that fixes the problem. It's not ideal, but it squashes the bug and it provides laptop users with a boot splash without compromising the quality that desktop users currently enjoy.

Specifically, I started by adding the following code after line 44 of the "/usr/share/initramfs-tools/scripts/init-top/splashy" file:

if [ ! -z "${resume}" ]; then
       SPLASH=false
fi

That condition allows me to resume from hibernation, but it causes Splashy to start rather late in the boot sequence. Specifically, it starts when the "init-bottom" scripts are run. Adding such a condition to Splashy would be useful to laptop users, but the late start would degrade Splashy in the eyes of desktop users.

I see no reason why desktop users should be penalized just to make laptop users happy, so I created another condition that only runs the condition above if "laptop" is passed as a kernel argument. The code is below.

By creating a "laptop" kernel argument, desktop users would continue to see a splash screen early in the boot sequence and laptop users would get a user-space boot splash system that works during start-up, shutdown, suspend and resume.

It certainly isn't the ideal solution that I had in mind a few days ago (when I thought we could provide everyone with a splash screen that starts early in the boot sequence), but it squashes the bug and it makes Splashy usable for laptop users. Importantly, it achieves those objectives without degrading Splashy's performance on desktop computers.

Let me know if there's anything else I can do,
- Eric


SPLASH=false
LAPTOP=false
SINGLE=false
FBMODESET=false

for x in $(cat /proc/cmdline); do
   case $x in
       single)
           SINGLE=true
       ;;
       splash)
           SPLASH=true
       ;;
       laptop)
           LAPTOP=true
       ;;
       nosplash)
           SPLASH=false
       ;;
       vga=*|video=*)
           FBMODESET=true
       ;;
   esac
done

test $LAPTOP != "true" || if [ ! -z "${resume}" ]; then SPLASH=false ; fi
test $SINGLE = "false" || exit
test $SPLASH = "true" || exit
test $FBMODESET = "true" || exit




Reply via email to