summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
6e2d2e7)
exec is a bit flaky for starting on consoles, so use getty instead.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
+getty=/sbin/getty
+use_getty=0
detach=0
usage() {
cat >&2 <<EOF
detach=0
usage() {
cat >&2 <<EOF
-pb-console [OPTIONS] console_dev
+pb-console [OPTIONS] -- [ARGS]
OPTIONS
-d, --detach
Start in a detached (background) state.
OPTIONS
-d, --detach
Start in a detached (background) state.
+
+ -g, --getty[=PATH]
+ Start a getty (specified by PATH, otherwise $getty),
+ passing additional ARGS to the getty process
+
+ -s, --shell=PATH
+ Use PATH as the exit-to-shell shell
+
+ -u, --ui=PATH
+ Use PATH as the petitboot UI
+
-h, --help
Print a help message.
EOF
exit 1
}
-h, --help
Print a help message.
EOF
exit 1
}
+opts=$(getopt --options 'hdg::s:u:' \
+ --long 'help,detach,getty::,shell:,ui:' \
+ -- "$@")
+[ $? = 0 ] || exit 1
+
+eval set -- "$opts"
+
+while :
+ shift
+ ;;
+ -g | --getty)
+ use_getty=1
+ getty_arg="$2"
+ shift 2
+ ;;
+ -s | --shell)
+ shell="$2"
+ shift 2
+ ;;
+ -u | --ui)
+ ui="$2"
+ shift 2
;;
--help | -h)
usage
;;
--)
;;
--help | -h)
usage
;;
--)
+ echo "getopt error"
+ exit 1
-if [ -n "$console" -a "${console#/dev/}" = "$console" ]
-then
- console="/dev/$console"
-fi
-
-pb_loop() {
- while :
- do
- $ui
- echo "Exiting petitboot. Type 'exit' to return."
- $shell
- done
-}
-
-if [ -n "$console" ]
- exec <$console >$console 2>&1
+ if [ -n "$getty_arg" ]
+ then
+ getty="$getty_arg"
+ fi
+ if [ "$detach" = 1 ]
+ then
+ $getty -l $0 "$@" &
+ else
+ exec $getty -l $0 "$@"
+ fi
-if [ "$detach" = 1 ]
-then
- (
- pb_loop
- ) &
-else
- pb_loop
-fi
+while :
+do
+ $ui
+ echo "Exiting petitboot. Type 'exit' to return."
+ $shell
+done