로그인 중에 TTY 커서가 잘못된 위치로 이동합니다.

로그인 중에 TTY 커서가 잘못된 위치로 이동합니다.

Ubuntu 16.04를 사용하고 있으며 데스크톱 관리자가 없습니다. 

내 시스템이 부팅되면 tty0으로 이동하고 화면은 다음과 같습니다.

<내 컴퓨터 이름>로그인: |

|커서를 나타냅니다 . 몇 초 후에 커서가 다음과 같이 줄의 시작 부분으로 이동합니다.

|<내 컴퓨터 이름>로그인:

"일반적으로" 로그인할 수 있지만 사용자 이름을 입력하면 새 텍스트가 커서 오른쪽에 있는 모든 텍스트(예: 로그인 프롬프트)를 덮어씁니다.

++를 사용하여 Ctrltty1로 전환하면 이 문제가 발생하지 않습니다.AltF2

어떻게 디버깅할 수 있나요?

답변1

이 문제를 디버깅하는 방법에 대한 귀하의 질문에 답하기 위해 제가 시도한 방법은 다음과 같습니다.

나는 낮은 기술 스크립트를 작성했습니다.

#!/bin/bash

while true
do
        DATE=`date +%H%M%S`
        ps -e f > pss.out/$DATE
        echo -ne '\n'$DATE
        sleep 1
done

시스템이 부팅되면 빠르게 로그인하여 스크립트를 실행합니다. 출력 줄이 사라질 때까지 지켜본 다음 이벤트 전후의 ps 출력을 비교했습니다.

user@ubuntu-back:~/pss.out$ diff 080234 080236
108d107
<   776 ?        Ss     0:00 /lib/systemd/systemd-fsckd
138c137
<  1630 tty1     R+     0:00          \_ ps -e f
---
>  1634 tty1     R+     0:00          \_ ps -e f
user@ubuntu-back:~/pss.out$ 

그래서 systemd-fsckd가 어느 정도 책임이 있다고 볼 수 있습니다.

이를 증명하기 위해 fstab에서 파일 시스템 검사를 끄고 문제가 사라졌습니다.

분명히 이것은 실제 수정은 아니지만 지금까지 내가 가진 전부입니다.

내 경우에는 부팅 시 텍스트 기반 애플리케이션(내가 작성하지 않음)을 자동으로 실행하는 시스템을 보유하는 임무를 맡고 있고 이 문제로 인해 화면 아티팩트가 생성되기 때문에 이 문제를 해결해야 합니다.

답변2

문제는 systemd-fsck '\r'에 의해 에 인쇄됩니다 /dev/console. 따라서 터미널 tty1은 systemd-fsckd가 비활성화될 때까지 기다려야 합니다. Ubuntu 18.04.4 시스템에 대한 초기 수정에는 하나의 파일이 포함되었습니다./etc/systemd/system/[email protected]/override.conf

[Unit]
After=boot-efi.mount
After=systemd-fsckd.service

[Service]
ExecStart=
ExecStart=-/usr/local/bin/delaytty1.sh $TERM
Type=idle

/usr/local/bin/delaytty1.sh 스크립트의 내용은 다음과 같습니다.

#!/bin/sh
a="active"
while [ $a = "active" ]; do
sleep 1
a=$(/bin/systemctl is-active systemd-fsckd.service)
done
/sbin/agetty --noclear tty1 $1

관련 정보