Xubuntu 16.04 ttyname не удалось Неправильный ioctl для устройства

7293
boyashley

У меня есть необходимость запустить Xubuntu от имени пользователя root для автономной демонстрационной системы.

Независимо от того, использую ли я функцию автоматического входа из системы 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. 

Xubuntu 16.04 ttyname не удалось Неправильный ioctl для устройства

После очистки всплывающего окна выше, система работает, как и ожидалось, с пользователем 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

Как решить `ttyname fail: Не подходит ioctl для устройства` в Vagrant?

Большинство форумов заявляют, что это сообщение является ошибочным и не должно отображаться. Есть ли способ автоматически запустить Xubuntu от имени root, избегая этого ошибочного всплывающего окна?

3
(1) Пробовали ли вы ответить на вопрос [SU] [на который вы ссылались] (https://superuser.com/q/1160025/150988 «Как решить проблему с« ttyname: неуместным ioctl для устройства »в Vagrant?»). «)? (2) Сообщение об ошибке *** говорит ***, что при загрузке `/ root / .profile` была обнаружена ошибка. Вы смотрели на этот файл? У нас может быть больше шансов ответить на ваш вопрос, если вы * разместите * содержимое этого файла. (Если сообщение слишком длинное, ищите слова «mesg» и «tty» и публикуйте соответствующие выдержки.) Пожалуйста, не отвечайте в комментариях; [отредактируйте] ваш вопрос, чтобы сделать его более понятным и полным. Scott 6 лет назад 0

1 ответ на вопрос

6
David C.

Конечная причина в том, что Xubuntu явно не ожидал, что кто-либо выполнит графический вход в систему для учетной записи root, поэтому его .profileфайл по умолчанию в этой ситуации выдает ложную ошибку. Если вы посмотрите на последнюю строку /root/.profile, вы найдете:

mesg n || true 

Это сделано для того, чтобы такие программы не talkмогли писать на вашу консоль. Это особенно важно, если вы вошли в систему с правами root с помощью текстового сеанса (su из xterm, ssh и т. Д.), Поскольку эти сообщения могут загромождать экран.

|| trueБит, чтобы предотвратить сценарий оболочки от завершения, если MESG должен терпеть неудачу (как это не удается здесь), но это не мешает ему генерировать сообщения об ошибках, когда он выходит из строя, который вы видите.

Причина проблемы в том, что, помещая строку в .profile, она запускается каждый раз, когда выполняется bash, даже когда она запускается из сеанса без tty-устройства (как во время самых ранних частей графического входа в систему), поэтому вы видите Ошибка. Это безвредно, потому mesgчто в любом случае было бы бессмысленно запускаться из сеанса без TTY, но рабочий стол этого не знает и отображает сообщение.

Одно из решений (как сказано в комментарии к вопросу, на который вы ссылались ) состоит в том, чтобы изменить строку, чтобы она не пыталась звонить, mesgкогда нет TTY:

tty -s && mesg n || true 

Это говорит о том, что он не должен пытаться звонить, mesgкогда нет TTY, но все равно будет звонить, когда есть TTY (например, из входа SSH).