Comportamento do systemctl em um ambiente chroot
3.3. TRABALHANDO COM METAS DO SISTEMA
Os alvos do sistema são representados por unidades-alvo. O arquivo de unidades alvo termina com a extensão .target e seu único objetivo é agrupar outras unidades do sistema através de uma cadeia de
dependências. Por exemplo, o graphical.target unit, que é usado para iniciar uma sessão gráfica, inicia serviços de sistema como o GNOME Display Manager (gdm.service) ou o Serviço de Contas
(accounts-daemon.service) e também ativa o multi-user.target unit. Da mesma forma, a unidade multi-usuário.target inicia outros serviços essenciais do sistema como o NetworkManager
(NetworkManager.service) ou o D-Bus (dbus.service) e ativa outra unidade alvo chamada basic.target.
Esta seção inclui procedimentos a serem implementados enquanto se trabalha com metas systemd.
3.3.1. Diferença entre os níveis de execução do SysV e as metas do sistema
As versões anteriores do Red Hat Enterprise Linux foram distribuídas com SysV init ou Upstart, e
implementaram um conjunto pré-definido de níveis de execução que representavam modos específicos de operação. Estes níveis de execução foram numerados de 0 a 6 e foram definidos por uma seleção de serviços de sistema a serem executados quando um determinado nível de execução era habilitado pelo administrador de sistemas. Começando com o Red Hat Enterprise Linux 7, o conceito de níveis de execução foi substituído por alvos do sistema.
O Red Hat Enterprise Linux 7 foi distribuído com um número de alvos predefinidos que são mais ou menos similares ao conjunto padrão de níveis de execução dos lançamentos anteriores. Por razões de compatibilidade, ele também fornece alias para estes alvos que mapeiam diretamente para os níveis de execução do SysV.
A tabela a seguir fornece uma lista completa dos níveis de execução do SysV e seus correspondentes alvos do sistema:
Tabela 3.6. Comparação dos níveis de execução do SysV com as metas do sistema
Runlevel Unidades Alvo Descrição
0 runlevel0.target,
poweroff.target Desligue e desligue o sistema.
1 runlevel1.target,
rescue.target Preparar uma concha desalvamento.
2 runlevel2.target, multi-
user.target
Configurar um sistema multi- usuário não gráfico.
3 runlevel3.target, multi-
user.target Configurar um sistema multi-usuário não gráfico.
4 runlevel4.target, multi-
user.target Configurar um sistema multi-usuário não gráfico.
5 runlevel5.target,
graphical.target
Configurar um sistema gráfico multiusuário.
6 runlevel6.target,
A tabela a seguir compara os comandos init SysV com systemctl. Use o utilitário systemctl para visualizar, alterar ou configurar alvos do sistema:
IMPORTANTE
Os comandos runlevel e telinit ainda estão disponíveis no sistema e funcionam como esperado, mas só estão incluídos por razões de compatibilidade e devem ser evitados. Tabela 3.7. Comparação dos comandos init SysV com systemctl
Antigo Comando Novo Comando Descrição
runlevel systemctl list-units --type
target Listas de unidades alvoatualmente carregadas.
telinit runlevel systemctl isolate name.target
Muda a meta atual.
Recursos adicionais man sysv init
o homem começa no init man systemctl
3.3.2. Visualizando o alvo padrão
A unidade alvo padrão é representada pelo arquivo /etc/systemd/system/default.target. Procedimento
Para determinar qual unidade alvo é usada por padrão: $ systemctl get-default
graphical.target
Para determinar o alvo padrão usando o link simbólico: $ ls -l /lib/systemd/system/default.target
3.3.3. Visualizando as unidades-alvo
Por padrão, o comando systemctl list-units exibe apenas as unidades ativas. Procedimento
Para listar todas as unidades carregadas, independentemente de seu estado: Unidades da lista do sistema -- tipo alvo -- tudo
Para listar todas as unidades alvo atualmente carregadas: $ systemctl list-units --type target
UNIT LOAD ACTIVE SUB DESCRIPTION basic.target loaded active active Basic System
cryptsetup.target loaded active active Encrypted Volumes getty.target loaded active active Login Prompts
graphical.target loaded active active Graphical Interface local-fs-pre.target loaded active active Local File Systems (Pre) local-fs.target loaded active active Local File Systems
multi-user.target loaded active active Multi-User System network.target loaded active active Network
paths.target loaded active active Paths
remote-fs.target loaded active active Remote File Systems sockets.target loaded active active Sockets
sound.target loaded active active Sound Card
spice-vdagentd.target loaded active active Agent daemon for Spice guests swap.target loaded active active Swap
sysinit.target loaded active active System Initialization
time-sync.target loaded active active System Time Synchronized timers.target loaded active active Timers
LOAD = Reflects whether the unit definition was properly loaded. ACTIVE = The high-level unit activation state, i.e. generalization of SUB. SUB = The low-level unit activation state, values depend on unit type. 17 loaded units listed.
3.3.4. Mudando o alvo padrão
A unidade alvo padrão é representada pelo arquivo /etc/systemd/system/default.target. O procedimento a seguir descreve como alterar o alvo padrão usando o comando systemctl: Procedimento
1. Para determinar a unidade alvo padrão: # sistema de falha
2. Para configurar o sistema para usar uma unidade alvo diferente por padrão: # systemctl set-default multi-user.target
rm /etc/systemd/system/default.target
ln -s /usr/lib/systemd/system/multi-user.target /etc/systemd/system/default.target
Este comando substitui o arquivo /etc/systemd/system/default.target por um link simbólico para /usr/lib/systemd/system/name.target, onde o nome é o nome da unidade alvo que você deseja usar. Substitua multi-user pelo nome da unidade alvo que você deseja usar por padrão. 3. Reinicialização
3.3.5. Mudando o alvo padrão usando um link simbólico
O procedimento a seguir descreve como alterar o alvo padrão criando um vínculo simbólico com o alvo. Procedimento
1. Para determinar a unidade alvo padrão: # ls /lib/systemd/system/default.target -l 2. Para criar um vínculo simbólico:
# ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target 3. Reinicie o sistema:
# reinicialização Etapas de verificação
Verificar o recém-criado alvo.default.target: $ systemctl get-default
multi-user.target
3.3.6. Mudando a meta atual
Este procedimento explica como mudar a unidade alvo na sessão atual usando o comando systemctl. Procedimento
Para mudar para uma unidade alvo diferente na sessão atual: # systemctl isolar multi-user.target
Este comando inicia a unidade alvo chamada multi-user e todas as unidades dependentes, e imediatamente pára todas as outras.
Substitua multi-user pelo nome da unidade alvo que você deseja usar por padrão. Etapas de verificação
Verificar o recém-criado alvo.default.target: $ systemctl get-default
multi-user.target
3.3.7. Modo de inicialização para resgate
Rescue mode fornece um ambiente conveniente de usuário único e permite reparar seu sistema em
situações em que ele não é capaz de completar um processo de inicialização regular. No modo de resgate, o sistema tenta montar todos os sistemas de arquivos locais e iniciar alguns serviços
importantes do sistema, mas não ativa as interfaces de rede ou permite que mais usuários sejam logados no sistema ao mesmo tempo.
Procedimento
Para mudar o alvo atual e entrar no modo de resgate na sessão atual: # systemctl rescue
Broadcast message from root@localhost on pts/0 (Fri 2013-10-25 18:23:15 CEST): The system is going down to rescue mode NOW!
Este comando é similar a systemctl isolate rescue.target, mas também envia uma mensagem informativa a todos os usuários que estão atualmente logados no sistema.
Para evitar que systemd envie uma mensagem, execute o seguinte comando com a opção de linha de comando --no-wall # systemctl --no-wall rescue
3.3.8. A inicialização para o modo de emergência
Emergency mode oferece o ambiente mais mínimo possível e permite reparar seu sistema mesmo em
situações em que o sistema não consegue entrar no modo de resgate. No modo de emergência, o sistema monta o sistema de arquivo raiz apenas para leitura, não tenta montar qualquer outro sistema de arquivo local, não ativa interfaces de rede e apenas inicia alguns serviços essenciais.
Procedimento
Para mudar o alvo atual e entrar no modo de emergência: # systemctl emergência
Este comando é similar a systemctl isolate emergency.target, mas também envia uma mensagem informativa a todos os usuários que estão atualmente logados no sistema.
Para evitar que o systemd envie esta mensagem, execute o seguinte comando com a opção de linha de comando --no-wall # systemctl --no-wall emergency