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