home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2007 September / PCWSEP07.iso / Software / Linux / Linux Mint 3.0 Light / LinuxMint-3.0-Light.iso / casper / filesystem.squashfs / usr / lib / linux-boot-probes / mounted / 50lilo < prev    next >
Encoding:
Text File  |  2007-01-11  |  2.0 KB  |  110 lines

  1. #!/bin/sh
  2. . /usr/share/os-prober/common.sh
  3. set -e
  4.  
  5. partition="$1"
  6. bootpart="$2"
  7. mpoint="$3"
  8. type="$4"
  9.  
  10. found_item=0
  11.  
  12. title=""
  13. rootdev=""
  14. kernel=""
  15. parameters=""
  16. initrd=""
  17. read_only=""
  18. default_rootdev=""
  19. default_kernel=""
  20. default_parameters=""
  21. default_initrd=""
  22. default_read_only=""
  23.  
  24. dequote () {
  25.     item="${1%\"}"
  26.     echo "${item#\"}"
  27. }
  28.  
  29. recordstanza () {
  30.     if [ -n "$kernel" ] && [ -n "$title" ]; then
  31.         if [ -e "$mpoint/$kernel" ] && [ -e "$mpoint/$initrd" ]; then
  32.             if [ "$read_only" ]; then
  33.                 parameters="ro $parameters"
  34.             fi
  35.             if [ "$rootdev" ]; then
  36.                 parameters="root=$rootdev $parameters"
  37.             fi
  38.             parameters=${parameters% }
  39.             result "$rootpart:$bootpart:$title:$kernel:$initrd:$parameters"
  40.             found_item=1
  41.         else
  42.             debug "cannot find $kernel or $initrd, not recording"
  43.         fi
  44.         title=""
  45.         rootdev="$default_rootdev"
  46.         kernel="$default_kernel"
  47.         parameters="$default_parameters"
  48.         initrd="$default_initrd"
  49.         read_only="$default_read_only"
  50.     else
  51.         # Everything before set default values.
  52.         default_rootdev="$rootdev"
  53.         default_kernel="$kernel"
  54.         default_parameters="$parameters"
  55.         default_initrd="$initrd"
  56.         default_read_only="$read_only"
  57.     fi
  58. }
  59.  
  60. parse_lilo_conf () {
  61.     mpoint="$1"
  62.     rootpart="$2"
  63.     bootpart="$3"
  64.     IFS="     ="
  65.     while read line; do
  66.         debug "parsing: $line"
  67.         set -- $line
  68.         case $1 in
  69.             root)
  70.                 rootdev=$(dequote "$2")
  71.             ;;
  72.             image)
  73.                 recordstanza
  74.                 # Dereference if symbolic link
  75.                 kernel=$(readlink -f $(dequote "$2"))
  76.             ;;
  77.             append)
  78.                 shift 1
  79.                 parameters=$(dequote "${line#append=}")
  80.             ;;
  81.             initrd)
  82.                 # Dereference if symbolic link
  83.                 initrd=$(readlink -f $(dequote "$2"))
  84.                 ;;
  85.             label)
  86.                 shift 1
  87.                 title=$(dequote "$*" | sed -e 's/:/ /g')
  88.             ;;
  89.             other)
  90.                 recordstanza
  91.             ;;
  92.             read-only)
  93.                 read_only=1
  94.             ;;
  95.         esac
  96.     done
  97.     recordstanza
  98. }
  99.  
  100. if [ -e "$mpoint/etc/lilo.conf" ]; then
  101.     debug "parsing lilo.conf"
  102.     parse_lilo_conf "$mpoint" "$partition" "$bootpart" < "$mpoint/etc/lilo.conf"
  103. fi
  104.  
  105. if [ "$found_item" = 0 ]; then
  106.     exit 1
  107. else
  108.     exit 0
  109. fi
  110.