home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / boot / i386 / root / usr / lib / YaST2 / bin / update_zipl_conf < prev    next >
Text File  |  2006-11-29  |  1KB  |  56 lines

  1. #! /bin/sh
  2.  
  3. #
  4. # In SLES8, the kernel image was located at /boot/kernel/image. SLES9
  5. # has it in /boot/image. Update zipl.conf.
  6. #
  7.  
  8. update_zipl_conf() {
  9.     local zipl_conf=$1
  10.     local common='
  11.     function uq(x)    { return gensub(/^"(.*)"$/, "\\1", "", x) }
  12.     function fields(a,x) \
  13.             { x=$a ; 
  14.               while (++a<=NF) x=x OFS $a
  15.               return x }
  16.         $1 ~ /[^ ]*=[^ ]*/    { sub(/=/, " = ") }
  17.     /^\[.*\]$/    { sec = gensub(/^\[(.*)\]$/, "\\1", "", $0) }
  18.     '
  19.  
  20.     # Find out the default boot section defined by the
  21.     # default=* setting in [defaultboot]
  22.     local boot=$(
  23.     awk "$common"'
  24.         /^\#/            { next }
  25.         /^ *$/            { next }
  26.     sec == "defaultboot" && $1 == "default" \
  27.             { print uq($3) ; exit(0) }
  28.     ' "$zipl_conf")
  29.  
  30.     mv "$zipl_conf" "$zipl_conf".rpmorig
  31.     # Update the default boot section
  32.     # - image is always '/boot/image'
  33.     # - ramdisk is always '/boot/initrd'
  34.     # - Add a parameter 'TERM=dumb' to the kernel commandline
  35.     #   if no 'TERM' parameter is set
  36.     awk "$common"'
  37.     sec == "'"$boot"'" \
  38.             { $1 == "image"        && $3 = "/boot/image"
  39.               $1 == "ramdisk"    && $3 = "/boot/initrd"
  40.                           if ($1 == "parameters" && $0 !~ /TERM=/) { \
  41.                   $0 = "parameters = \"" uq(fields(3)) \
  42.                      " TERM=dumb\"" } }
  43.             { print }
  44.     ' "$zipl_conf".rpmorig > "$zipl_conf"
  45. }
  46.  
  47.  
  48. ZIPL_CONF=/etc/zipl.conf
  49.  
  50. if [ -f "$ZIPL_CONF" ]; then
  51.     update_zipl_conf $ZIPL_CONF
  52. else
  53.     echo "$ZIPL_CONF not found"
  54.     exit 1
  55. fi
  56.