145 lines
2.7 KiB
Bash
Executable file
145 lines
2.7 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
if [ -d /sysroot ] ; then
|
|
type getarg > /dev/null 2>&1 || . /lib/dracut-lib.sh
|
|
getarg "rd.cmdline=menu" || exit 0
|
|
fi
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
|
|
# usage example:
|
|
#
|
|
# title="Foo menu"
|
|
# items=("Foo A" "Foo B" "Foo C")
|
|
#
|
|
# dia_menu title items selected_item
|
|
#
|
|
# echo "selected_item=$selected_item"
|
|
#
|
|
dia_menu () {
|
|
local -n x_title=$1
|
|
local -n x_list=$2
|
|
local -n x_item=$3
|
|
|
|
local tmp i ind ok
|
|
|
|
until [[ "$ok" ]] ; do
|
|
echo -e "\n$x_title\n"
|
|
|
|
echo "0) <-- Back <--"
|
|
ind=1
|
|
for i in "${x_list[@]}" ; do
|
|
echo "$ind) $i"
|
|
ind=$((ind + 1))
|
|
done
|
|
|
|
echo
|
|
|
|
read -e -r -p "> " x_item tmp
|
|
|
|
[[ ( -z "$x_item" || "$x_item" = $((x_item)) ) && "$x_item" -lt $ind ]] && ok=1
|
|
done
|
|
|
|
x_item=$((x_item))
|
|
|
|
return 0
|
|
}
|
|
|
|
|
|
# usage example
|
|
#
|
|
# title="Foo input"
|
|
# value="foo bar"
|
|
# dia_input title value
|
|
# aborted=$?
|
|
#
|
|
# if [ $aborted = 1 ] ; then
|
|
# echo aborted
|
|
# else
|
|
# echo -e "input=\"$value\""
|
|
# fi
|
|
#
|
|
dia_input () {
|
|
local -n x_title=$1
|
|
local -n x_value=$2
|
|
|
|
local tmp="$x_value"
|
|
|
|
echo -e "\n${x_title}. (Enter '+++' to abort.)\n"
|
|
|
|
read -e -r -p "[$tmp]> " -i "$tmp" tmp
|
|
|
|
if [[ "$tmp" = "${tmp%+++}+++" ]] ; then
|
|
return 1
|
|
else
|
|
x_value="$tmp"
|
|
fi
|
|
|
|
return 0
|
|
}
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
echo
|
|
echo "== Additional parameters =="
|
|
|
|
live_root=$(getarg "root=")
|
|
live_root_disk=$(getarg "root_disk=")
|
|
live_root_net=$(getarg "root_net=")
|
|
live_proxy=$(getarg "proxy=")
|
|
|
|
live_root_disk=${live_root_disk:-$live_root}
|
|
|
|
live_root=${live_root#live:}
|
|
live_root_disk=${live_root_disk#live:}
|
|
live_root_net=${live_root_net#live:}
|
|
|
|
aborted=1
|
|
|
|
while [ "$aborted" != 0 ] ; do
|
|
echo -n > /etc/cmdline.d/98-cmdline-menu.conf
|
|
|
|
title="Live image location"
|
|
items=("Disk / DVD" "Network")
|
|
dia_menu title items selected_item
|
|
|
|
aborted=$?
|
|
[[ $aborted != 0 ]] && continue
|
|
|
|
case $selected_item in
|
|
1) live_root="$live_root_disk" ;;
|
|
2) live_root="$live_root_net" ;;
|
|
esac
|
|
|
|
if [[ "$selected_item" = 2 ]] ; then
|
|
title="Live image location (e.g. http://example.com/live.iso)"
|
|
dia_input title live_root
|
|
aborted=$?
|
|
[[ $aborted != 0 ]] && continue
|
|
|
|
live_root_net="$live_root"
|
|
|
|
title="Proxy Settings (e.g. http://proxy.example.com)"
|
|
dia_input title live_proxy
|
|
|
|
aborted=$?
|
|
[[ $aborted != 0 ]] && continue
|
|
fi
|
|
|
|
echo "root=live:$live_root" >> /etc/cmdline.d/98-cmdline-menu.conf
|
|
echo "proxy=$live_proxy" >> /etc/cmdline.d/98-cmdline-menu.conf
|
|
|
|
echo
|
|
echo "== Updated settings =="
|
|
echo
|
|
cat /etc/cmdline.d/98-cmdline-menu.conf
|
|
|
|
title="Settings ok?"
|
|
items=("Yes" "No")
|
|
dia_menu title items selected_item
|
|
|
|
[[ $selected_item = 1 ]] && break
|
|
|
|
aborted=1
|
|
done
|