ログイン中に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システムの初期修正には1つのファイルが含まれていました。/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

関連情報