![Xubuntu 16.04 ttyname 失败 设备 ioctl 不合适](https://linux22.com/image/1538744/Xubuntu%2016.04%20ttyname%20%E5%A4%B1%E8%B4%A5%20%E8%AE%BE%E5%A4%87%20ioctl%20%E4%B8%8D%E5%90%88%E9%80%82.png)
我需要启动 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 登录)。