core: 完善 tty 检测
This commit is contained in:
parent
67a2bee31c
commit
2a7c24bee4
@ -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
|
||||
}
|
||||
|
||||
# shellcheck disable=SC2154
|
||||
|
25
ttys.sh
25
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
|
||||
|
Loading…
Reference in New Issue
Block a user