#!/bin/sh . /usr/share/os-prober/common.sh set -e partition="$1" bootpart="$2" mpoint="$3" type="$4" found_item=0 title="" rootdev="" kernel="" parameters="" initrd="" read_only="" added_parameters=0 default_rootdev="" default_kernel="" default_parameters="" default_initrd="" default_read_only="" dequote () { item="${1%\"}" echo "${item#\"}" } addparams () { # Any parameters we find replace the default parameters, but # otherwise append. if [ "$added_parameters" = 0 ]; then parameters="$1" added_parameters=1 else parameters="${parameters:+$parameters }$1" fi } recordstanza () { if [ -n "$kernel" ] && [ -n "$title" ]; then if [ -e "$mpoint/$kernel" ] && [ -e "$mpoint/$initrd" ]; then if [ "$read_only" ]; then parameters="ro $parameters" fi if [ "$rootdev" ]; then parameters="root=$rootdev $parameters" fi parameters="${parameters% }" result "$rootpart:$bootpart:$title:$kernel:$initrd:$parameters" found_item=1 else debug "cannot find $kernel or $initrd, not recording" fi title="" rootdev="$default_rootdev" kernel="$default_kernel" parameters="$default_parameters" initrd="$default_initrd" read_only="$default_read_only" added_parameters=0 else # Everything before set default values. default_rootdev="$rootdev" default_kernel="$kernel" default_parameters="$parameters" default_initrd="$initrd" default_read_only="$read_only" fi } parse_lilo_conf () { mpoint="$1" rootpart="$2" bootpart="$3" IFS=" =" while read line; do debug "parsing: $line" set -f set -- $line set +f case "$1" in root) rootdev=$(dequote "$2") ;; image) recordstanza # Dereference if symbolic link kernel="$(readlink -f "$(dequote "$2")")" ;; append) addparams "$(dequote "${line#append=}")" ;; initrd) # Dereference if symbolic link initrd="$(readlink -f "$(dequote "$2")")" ;; label) shift 1 title="$(dequote "$*" | sed -e 's/:/ /g')" ;; other) recordstanza ;; read-only) read_only=1 ;; vga) addparams "$line" ;; esac done recordstanza } if [ -e "$mpoint/etc/lilo.conf" ]; then debug "parsing lilo.conf" parse_lilo_conf "$mpoint" "$partition" "$bootpart" < "$mpoint/etc/lilo.conf" fi if [ "$found_item" = 0 ]; then exit 1 else exit 0 fi