[oe-commits] org.oe.dev altboot:
coredump commit
openembedded-commits at lists.openembedded.org
Thu Oct 26 16:11:48 UTC 2006
altboot:
- Add altbootctl to set altboot options on a permanent or per-reboot basis
- Only remember selections for the next boot that actually make sense
- Cleanup of run_timer()
- Disabled existing kexec modules due to a planned rework
Author: coredump at openembedded.org
Branch: org.openembedded.dev
Revision: 185633f8bb0ba884443e170989d375777cc45902
ViewMTN: http://monotone.openembedded.org/revision.psp?id=185633f8bb0ba884443e170989d375777cc45902
Files:
1
packages/altboot/files/altbootctl
packages/altboot/files/altbootctl.conf
packages/altboot/altboot_0.0.0.bb
packages/altboot/files/altboot-menu/Advanced/70-install-tgz
packages/altboot/files/altboot-menu/Advanced/70-setKernel
packages/altboot/files/altboot-menu/Advanced/80-configure-kexec
packages/altboot/files/altboot-menu/Advanced/80-copyrootfs
packages/altboot/files/altboot.func
packages/altboot/files/init.altboot
mtn:execute
true
Diffs:
#
# mt diff -r292370be96ae823e50cc7a6150f75e83d93c1f58 -r185633f8bb0ba884443e170989d375777cc45902
#
#
#
# add_file "packages/altboot/files/altbootctl"
# content [598131c375f63ab829de63fb559a105e6c38c72f]
#
# add_file "packages/altboot/files/altbootctl.conf"
# content [a609c0d2d8e4429885f585b70e10bb5413f1d51e]
#
# patch "packages/altboot/altboot_0.0.0.bb"
# from [e545e6817d366a2ded44822b96cddcfd4565e139]
# to [244c72e3711fec1c4a3e752210eccc27297e19e9]
#
# patch "packages/altboot/files/altboot-menu/Advanced/70-install-tgz"
# from [92a063d1e3a2828d2e1f6b2249d49f5f3cf28592]
# to [f8320c93b94c9d4a809efbee119bf4c81dd571f0]
#
# patch "packages/altboot/files/altboot-menu/Advanced/70-setKernel"
# from [94b21109eca41d7ce71e3e290477a703762bf561]
# to [fb78e02d4d7b413be485d0aba9aea195d192a8d7]
#
# patch "packages/altboot/files/altboot-menu/Advanced/80-configure-kexec"
# from [a810c21c656e173bd90c29aa57588f079fce9730]
# to [105e0e495a1455bdb36ed000eb0f1347e5dc4a84]
#
# patch "packages/altboot/files/altboot-menu/Advanced/80-copyrootfs"
# from [c0d55e4ab6b93018312ce6ed55437f0113b39781]
# to [947efa59783050dc8ec55554d8daf087b4e8a302]
#
# patch "packages/altboot/files/altboot.func"
# from [6fa0ea7a84120af02ef7eceabaa59b6503f39b27]
# to [5a124e4881c0d4938960cf04034e26f22edb8d99]
#
# patch "packages/altboot/files/init.altboot"
# from [b2ebebeb6c47f146fc97200691f97598de181309]
# to [f023a757c6da95d104e6d89ac36c528b31152f05]
#
# set "packages/altboot/files/altbootctl"
# attr "mtn:execute"
# value "true"
#
============================================================
--- packages/altboot/files/altbootctl 598131c375f63ab829de63fb559a105e6c38c72f
+++ packages/altboot/files/altbootctl 598131c375f63ab829de63fb559a105e6c38c72f
@@ -0,0 +1,309 @@
+#! /bin/sh
+#
+# Copyright Matthias Hentges <devel at hentges.net> (c) 2006
+# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license)
+#
+# Filename: hentges-setup.sh
+# Date: 03-Jun-06
+
+die() {
+ echo -e "$*"
+ exit 1
+}
+
+
+PERMANENT_CFG="/etc/altboot-`uname -r | cut -c1-3`.cfg"
+TEMPORARY_CFG="/etc/altboot-`uname -r | cut -c1-3`.cfg.next-reboot"
+
+CFG="$PERMANENT_CFG"
+SCRIPT_CONFIG="/etc/altbootctl.conf"
+
+test -e "$SCRIPT_CONFIG" && . "$SCRIPT_CONFIG" || die "$SCRIPT_CONFIG not found"
+
+# $1= Setting, $2 = new value
+set_pref() {
+
+ if ( cat "$CFG" | grep -q "$1" )
+ then
+ cat "$CFG" | sed "/^$1/s/\(.*\)\=\(.*\)/\1\=\"$2\"/" > ${CFG}_
+ mv ${CFG}_ ${CFG}
+ else
+ echo "$1=\"$2\"" >> "${CFG}"
+ fi
+}
+
+# $1= Setting
+get_pref() {
+ n="$1"
+ value="`cat "${CFG}" | sed -n "/^$n/s/\(.*\)\=\\"\(.*\)\\"/\2/p"`"
+ #echo "cat "${CFG}" | sed -n "/^$n/s/\(.*\)\=\"\(.*\)\"/\2/p""
+ test -z "$value" && die "Couldn't get value for [$n]"
+ echo "$value"
+}
+
+ask_pref() {
+ SETTING_NAME="$1"
+
+ SETTING_TEXT_="${SETTING_NAME}_TEXT"
+ SETTING_TEXT="`eval echo -e \\$${SETTING_TEXT_}`"
+
+ SETTING_VALUES_="${SETTING_NAME}_VALUES"
+ SETTING_VALUES="`eval echo -e \\$${SETTING_VALUES_}`"
+
+ SETTING_OLD_VALUE="`get_pref "$SETTING_NAME"`"
+ test -z "$SETTING_TEXT" -o -z "$SETTING_VALUES" && die "ask_pref: [$1] -> [$SETTING_TEXT] [$SETTING_VALUES]"
+
+ #echo "[$1] -> $SETTING_OLD_VALUE"
+ #echo -e "$SETTING_TEXT"
+
+
+ if test "$SETTING_VALUES" = "<STRING>"
+ then
+ while true
+ do
+ echo -e "\nPlease enter a new value [$SETTING_OLD_VALUE]"
+ echo -en "Your Choice: "
+ read junk
+
+ echo ""
+
+ while true
+ do
+ echo -n "Is the new value of [$junk] correct? [Y|n] "
+ read junk2
+
+ case "$junk2" in
+ y|Y|"") END_LOOP=true
+ break ;;
+ *) END_LOOP=false
+ break ;;
+ esac
+ done
+
+ if test "$END_LOOP" = "true"
+ then
+ SETTING_NEW_VALUE="$junk"
+ break
+ fi
+
+ done
+
+ else
+ # If it's not a string, it's a fixed list of possible settings
+ echo -e "\nSelect one of the following:\n"
+ cnt=1
+ for val in $SETTING_VALUES
+ do
+ if test "$val" != "$SETTING_OLD_VALUE"
+ then
+ echo -e "\t[$cnt] $val"
+ else
+ echo -e "\t[$cnt] $val *"
+ SETTING_OLD_VALUE_NUM="$cnt"
+ fi
+ let cnt=$cnt+1
+ done
+
+ echo ""
+ while true
+ do
+ echo -en "Your choice [$SETTING_OLD_VALUE_NUM]: "
+ read junk
+
+ if test -n "$junk"
+ then
+ cnt=1 ; SETTING_NEW_VALUE=""
+ for val in $SETTING_VALUES
+ do
+ if test "$junk" = "$cnt"
+ then
+ SETTING_NEW_VALUE="$val"
+ break
+ fi
+
+ let cnt=$cnt+1
+ done
+ else
+ SETTING_NEW_VALUE="$SETTING_OLD_VALUE"
+ fi
+
+ test -n "$SETTING_NEW_VALUE" && break
+ done
+
+ fi
+
+
+ if test "$SETTING_NEW_VALUE" != "$SETTING_OLD_VALUE"
+ then
+ set_pref "$SETTING_NAME" "$SETTING_NEW_VALUE"
+ echo "Changed $SETTING_NAME to $SETTING_NEW_VALUE"
+ else
+ echo "$SETTING_NAME remains unchanged"
+ fi
+ echo -e "\n"
+}
+
+build_menu() {
+ for setting in $TARGETS
+ do
+ # SETTING_MENUPOS contains $setting_MENUPOS
+ SETTING_MENUPOS_="${setting}_MENUPOS"
+ SETTING_MENUPOS="`eval echo -e \\$${SETTING_MENUPOS_}`"
+
+ # Store all entries in variables named after the menu name
+ MENU_NAME="SUBMENU_${SETTING_MENUPOS}"
+ export "${MENU_NAME}"="`eval echo -e \\$${MENU_NAME} ` $setting"
+
+
+ echo "$AVAILABLE_MENUES" | grep -q "$SETTING_MENUPOS" || AVAILABLE_MENUES="$SETTING_MENUPOS $AVAILABLE_MENUES"
+
+ done
+
+ #echo "[$AVAILABLE_MENUES]"
+
+ while true
+ do
+ echo -e "\nSelect a menu:\n"
+ cnt=1
+ for menu in $AVAILABLE_MENUES Exit
+ do
+ MENU_NAME="SUBMENU_$menu"
+ echo -e "\t[$cnt] $menu"
+ let cnt=$cnt+1
+ done
+
+ echo ""
+
+ while true
+ do
+ echo -n "Your Choice: "
+ read junk
+
+ cnt=1 ; GET_MENU=""
+ for menu in $AVAILABLE_MENUES Exit
+ do
+ if test "$cnt" = "$junk"
+ then
+ GET_MENU="$menu"
+ break
+ fi
+ let cnt=$cnt+1
+ done
+
+ if test "$GET_MENU" = "Exit"
+ then
+ EXIT_PROG=true
+ break
+ else
+ EXIT_PROG=false
+ fi
+
+ if test -n "$GET_MENU"
+ then
+ show_menu "$menu"
+ break
+ fi
+ done
+ test "$EXIT_PROG" = true && break
+ done
+}
+
+show_menu() {
+ MENU_NAME="SUBMENU_$1"
+
+
+ while true
+ do
+ echo -e "\nEntries in this menu:\n"
+ cnt=1
+ for entry in `eval echo -e \\$${MENU_NAME}` Back
+ do
+ MENU_NAME_TEXT="${entry}_TEXT" || MENU_NAME_TEXT="${entry}"
+
+ test "$entry" != Back && tmp_="`eval echo -e \\$${MENU_NAME_TEXT}`" || tmp_="Back"
+
+ echo -e "\t[$cnt] $tmp_"
+ let cnt=$cnt+1
+ done
+
+ echo ""
+
+ while true
+ do
+ echo -en "Your Choice: "
+ read junk
+
+ cnt=1 ; GET_ENTRY=""
+ for entry in `eval echo -e \\$${MENU_NAME}` Back
+ do
+ if test "$cnt" = "$junk"
+ then
+ GET_ENTRY="$entry"
+ break
+ fi
+ let cnt=$cnt+1
+ done
+
+ if test "$GET_ENTRY" = "Back"
+ then
+ EXIT_MENU=true
+ break
+ else
+ EXIT_MENU=false
+ fi
+
+
+ # At this point the user has selected a menuitem != "Back"
+ if test -n "$GET_ENTRY"
+ then
+ select_config
+ ask_pref "$GET_ENTRY"
+ break
+ fi
+ done
+
+ test "$EXIT_MENU" = true && break
+ done
+}
+
+select_config() {
+ echo -e "\nChange this setting only for the next reboot or permanently?\n"
+
+ echo -e "Select one of the following:\n"
+
+ echo -e "\t[1] Only for the next reboot"
+ echo -e "\t[2] Permanently"
+ echo ""
+
+ while true
+ do
+ echo -en "Your Choice: "
+ read junk
+
+ case "$junk" in
+ 2) CFG="$PERMANENT_CFG"
+ break ;;
+ 1) CFG="$TEMPORARY_CFG"
+ break ;;
+ esac
+ done
+
+ # Supress error message about missing config
+ ! test -e "$CFG" && touch "$CFG"
+
+}
+
+go() {
+ build_menu
+
+ exit 0
+ for setting in $TARGETS
+ do
+ ask_pref "$setting"
+ done
+
+}
+
+
+! test -e "$CFG" && die "[$CFG] not found, exiting"
+go
============================================================
--- packages/altboot/files/altbootctl.conf a609c0d2d8e4429885f585b70e10bb5413f1d51e
+++ packages/altboot/files/altbootctl.conf a609c0d2d8e4429885f585b70e10bb5413f1d51e
@@ -0,0 +1,90 @@
+#! /bin/sh
+#
+# Copyright Matthias Hentges <devel at hentges.net> (c) 2006
+# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license)
+#
+# Filename: hentges-setup.conf
+# Date: 04-Jun-06
+
+
+TARGETS="REMEMBER_LAST_SELECTION ENABLE_ALTBOOT FSCK_IMAGES TIMEOUT INIT_RUNLEVEL NO_GUI_RL \
+ USB_HOST_AVAILABLE USB_NETWORKING_AVAILABLE ASK_PW_ON_BOOT SD_DEVICE SD_KERNEL_MODULE \
+ IMAGE_PATH IMAGE_TYPE ENABLE_IMAGECONF USB_STORAGE_MODULES USB_STORAGE_PARTITION \
+ USB_STORAGE_WAIT SD_MOUNTPOINT"
+
+
+REMEMBER_LAST_SELECTION_VALUES="yes no"
+REMEMBER_LAST_SELECTION_TEXT="Remember the last selected menu item for next boot"
+REMEMBER_LAST_SELECTION_MENUPOS="Core"
+
+ENABLE_ALTBOOT_VALUES="yes no"
+ENABLE_ALTBOOT_TEXT="Enable or disable the altboot boot-manager"
+ENABLE_ALTBOOT_MENUPOS="Core"
+
+TIMEOUT_VALUES="<STRING>"
+TIMEOUT_TEXT="Altboot boot-menu timeout in seconds"
+TIMEOUT_MENUPOS="Core"
+
+INIT_RUNLEVEL_VALUES="<STRING>"
+INIT_RUNLEVEL_TEXT="Default runlevel"
+INIT_RUNLEVEL_MENUPOS="Core"
+
+NO_GUI_RL_VALUES="<STRING>"
+NO_GUI_RL_TEXT="GUI-less runlevel"
+NO_GUI_RL_MENUPOS="Core"
+
+ENABLE_DEBUG_VALUES="yes no"
+ENABLE_DEBUG_TEXT="Enable debug output"
+ENABLE_DEBUG_MENUPOS="Core"
+
+FSCK_IMAGES_VALUES="yes no"
+FSCK_IMAGES_TEXT="Automatically fsck loop-images"
+FSCK_IMAGES_MENUPOS="LoopImages"
+
+IMAGE_PATH_VALUES="<STRING>"
+IMAGE_PATH_TEXT="Subdirectory for loop-files"
+IMAGE_PATH_MENUPOS="LoopImages"
+
+IMAGE_TYPE_VALUES="<STRING>"
+IMAGE_TYPE_TEXT="Image FS type"
+IMAGE_TYPE_MENUPOS="LoopImages"
+
+ENABLE_IMAGECONF_VALUES="yes no"
+ENABLE_IMAGECONF_TEXT="Configure new loop-images on 1st boot"
+ENABLE_IMAGECONF_MENUPOS="LoopImages"
+
+USB_HOST_AVAILABLE_VALUES="yes no"
+USB_HOST_AVAILABLE_TEXT="Device supports full USB *HOST* mode"
+USB_HOST_AVAILABLE_MENUPOS="USB"
+
+USB_NETWORKING_AVAILABLE_VALUES="yes no"
+USB_NETWORKING_AVAILABLE_TEXT="USB networking is available"
+USB_NETWORKING_AVAILABLE_MENUPOS="USB"
+
+USB_STORAGE_MODULES_VALUES="<STRING>"
+USB_STORAGE_MODULES_TEXT="Kernelmodules required for USB"
+USB_STORAGE_MODULES_MENUPOS="USB"
+
+USB_STORAGE_PARTITION_VALUES="<STRING>"
+USB_STORAGE_PARTITION_TEXT="USB storage device file"
+USB_STORAGE_PARTITION_MENUPOS="USB"
+
+USB_STORAGE_WAIT_VALUES="<STRING>"
+USB_STORAGE_WAIT_TEXT="Wait x seconds before mount USB storage"
+USB_STORAGE_WAIT_MENUPOS="USB"
+
+ASK_PW_ON_BOOT_VALUES="yes no"
+ASK_PW_ON_BOOT_TEXT="Alway ask altboot password on boot"
+ASK_PW_ON_BOOT_MENUPOS="Core"
+
+SD_DEVICE_VALUES="<STRING>"
+SD_DEVICE_TEXT="The device-file for the SD card"
+SD_DEVICE_MENUPOS="SD_MMC"
+
+SD_KERNEL_MODULE_VALUES="<STRING>"
+SD_KERNEL_MODULE_TEXT="Kernelmodule required for SD operation"
+SD_KERNEL_MODULE_MENUPOS="SD_MMC"
+
+SD_MOUNTPOINT_VALUES="<STRING>"
+SD_MOUNTPOINT_TEXT="Mointpoint for the SD card"
+SD_MOUNTPOINT_MENUPOS="SD_MMC"
============================================================
--- packages/altboot/altboot_0.0.0.bb e545e6817d366a2ded44822b96cddcfd4565e139
+++ packages/altboot/altboot_0.0.0.bb 244c72e3711fec1c4a3e752210eccc27297e19e9
@@ -20,7 +20,7 @@ RDEPENDS_${PN} = "${PN}-conf"
######################################################################################
-PR = "r45"
+PR = "r46"
######################################################################################
@@ -35,6 +35,8 @@ SRC_URI = "file://altboot-menu \
file://altboot.func \
file://init.altboot \
file://altboot*.cfg \
+ file://altbootctl.conf \
+ file://altbootctl \
file://beep.raw"
# S = "${WORKDIR}/altboot/"
@@ -56,7 +58,9 @@ do_install() {
install -m 0644 ${WORKDIR}/beep.raw ${D}/usr/share/sounds
install -m 0644 ${WORKDIR}/altboot*.cfg ${D}/etc
install -m 0644 ${WORKDIR}/altboot.func ${D}/etc
+ install -m 0644 ${WORKDIR}/altbootctl.conf ${D}/etc
install -m 0755 ${WORKDIR}/init.altboot ${D}/sbin
+ install -m 0755 ${WORKDIR}/altbootctl ${D}/sbin
install -m 0755 ${WORKDIR}/altboot-menu/*-* ${D}/etc/altboot-menu
============================================================
--- packages/altboot/files/altboot-menu/Advanced/70-install-tgz 92a063d1e3a2828d2e1f6b2249d49f5f3cf28592
+++ packages/altboot/files/altboot-menu/Advanced/70-install-tgz f8320c93b94c9d4a809efbee119bf4c81dd571f0
@@ -1,6 +1,6 @@
#!/bin/sh
-
M_TITLE="Install RootFS from tar.gz"
+M_FLAGS="noRemember"
run_module(){
test -e /etc/altboot.func && . /etc/altboot.func || die "ERROR: /etc/altboot.func not found. Check your installation!"
@@ -259,5 +259,6 @@ title) echo "$M_TITLE";;
case "$1" in
title) echo "$M_TITLE";;
+flags) echo "$M_FLAGS";;
run) run_module "$2";;
esac
============================================================
--- packages/altboot/files/altboot-menu/Advanced/70-setKernel 94b21109eca41d7ce71e3e290477a703762bf561
+++ packages/altboot/files/altboot-menu/Advanced/70-setKernel fb78e02d4d7b413be485d0aba9aea195d192a8d7
@@ -1,8 +1,9 @@ M_TITLE="Choose kernel for next boot"
# !/bin/sh
M_TITLE="Choose kernel for next boot"
+# Deprecated due to altbootctl
+exit 0
-
# Only kernel 2.6 offers kexec support
uname -r | grep -q "^2.6" || exit 0
============================================================
--- packages/altboot/files/altboot-menu/Advanced/80-configure-kexec a810c21c656e173bd90c29aa57588f079fce9730
+++ packages/altboot/files/altboot-menu/Advanced/80-configure-kexec 105e0e495a1455bdb36ed000eb0f1347e5dc4a84
@@ -1,6 +1,8 @@ M_TITLE="Configure kexec CMDLINE"
# !/bin/sh
M_TITLE="Configure kexec CMDLINE"
+# Deprecated due to altbootctl
+exit 0
# Only kernel 2.6 offers kexec support
============================================================
--- packages/altboot/files/altboot-menu/Advanced/80-copyrootfs c0d55e4ab6b93018312ce6ed55437f0113b39781
+++ packages/altboot/files/altboot-menu/Advanced/80-copyrootfs 947efa59783050dc8ec55554d8daf087b4e8a302
@@ -1,5 +1,6 @@ M_TITLE="Copy rootfs to SD/CF"
# !/bin/sh
M_TITLE="Copy rootfs to SD/CF"
+M_FLAGS="noRemember"
# Unfinished script.
exit 0
@@ -317,5 +318,6 @@ title) echo "$M_TITLE";;
case "$1" in
title) echo "$M_TITLE";;
+flags) echo "$M_FLAGS";;
run) run_module;;
esac
============================================================
--- packages/altboot/files/altboot.func 6fa0ea7a84120af02ef7eceabaa59b6503f39b27
+++ packages/altboot/files/altboot.func 5a124e4881c0d4938960cf04034e26f22edb8d99
@@ -580,11 +580,15 @@ set_pref() {
data_id="$2"
data_value="$3"
- #echo "[$1] [$2] [$3]"
+ #debug_echo "[$1] [$2] [$3]"
#export "${data_name}"="`eval echo -e \\$${data_name} | sed "s/\#\#\#/\#\#\#\\n/g"|sed s/^\ // | sed s/^$data_id.*//`"
- export "${data_name}"="`eval echo -e \\$${data_name} `$data_id##$data_value###"
-
+ if test -z "$3"
+ then
+ debug_echo "set_pref(): WARNING, writing empty value to $data_name / $data_id! THIS WILL BREAK THINGS"
+ #data_value=" "
+ fi
+ export "${data_name}"="`eval echo -e \\$${data_name} `$data_id##$data_value###"
}
# $1: uniq name
@@ -602,9 +606,34 @@ dump_pref() {
dump_pref() {
data_name="$1"
- echo "`eval echo -e \\$${data_name} | sed "s/\#\#\#/\#\#\#\\n/g"|sed s/^\ // `"
+ echo "`eval echo -e ${data_name} | sed "s/\#\#\#/\#\#\#\\n/g"|sed s/^\ // `"
+
+ #echo "-- `eval echo ${data_name}` --"
+ #debug_echo "[$menu_fileflags]"
}
+# $1 = name, $2 = cache_file
+export_pref() {
+ data_name="$1"
+ echo "`eval echo -e ${data_name}`" > "$2"
+}
+
+# $1 = name, $2 = cache_file
+import_pref() {
+ data_name="$1"
+ data_id="$2"
+
+ #debug_echo "[$1] [$2] [$3]"
+
+ if test -z "$3"
+ then
+ debug_echo "set_pref(): WARNING, writing empty value to $data_name / $data_id! THIS WILL BREAK THINGS"
+ #data_value=" "
+ fi
+ export "${data_name}"="`cat "$2"`"
+
+}
+
# $1: uniq name, $2 identifier, $3 out var
get_pref() {
data_name="$1"
@@ -612,10 +641,11 @@ get_pref() {
data_out="$3"
data_list="`eval echo -e \\$${data_name}`"
+ #echo "data_list: [$data_list]"
#data_value="`echo "$data_list"| sed "s/\#\#\#/\\n/g"|sed s/^\ // | grep "^$data_id##" | sed -n "s/.*\#\(.*\)$/\1/p"`"
#data_value="`echo "$data_list"| sed "s/\#\#\#/\\n/g"|sed s/^\ // | sed -n "/^$data_id/s/.*\#\(.*\)$/\1/p"`"
data_value="`echo "$data_list"| sed "s/\#\#\#/\\n/g" | sed -n "s/^\ //;/^$data_id\#/s/.*\#\(.*\)$/\1/p"`"
- # echo "WERT: [$data_value]"
+ #echo "WERT: [$data_value]"
export "${data_out}"="$data_value"
test -n "$data_value" && return 0
=======================================%s
>>> DIFF TRUNCATED @ 16K
More information about the Openembedded-commits
mailing list