web-dev-qa-db-ja.com

Xubuntu 16.04 ttynameが失敗しましたデバイスの不適切なioctl

Xubuntuをスタンドアロンデモシステムのrootユーザーとして起動する必要があります。

lightdmからの自動ログイン機能を使用するか、プロンプトが表示されたときに[その他]> [ルート]からログインする場合、常に次の応答が返されます。

Error found when loading /root/.profile
mesg: ttyname failed: Inappropriate ioctl for device
As result the session will not be configured correctly.
You should fix the problem as soon as feasible.

enter image description here

上記のポップアップボックスをクリアした後、システムはROOTユーザーで期待どおりに動作します。

/etc/lightdm/lightdm.confの内容は次のとおりです:

[Seat:*]
autologin-guest=false 
autologin-user=root
autologin-user-timeout=0

Vagrindに関連する他の同様の問題をオンラインで見たことがあります。問題は最新のアップデートのいくつかで解決されましたが、これはXubuntu 16.04でも発生しているようです

https://bugs.launchpad.net/ubuntu/+source/lightdm/+bug/1584488

Vagrantで「ttyname失敗:デバイスの不適切なioctl」を解決する方法

ほとんどのフォーラムでは、このメッセージは誤りであり、表示されるべきではないと述べています。この誤ったポップアップを回避しながら、Xubuntuをrootとして自動的に起動する方法はありますか?

8
boyashley

最終的な原因は、Xubuntuが明らかにrootアカウントへのグラフィカルログインを実行することを期待していなかったため、デフォルトの.profileファイルは、この状況で誤ったエラーを生成します。 /root/.profileの最後の行を見ると、次のことがわかります。

mesg n || true

これは、talkなどのプログラムがコンソールに書き込むのを防ぐためです。これらのメッセージが画面を乱雑にする可能性があるため、テキストセッション(xterm、sshなどからのsu)を介してrootにログインした場合、これは特に重要です。

|| trueビットは、mesgが失敗した場合(ここで失敗している場合)にシェルスクリプトが終了しないようにするためのものですが、失敗したときにエラーメッセージが生成されるのを防ぐことはできません。

問題の原因は、行を.profileに入れることにより、(グラフィカルログインの最初の部分のように)ttyデバイスのないセッションから実行された場合でも、bashが実行されるたびに実行されるためです。エラー。とにかくTTYなしのセッションから実行するとmesgは無意味ですが、デスクトップはこれを認識せず、メッセージを表示するため、無害です。

1つの解決策( 参照した質問のコメント による)は、TTYがないときにmesgを呼び出さないように行を変更することです。

tty -s && mesg n || true

これは、TTYがない場合はmesgを呼び出さないように指示しますが、TTYがある場合(SSHログインなどから)は引き続き呼び出します。

15
David C.