#!/bin/sh ############################################################################### # This script is used to automatically set up the serial console(s) on startup. # The variable SERIAL_CONSOLES can be set in meta/conf/machine/*.conf. # Script enhancement has been done based on Bug YOCTO #10844. # Most of the information is retrieved from /proc virtual filesystem containing # all the runtime system information (eg. system memory, device mount, etc). ############################################################################### # Get active serial filename. active_serial=$(grep "serial" /proc/tty/drivers | cut -d/ -f1 | sed "s/ *$//") # Rephrase input parameter from ttyS target index (ttyS1, ttyS2, ttyAMA0, etc). runtime_tty=$(echo $2 | grep -oh '[0-9]') # busybox' getty does this itself, util-linux' agetty needs extra help getty="/sbin/getty" case $(readlink -f "${getty}") in */busybox*) ;; *) if [ -x "/usr/bin/setsid" ] ; then setsid="/usr/bin/setsid" fi ;; esac # Backup $IFS. DEFAULT_IFS=$IFS # Customize Internal Field Separator. IFS="$(printf '\n\t')" for line in $active_serial; do # Check we have the file containing current active serial target index. if [ -e "/proc/tty/driver/$line" ] then # Remove all unknown entries and discard the first line (desc). activetty=$(grep -v "unknown" "/proc/tty/driver/$line" \ | tail -n +2 | grep -oh "^\s*\S*[0-9]") for active in $activetty; do # If indexes do match then enable the serial console. if [ $active -eq $runtime_tty ] then if [ -c /dev/$2 ] then ${setsid:-} ${getty} -L $1 $2 $3 fi break fi done fi done # Restore $IFS. IFS=$DEFAULT_IFS