Xubuntu 16.04 ttyname failed Ioctl inapropriado para o dispositivo

3

Eu preciso lançar o Xubuntu como um usuário root para um sistema de demonstração independente.

Se eu uso o recurso de login automático em lightdm ou quando faço login por meio de "Outro" > "root" quando solicitado, sempre recebo a seguinte resposta:

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.

Depoisdelimparacaixapop-upacima,osistemafuncionacomoesperadocomousuárioROOT.

Aquiestãoosconteúdosde/etc/lightdm/lightdm.conf:

[Seat:*]autologin-guest=falseautologin-user=rootautologin-user-timeout=0

EutenhovistooutrosproblemassemelhantesonlinerelacionadosaoVagrind,equeosproblemasforamresolvidoscomalgumasdasatualizaçõesmaisrecentes,masissoaindapareceestaracontecendonoXubuntu16.04

link

Como resolver 'ttyname falhou: Ioctl inapropriado para o dispositivo 'no Vagrant?

A maioria dos fóruns afirma que esta mensagem está incorreta e não deve ser exibida. Existe alguma maneira de iniciar o Xubuntu automaticamente como root, evitando este popup errado?

    
por boyashley 16.08.2017 / 20:26

1 resposta

6

A causa final é que o Xubuntu claramente não esperava que alguém fizesse um login gráfico na conta root, portanto, seu arquivo .profile padrão gera um erro espúrio nessa situação. Se você olhar a última linha do /root/.profile, você encontrará:

mesg n || true

Isso evita que programas como talk gravem no seu console. Isso é especialmente importante se você fizer login na raiz por meio de uma sessão de texto (su de xterm, ssh, etc.), pois essas mensagens podem ficar confusas na tela.

O || true bit é para impedir que o shell script termine se o mesg falhar (como está falhando aqui), mas isso não impede que ele gere mensagens de erro quando falhar, o que você está vendo.

A causa do problema é que, colocando a linha no .profile, ela é executada toda vez que o bash é executado, mesmo quando é executado a partir de uma sessão sem um dispositivo tty (como durante as primeiras partes de um login gráfico), então você vê o erro. É inofensivo, porque mesg seria sem sentido quando executado a partir de uma sessão sem um TTY, mas a área de trabalho não sabe disso e exibe a mensagem.

Uma solução (como comentário em uma pergunta que você mencionou disse) é alterar a linha para que ela não seja tente chamar mesg quando não houver TTY:

tty -s && mesg n || true

Isso diz para não tentar chamar mesg quando não há TTY, mas ainda vai chamá-lo quando houver um TTY (por exemplo, de um login SSH).

    
por 26.09.2017 / 21:41