diff options
| author | Ross Burton <ross.burton@arm.com> | 2023-10-06 12:22:00 +0100 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2023-10-09 15:51:13 +0100 |
| commit | 42d35e89a343eb28d85f8c4ab4da486bed8ae160 (patch) | |
| tree | 8db3044283ac2e941d0a479dddd9d7ce44d4e611 | |
| parent | b3fa551d64d94baf9dd9e56d7e42d20e0819cd0b (diff) | |
| download | poky-42d35e89a343eb28d85f8c4ab4da486bed8ae160.tar.gz | |
sysvinit-inittab: use ttyrun to run getty only if the terminal exists
Wrap calls to start_getty with ttyrun, so that getty isn't started if
the device doesn't exist. As we know start_getty is only called when
the device exists we can remove the partial workaround for this problem
in that scripts too.
This neatly obsoletes SERIAL_CONSOLES_CHECK, whose sole purpose was to
check what terminals are present at boot and rewrite inittab. Notably,
this meant that SERIAL_CONSOLES_CHECK made using a read-only rootfs
impossible.
(From OE-Core rev: f4fd17d5a5e4eaa31995d3ca52c871cfbdc0df68)
(From OE-Core rev: 8e48297621311116d3edd7e3aa0de1b8ef2431b1)
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
| -rw-r--r-- | meta/recipes-core/sysvinit/sysvinit-inittab/start_getty | 11 | ||||
| -rw-r--r-- | meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb | 30 |
2 files changed, 7 insertions, 34 deletions
diff --git a/meta/recipes-core/sysvinit/sysvinit-inittab/start_getty b/meta/recipes-core/sysvinit/sysvinit-inittab/start_getty index f60409eae3..f5671ee53d 100644 --- a/meta/recipes-core/sysvinit/sysvinit-inittab/start_getty +++ b/meta/recipes-core/sysvinit/sysvinit-inittab/start_getty | |||
| @@ -1,5 +1,9 @@ | |||
| 1 | #!/bin/sh | 1 | #!/bin/sh |
| 2 | 2 | ||
| 3 | SPEED=$1 | ||
| 4 | DEVICE=$2 | ||
| 5 | TERM=$3 | ||
| 6 | |||
| 3 | # busybox' getty does this itself, util-linux' agetty needs extra help | 7 | # busybox' getty does this itself, util-linux' agetty needs extra help |
| 4 | getty="/sbin/getty" | 8 | getty="/sbin/getty" |
| 5 | case $(readlink -f "${getty}") in | 9 | case $(readlink -f "${getty}") in |
| @@ -13,9 +17,4 @@ case $(readlink -f "${getty}") in | |||
| 13 | ;; | 17 | ;; |
| 14 | esac | 18 | esac |
| 15 | 19 | ||
| 16 | if [ -e /sys/class/tty/$2 -a -c /dev/$2 ]; then | 20 | ${setsid:-} ${getty} ${options:-} -L $SPEED $DEVICE $TERM |
| 17 | ${setsid:-} ${getty} ${options:-} -L $1 $2 $3 | ||
| 18 | else | ||
| 19 | # Prevent respawning to fast error if /dev entry does not exist | ||
| 20 | sleep 1000 | ||
| 21 | fi | ||
diff --git a/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb b/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb index e70dc705c0..6bbe517df1 100644 --- a/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb +++ b/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb | |||
| @@ -28,7 +28,7 @@ do_install() { | |||
| 28 | device=$(echo $s | cut -d\; -f 2) | 28 | device=$(echo $s | cut -d\; -f 2) |
| 29 | label=$(echo $device | sed -e 's/tty//' | tail --bytes=5) | 29 | label=$(echo $device | sed -e 's/tty//' | tail --bytes=5) |
| 30 | 30 | ||
| 31 | echo "$label:12345:respawn:${base_bindir}/start_getty $speed $device vt102" >> ${D}${sysconfdir}/inittab | 31 | echo "$label:12345:respawn:${sbindir}/ttyrun $device ${base_bindir}/start_getty $speed $device vt102" >> ${D}${sysconfdir}/inittab |
| 32 | done | 32 | done |
| 33 | 33 | ||
| 34 | if [ "${USE_VT}" = "1" ]; then | 34 | if [ "${USE_VT}" = "1" ]; then |
| @@ -52,33 +52,6 @@ EOF | |||
| 52 | fi | 52 | fi |
| 53 | } | 53 | } |
| 54 | 54 | ||
| 55 | pkg_postinst:${PN} () { | ||
| 56 | # run this on host and on target | ||
| 57 | if [ "${SERIAL_CONSOLES_CHECK}" = "" ]; then | ||
| 58 | exit 0 | ||
| 59 | fi | ||
| 60 | } | ||
| 61 | |||
| 62 | pkg_postinst_ontarget:${PN} () { | ||
| 63 | # run this on the target | ||
| 64 | if [ -e /proc/consoles ]; then | ||
| 65 | tmp="${SERIAL_CONSOLES_CHECK}" | ||
| 66 | for i in $tmp | ||
| 67 | do | ||
| 68 | j=`echo ${i} | sed -e s/^.*\;//g -e s/\:.*//g` | ||
| 69 | k=`echo ${i} | sed s/^.*\://g` | ||
| 70 | if [ -z "`grep ${j} /proc/consoles`" ]; then | ||
| 71 | if [ -z "${k}" ] || [ -z "`grep ${k} /proc/consoles`" ] || [ ! -e /dev/${j} ]; then | ||
| 72 | sed -i -e /^.*${j}\ /d -e /^.*${j}$/d /etc/inittab | ||
| 73 | fi | ||
| 74 | fi | ||
| 75 | done | ||
| 76 | kill -HUP 1 | ||
| 77 | else | ||
| 78 | exit 1 | ||
| 79 | fi | ||
| 80 | } | ||
| 81 | |||
| 82 | # USE_VT and SERIAL_CONSOLES are generally defined by the MACHINE .conf. | 55 | # USE_VT and SERIAL_CONSOLES are generally defined by the MACHINE .conf. |
| 83 | # Set PACKAGE_ARCH appropriately. | 56 | # Set PACKAGE_ARCH appropriately. |
| 84 | PACKAGE_ARCH = "${MACHINE_ARCH}" | 57 | PACKAGE_ARCH = "${MACHINE_ARCH}" |
| @@ -89,4 +62,5 @@ CONFFILES:${PN} = "${sysconfdir}/inittab" | |||
| 89 | USE_VT ?= "1" | 62 | USE_VT ?= "1" |
| 90 | SYSVINIT_ENABLED_GETTYS ?= "1" | 63 | SYSVINIT_ENABLED_GETTYS ?= "1" |
| 91 | 64 | ||
| 65 | RDEPENDS:${PN} = "ttyrun" | ||
| 92 | RCONFLICTS:${PN} = "busybox-inittab" | 66 | RCONFLICTS:${PN} = "busybox-inittab" |
