Processo de inicialização do sistema operacional Linux
índice
Processo de inicialização do sistema operacional Linux
inicialização do processo init
Processo de inicialização do sistema
Resolver falhas de inicialização
Corrigir falha de inicialização do GRUB
Esqueci a senha do usuário root
PUBLICAR
Depois que o host do servidor é ligado, a CPU, memória, placa de vídeo, teclado e outros dispositivos serão testados inicialmente de acordo com as configurações no BIOS da placa-mãe. Após o teste ser bem sucedido, o controle do sistema será transferido de acordo com a inicialização predefinida seqüência e, na maioria das vezes, será transferido para o disco rígido local.
Resumo: O primeiro dispositivo capaz de inicializar o sistema é detectado, como um disco rígido ou uma unidade óptica
Inicialização MBR
Ao iniciar o sistema a partir do disco rígido local, primeiro transfira o controle do sistema diretamente para a partição que contém os arquivos de inicialização do sistema operacional de acordo com a configuração MBR (Master Boot Record) no primeiro setor do disco rígido ou diretamente de acordo com a inicialização no registro MBR As informações chamam o menu de inicialização (como GRUB).
Resumo: Execute o programa de inicialização GRUB colocado no setor MBR
Menu GRUB
Para o sistema operacional Linux, GRUB (Unified Boot Loader) é o programa de bootloader de vários sistemas mais amplamente usado. Depois que o controle do sistema é passado para o GRUB, o menu de inicialização será exibido para o usuário escolher, e o arquivo do kernel do Linux será carregado de acordo com a opção selecionada (ou o valor padrão), e então o controle do sistema será transferido para o kernel.
CentOS 7 usa o carregador de boot GRUB2.
Resumo: O programa de inicialização do GRUB lê o arquivo de configuração do GRUB /boot/grub2/grub.cfg para obter o kernel e as configurações do sistema de arquivos de espelho e os locais do caminho
Carregue o kernel Linux
O kernel Linux é um arquivo binário especial pré-compilado, entre vários recursos de hardware e programas de sistema, responsável pela alocação e programação de recursos. Depois que o kernel assumir o controle do sistema, ele controlará totalmente o processo de execução de todo o sistema operacional Linux.
No sistema CentOS 7, o arquivo kernel padrão está localizado em "/boot/vmlinuz-3.10.0-514.el7.x86_64".
Resumo: Carregue o kernel e o sistema de arquivos de espelho na memória
inicialização do processo init
Para completar o processo de inicialização do sistema, o kernel do Linux carrega primeiro o programa "/ sbin / init" no sistema na memória para executar (o programa em execução é chamado de processo), o processo init é responsável por completar a inicialização de todo o sistema e, finalmente, espera que o usuário faça o login.
Resumo: carregue o driver de hardware, o kernel carrega o processo init na memória para executar
O sysvinit tradicional depende da execução serial de scripts Shell para iniciar os serviços, resultando em baixa eficiência e inicialização lenta do sistema. O
Systemd pode iniciar mais processos de serviço em paralelo e tem a capacidade de fornecer serviços de inicialização sob demanda, para que menos processos possam ser iniciados , melhorando assim a velocidade de inicialização do sistema.
Processo de inicialização do sistema
processo de inicialização
O programa / sbin / init
é carregado e executado pelo kernel do Linux. O processo init é o primeiro processo no sistema. O número
PID (tag do processo) do processo init é sempre 1
Systemd
Systemd é um tipo de software init do sistema operacional Linux.
CentOS7 adota um novo método de inicialização Systemd, substituindo o SysVinit tradicional
. O primeiro processo init em execução no CentOS é / lib / systemd / systemd
Tipo de unidade Systemd
- .services: Uma unidade de serviço descreve como gerenciar um serviço ou aplicativo no servidor. Isso incluirá como iniciar ou interromper o serviço, sob quais circunstâncias ele deve ser iniciado automaticamente e dependências de software relacionadas e informações de sequenciamento.
- .socket: Um arquivo de unidade de socket descreve uma rede ou socket IPC ou um buffer FIFO usado pelo systemd para ativação de socket básico. O arquivo .services iniciará quando o socket definido nesta unidade estiver ativo.
- .devic: Descreve um dispositivo designado por udev ou sysfs como a unidade do gerenciador do systemd. Nem todas as configurações têm arquivos .device. Em alguns casos, a unidade de dispositivo pode ser necessária para comandar, montar e acessar o dispositivo.
- .mount: Esta unidade define um ponto de montagem gerenciado pelo systemd no sistema. Esses arquivos são nomeados após o caminho de montagem e as barras são alteradas para travessões. As entradas em / etc / fstab terão unidades criadas automaticamente.
- .automount: Uma unidade .automount é configurada com um ponto de montagem que será montado automaticamente. Eles devem ser solicitados de acordo com o ponto de montagem envolvido e devem ter uma unidade .mount correspondente para definir os detalhes da montagem.
- .swap: Esta unidade descreve o espaço de troca no sistema. Os nomes desses arquivos devem refletir o dispositivo ou arquivo de espaço.
- .target: Uma unidade alvo fornece pontos de sincronização para outras unidades quando ela inicia ou muda de estado. Eles também podem ser usados para colocar o sistema em um novo estado. Outras unidades especificam seus alvos equivalentes para vincular as operações do alvo.
- .path: esta unidade define um caminho que pode ser usado para ativação baseada em caminhos. Por padrão, uma unidade .service com o mesmo nome de base será iniciada quando o caminho atingir o estado especificado. Isso usa o inotify para monitorar as mudanças de caminho.
- .timer: uma unidade .timer define um cronômetro gerenciado pelo systemd, semelhante a um cron job para atrasar ou agendar a ativação. Uma unidade correspondente será iniciada quando o cronômetro chegar.
- .snapshot: Uma unidade .snapshot é criada automaticamente pelo comando systemctl snapshot. Ele permite que você reconstrua o estado atual do sistema após fazer alterações. Os instantâneos não sobrevivem nas sessões. Os instantâneos são usados para reverter o estado temporário.
- .slice: Uma unidade .slice está associada ao nó do Grupo de Controle do Linux, permitindo que recursos sejam restritos ou atribuindo fatias de tempo correspondentes ao processo associado. O nome reflete sua posição hierárquica na árvore cgroup. As unidades são colocadas em certas posições por padrão, de acordo com seu tipo.
- .scope: A unidade do osciloscópio é criada automaticamente pelo systemd com base nas informações recebidas de sua interface de barramento. Eles são usados para o conjunto de gerenciamento de processos de sistema criados externamente.
- .target descreve um conjunto de unidades systemd
Resolver falhas de inicialização
Reparar falha do setor MBR
causa do problema
Danos causados por vírus, cavalos de Tróia, etc., operações incorretas de partição, erros de leitura e gravação de disco
Fenômeno de falha
Não é possível encontrar o programa de inicialização, início interrompido, não é possível carregar o sistema operacional, tela preta após a inicialização
Soluções
O arquivo de backup deve ser preparado com antecedência, inicialize no modo de emergência com o CD de instalação e, em seguida, restaure a partir do arquivo de backup
Corrigir falha de inicialização do GRUB
causa do problema
O programa de inicialização GRUB no MBR está danificado, o arquivo grub.conf está ausente e a configuração de inicialização está incorreta
Fenômeno de falha
A inicialização do sistema trava e o prompt "grub>" é exibido
Soluções
Tente inserir manualmente o comando de inicialização para entrar no modo de recuperação, reescrever ou restaurar grub.conf do backup e, em seguida, reconstruir o programa grub no setor MBR
Corrigir falha de inicialização do GRUB
O pacote no diretório / boot / grub / é usado para a imagem de fundo e estilo do menu de inicialização
/boot/grub2/grub.cfg #GRUB arquivo de configuração
Método 1: insira manualmente o comando de guia (desajeitado e incômodo, não recomendado)
grub> insmod xfs # carregue o módulo especificado para o kernel
grub> linux16 /vmlinuz-3.10.0-693.el7.x86_64 root = UUID = 8fd74986-ae66-4ffd-b7d8-a19f2eca7b6f ro rhgb quiet LANG = zh_CN.UTF-8 # Nome e localização do kernel e outras informações
grub> initrd16 /initramfs-3.10.0-693.el7.x86_64.img # Arquivo de sistema do espelho
grub> boot #boot boot
Método 2: entrar no modo de emergência e restaurar o programa de inicialização GRUB
MBR está localizado no primeiro setor físico do primeiro disco rígido (/ dev / sda), um total de 512 bytes, os primeiros 466 bytes são o registro mestre de inicialização, a tabela de partição é armazenada nos 477-510 bytes no MBR setor em.
mkdir / look
montar / dev / sdb1 / bak
dd if = / dev / sda de = / bak / grub.bak bs = 446 contagem = 1
#Simula a destruição do programa de inicialização GRUB no MRB, mas não destrói a tabela de partição
dd se = / dev / zero de = / dev / sda bs = 446 contagem = 1
# A interface de inicialização entra no modo de emergência e restaura o programa de inicialização GRUB do arquivo de backup
sh-4.2 # mkdir / backupdir
sh-4.2 # mount / dev / sdb1 / backupdir
sh-4.2 # dd if = / backupdir / grub.bak de = / dev / sda
sh-4.2 # exit
Método 3: entrar no modo de emergência e reconstruir o arquivo de configuração do menu GRUB
rm -rf /boot/grub2/grub.cfg
# Entre no modo de resgate, sistema de carregamento de imagem, o sistema é alternado para o ambiente raiz
sh-4.2 # chroot / mnt / sysimage
# Reinicialização do GRUB instalado no primeiro disco rígido (/ dev / sda) do bash-4.2 do setor MRB
# Reconstruir o arquivo de configuração do menu GRUB
bash-4.2 # grub2-mkconfig -o /boot/grub2/grub.cfg
# Saia do ambiente chroot e reinicie o
bash-4.2 # Saia do
SH-4.2 # reboot
Esqueci a senha do usuário root
Entre no modo de emergência, carregue a imagem do sistema, mude para o ambiente raiz do sistema
sh-4.2 # chroot / mnt / sysimage
redefina a senha do usuário root
bash-4.2 # passwd root
ferramenta systemctl
Não fornece janelas interativas e visuais e gerencia um único serviço de forma mais eficiente
Ver o status de inicialização dos serviços do sistema
systemctl is-enabled service name
Defina o status de inicialização do serviço do sistema ligado / desligado
systemctl ativar / desativar nome do serviço
Modificar permanentemente o nome do host
hostnamectl set-hostname newname
Ver o status do nome do host
status hostnamectl
Defina o idioma do sistema para chinês
localectl set-locale LANG = zh_CN.utf8
Veja o idioma usado pelo sistema atual
localectl [status]
Ver o tempo de inicialização do sistema
systemd-analyse