LFCs Gerenciando o processo de inicialização do sistema (Sysvinit, Systemd e Upstart) - Parte 7

LFCs Gerenciando o processo de inicialização do sistema (Sysvinit, Systemd e Upstart) - Parte 7

Há alguns meses, a Fundação Linux anunciou o LFCs (Linux Foundation Certified Sysadmin) Certificação, um novo programa emocionante cujo objetivo é permitir que indivíduos de todas as extremidades do mundo se certifiquem de executar tarefas básicas para intermediários de administração de sistemas nos sistemas Linux. Isso inclui apoiar sistemas e serviços já executados, juntamente com a descoberta e análise de problemas em primeira mão, além da capacidade de decidir quando levantar problemas para as equipes de engenharia.

Linux Foundation Certified Sysadmin - Parte 7

O vídeo a seguir descreve uma breve introdução ao programa de certificação Linux Foundation.

Esta postagem é a Parte 7 de uma série de 10-Tutorial, aqui nesta parte, explicaremos como gerenciar o processo de inicialização do sistema Linux, que são necessários para o exame de certificação LFCS.

Gerenciando o processo de inicialização do Linux

O processo de inicialização de um sistema Linux consiste em várias fases, cada uma representada por um componente diferente. O diagrama a seguir resume brevemente o processo de inicialização e mostra todos os principais componentes envolvidos.

Processo de inicialização do Linux

Quando você pressiona o Poder botão em sua máquina, o firmware que é armazenado em um EEPROM chip na placa -mãe inicializa o PUBLICAR (Auto-teste de poder) para verificar o estado dos recursos de hardware do sistema. Quando o PUBLICAR está terminado, o firmware e depois pesquisa e carrega o 1º estágio carregador de inicialização, localizado no Mbr ou no Efi partição do primeiro disco disponível e dá controle a ele.

Método MBR

O Mbr está localizado no primeiro setor do disco marcado como inicializável no BIOS configurações e é 512 bytes de tamanho.

  1. Primeiros 446 bytes: O carregador de inicialização contém código executável e texto da mensagem de erro.
  2. Próximos 64 bytes: A tabela de partição contém um registro para cada uma das quatro partições (primário ou estendido). Entre outras coisas, cada registro indica o status (ativo / não ativo), tamanho e setores de início / final de cada partição.
  3. Últimos 2 bytes: O número mágico serve como uma verificação de validação do MBR.

O comando a seguir executa um backup do Mbr (Neste exemplo, /Dev/SDA é o primeiro disco rígido). O arquivo resultante, mbr.BKP pode ser útil se a tabela de partição se tornar corrupta, por exemplo, tornando o sistema inalabilável.

Obviamente, para usá -lo mais tarde, se necessário, precisaremos salvá -lo e armazená -lo em outro lugar (como um USB unidade, por exemplo). Esse arquivo nos ajudará a restaurar o MBR e nos levará mais uma vez se e somente se não alterarmos o layout do disco rígido enquanto isso.

Backup mbr
# dd if =/dev/sda de = mbr.BKP BS = 512 contagem = 1 
Backup mbr em linux
Restaurando MBR
# dd if = mbr.bkp de =/dev/sda bs = 512 contagem = 1 
Restaurar MBR no Linux

Método EFI/UEFI

Para sistemas usando o Efi/Uefi Método, o firmware da UEFI lê suas configurações para determinar qual aplicativo UEFI deve ser lançado e de onde (i.e., em que disco e partição a partição EFI está localizada).

Em seguida, o 2º estágio O carregador de inicialização (também conhecido como gerente de inicialização) é carregado e executado. Grub [[Bota grande unificada] é o gerenciador de inicialização mais frequentemente usado no Linux. Uma das duas versões distintas pode ser encontrada na maioria dos sistemas usados ​​hoje.

  1. Arquivo de configuração Legacy:/bota/grub/menu.LST (distribuições mais antigas, não suportadas pela EFI/UEFI Firmwares).
  2. Arquivo de configuração GRUB2: provavelmente,/etc/padrão/grub.

Embora os objetivos do LFCs o exame não solicita explicitamente conhecimento sobre Grub Internos, se você é corajoso e pode me dar ao luxo de estragar seu sistema (você pode querer experimentá -lo primeiro em uma máquina virtual, apenas por precaução), você precisa executar.

# update-grub 

Como raiz Depois de modificar a configuração de Grub para aplicar as alterações.

Basicamente, Grub carrega o padrão núcleo e a initrd ou initramfs imagem. Em poucas palavras, initrd ou initramfs ajudam a executar a detecção de hardware, o carregamento do módulo do kernel e a descoberta do dispositivo necessária para obter o sistema de arquivos raiz real montado.

Uma vez que o sistema de arquivos root real esteja subindo, o kernel executa o sistema e o gerente de serviço (iniciar ou Systemd, cuja identificação de processo ou PID é sempre 1) para iniciar o processo normal de inicialização do espaço do usuário para apresentar uma interface do usuário.

Ambos iniciar e Systemd são daemons (processos de fundo) que gerenciam outros daemons, como o primeiro serviço a iniciar (durante a inicialização) e o último serviço a ser rescindido (durante o desligamento).

Systemd e init

Serviços de partida (Sysvinit)

O conceito de níveis de execução No Linux, especifica maneiras diferentes de usar um sistema controlando quais serviços estão em execução. Em outras palavras, um nível de execução controla quais tarefas podem ser realizadas no estado de execução atual = Runlevel (e quais não podem).

Tradicionalmente, esse processo de inicialização era realizado com base em convenções que se originaram com Sistema V Unix, Com o sistema passando executando coleções de scripts que iniciam e param os serviços quando a máquina entrou em um nível de running específico (que, em outras palavras, é um modo diferente de executar o sistema).

Dentro de cada nível de execução, serviços individuais podem ser definidos para ser executado ou para ser desligado se estiver em execução. As versões mais recentes de algumas grandes distribuições estão se afastando do Sistema v padrão a favor de um novo gerente de serviço e sistema chamado Systemd (que significa daemon do sistema), mas geralmente suporta Sysv comandos para fins de compatibilidade. Isso significa que você pode executar a maior parte do conhecido Sysv Ferramentas inits em uma distribuição baseada em Systemd.

Leia também: Por que 'Systemd' substitui 'init' no Linux

Além de iniciar o processo do sistema, iniciar olha para o /etc/inittab Arquivo para decidir qual nível de execução deve ser inserido.

RUNLEVEL Descrição
0  Pare o sistema. Runlevel 0 é um estado de transição especial usado para desligar o sistema rapidamente.
1  Também alias para S, ou S, esse nível de running às vezes é chamado de modo de manutenção. Quais serviços, se houver, são iniciados neste nível de execução varia de acordo com a distribuição. É normalmente usado para manutenção de sistema de baixo nível que pode ser prejudicada pela operação normal do sistema.
2  Multi usuário. Em sistemas e derivativos debianos, este é o nível de execução padrão e inclui -S disponível - um login gráfico. Em sistemas baseados em chapéu vermelho, este é o modo multiusuário sem redes.
3  Em sistemas baseados em chapéu vermelho, este é o modo multiusuário padrão, que executa tudo, exceto o ambiente gráfico. Este nível de runle e níveis 4 e 5 geralmente não são usados ​​em sistemas baseados em Debian.
4  Normalmente não utilizado por padrão e, portanto, disponível para personalização.
5  Em sistemas baseados em chapéu vermelho, o modo multiusuário completo com o GUI Login. Este nível de runle é como o nível 3, mas com um login da GUI disponível.
6  Reinicie o sistema.

Para alternar entre os níveis de execução, podemos simplesmente emitir uma mudança de nível de execução usando o iniciar comando: init N (onde n é um dos níveis de execução listados acima). Observe que essa não é a maneira recomendada de levar um sistema em execução para um nível de execução diferente, porque não dá nenhum aviso aos usuários de login existentes (fazendo com que eles percam o trabalho e os processos para rescindir anormalmente).

Em vez disso, o desligar O comando deve ser usado para reiniciar o sistema (que primeiro envia uma mensagem de aviso para todos os usuários e bloqueia mais logins; então sinaliza o init para alternar os níveis de execução); No entanto, o nível de execução padrão (aquele para o qual o sistema inicializará) deve ser editado no /etc/inittab arquivo primeiro.

Por esse motivo, siga estas etapas para alternar adequadamente entre os níveis de corrida, como root, procure a seguinte linha em /etc/inittab.

ID: 2: initdefault: 

e mude o número 2 Para o nível de execução desejado com o seu editor de texto preferido, como o VIM (descrito em como usar o VI/VIM Editor no Linux - parte 2 desta série).

Em seguida, corra como raiz.

# Shutdown -R agora 

Que durar O comando reiniciará o sistema, fazendo com que ele inicie no nível de running especificado durante a próxima bota e executará os scripts localizados no /etc/rc [runlevel].d diretório para decidir quais serviços devem ser iniciados e quais não devem. Por exemplo, para o Runlevel 2 no sistema a seguir.

Alterar níveis de execução no Linux

Gerenciar serviços usando chkconfig

Para ativar ou desativar os serviços do sistema na inicialização, usaremos o comando chkconfig no CentOS / OpenSUSE e SYSV-RC-CONF em Debian e Derivativos. Esta ferramenta também pode nos mostrar qual é o estado pré -configurado de um serviço para um determinado nível de runle.

Leia também: Como parar e desativar serviços indesejados no Linux

Listando a configuração de nível de execução para um serviço.

# chkconfig - -list [nome do serviço] # chkconfig -list postfix # chkconfig -list mysqld 
Listando a configuração de nível em execução

Na imagem acima, podemos ver que Postfix está definido para começar quando o sistema entra em níveis de execução 2 através 5, enquanto mysqld estará sendo executado por padrão para níveis de runnings 2 através 4. Agora suponha que este não seja o comportamento esperado.

Por exemplo, precisamos ligar mysqld para o nível runle 5 Além disso, e desligue o Postfix para os níveis 4 e 5. Aqui está o que faríamos em cada caso (execute os seguintes comandos como root).

Habilitando um serviço para um determinado nível de função
# chkconfig -nível [nível (s)] em # chkconfig -nível 5 mysqld 
Desativando um serviço para níveis específicos
# chkconfig -nível [nível (s)] de serviço fora # chkconfig -LEVEL 45 POSTFIX OFF 
Ativar serviços de desativar

Agora vamos executar tarefas semelhantes em um Baseado em Debian sistema usando SYSV-RC-CONF.

Gerenciar serviços usando SYSV-RC-CONF

Configurando um serviço para iniciar automaticamente em um nível de running específico e impedir que ele inicie em todos os outros.

1. Vamos usar o seguinte comando para ver quais são os níveis de runle onde mdadm está configurado para começar.

# ls -l /etc /rc [0-6].d | grep -e 'rc [0-6] | mdadm' 
Verifique o nível do serviço em execução

2. Nós vamos usar SYSV-RC-CONF Para impedir que o Mdadm inicie todos os níveis de execução, exceto 2. Basta verificar ou desmarcar (com a barra de espaço) conforme desejado (você pode subir para cima, para baixo, esquerda e direita com as teclas de seta).

# SYSV-RC-CONF 
Sysv Runlevel Config

Então aperte q para sair.

3. Vamos reiniciar o sistema e executar novamente o comando de PASSO 1.

# ls -l /etc /rc [0-6].d | grep -e 'rc [0-6] | mdadm' 
Verifique o nível Runlevel

Na imagem acima, podemos ver que mdadm está configurado para começar apenas no nível do Runle 2.

E o Systemd?

Systemd é outro gerente de serviço e sistema que está sendo adotado por várias principais distribuições Linux. Ele pretende permitir que mais processamento seja feito em paralelo durante a inicialização do sistema (diferentemente sysvinit, O que sempre tende a ser mais lento porque inicia um processa um de cada vez, verifica se um depende de outro e aguarda os daemons para lançar para que mais serviços possam começar) e servir como um gerenciamento dinâmico de recursos para um sistema em execução.

Assim, os serviços são iniciados quando necessário (para evitar consumir recursos do sistema) em vez de serem lançados sem um motivo sólido durante a inicialização.

Visualizando o status de todos os processos em execução em seu sistema, ambos Systemd nativo e Sysv Serviços, execute o seguinte comando.

# SystemCtl 
Verifique todos os processos de execução

O CARREGAR coluna mostra se a definição da unidade (consulte o UNIDADE coluna, que mostra o serviço ou qualquer coisa mantida pelo Systemd) foi carregada adequadamente, enquanto o ATIVO e SUB As colunas mostram o status atual dessa unidade.

Exibindo informações sobre o status atual de um serviço

Quando o ATIVO A coluna indica que o status de uma unidade é diferente de ativo, podemos verificar o que aconteceu usando.

# status Systemctl [unidade] 

Por exemplo, na imagem acima, mídia-samba.montar está em estado fracassado. Vamos correr.

# Systemctl Status Media-Samba.montar 
Verifique o status do serviço

Nós podemos ver isso mídia-samba.montar falhou porque o processo de montagem no host dev1 não conseguiu encontrar o compartilhamento da rede em // 192.168.0.10/gacanepa.

Iniciando ou parando serviços

Uma vez que a rede compartilhe // 192.168.0.10/gacanepa fica disponível, vamos tentar começar, depois parar e finalmente reiniciar a unidade mídia-samba.montar. Depois de executar cada ação, vamos executar o status de status do Systemctl.montar para verificar seu status.

# SystemCtl Start Media-Samba.Mount # Systemctl Status Media-Samba.Mount # SystemCtl Stop Media-Samba.Mount # SystemCtl reinicie a mídia-samba.Mount # Systemctl Status Media-Samba.montar 
Começando os serviços de parada
Ativar ou desativar um serviço para começar durante a inicialização

Sob Systemd Você pode ativar ou desativar um serviço quando ele inicializar.

# Systemctl Ativar [Service] # Ativar um serviço # SystemCtl Desativar [Service] # Impente um serviço de iniciar na inicialização 

O processo de ativação ou desativação de um serviço para iniciar automaticamente na inicialização consiste em adicionar ou remover links simbólicos no /etc/Systemd/System/MultiUser.alvo.quer diretório.

Ativando serviços de desativar

Como alternativa, você pode descobrir o status atual de um serviço (ativado ou desativado) com o comando.

# Systemctl Is-habilitado [Serviço] 

Por exemplo,

# SystemCTL Is-habilitado Postfix.serviço 

Além disso, você pode reiniciar ou desligar o sistema com.

# SystemCTL Reboot # SystemCtl Shutdown 

Subir na vida

Subir na vida é um substituto baseado em eventos para o /sbin/init Daemon e nasceu apenas da necessidade de iniciar serviços, quando são necessários (também supervisionando-os enquanto estão em execução) e lidando com eventos à medida que ocorrem, superando assim o sistema clássico baseado em dependência, baseado em dependência.

Foi originalmente desenvolvido para a distribuição do Ubuntu, mas é usado no Red Hat Enterprise Linux 6.0. Embora pretendesse ser adequado para implantação em todas as distribuições Linux como substituto para sysvinit, Com o tempo, foi ofuscado por Systemd. Em 14 de fevereiro de 2014, Mark Shuttleworth (fundador da Canonical Ltd.) anunciou que os lançamentos futuros do Ubuntu usariam o Systemd como o daemon init padrão.

Porque o Sysv O script de inicialização para o sistema é tão comum por tanto tempo que um grande número de pacotes de software inclui scripts de inicialização do SYSV. Para acomodar esses pacotes, o UpStart fornece um modo de compatibilidade: ele executa scripts de inicialização do SYSV nos locais usuais (/etc/rc.d/rc?.d, /etc/init.d/rc?.d, /etc/rc?.d, ou um local semelhante). Assim, se instalarmos um pacote que ainda não incluirá um script de configuração iniciante, ele ainda deve ser lançado da maneira usual.

Além disso, se instalamos utilitários como o ChkConfig, você poderá usá-los para gerenciar seus serviços baseados em SYSV, assim como nos sistemas baseados em Sysvinit,.

Os scripts iniciantes também suportam serviços de partida ou parada com base em uma variedade maior de ações do que os scripts de inicialização do SYSV; Por exemplo, o UpStart pode iniciar um serviço sempre que um determinado dispositivo de hardware estiver conectado.

Um sistema que usa o Upstart e seus scripts nativos substitui exclusivamente o /etc/inittab arquivo e o runlevel específico Sysv diretórios de script de inicialização com .conf scripts no /etc/init diretório.

Esses *.conf Os scripts (também conhecidos como definições de trabalho) geralmente consistem no seguinte:

    1. Descrição do processo.
    2. Níveis de execução onde o processo deve ser executado ou eventos que devem acionar.
    3. Níveis de execução onde o processo deve ser interrompido ou eventos que devem impedi -lo.
    4. Opções.
    5. Comando para iniciar o processo.

Por exemplo,

# Meu serviço de teste - Demonstração de scripts de Upstart Descrição "Aqui vai a descrição do 'meu serviço de teste'" Autor "Dave Null <[email protected]>" # Stanzas # # Stanzas define quando e como um processo é iniciado e parado # Veja uma lista de estrofes aqui: http: // upstart.Ubuntu.com/wiki/stanzas # reapawn # Quando iniciar o serviço começar no runlevel [2345] # Quando parar o serviço parar no nível do runle [016] # reiniciar o processo automaticamente em caso de falha repanhível # Especifique o diretório de trabalho chdir/home/Dave/ MyFiles # Especifique o processo/comando (adicione argumentos, se necessário) para executar o Exec Bash Backup.sh arg1 arg2 

Para aplicar as alterações, você precisará dizer ao Upstart para recarregar sua configuração.

# initctl Reload-Configuração 

Em seguida, inicie seu trabalho digitando o seguinte comando.

$ sudo comece seu nome 

Onde YourJobname é o nome do trabalho que foi adicionado anteriormente com o YourJobname.conf roteiro.

Um guia de referência mais completo e detalhado para o Upstart está disponível no site do projeto no menu "livro de receitas".

Resumo

É necessário um conhecimento do processo de inicialização do Linux para ajudá -lo com tarefas de solução de problemas, bem como adaptar o desempenho e executar serviços do computador às suas necessidades.

Neste artigo, analisamos o que acontece desde o momento em que você pressiona o Poder Mude para ligar a máquina até obter uma interface de usuário totalmente operacional. Espero que você tenha aprendido a ler tanto quanto eu enquanto montou. Sinta -se à vontade para deixar seus comentários ou perguntas abaixo. Sempre esperamos ouvir de nossos leitores!

Torne -se um administrador de sistema certificado Linux