blob: 96fd6cfcfd0bc47bce6fc9613d46fccf9a08919b [file] [log] [blame]
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001#!/bin/sh
Brad Bishopd7bf8c12018-02-25 22:55:05 -05002###############################################################################
3# This script is used to automatically set up the serial console(s) on startup.
4# The variable SERIAL_CONSOLES can be set in meta/conf/machine/*.conf.
5# Script enhancement has been done based on Bug YOCTO #10844.
6# Most of the information is retrieved from /proc virtual filesystem containing
7# all the runtime system information (eg. system memory, device mount, etc).
8###############################################################################
9
10# Get active serial filename.
11active_serial=$(grep "serial" /proc/tty/drivers | cut -d/ -f1 | sed "s/ *$//")
12
13# Rephrase input parameter from ttyS target index (ttyS1, ttyS2, ttyAMA0, etc).
14runtime_tty=$(echo $2 | grep -oh '[0-9]')
15
Brad Bishop19323692019-04-05 15:28:33 -040016# busybox' getty does this itself, util-linux' agetty needs extra help
17getty="/sbin/getty"
18case $(readlink -f "${getty}") in
19 */busybox*)
20 ;;
21 *)
22 if [ -x "/usr/bin/setsid" ] ; then
23 setsid="/usr/bin/setsid"
24 fi
25 ;;
26esac
27
Brad Bishopd7bf8c12018-02-25 22:55:05 -050028# Backup $IFS.
29DEFAULT_IFS=$IFS
30# Customize Internal Field Separator.
31IFS="$(printf '\n\t')"
32
33for line in $active_serial; do
34 # Check we have the file containing current active serial target index.
35 if [ -e "/proc/tty/driver/$line" ]
36 then
37 # Remove all unknown entries and discard the first line (desc).
38 activetty=$(grep -v "unknown" "/proc/tty/driver/$line" \
39 | tail -n +2 | grep -oh "^\s*\S*[0-9]")
40 for active in $activetty; do
41 # If indexes do match then enable the serial console.
42 if [ $active -eq $runtime_tty ]
43 then
44 if [ -c /dev/$2 ]
45 then
Brad Bishop19323692019-04-05 15:28:33 -040046 ${setsid:-} ${getty} -L $1 $2 $3
Brad Bishopd7bf8c12018-02-25 22:55:05 -050047 fi
48 break
49 fi
50 done
51 fi
52done
53
54# Restore $IFS.
55IFS=$DEFAULT_IFS