123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305 |
- diff -up mkinitrd-6.0.93/mkinitrd.tuxonice mkinitrd-6.0.93/mkinitrd
- --- mkinitrd-6.0.93/mkinitrd.tuxonice 2010-03-18 13:27:18.000000000 +0900
- +++ mkinitrd-6.0.93/mkinitrd 2010-03-18 14:37:24.000000000 +0900
- @@ -74,6 +74,8 @@ LD_SO_CONF=/etc/ld.so.conf
- LD_SO_CONF_D=/etc/ld.so.conf.d/
-
- [ -e /etc/sysconfig/mkinitrd ] && . /etc/sysconfig/mkinitrd
- +[ -e /etc/sysconfig/mkinitrd-suspend2 ] && . /etc/sysconfig/mkinitrd-suspend2
- +[ -e /etc/sysconfig/mkinitrd-tuxonice ] && . /etc/sysconfig/mkinitrd-tuxonice
-
- CONFMODS="$MODULES"
- MODULES=""
- @@ -91,7 +93,18 @@ modulefile=/etc/modules.conf
- rc=0
- nolvm=""
- nodmraid=""
- -
- +tuxoniceuserui="none"
- +tuxoniceversion="30001"
- +tuxonicefwtarget=""
- +splashtheme="suspend2"
- +
- +DSDT="/boot/DSDT.aml"
- +SWSUSPPROC="/proc/suspend2"
- +USERUIPROC="userui_program"
- +FWLOCPROC="filewriter_target"
- +RESUMETAR="resume2"
- +FWIDENT="Suspend2"
- +UIPREFIX="suspend2"
- IMAGESIZE=8000
- PRESCSIMODS=""
- fstab="/etc/fstab"
- @@ -111,6 +124,9 @@ usage () {
- $cmd " [--image-version] [--force-raid-probe | --omit-raid-modules]"
- $cmd " [--with=<module>] [--force-lvm-probe | --omit-lvm-modules]"
- $cmd " [--builtin=<module>] [--omit-dmraid] [--net-dev=<interface>]"
- + $cmd " [--tuxonice-userui=<none | auto | text | fb>]"
- + $cmd " [--tuxonice-version=<version-string>] [--splash=<theme>]"
- + $cmd " [--dsdt-location=<location of DSDT-file>]"
- $cmd " [--fstab=<fstab>] [--nocompress] <initrd-image> <kernel-version>"
- $cmd ""
- $cmd " (ex: `basename $0` /boot/initrd-2.2.5-15.img 2.2.5-15)"
- @@ -745,6 +761,125 @@ handlegraphics() {
- qpopd
- }
-
- +IsANumber() {
- + case "$1" in *[!0-9]*|"") return 1 ;; esac
- + return 0
- +}
- +
- +check_filewriter() {
- + # Filewriterhandling for Software Suspend 2
- + # we will check for /etc/hibernate/hibernate.conf and the filewriter
- + # settings there
- + local resume2 fwlocopt fwloc fwsize oldtarget newresume2
- +
- + if [ -e $1/$RESUMETAR ]; then
- + resume2=$(cat $1/$RESUMETAR)
- + # if filewriter is already active use that information
- + if [ $(echo "$resume2"X | dd bs=5 count=1 2>/dev/null) = "file:" ]; then tuxonicefwtarget=$resume2; return; fi
- + else
- + # if resume2 does not exist the current kernel is not Suspend 2 enabled,
- + # so there is no way to determine filewriters target information anyway
- + return
- + fi
- +
- + if [ ! -e $1/$2 ]; then return; fi
- + if [ -e /etc/hibernate/tuxonice.conf ]; then
- + fwlocopt=$(egrep ^FilewriterLocation /etc/hibernate/tuxonice.conf|tail -n 1)
- + elif [ -e /etc/hibernate/suspend2.conf ]; then
- + fwlocopt=$(egrep ^FilewriterLocation /etc/hibernate/suspend2.conf|tail -n 1)
- + elif [ ! -e /etc/hibernate/hibernate.conf ]; then
- + return;
- + else
- + fwlocopt=$(egrep ^FilewriterLocation /etc/hibernate/hibernate.conf|tail -n 1)
- + fi
- +
- + if [ ! "$fwlocopt" ]; then return; fi
- + fwloc=$(echo $fwlocopt | awk '{ print $2 }')
- + fwsize=$(echo $fwlocopt | awk '{ print $3 }')
- +
- + if [ ! -e "$fwloc" ]; then
- + if ! IsANumber "$fwsize"; then return; fi
- + {
- + echo "$FWIDENT"
- + dd if=/dev/zero bs=1M count=$fwsize 2>/dev/null
- +
- + } > "$fwloc"
- + fi
- +
- + oldtarget=$(cat $1/$2)
- + sync
- + echo "$fwloc" > $1/$2
- + newresume2=$(cat $1/$RESUMETAR)
- + echo "$oldtarget" > $1/$2
- + echo "$resume2" > $1/$RESUMETAR
- +
- + if [ $(echo $newresume2 | dd bs=5 count=1 2>/dev/null) = "file:" ]; then tuxonicefwtarget=$newresume2; fi
- +}
- +
- +inst_tuxonice() {
- + # TuxOnIce stuff
- + emit "echo Activating tux on ice"
- + userui="$tuxoniceuserui";
- + if [ "x$tuxoniceuserui" == "xauto" ]; then
- + if [ -f /sbin/${UIPREFIX}ui_fbsplash ]; then
- + userui="fb";
- + elif [ -f /sbin/${UIPREFIX}ui_text ]; then
- + userui="text";
- + else
- + userui="none";
- + fi
- + fi
- + if [ "x$userui" != "xnone" ]; then
- + if [ "x$userui" == "xfb" ]; then
- + if [ -f /sbin/${UIPREFIX}ui_fbsplash ]; then
- + inst /sbin/${UIPREFIX}ui_fbsplash "$2" /bin/${UIPREFIX}ui_fbsplash
- + if [ -e /etc/splash/${splashtheme} ]; then
- + mkdir "$2/etc/splash"
- + cp -prH /etc/splash/${splashtheme}/ "$2/etc/splash/"
- + fi
- + # check if splashtheme is a symlink and add one to initrd if that is the case
- + if [ -L /etc/splash/${splashtheme} ]; then
- + dlink=` find /etc/splash/${splashtheme} -printf '%l' `
- + dlink=$(basename $dlink)
- + ln -sf ${splashtheme} "$2/etc/splash/$dlink"
- + fi
- + if [ -e $2/etc/splash/{$splashtheme} ]; then
- + if [ ! -e $2/etc/splash/TuxOnIce ]; then
- + ln -sf ${splashtheme} "$2/etc/splash/TuxOnIce"
- + fi
- + if [ ! -e $2/etc/splash/suspend2 ]; then
- + ln -sf ${splashtheme} "$2/etc/splash/suspend2"
- + fi
- + fi
- + if [ -f /sbin/splash_helper ]; then
- + inst /sbin/splash_helper "$2" /bin/splash_helper
- + fi
- + emit "echo /bin/${UIPREFIX}ui_fbsplash > $1/$4"
- + else
- + error "WARNING: framebuffer UI for suspend not found, skipping."
- + fi
- + elif [ "x$userui" == "xtext" ]; then
- + if [ -f /sbin/${UIPREFIX}ui_text ]; then
- + inst /sbin/${UIPREFIX}ui_text "$2" /bin/${UIPREFIX}ui_text
- + emit "echo /bin/${UIPREFIX}ui_text > $1/$4"
- + else
- + error "WARNING: text UI for suspend not found, skipping."
- + fi
- + else
- + error "WARNING: unknown UI \"$userui\" specified."
- + fi
- + fi
- +
- + # First try to resume with the parameter present on the kernel commandline
- + emit "echo Trying to resume from target specified as $RESUMETAR on cmdline."
- + emit "echo 1 > $1/do_resume"
- +
- + # Then we will try the swapdevice/filetarget that was present while creating the initrd
- + emit "echo Trying to resume from $3."
- + emit "echo $3 > $1/$RESUMETAR"
- + emit "echo 1 > $1/do_resume"
- +}
- +
- savedargs=$*
- while [ $# -gt 0 ]; do
- case $1 in
- @@ -945,6 +1080,54 @@ while [ $# -gt 0 ]; do
- shift
- fi
- ;;
- + --splash*)
- + if echo $1 | grep -q '=' ; then
- + splashtheme=`echo $1 | sed 's/^--splash=//'`
- + else
- + splashtheme=$2
- + shift
- + fi
- + ;;
- + --tuxonice-userui*)
- + if echo $1 | grep -q '=' ; then
- + tuxoniceuserui=`echo $1 | sed 's/^--tuxonice-userui=//'`
- + else
- + tuxoniceuserui=$2
- + shift
- + fi
- + ;;
- + --tuxonice-version*)
- + if echo $1 | grep -q '=' ; then
- + tuxoniceversion=`echo $1 | sed 's/^--tuxonice-version=//'`
- + else
- + tuxoniceversion=$2
- + shift
- + fi
- + ;;
- + --suspend2-userui*)
- + if echo $1 | grep -q '=' ; then
- + tuxoniceuserui=`echo $1 | sed 's/^--suspend2-userui=//'`
- + else
- + tuxoniceuserui=$2
- + shift
- + fi
- + ;;
- + --suspend2-version*)
- + if echo $1 | grep -q '=' ; then
- + tuxoniceversion=`echo $1 | sed 's/^--suspend2-version=//'`
- + else
- + tuxoniceversion=$2
- + shift
- + fi
- + ;;
- + --dsdt-location*)
- + if echo $1 | grep -q '=' ; then
- + DSDT=`echo $1 | sed 's/^--dsdt-location=//'`
- + else
- + DSDT=$2
- + shift
- + fi
- + ;;
- --help)
- usage -n
- ;;
- @@ -962,6 +1145,22 @@ while [ $# -gt 0 ]; do
- shift
- done
-
- +if [ "$tuxoniceversion" -lt "20108" ]; then
- + SWSUSPPROC="/proc/software_suspend"
- +elif [ "$tuxoniceversion" -ge "20208" ]; then
- + SWSUSPPROC="/sys/power/suspend2"
- + USERUIPROC="user_interface/program"
- + FWLOCPROC="filewriter/target"
- +fi
- +if [ "$tuxoniceversion" -ge "20211" ]; then
- + RESUMETAR="resume"
- +fi
- +if [ "$tuxoniceversion" -ge "20212" ]; then
- + SWSUSPPROC="/sys/power/tuxonice"
- + FWIDENT="TuxOnIce"
- + UIPREFIX="tuxonice"
- +fi
- +
- if [ -z "$target" -o -z "$kernel" ]; then
- usage
- fi
- @@ -1186,6 +1385,7 @@ fi
- mkdir -p $MNTIMAGE
- mkdir -p $MNTIMAGE/lib/firmware
- mkdir -p $MNTIMAGE/lib/modules/$kernel
- +mkdir -p $MNTIMAGE/lib/splash
- mkdir -p $MNTIMAGE/bin
- mkdir -p $MNTIMAGE/etc
- mkdir -p $MNTIMAGE/dev
- @@ -1220,6 +1420,10 @@ excludemods() {
- echo $output
- }
-
- +if [ -e "$DSDT" ]; then
- + inst "$DSDT" "$MNTIMAGE/DSDT.aml"
- +fi
- +
- if [ -n "$excludemodules" ]; then
- MODULES=$(excludemods $MODULES)
- availmodules=$(excludemods $availmodules)
- @@ -1253,6 +1457,7 @@ done
- mknod $MNTIMAGE/dev/tty c 5 0
- mknod $MNTIMAGE/dev/console c 5 1
- mknod $MNTIMAGE/dev/ptmx c 5 2
- +mknod $MNTIMAGE/dev/fb0 c 29 0
-
- if [ -n "$raiddevices" ]; then
- inst /sbin/mdadm "$MNTIMAGE"
- @@ -1496,6 +1701,7 @@ mknod /dev/console c 5 1
- mknod /dev/ptmx c 5 2
- mknod /dev/fb c 29 0
- mknod /dev/hvc0 c 229 0
- +mknod /dev/fb0 c 29 0
- EOF
-
- # XXX really we need to openvt too, in case someting changes the
- @@ -1628,8 +1834,21 @@ for cryptdev in ${!cryptolv@} ; do
- emitcrypto `eval echo '$'$cryptdev`
- done
-
- -if [ -z "$noresume" -a -n "$thawdev" ]; then
- - emit "resume $thawdev"
- +if [ -z "$noresume" ]; then
- + if [ -n "$thawdev" ]; then
- + emit "resume $thawdev"
- + fi
- + check_filewriter $SWSUSPPROC $FWLOCPROC
- + swsuspdev="$thawdev"
- + if [ -n "$tuxonicefwtarget" ]; then
- + inst_tuxonice $SWSUSPPROC $MNTIMAGE $tuxonicefwtarget $USERUIPROC
- + elif [ -n "$swsuspdev" ]; then
- + if [[ "$swsuspdev" =~ ^(UUID=|LABEL=) ]]; then
- + swsuspdev=$(resolve_device_name "$swsuspdev")
- + fi
- +
- + inst_tuxonice $SWSUSPPROC $MNTIMAGE swap:$swsuspdev $USERUIPROC
- + fi
- fi
-
- if [ -n "$loopfs" ]; then
|