From 2a7c24bee496a42bcff4d0d885eb256bc6ab8576 Mon Sep 17 00:00:00 2001 From: bin456789 Date: Sun, 8 Oct 2023 21:58:16 +0800 Subject: [PATCH] =?UTF-8?q?core:=20=E5=AE=8C=E5=96=84=20tty=20=E6=A3=80?= =?UTF-8?q?=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- reinstall.sh | 8 +------- ttys.sh | 25 +++++++++++-------------- 2 files changed, 12 insertions(+), 21 deletions(-) diff --git a/reinstall.sh b/reinstall.sh index c83d41c..d15e5cc 100644 --- a/reinstall.sh +++ b/reinstall.sh @@ -1008,13 +1008,7 @@ build_extra_cmdline() { } echo_tmp_ttys() { - # 由于 windows 下无法测试各tty是否有效 - # 这里的 tty 只临时使用,非最终系统的 tty - if is_in_windows; then - echo "console=ttyS0,115200n8 console=tty0" - else - curl -L $confhome/ttys.sh | sh -s "console=" - fi + curl -L $confhome/ttys.sh | sh -s "console=" } # shellcheck disable=SC2154 diff --git a/ttys.sh b/ttys.sh index d9f75c0..918ab84 100644 --- a/ttys.sh +++ b/ttys.sh @@ -1,25 +1,22 @@ #!/bin/sh prefix=$1 -# 最后一个 tty 是主 tty,显示的信息最全 -# 有些平台例如 aws/gcp 后台vnc只能截图,不能输入,用有没有鼠标判断 -# 因此如果有显示器且有鼠标,tty0 放最后面,否则 tty0 放前面 -ttys="ttyS0 ttyAMA0" -if [ -e /dev/fb0 ] && [ -e /dev/input/mouse0 ]; then - ttys="$ttys tty0" -else - ttys="tty0 $ttys" -fi +is_in_windows() { + [ "$(uname -o)" = Cygwin ] || [ "$(uname -o)" = Msys ] +} +# 最后一个 tty 是主 tty,显示的信息最全 is_first=true -for tty in $ttys; do - if [ -e /dev/$tty ] && echo >/dev/$tty 2>/dev/null; then - if ! $is_first; then +for tty in tty0 ttyS0 ttyAMA0; do + # hytron 有ttyS0 但无法写入 + # cygwin 没有 tty0,所以 windows 下 tty0 免检 + if { [ "$tty" = tty0 ] && is_in_windows; } || stty -g -F "/dev/$tty" >/dev/null 2>&1; then + if $is_first; then + is_first=false + else printf " " fi - is_first=false - printf "%s" "$prefix$tty" if [ "$prefix" = "console=" ] && [ "$tty" = ttyS0 ]; then