Bug 702712

Summary: package bootsplash causes mkinitrd to run inefficiently
Product: [openSUSE] openSUSE 12.1 Reporter: Christoph Obexer <cobexer>
Component: BasesystemAssignee: Michael Schröder <mls>
Status: RESOLVED DUPLICATE QA Contact: E-mail List <qa-bugs>
Severity: Major    
Priority: P5 - None    
Version: Milestone 2   
Target Milestone: ---   
Hardware: i586   
OS: Other   
Whiteboard:
Found By: --- Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---

Description Christoph Obexer 2011-06-28 16:44:20 UTC
User-Agent:       Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0

running mkinitrd on my netbook takes very long.
# time mkinitrd
...
real    4m57.454s
user    1m28.647s
sys     2m49.530s
there are 2 kernels with each normal and failsave bootoptions installed.

i found that running hwinfo is very slow and a huge part of the mkinitrd runtime.

please include the following change in the /lib/mkinitrd/scripts/setup-splash.sh script.

running mkinitrd with the change below leads to:
# time mkinitrd
real    1m57.648s
user    0m59.225s
sys     0m48.373s
its still not fast but way better =D
on the line inserted mode contains 5 times the same resolution, hwinfo needed ~20s cpu to run each. there is still considerable room for improvement, but this is a start.

i'm not a professional bash scripter, if it's dumb please improve it and get it into the bootsplash package!


christophnet:~ # diff -c7 /lib/mkinitrd/scripts/setup-splash.sh_orig /lib/mkinitrd/scripts/setup-splash.sh
*** /lib/mkinitrd/scripts/setup-splash.sh_orig  2011-06-28 07:54:33.089570463 +0200
--- /lib/mkinitrd/scripts/setup-splash.sh       2011-06-28 07:59:54.268068180 +0200
***************
*** 25,38 ****
--- 25,40 ----
      for file in $root_dir/{etc/lilo.conf,boot/grub/menu.lst,proc/cmdline}; do
        [ -e $file ] || continue
        modes="$modes $(sed -e '/^[ \t]*#/d' $file \
                        | sed -ne 's/^.*vga[ \t]*=[ \t]*\([^ \t]*\).*/\1/p' \
                        | sed -ne '/^\([0-9]\+\|0[xX][0-9a-fA-F]\+\)$/p')"
      done
  
+     modes="$(echo $modes | sed 's/ /\n/g' | sort -u)"
+ 
      for mode in $modes; do
        case $(($mode)) in  # $((...)) : Convert 0xFOO to decimal
        785|786) splash_size_640x480=1 ;;
        788|789) splash_size_800x600=1 ;;
        791|792) splash_size_1024x768=1 ;;
        794|795) splash_size_1280x1024=1 ;;
        *)       vgahex=$(printf 0x%04x "$(($mode))")



Reproducible: Always

Steps to Reproduce:
1. run mkinitrd
2.
3.
Actual Results:  
very slow

Expected Results:  
fast

versions:
bootsplash-branding-openSUSE-3.1-92.1.noarch
bootsplash-3.3-170.2.i586
mkinitrd-2.7.0-16.1.i586
Comment 1 Michael Schröder 2011-06-30 10:16:09 UTC
dup

*** This bug has been marked as a duplicate of bug 679511 ***