127 lines
2.3 KiB
Bash
Executable File
127 lines
2.3 KiB
Bash
Executable File
#!/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
|