home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2007 January, February, March & April
/
Chip-Cover-CD-2007-02.iso
/
boot
/
i386
/
rescue
/
sbin
/
smart_agetty
< prev
next >
Wrap
Text File
|
2006-11-29
|
2KB
|
108 lines
#!/bin/bash
# emulate: /sbin/agetty -L $speed console for console != vga/framebuffer console
#echo "$0: called with '$*'" > /dev/kmsg
function stop_me () {
kill -STOP $$
exit 1
}
kernel_console=
getty_options=
getty_device=
getty_speed=
getty_TERM=
until [ "$#" = "0" ] ; do
case "$1" in
-i|-h|-L|-m|-n|-w)
getty_options="$getty_options $1"
shift
;;
-*)
getty_options="$getty_options $1 $2"
shift 2
;;
*)
case "$1" in
[0-9]*)
getty_speed=$1
getty_device=$2
;;
*)
getty_speed=$2
getty_device=$1
;;
esac
getty_TERM=$3
break
;;
esac
done
getty_speed=`stty speed < /dev/$getty_device`
if test -z "$getty_speed"
then
echo "${0}: can not determine '$getty_device' speed" > /dev/kmsg
stop_me
exit 1
fi
guess_powerpc_autoconsole() {
local prop
if test -f /proc/device-tree/chosen/linux,stdout-path
then
prop=`cat /proc/device-tree/chosen/linux,stdout-path`
prop="${prop##*/}"
case "$prop" in
display@*) echo tty1 ;;
serial@3f8) echo ttyS0 ;; # maple
serial@i3f8) echo ttyS0 ;;
serial@i2f8) echo ttyS1 ;;
serial@i898) echo ttyS2 ;;
serial@i890) echo ttyS3 ;;
vty@0) echo hvc0 ;;
vty@30000000) echo hvsi0 ;;
vty@30000001) echo hvsi1 ;;
# some Exar and Jasmine PCI cards have serial@[0123]
# but since its pci, the ttyS# number cant be guessed
serial@0) echo ttyS0 ;;
*) echo "$0: unhandled stdout '$prop'" > /dev/kmsg ;;
esac
fi
}
if test "$getty_device" = "console"
then
read kernel_cmdline < /proc/cmdline
for i in $kernel_cmdline ''
do
case "$i" in
console=*)
kernel_console="${i#*=}"
kernel_console="${kernel_console%%,*}"
;;
esac
done
if test -z "$kernel_console"
then
# check SuSE TIOCGDEV, remove /dev/
kernel_console="`showconsole < /dev/console`"
kernel_console="${kernel_console##*/}"
fi
if test -z "$kernel_console"
then
kernel_console="`guess_powerpc_autoconsole`"
fi
case "$kernel_console" in
tty[0-9]*)
stop_me
exit 1
;;
esac
fi
exec /sbin/agetty $getty_options $getty_speed $getty_device $getty_TERM