5

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

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

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

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

1 ответ1

9

Конечная причина в том, что 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).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .