Como determinar e corrigir problemas de inicialização no Linux

Como determinar e corrigir problemas de inicialização no Linux

O Sistema Linux inicializa tão rápido que a maioria dos rolos de saída muito rapidamente para ler o texto (mostrando os serviços iniciados) enviados ao console. Portanto, observar problemas/erros de inicialização se torna um pouco um desafio para nós.

Neste artigo, explicaremos brevemente os diferentes estágios em um processo de inicialização do sistema Linux e aprenderemos como estabelecer e chegar à parte inferior dos problemas de inicialização: em termos de arquivos para analisar ou comandos para visualizar mensagens de inicialização do sistema.

Resumo do processo de inicialização do Linux

Em resumo, uma vez que pressionamos o Ligar botão, o BIOS (Sistema Básico de Entrada e Saída) um programa integrado em uma placa -mãe realiza um PUBLICAR (Poder no auto -teste) - Onde hardware como discos, RAM (memória de acesso aleatório), teclado, etc. são digitalizados. Em caso de erro (hardware ausente/com defeito), ele é relatado na tela.

Durante PUBLICAR, o BIOS Também procura o dispositivo de inicialização, o disco para estatística (geralmente o primeiro disco rígido, no entanto, podemos configurá -lo para ser um DVD, USB, cartão de rede etc. em vez disso).

Então o sistema se conectará ao disco e pesquisará o Registro de inicialização mestre (512 bytes de tamanho), que armazena o carregador de inicialização (446 bytes de tamanho) e o restante das informações de armazenamento espacial sobre partições de disco (quatro no máximo) e o próprio MBR.

Leia sugerida: 4 melhores carregadores de inicialização Linux

O carregador de inicialização identificará e apontará, bem como carregar o Núcleo e o arquivo initrd (disco de ram de inicialização - fornece o acesso ao kernel ao sistema de arquivos raiz montado e módulos/drivers armazenados em /lib diretório), que geralmente são armazenados no /bota diretório do sistema de arquivos.

Depois que o kernel é carregado, ele executa init (ou Systemd em distritos Linux mais recentes), o primeiro processo com PID 1, que por sua vez inicia todos os outros processos no sistema. É também o último processo a ser executado no desligamento do sistema.

Como descobrir problemas de inicialização do Linux ou mensagens de erro

Como mencionamos antes, os processos de inicialização do Linux acontece rapidamente que não podemos nem ler claramente a maior parte da saída enviada ao console.

Portanto, tomar nota dos problemas de inicialização/erros exige que um administrador do sistema analise certos arquivos importantes em conjunto com comandos específicos. E isso inclui:

/var/log/bota.LOG - LOGS Mensagens de inicialização do sistema

Este é provavelmente o primeiro arquivo que você deseja analisar, para ver tudo o que se desenrolou durante a inicialização do sistema.

Em vez de tentar tanto seguir a saída na tela durante a inicialização, podemos visualizar esse arquivo após a conclusão do processo de inicialização para nos ajudar a determinar e resolver problemas de inicialização/erros.

Usamos o comando CAT para esse fim da seguinte maneira (abaixo está uma amostra deste arquivo):

# gato/var/log/bota.registro 
Veja os logs de inicialização do Linux
[OK] Iniciado Carregar/salvar o status da chave de matar RF. [Tempo] Tempo aguardando o dispositivo dev-disk-by \ x2duUid-53e41ce9 \ x2ddc18 \ x2d458c \ x2dbc08 \ x2d584c208ed615.dispositivo. [Depend] dependência falhou para/dev/disk/by-uuid/53e41ce9-dc18-458c-bc08-584c208ed615. [Depend] dependência falhou para troca. [OK] atingiu a inicialização do sistema alvo. [OK] ouvindo o soquete de ativação do daemon uuid. [OK] iniciou a limpeza diária de diretórios temporários. [OK] ouvindo no agendador de copos. [OK] iniciou atividades diárias de apt. [OK] atingiram os temporizadores -alvo. [OK] ouvindo o soquete de ativação da pilha Avahi MDNS/DNS-SD. [OK] iniciou a verificação de eventos do ACPI. [OK] iniciou o Trigger Resolvconf Update for Networkd DNS. [OK] iniciou o agendador de copos. [OK] alcançaram os caminhos -alvo. [OK] ouvindo o soquete do barramento de mensagens do sistema D-Bus. [Ok] ouvindo no soquete do ACPID. Inicial. [OK] alcançaram soquetes alvo. [OK] atingiu o sistema básico -alvo. Iniciando LSB: defina o governador de escala de frequência da CPU como "ondemand" ... [ok] iniciou o daemon do evento acpi. [OK] iniciou o MintSystem.serviço. Começando detectar as GPUs disponíveis e lidar com qualquer mudança do sistema ... Iniciando LSB: Daemon para equilibrar interrupções para sistemas SMP… Setor de Bluetooth… [ok] Iniciado. Iniciando LSB: inicia Syslogd… [ok] iniciou Daemon de processamento de programas de fundo regular. Iniciando o Modem Manager… iniciar o serviço de contas… 

A partir da saída acima, podemos ver que há problemas de inicialização indicados pelas linhas abaixo.

[Depend] dependência falhou para/dev/disk/by-uuid/53e41ce9-dc18-458c-bc08-584c208ed615. [Depend] dependência falhou para troca. 

Emitir: Problema com a partição de troca; O sistema não conseguiu ler o arquivo de troca/dispositivo/partição ou não está presente.

Vamos verificar se o sistema está usando o espaço de troca com comando grátis.

# livre Total usado Buff/cache compartilhado gratuito disponível Mem: 3742792 2421060 433696 287376 888036 967000 Swap: 0 0 0 

Alternativamente, podemos executar o comando swapon Para visualizar o resumo do uso do espaço de troca do sistema (não obteremos nenhuma saída).

# Swapon -s 

Podemos resolver esse problema, criando um espaço de troca no Linux.

Observação: O conteúdo deste arquivo é limpo no desligamento do sistema: novos dados são armazenados nele em uma nova bota.

/var/log/mensagens - logs do sistema geral

Este arquivo armazena mensagens gerais do sistema, incluindo as mensagens que são registradas durante a inicialização do sistema.

Para visualizá -lo, digite:

# gato/var/log/mensagens 
Exibir mensagens de log do sistema
4 de junho 13:04:44 Tecmint syslogd (GNU Inetutils 1.9.4): Reinicie 4 de junho 13:19:55 Tecmint - Mark - 4 de junho 13:39:55 Tecmint - Mark - 4 de junho 13:59:55 Tecmint - Mark - 4 de junho 14:19:55 Tecmint - Mark - 4 de junho 14:20:17 Tecmint Vmunix: [4945.388740] i915 0000: 00: 02.0: Bar 6: [??? 0x00000000 sinalizadores 0x2] tem alinhamento falso em 4 de junho 14:20:17 Tecmint Vmunix: [4945.388837] I915 0000: 00: 02.0: Bar 6: [??? 0x00000000 sinalizadores 0x2] tem alinhamento falso em 4 de junho 14:20:17 Tecmint Vmunix: [4945.388903] I915 0000: 00: 02.0: Bar 6: [??? 0x00000000 sinalizadores 0x2] tem alinhamento falso em 4 de junho 14:20:17 Tecmint Vmunix: [4945.388930] i915 0000: 00: 02.0: Bar 6: [??? 0x00000000 sinalizadores 0x2] tem alinhamento falso em 4 de junho 14:20:17 Tecmint Vmunix: [4945.389334] I915 0000: 00: 02.0: Bar 6: [??? 0x00000000 sinalizadores 0x2] tem alinhamento falso em 4 de junho 14:20:17 Tecmint Vmunix: [4945.389402] PCIEPORT 0000: 00: 1C.0: Barra 15: atribuído [MEM 0XDFA00000-0XDFBBFFFF de 64bit pref]… 

Como esse arquivo pode ser relativamente demorado, podemos visualizá -lo nas páginas, use o mais comando (que até mostra uma porcentagem) como este.

# mais/var/log/mensagens 

O conteúdo de /var/log/mensagens Ao contrário do arquivo anterior não é desligado, porque não contém apenas mensagens de inicialização, mas também mensagens sobre outras atividades do sistema. Portanto, os arquivos mais antigos são compactados e mantidos no sistema para inspeção posterior, como mostrado abaixo.

# ls -l mensagem* -RW-R-R-- 1 raiz da raiz 1206127 Jun 14 14:20 Mensagens -RW-R-1 raiz da raiz 1419494 4 de junho 13:00 Mensagens.1 -RW-R-R-- 1 raiz raiz 153011 28 de maio 09:30 Mensagens.2.gz 

DMESG - mostra mensagens de kernel

O comando DMESG pode mostrar as operações assim que o processo de inicialização tiver concluído, como opções de linha de comando passadas para o kernel; Componentes de hardware detectados, eventos quando um novo dispositivo USB é adicionado ou erros como falha de NIC (cartão de interface de rede) e os drivers relatam nenhuma atividade de link detectada na rede e muito mais.

# DMESG 
Mostre mensagens do kernel
[0.000000] Inicializando o CGROUP SUBSYS CPUSET [0.000000] Inicializando o CGROUP SUBSYS CPU [0.000000] Inicializando o CGROUP SUBSYS CPUACCT [0.000000] Linux versão 4.4.0-21-genérico ([Email Protected]) (GCC versão 5.3.1 20160413 (Ubuntu 5.3.1-14UBUNTU2)) #37-UBUNTU SMP MON 18 de abril 18:33:37 UTC 2016 (Ubuntu 4.4.0-21.37-genérico 4.4.6) [0.000000] Linha de comando: boot_image =/boot/vmlluz-4.4.0-21 raiz genérica = UUID = 57B36D48-1938-43C2-BF85-E97BC9F423EA RO.000000] CPUs apoiadas pelo kernel: [0.000000] Intel genuineIntel [0.000000] AMD Authenticamd [0.000000] Centaur Centaurhauls [0.000000] x86/fpu: xstate_offset [2]: 576, xstate_sizes [2]: 256 [0.000000] X86/FPU: Suporte ao recurso xSave 0x01: 'x87 Registros de ponto flutuante' [0.000000] X86/FPU: Suporte ao recurso xSave 0x02: 'SSE Registros' [0.000000] X86/FPU: Suporte ao recurso xSave 0x04: 'AVX Registros' [0.000000] X86/FPU: Recursos XSTATE ativados 0x7, o tamanho do contexto é 832 bytes, usando o formato 'padrão'. [0.000000] X86/FPU: Usando interruptores de contexto 'ansiosos' da FPU. [0.000000] E820: mapa físico fornecido por BIOS: [0.000000] BIOS-E820: [MEM 0x0000000000000000-0X000000000008FFFF] utilizável [0.000000] BIOS-E820: [MEM 0x0000000000090000-0X00000000000BFFFF] Reservado [0.000000] BIOS-E820: [MEM 0X0000000000100000-0X000000001FFFFFF] utilizável [0.000000] BIOS-E820: [MEM 0x0000000020000000-0X00000000201FFFFF] Reservado [0.000000] BIOS-E820: [MEM 0X0000002020200000-0X0000000040003FFF] utilizável [0.000000] BIOS-E820: [MEM 0X0000000040004000-0X0000000040004FFF] Reservado [0.000000] BIOS-E820: [MEM 0X0000000040005000-0X0000000080B2FFFF] utilizável [0.000000] BIOS-E820: [MEM 0x0000000080B30000-0X0000000080D31FFF] Reservado [0.000000] BIOS-E820: [MEM 0X00000080D32000-0X000000CE3EEFFF] utilizável [0.000000] BIOS-E820: [MEM 0x00000000CE3EF000-0X000000CE5EEFFF] TIPO 20 [0.000000] BIOS-E820: [MEM 0x00000000CE5EF000-0X000000DAEEEFFF] Reservado [0.000000] BIOS-E820: [MEM 0x00000000DAEEF000-0X000000DAF9EFFF] ACPI NVS… 

JournalCTL - Conteúdo de consulta do Systemd Journal

Isso é útil na maioria das distritos Linux atuais usando o Systemd: o mais novo sistema e gerente de serviço. Sob ele, o registro do sistema é feito através do componente da revista - um local centralizado para todas as mensagens registradas por diferentes componentes.

Essas mensagens incluem mensagens de kernel e inicialização; mensagens do syslog ou vários serviços. Podemos usá -lo para revisar mensagens de inicialização e estabelecer problemas de inicialização lendo através da saída e identificando linhas de interesse (erros apontados por linhas vermelhas, dependendo das configurações de cores do texto do terminal).

# JournalCtl 
Mostrar conteúdo de Systemd
13 de junho 16:35:32 Tecmint MTP-Robe [963]: Verificando o barramento 2, dispositivo 5: "/sys/dispositivos/pci0000: 00/0000: 00: 1d.0/U 13 de junho 16:35:32 Tecmint MTP-Robe [963]: BUS: 2, dispositivo: 5 não era um dispositivo MTP 13 de junho 16:35:54 Tecmint Systemd [1]: Dev-Disk-by \ x2Duuid -53e41ce9 \ x2ddc18 \ x2d458c \ x2dbc08 \ x2d584c208ed615. 13 de junho 16:35:54 Tecmint Systemd [1]: Aguardando o dispositivo de dev-dis-disk-by \ x2DUUID-53E41CE9 \ x2ddc18 \ x2d 13 de junho 16:35:54 Tecmint Systemd [1]: dependência falhou para /dev / / disco/by-uuid/53e41ce9-dc18-458c-bc08-584c2 13 de junho 16:35:54 Tecmint Systemd [1]: dependência falhou para a troca. 13 de junho 16:35:54 Tecmint Systemd [1]: Swap.Alvo: Troca de Job.O alvo/início falhou com o resultado 'dependência'. 13 de junho 16:35:54 Tecmint Systemd [1]: dev-disk-by \ x2DUUID-53E41CE9 \ X2DDC18 \ X2D458C \ X2DBC08 \ X2D584C208ED615. 13 de junho 16:35:54 Tecmint Systemd [1]: dev-disk-by \ x2DUUID-53E41CE9 \ X2DDC18 \ X2D458C \ X2DBC08 \ X2D584C208ED615. 13 de junho 16:35:54 Tecmint Systemd [1]: Atenção da inicialização do sistema alvo. 13 de junho 16:35:54 Tecmint Systemd [1]: Iniciou os eventos ACPI Check. 13 de junho 16:35:54 Tecmint Systemd [1]: ouvindo no Scheduler. 13 de junho 16:35:54 Tecmint Systemd [1]: Iniciando o registro de inicialização do sistema de console… 13 de junho 16:35:54 Tecmint Systemd [1]: Iniciado diariamente a limpeza de diretórios temporários de diretórios temporários. 

O exposto acima é uma amostra da saída de comando mostrando um erro que já identificamos pela visualização /var/log/bota.registro: o erro de partição de troca. Para ver mais linhas de saída, basta pressionar [Digitar] botão.

Confira também esses guias úteis sobre o gerenciamento de inicialização e serviço do sistema Linux em relação aos gerentes de sistema e serviços comuns:

  1. Gerenciamento de processos no Rhel 7: Boot, desligamento e tudo mais
  2. Gerenciando o processo de inicialização e serviços de inicialização do sistema (Sysvinit, Systemd e Upstart)
  3. A história por trás de 'init' e 'Systemd': por que 'init' precisava ser substituído por 'Systemd'

Neste artigo, explicamos em breve os diferentes estágios do processo de inicialização do sistema Linux, bem como aprendemos a estabelecer e possivelmente resolver problemas de inicialização. Para adicionar qualquer pensamento a este guia, use o formulário de comentário abaixo.