Larry I Smith wrote:
SuSE Pro v9.0.
After YOU updated my machine to kernel v2.4.21-238 the other day, the SuSE 'silent' bootsplash screen no longer worked (the one with the 'progress bar'). All attempts to fix it failed. Only "verbose" mode worked.
Evidently '/sbin/mkinitrd' script was updated as part of a recent YOU upgrade. Perhaps as part of the v2.4.21-238 upgrade?
The new '/sbin/mkinitrd' script (rev 1.23 on my machine) has a *BUG* in the RegExp used to extract the "vga=..." value found in the GRUB 'menu.lst' file and the LILO 'lilo.conf' file. There is only one set of parens in the RegExp found at line 292 (inside the "for vga in..." block), but there should be two. Here's the 'diff' output (line-wrapped by the e-mailer of course); I've put carets (^) below the missing close and open parens that need to be added to make it work correctly again:
292c292 < -e 's/^.*[ \t]*vga [ \t]*=[\t]*\([0-9]\+\|0[xX][0-9a-fA-F]\+\).*$/\1/p'` ; do ---
-e 's/^.*[ \t]*vga [ \t]*=[\t]*\([0-9]\+\)\|\(0[xX][0-9a-fA-F]\+\).*$/\1/p'` ; do ^^ ^^ As 'root':
1) Make a backup copy of the original '/sbin/mkinitrd' before making this change (just in case...).
2) Edit '/sbin/mkinitrd' to make the change
3) Execute 'mkinitrd'. It should output a "Bootsplash:..." message as part of its diagnostics. That tells you it worked ok.
4) The 'silent' bootsplash will work correctly the next time the machine is booted.
Regards, Larry
Thanks to Anders Johansson for his insights into this problem. His comments got me pointed in the right direction. Here's a more reliable fix for 'mkinitrd'... Original RegExp in 'mkinitrd' rev 1.23: -e 's/^.*[ \t]*vga[ \t]*=[ \t]*\([0-9]\+\|0[xX][0-9a-fA-F]\+\).*$/\1/p'` The original, above, looks for decimal numbers following "vga=" before it looks for hex numbers. But because "vga=0x31a" starts with "0", it matches "[0-9]\+" thereby causing "\1" to evaluate to "0" - but the intent was to match "0x31a". Revised RegExp: -e 's/^.*[ \t]*vga[ \t]*=[ \t]*\(0[xX][0-9a-fA-F]\+\|[0-9]\+\).*$/\1/p'` This revised version looks for hex numbers following "vga=" before it looks for decimal numbers. Now everything works as expected. My original fix does work, but it may cause needless, but benign, invocations of "hwinfo" in the default "case" statement. Regards, Larry