Meu sistema atual é inicializado para console e eu não quero usar um gerenciador de exibição.
Após atualizar para Ubuntu 13.10
, percebi que o ConsoleKit
não é mais usado para gerenciar logins de usuários e systemd-logind
service é usado.
Meu .xinitrc
config para o Ubuntu 13.04 ficou assim:
exec ck-launch-session startxfce4
O ck-launch-session
me permitiu montar discos ou desligar / reiniciar / suspender o PC.
O único lugar onde eu poderia encontrar documentação sobre como habilitar esses recursos estava na documentação do Arch Linux :
Os usuários devem primeiro configurar o systemd-logind para gerenciar sua sessão. Se o systemd estiver sendo executado como o daemon de inicialização do sistema, isso já está acontecendo.
Em seguida, o usuário deve iniciar o systemd, colocando o seguinte em ~/.xinitrc
: /usr/lib/systemd/systemd --user
O usuário deve remover todas as instâncias de ck-launch-session
ou dbus-launch
de seus ~/.xinitrc
, pois esses comandos são desnecessários.
No entanto, como o Ubuntu usa upstart
e não o systemd
, não posso fazer isso na minha configuração.
Eu tentei fazer algo semelhante, então coloquei isso no meu .xinitrc
:
export DESKTOP_SESSION=xfce
init --user
E a sessão do xfce começa, mas ainda não consigo montar os discos rígidos ou reiniciar, desligar e suspender o meu PC. É efetivamente o mesmo que chamar startxfce4
diretamente.
Se eu iniciar o servidor X com o argumento vt01
, onde 01
é o id do atual tty
, tudo funciona bem, mas não consigo usar coisas como CTRL+C
para finalizar o servidor se algo trava. Sim, existem soluções alternativas como chamar killall xinit
, mas isso não resolve o problema.
Eu acho que não tenho permissão para fazer o desligamento Se eu iniciar o servidor X em um novo tty é porque uma nova sessão logind
não é cretated. Depois de ler a documentação de log , percebo que provavelmente preciso criar uma nova sessão ao iniciar o X servidor e essa sessão deve ser marcada como ativa quando estou no servidor X. Isso pode ser verificado com o seguinte comando:
loginctl show-session $XDG_SESSION_ID | grep Active
A seguinte linha na documentação do logind me confunde:
CreateSession () e ReleaseSession () podem ser usados para abrir ou fechar sessões de login. Essas chamadas nunca devem ser chamadas diretamente pelos clientes. Criar / fechar sessões é exclusivamente o trabalho do PAM e seu módulo pam_systemd.
Então, minha pergunta é como fazer o PAM criar uma nova sessão de log ao iniciar o servidor X?