#!/bin/sh # -*- Mode: shell-script -*- # Copyright (C) 2002 by Chmouel Boudjnah # Redistribution of this file is permitted under the terms of the GNU # Public License (GPL) # $Id$ : ${splash_dir=/usr/share/bootsplash} : ${splash_cfg=/etc/bootsplash} [[ -f /etc/sysconfig/bootsplash ]] && source /etc/sysconfig/bootsplash [[ -z $THEME ]] && THEME=Mandrake initrd_file=$1 [[ -z $initrd_file ]] && { echo "You need to specify a initrd file as argument" exit 1; } vgamode=$2 if [[ -z $vgamode || $vgamode == auto ]];then vgamode=$( $splash_dir/scripts/detect-resolution ) fi if [[ $vgamode == 800* ]];then resolution=800x600 elif [[ $vgamode == 1024* ]];then resolution=1024x768 elif [[ $vgamode == 1280* ]];then resolution=1280x1024 fi if [[ -f $splash_dir/themes/$THEME/images/bootsplash-$resolution.jpg && -f $splash_cfg/themes/$THEME/cfg/bootsplash-$resolution.cfg ]];then image=$splash_dir/themes/$THEME/images/bootsplash-$resolution.jpg config=$splash_cfg/themes/$THEME/cfg/bootsplash-$resolution.cfg fi if [[ -n $image ]];then if [[ -z $config ]];then echo "Can't find a config files for $resolution"; exit 1; fi else #no image echo "Can't find images for $resolution"; fi # From SuSe mk_initrd script function out_byte() { let x=$1 echo -en "`printf \\\\%o $x`" } function write_int() { let tmp1=($1 & 255) let tmp2=($1>>8) let tmp2=($tmp2&255) let tmp3=($1>>16) let tmp3=($tmp3&255) let tmp4=($1>>24) let tmp4=($tmp4&255) out_byte $tmp1 out_byte $tmp2 out_byte $tmp3 out_byte $tmp4 } function write_short() { let tmp1=($1>>8) let tmp2=($1&0xff) out_byte $tmp2 out_byte $tmp1 } function write_header() { # write signature echo -n "BOOTSPL1" # write text x coordinate write_short $1 # write text y coordinate write_short $2 # write text width write_short $3 # write text height write_short $4 # write file length write_int $5 } source $config size=`wc -c<$image` write_header $tx $ty $tw $th $size >> $initrd_file cat $image >> $initrd_file $splash_dir/scripts/switch-themes -u