Graças a um post no VOL sobre Gerenciadores de Login para o Slackware, acabei por revisar uma antiga dica minha (que agora não funciona mais), e nos testes realizados no Gentoo, Slackware e Void Linux, encontrei formas definitivas de login automático sem Display Managers (Gerenciadores de Login).
Atualizado em: 2018-05-03.
Cabe ressaltar que o Gentoo com o init OpenRC e o Slackware são Linux clássicos, sem frescuras, ainda usam o também jurássico /etc/inittab (e isto é bom!).
O Void Linux por sua vez usa o init runit e dentre os sistemas testados teve o método mais fácil de implementar, deixando o boot da distro que já era rápido, ainda mais: 26s:
Gentoo.
/etc/inittab.
Edite o arquivo /etc/inittab substituindo a linha:
c1:12345:respawn:/sbin/agetty 38400 tty1 linux
por:
c1:12345:respawn:/sbin/agetty -a edps --noclear 38400 tty1 linux
* Troque edps pelo seu login de usuário.
Comente a última linha do arquivo, deixando-a assim:
#x:a:once:/etc/X11/startDM.sh
/etc/init.d/xdm.
Remova o XDM da inicialização do sistema:
# rc-update del xdm default
autologin.
Dependendo do seu shell padrão, em sua $HOME crie os arquivos abaixo (não faz mal criar os dois! rsrs):
~/.bash_profile.
if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then exec startx; fi
~/.zprofile.
if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then exec startx; fi
Criar o arquivo ~/.zprofile APENAS se usa o shell ZSH, o que é o meu caso.
~/.xinitrc.
Por fim, crie o arquivo ~/.xinitrc com a entrada referente ao seu ambiente preferido (exemplo: exec startxfce4); um bom local para pesquisar sobre é na Arch Wiki.
Segue o meu exemplo para o OpenBox:
#!/bin/sh if [ -z "$DESKTOP_SESSION" -a -x /usr/bin/ck-launch-session ]; then exec ck-launch-session dbus-launch --sh-syntax --exit-with-session openbox-session else exec openbox-session fi
E agora resta apenas reiniciar!
Slackware.
/etc/inittab.
Edite o arquivo /etc/inittab substituindo a linha:
c1:12345:respawn:/sbin/agetty 38400 tty1 linux
por:
c1:12345:respawn:/sbin/agetty -a edps --noclear 38400 tty1 linux
* Troque edps pelo seu login de usuário.
Display Managers.
Remova qualquer Gerenciador de Login DM da inicialização do sistema:
# cp -v /etc/rc.d/rc.4 /etc/rc.d/rc.4-old # nano /etc/rc.d/rc.4
Deixe o arquivo /etc/rc.d/rc.4 assim:
#! /bin/sh # if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then exec startx; fi
autologin.
Repetindo os passos do Gentoo, dependendo do seu shell padrão, em sua $HOME crie os arquivos abaixo:
~/.bash_profile.
if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then exec startx; fi
~/.zprofile.
if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then exec startx; fi
Criar o arquivo ~/.zprofile APENAS se usa o shell ZSH, o que é o meu caso.
~/.xinitrc.
Vou deixar o meu exemplo de ~/.xinitrc para o OpenBox:
#!/bin/sh # $Xorg: xinitrc.cpp,v 1.3 2000/08/17 19:54:30 cpqbld Exp $ userresources=$HOME/.Xresources usermodmap=$HOME/.Xmodmap sysresources=/etc/X11/xinit/.Xresources sysmodmap=/etc/X11/xinit/.Xmodmap # merge in defaults and keymaps [ -f $sysresources ] && /usr/bin/xrdb -merge $sysresources [ -f $sysmodmap ] && /usr/bin/xmodmap $sysmodmap [ -f $userresources ] && /usr/bin/xrdb -merge $userresources [ -f $usermodmap ] && /usr/bin/xmodmap $usermodmap # Create default user directory & populate it if not already existent if [ ! -d $HOME/.config/openbox ]; then mkdir -p $HOME/.config/openbox cat /etc/xdg/openbox/menu.xml > $HOME/.config/openbox/menu.xml cat /etc/xdg/openbox/rc.xml > $HOME/.config/openbox/rc.xml fi if [ -z "$DESKTOP_SESSION" -a -x /usr/bin/ck-launch-session ]; then exec ck-launch-session dbus-launch --exit-with-session openbox-session else exec openbox-session fi
Más o que você DEVE FAZER é executar:
$ xwmconfig
Void Linux.
Exemplificado na própria Wiki do projeto, os passos são bastante simples:
Copie o diretório /etc/sv/agetty-tty1 como agetty-autologin-tty1 e salve-o em /etc/sv:
$ sudo cp -R /etc/sv/agetty-tty1 /etc/sv/agetty-autologin-tty1
Em seguida, edite o arquivo /etc/sv/agetty-autologin-tty1/conf:
$ sudo nano /etc/sv/agetty-autologin-tty1/conf
Deixe-o como no exemplo abaixo, substituindo edps pelo seu login:
if [ -x /sbin/agetty -o -x /bin/agetty ]; then # util-linux specific settings if [ "${tty}" = "tty1" ]; then GETTY_ARGS="--noclear" fi fi BAUD_RATE=38400 TERM_NAME=linux
Salve e saia com Ctrl+o e Ctrl+x, agora crie um link simbólico para o serviço:
$ sudo ln -sv /etc/sv/agetty-autologin-tty1 /var/service/
Assim como no caso do Gentoo e do Slackware, deixarei aqui 2 exemplos para o ~/.bash_profile e ~/.zprofile:
~/.bash_profile.
# .bash_profile # Get the aliases and functions [ -f $HOME/.bashrc ] && . $HOME/.bashrc # autologin on tty1 if [ -z "$DISPLAY" ] && [ "$(fgconsole)" -eq 1 ]; then exec startx fi
~/.zprofile.
# autologin on tty1 if [ -z "$DISPLAY" ] && [ "$(fgconsole)" -eq 1 ]; then exec startx fi
Observem que os dois arquivos são diferentes dos que foram exemplificados para Gentoo e Slackware, diferente mas funcional (diria até melhor, com menos mensagens na tela preta).
~/.xinitrc.
Aqui eu poderia apenas repetir o ~/.xinitrc do Slackware ou do Gentoo (que são diferentes), mas deixo o que uso no Void
#!/bin/sh if [ -z "$DESKTOP_SESSION" -a -x /usr/bin/ck-launch-session ]; then exec ck-launch-session dbus-launch --sh-syntax --exit-with-session openbox-session else exec openbox-session fi
Por último, mas não menos importante, removeremos os serviços de login e de algum Gerenciador de Login que esteja instalado, para tal feche todos os programas e tecle Ctrl+ Alt + F2, logue-se como root (ou use sudo) e execute:
$ sudo rm -rf /var/service/agetty-tty1 $ sudo rm -rf /var/service/lxdm
NESTE PONTO, automágicamente o autologin entrará em uso e o ambiente gráfico será reiniciado, mas recomendo que reinicie o sistema para ver como o Void Linux e seu runit são tão rápidos como o Bolt! 🙂
Observações.
Com esta mudança o login passa a ser automático, porém, você ficará impedido de alternar sessões, um simples Ctrl+Alt+Backspace apenas fará a sua sessão ser reiniciada, clicar em Encerrar Sessão no seu Gestor de Saída terá o mesmo efeito, etc.
Nem mesmo será possível encerrar o ambiente gráfico teclando Ctrl+Alt+F2, logando-se e parando o script /etc/rc.d/rc.4 com:
# /etc/rc.d/rc.4 stop
Mas em caso de necessidade, você pode iniciar pelo Recovery Mode do GRUB ou teclando “e” no menu do GRUB e na linha começada por linux adicionar ao fim da mesma a palavrinha ” single “, como em:
linux /boot/kernel-genkernel-x86_64-4.15.8 root=UUID=bfdaee51-2804-4535-a862-6a18e379cc84 ro quiet gfxpayload=1024x768x32 single
No Gentoo, ainda verei o que consigo fazer utilizando os scripts /etc/init.d/xdm e /etc/X11/startDM.sh.
No Slackware, talvez reinstale o OpenRC ou instale o runit pra ver se o Slack consegue ficar próximo aos 26s do Void Linux.
No Void, tenho que testar se dá para alternar entre as ttys usando a combinação Ctrl + Alt -F*.
IntÈ!
BRILHANTE!
Funcionou tambem com Slackware 64 current em 28/july/2022.
Obrigado!
Thanks
CurtirCurtir
Blz Vilhena, que bom que funcionou com você! papo a ser dado: desde 2019 quando adquiri este PC atual que não mexo em meus sistemas: Slack, Gentoo e Void Linux, apenas atualizo.
CurtirCurtir