Como desativar/ativar o modo gráfico no Linux com o systemd

Você pode usar o systemd e seu comando systemctl para informar o sistema se quer usar sempre a interface gráfica ou apenas a de linha de comando.
O recurso permite a opção, sem desinstalar absolutamente nada e é facilmente reversível, como irei mostrar.
Com todos as críticas que se possa ter ao systemd — e algumas delas são muito justas — temos que reconhecer que trouxe algumas comodidades e a uniformização de alguns procedimentos.
O que vou descrever, neste artigo, foi testado no Fedora 26 Workstation — mas é aplicável em qualquer outra distro que faça uso do systemd.

Use o systemctl para determinar a interface padrão no seu sistema

Você pode usar o comando systemctl para gerenciar a interface padrão — fazendo a troca entre GUI (modo gráfico) e CLI (modo texto).
Para ver qual é o padrão, neste momento, use o comando assim:


systemctl get-default 

graphical.target

O resultado “graphical.target” indica que a GUI é a interface padrão (no meu sistema). Se fosse a CLI, o get-default iria resultar em “multi-user.target”


Use a caixa de busca do site para localizar mais posts sobre o systemd.
fedora systemd systemctl
Para mudar a interface padrão para o modo texto, na próxima inicialização do sistema, use o set-default:


systemctl set-default multi-user.target

Created symlink /etc/systemd/system/default.target → /lib/systemd/system/multi-user.target.

Este comando pede autenticação de administrador do sistema e só terá efeito após o reboot.
Você reiniciar o sistema com o próprio systemctl:


systemctl reboot

fedora systemd cli systemctl
Para desfazer o procedimento – e voltar a usar a interface gráfica como padrão – use o seguinte comando:


systemctl set-default graphical.target

Removed /etc/systemd/system/default.target.
Created symlink /etc/systemd/system/default.target → /lib/systemd/system/graphical.target.

É simples assim. 😉

Use o systemctl para hibernar, desligar, reiniciar etc.

Em sistemas Linux, com o systemd, é possível usar o comando systemctl para executar diversas tarefas da administração do sistema.
linux, suspender, desligar, reiniciar
Neste post, vamos falar das que envolvem

Para se aprofundar um pouco mais em algum assunto abordado, clique nos links do texto.

O que é o systemctl?

É um utilitário que controla o systemd e o service manager.
De acordo com o manual, pode ser usado para introspectar e controlar o estado do systemd e do gestor de serviços do sistema.
Como foi dito, no primeiro parágrafo, pode ser usado para realizar várias atividades administrativas mas, neste post, vamos nos concentrar naquelas 5 que foram enumeradas acima.
Se quiser, clique na tag systemctl, para saber mais sobre ele.

Exemplos de uso do systemctl

Abra um terminal, para experimentar algumas funções do systemctl.
Se deseja desligar o sistema, use-o assim:

systemctl poweroff

Pode ser usado, portanto, como substituto do comando shutdown.
As opções do systemctl podem ser vistas com ‘–help’ ou usando a tecla Tab, para autocompletar.
Se vocẽ deseja “parar” o sistema, use a opção ‘halt’:

systemctl halt

Você provavelmente terá que desligar, pressionando o botão físico, após este comando.
Use ‘reboot’, para reiniciar:

systemctl reboot

ou

systemctl kexec

Para tornar o processo mais silencioso, use ‘-q’, ‘–quiet’ ou ‘–no-wall’:

systemctl --no-wall reboot

Se tiver suporte a EFI boot, é possível pedir ao firmware do seu sistema para entrar no menu de setup, no próximo boot:

systemctl --firmware-setup reboot 

systemctl firmware boot menu
Se quiser estabelecer um tempo, para esperar antes de executar o comando, use o sleep (em segundos):

sleep 60; systemctl poweroff

Tenha cuidado com a linha de comando, acima. Se você se arrepender e teclar ‘Ctrl+C’, durante a execução do sleep, irá interrompê-lo e disparar o segundo comando.
Neste sentido, o comando shutdown pode ser mais seguro.
Para hibernar o sistema:

systemctl hibernate

Para suspender:

systemctl sleep

Para suspender/hibernar-híbrido:

systemctl hybrid-sleep

Se quiser saber as diferenças entre estes 3 últimos comandos, leia este texto.

Como remover o systemd do Ubuntu

No universo do Linux e do software livre, nada faz mais sentido do que ter liberdade de escolha.
No seu computador, só deve rodar software que você aprove.
O principal objetivo do software livre é dar ao usuário o controle sobre o que está rodando no seu hardware.
Se você, qualquer que seja o motivo, prefere o seu GNU/Linux sem o systemd, pode optar por usar uma das várias distribuições que vêm sem ele, ou removê-lo e instalar um outro init system para você.
O procedimento descrito é fácil e, de certa forma, muito simples. Por outro lado, ele pode deixar o seu sistema parcialmente inoperante — o que vai te obrigar a fazer alguns ajustes na linha de comando, depois.
Os comandos foram testados em uma instalação Ubuntu 16.04 LTS.
Siga em frente, por sua própria conta e risco.
Se tiver dúvidas, siga os links, no decorrer do texto ou na sessão de referências.

Instale o novo init system

Você não pode ficar sem um init system.
No nosso exemplo, vamos instalar o upstart — um init system mais atual do que o tradicional sysV e que concorre com o systemd.
Todos os comandos, que seguem, precisam de privilégios administrativos. É recomendado se autenticar como root.
Para instalar o upstart, rode o seguinte comando:

apt install upstart-sysv sysvinit-utils

Faça algumas configurações:

cp /usr/share/sysvinit/inittab /etc/inittab
update-initramfs -u

E reinicie o sistema:

shutdown -r now

Após iniciar o sistema, remova o systemd e seus arquivos de configuração:

apt purge systemd systemd:i386

Procedimentos complementares

O Debian e o Ubuntu estão se movendo rapidamente na direção da adoção do systemd.
Para evitar que o sistema continue tentando reinstalar pacotes relacionados ao systemd, rode a seguinte série de comandos:

echo -e 'Package: systemd\nPin: release *\nPin-Priority: -1' > /etc/apt/preferences.d/systemd
echo -e '\n\nPackage: *systemd*\nPin: release *\nPin-Priority: -1' >> /etc/apt/preferences.d/systemd
echo -e '\nPackage: systemd:amd64\nPin: release *\nPin-Priority: -1' >> /etc/apt/preferences.d/systemd
echo -e '\nPackage: systemd:i386\nPin: release *\nPin-Priority: -1' >> /etc/apt/preferences.d/systemd

Referências

http://askubuntu.com/questions/779640/how-to-remove-systemd-from-ubuntu-16-04-and-prevent-its-usage.
http://www.serverlab.ca/tutorials/linux/administration-linux/removing-systemd-from-ubuntu-15-2/.
https://www.howtoinstall.co/en/ubuntu/xenial/systemd?action=removehttps://www.howtoinstall.co/en/ubuntu/xenial/systemd?action=remove.

Alternativas ao systemd

O systemd é mais um sistema init disponível para sistemas operacionais GNU/LINUX.
Diferente de outros, este é exclusivo de sistemas operacionais Unix-like que usam o kernel Linux.
Se você clicar na tag systemd, vai encontrar vários posts, neste site, sobre o assunto — inclusive um que fala muito mal dele (que coisa feia, Elias…) 😉
ssytemd emot carrousel
Neste texto, vamos abordar o conceito do init system, quais são as opções deste tipo de software e, por fim, conhecer algumas distribuições Linux que usam alternativas ao systemd — não vai dar pra falar de todas, por que são mais de 70.

O que é um init system

Em sistemas operacionais Unix-like, o init é o primeiro processo iniciado, durante a inicialização do sistema.
Init é abreviatura da palavra initialization.
É o ancestral direto ou indireto de todos os processos rodando no seu sistema, neste momento.
Ele adota todos os processos órfãos automaticamente.
O init é iniciado pelo kernel usando nome de arquivo hard-coded.
A principal causa do kernel panic é quando o init não pode ser carregado. Ele é tipicamente identificado como o PID 1.
O systemd é mais do que apenas um sistema init. Enquanto uns avaliam este fato como uma evolução do conceito, outras apontam nele um de seus maiores defeitos.

Alternativas ao systemd

Várias alternativas ao systemd estão disponíveis para uso da comunidade.
Segue uma relação (atual e relevante) de init systems, para Linux:

  • Bootscripts — comumente usado no GoboLinux
  • Initng — é um substituto atual para o UNIX System V init e para o Sysvinit (usado no Linux), escrito em C e lançado em 2005.
    Nas implementações tradicionais do init, processos são iniciados em ordem pre-determinada. Além disto, um processo só será iniciado, depois que o anterior estiver finalizado.
    O Initng inicia processos assim que suas dependências forem satisfeitas. Foi projetado para iniciar vários processos em paralelo e melhorar a velocidade de boot dos sistemas.
  • runit — Esquema init com supervisão de serviços. Concebido como substituto do SysVinit e outros projetos.
  • minit — Um init mínimo com supervisão de processos, ordenação de dependências de serviços, ativação de serviços paralelos etc.

Você vai encontrar mais itens na página do Wikipedia — fique atento para o fato de que alguns projetos estão mortos.

Distribuições Linux que usam outros init systems

Como disse, no começo, são muitas dezenas de opções. E ter opções, no mundo do software livre é importante.
Não vai dar para citar todas, contudo sugiro visitar o site without-systemd para ver uma relação mais completa.
O Distrowatch também tem uma relação de distribuições Linux que não usam o systemd.
Na lista, abaixo, separei uma relação de distribuições livres do systemd, que se destacam por diversos motivos:

  1. FreeBSD, OpenBSD etc — Os BSD não são Linux e não existe compatibilidade entre o systemd e estas distros — embora seja possível usá-los com o kernel Linux.
    O site tem vários posts sobre BSD, caso você se interesse.
  2. Slackware — no momento, a distro não aderiu ao systemd, mas não existe nenhum comprometimento do Patrick Volkerding no sentido de se manter distante deste sistema. Para quem gosta do Slackware, vale experimentar o Porteus — http://www.porteus.org/.
    Este projeto tem o comprometimento de seguir sem o systemd.
  3. Devuan — este é o projeto Debian, tocado por ex-integrantes que não concordaram com a mudança para o systemd. Veja mais no site http://devuan.org. Experimente também o Finnix, o Overclockix, o Trios, o Debian GNU/Hurd e o Debian KFreeBSD. Estes 2 últimos são opções para puristas e vale a pena conhecer.
  4. Tails — este é um projeto derivado do Debian e voltado para oferecer mais criptografia e segurança, com mais conforto para o usuário.
    Temos alguns textos, no site, mencionando este projeto.
  5. UbuntuBSD — como o nome indica, é baseado no Ubuntu e usa o núcleo do FreeBSD. Em vez do Unity, usa o ambiente gráfico XFCE. Também é uma opção interessante. Dá uma olhada no site oficial da distro: https://www.ubuntubsd.org/.
  6. Alpine Linux — Distro independente, de propósito genérico e projetada para power users.
    usea OpenRC como init systemhttp://www.alpinelinux.org/.
  7. Gentoo — Uma das distribuições mais conhecidas, que não se rendeu ao systemd — https://www.gentoo.org/.
  8. ReactOS — Tal como o Gentoo, trata-se de uma distro Linux, já estabelecida e com uma comunidade formada ao seu redor — https://www.reactos.org/.

Conhece alguma outra distro livre do systemd, que você gostaria de recomendar? Escreva nos comentários!

Referências

https://en.wikipedia.org/wiki/Init.
https://distrowatch.com/search.php?pkg=systemd&distrorange=NotInLatest#pkgsearch.
http://without-systemd.org/wiki/index.php/Main_Page#GNU.2FLinux_distributions.

Desabilite as opções de suspensão e hibernação no Debian

As funções de suspensão, hibernação e suspensão híbrida nem sempre funcionam da maneira como se espera.
Por isto, às vezes, pode ser interessante desativar estes recursos.
Há várias razões para estes itens não funcionarem adequadamente no Debian, ou em qualquer outra distro Linux. A principal razão é hardware incompatível.
Os procedimentos descritos nesta página são voltados especificamente para o Debian 8 Jessie Stable, em função do seu suporte ao systemd.
Como este ainda é um trabalho em progresso, não posso garantir que funcione adequadamente no Debian 9 Stretch Testing.
Sugiro a leitura sobre Suspensão, Hibernação e Suspensão-híbrida, caso tenha dúvidas sobre estes recursos.
Há, ainda algumas formas de testar se seu hardware tem suporte a qualquer um destes recursos. Para saber, leia Como testar se seu hardware tem suporte a suspensão/hibernação.

como desabilitar suspensão e hibernação via systemd

Se você quiser impedir que seu sistema tente hibernar, use o systemd para desabilitar a função.
A seguinte linha de comando, deve resolver o assunto:

sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

Se quiser desfazer o procedimento, realize o seguinte comando:

sudo systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target

Para desabilitar a suspensão quando a tampa do notebook for fechada, ajuste os seguintes parâmetros no arquivo de configuração /etc/systemd/logind.conf:

[Login]
HandleLidSwitch=ignore
HandleLidSwitchDocked=ignore

Em seguida rode o comando systemctl, da seguinte forma:

systemctl restart systemd-logind.service

ou reinicie a máquina.

Referências

https://wiki.debian.org/Suspend