Xubuntu 16.04 ttyname 失败 设备 ioctl 不合适

Xubuntu 16.04 ttyname 失败 设备 ioctl 不合适

我需要启动 Xubuntu 作为用户可以使用独立的演示系统。

无论我使用来自的自动登录功能lightdm,还是在提示时通过“其他”>“root”登录,我总是得到以下响应:

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.

在此处输入图片描述

清除上面的弹出框后,系统将按照 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 不适当”?

大多数论坛都表示此消息是错误的,不应显示。有没有办法以 root 身份自动启动 Xubuntu,同时避免出现此错误弹出窗口?

答案1

根本原因是 Xubuntu 显然不希望任何人以图形方式登录 root 帐户,因此其默认.profile文件在这种情况下会产生虚假错误。如果您查看 /root/.profile 的最后一行,您会发现:

mesg n || true

这是为了防止诸如 之类的程序talk写入您的控制台。如果您通过文本会话(从 xterm、ssh 等执行 su)登录到 root,这一点尤其重要,因为这些消息会使屏幕变得混乱。

|| true位是为了防止 shell 脚本在 mesg 失败时终止(因为它在这里失败了),但这并不能阻止它在失败时生成错误消息,正如您所看到的。

问题的原因是,通过将这行放入 .profile 中,它会在每次执行 bash 时运行,即使它是从没有 tty 设备的会话中运行(例如在图形登录的最初部分),所以您会看到错误。这无害,因为mesg无论如何从没有 TTY 的会话中运行时都是没有意义的,但桌面不知道这一点并显示该消息。

一个解决方案(如你引用的问题中的评论说)是改变线路,以便它不会mesg在没有 TTY 时尝试调用:

tty -s && mesg n || true

mesg这告诉它在没有 TTY 时不要尝试调用,但在有 TTY 时仍会调用它(例如从 SSH 登录)。

相关内容