Solução de problemas de Linux, MBR, GRUB
Processo de inicialização do sistema operacional Linux
Visão geral do processo de inicialização
1. Autoteste de inicialização
Depois que o servidor é ligado, a CPU, memória, placa gráfica, 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 sequência de inicialização predefinida , e na maioria das vezes será transferido para o disco rígido local. Em uma palavra, ele detecta o primeiro dispositivo capaz de inicializar o sistema, como um disco rígido ou unidade óptica.
2. Inicialização MBR
Execute o programa de boot GRUB colocado no setor MBA.
3. Menu GRUB
Centos7 usa o carregador de inicialização
GRUB 2. O programa de inicialização GRUB lê o arquivo de configuração GRUB /boot/grub2/grub.cfg para obter as configurações do kernel e do sistema de arquivos espelho e localizações de caminho.
4. Carregue o kernel Linux
Carregue o kernel e os arquivos de imagem na memória.
No sistema Centos7, o arquivo kernel padrão está localizado em "/boot/vmlinuz-3.10.0-514.e17.x86_64".
5. O processo init é inicializado
Carregue o driver de hardware, o kernel carrega o processo init na memória para ser executado.
Processo de inicialização do sistema
processo de inicialização
O programa / sbin / init
é carregado e executado pelo kernel Linux. O processo init é o primeiro processo no sistema e é o processo pai de todos os processos.
O número PID (tag do processo) do processo init é sempre 1
Systemd
Systemd é uma espécie de software init do sistema operacional Linux.
Centos7 usa um novo método de inicialização Systemd, substituindo o SysVinit tradicional
. O primeiro processo init em execução em Centos7 é / lib / systemd / systemd
O SysVinit tradicional iniciava serviços executando scripts Shell em série, resultando em ineficiência. A velocidade de inicialização mais lenta do
systemd pode iniciar mais processos de serviço em paralelo e tem a capacidade de iniciar serviços sob demanda. Sim, iniciar menos processos, melhorando assim a velocidade de inicialização do sistema.
Tipo de unidade Systemd
Tipo de unidade | nome da extensão | Descrição |
---|---|---|
Serviço | .serviço | Descreva um serviço do sistema |
Soquete | .socket | Descreva um soquete para comunicação entre processos |
Alvo | .alvo | Descreva um conjunto de unidades do systemd |
Soquete: (IP: número da porta)
Alvo Systemd correspondente ao nível de execução
Nível de execução | Alvo Systemd 的 | Descrição |
---|---|---|
0 | alvo | Estado de desligamento, usar este nível desligará o host |
1 | rescue.target | Modo de usuário único, pode fazer login no sistema sem verificação de senha, usado principalmente para manutenção do sistema |
2 | multi-user.target | Nível de execução definido pelo usuário / específico do domínio. O padrão é equivalente a 3 |
3 | multi-user.target | Modo multiusuário completo com interface de caracteres, a maioria dos hosts de servidor são executados neste nível |
4 | multi-user.target | Nível de execução definido pelo usuário / específico do domínio. O padrão é equivalente a 3 |
5 | graphical.target | O modo multiusuário da interface gráfica fornece um ambiente operacional de desktop gráfico |
6 | reboot.target | Reinicie, o host será reiniciado ao usar este nível |
Reparar falha do setor MBR
causa do problema
· Destruição causada por vírus, cavalos de Tróia, etc.
· Operação incorreta da partição, erros de leitura e gravação de disco
Fenômeno de falha
· O programa de inicialização não foi encontrado e a inicialização foi interrompida
.
Soluções
· Os arquivos de backup devem ser feitos com antecedência
· Use o CD de instalação para inicializar em modo de emergência
· Recupere dos arquivos de backup
MBR está localizado no primeiro setor físico do primeiro disco rígido (/ dev / sda), um total de 512 bytes
1. Faça backup dos dados do setor MBR para outros discos (/ dev / sdb1)
mkdir /backup
mount /dev/sdb1 /backup
dd of=/dev/sda of=/backup/mbr.bak bs=512 count=1
2. Simule a destruição do setor de inicialização do MBR
dd if=/dev/zero of=/dev/sda bs=512 count=1
3. Neste momento, se reiniciarmos, o sistema não detectará a inicialização do MBR, ele permitirá que você reinstale o sistema ou entre no modo de emergência, aqui entramos no modo de emergência para reparar, restaurar os dados do setor MBR do arquivo de backup ,
primeiro carregue o espelho do CD, reinicie o sistema operacional,
Quando a interface do assistente de instalação aparecer, selecione a opção "Solução de problemas",
Em seguida, selecione a opção "Rescue a CentOS Linux system" para entrar no modo de emergência
Selecione "1", selecione Continuar e pressione Enter para continuar
Após pressionar Enter novamente, você entrará no ambiente Bash Shell com o prompt "sh-4.2 #"
sh-4.2# mkdir /backupdir
sh-4.2# mount /dev/sdb1 /backupdir #挂载带有备份文件的分区
sh-4.2#dd if=/backupdir/mbr.bak of=/dev/sda #恢复备份数据
sh-4.2#exit #执行exit命令退出临时shell环境,系统将会自动重启
Corrigir falha de inicialização do GRUB
causa do problema
- O programa de inicialização GRUB no MBR está corrompido
- Arquivo /boot/grub2/grub.cfg ausente, o erro de configuração de inicialização
Sintoma - A inicialização do sistema trava, exibindo o prompt "grub>"
Soluções
- Podemos tentar inserir manualmente o comando de inicialização, mas geralmente o comando de inicialização é muito longo e precisa ser inserido por você mesmo, o que está sujeito a erros.
- Entre no modo de emergência, reescreva ou restaure grub.conf do backup
- Reconstrua 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 # arquivo de configuração GRUB
Método 1: insira manualmente o comando de inicialização (desajeitado e incômodo, não recomendado)
grub> insmod xfs #
carregue o módulo especificado no kernel grub> linux16 /vmlinuz-3.10.0-693.el7.x86_64 root = UUID = 8fd74986-ae66 -4ffd -b7d8-a19f2eca7b6f ro rhgb quietLANG = zh_CN.UTF-8
#Informações como o nome e localização do kernel grub> initrd16 /initramfs-3.10.0-693.el7.x86_64.img # Arquivo de sistema do espelho
grub> boot #boot boot
porque este método requer entrada manual de comandos muito longos e não pode ser complementado automaticamente Full, portanto, não recomendo este método aqui.
Método 2: entre no modo de emergência e restaure 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, e a tabela de partição é armazenada em Bytes 477-510 no setor MBR
mkdir / bak
mount / dev / sdb1 / bak
dd if=/dev/sda of=/ bak/ grub.bak bs=466 count=1
#Simula a destruição do programa de inicialização GRUB no MRB, mas não destrói a tabela de partição
dd if=/dev/zero of=/dev/ sda bs=466 count=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 of = / dev / sda
sh-4.2 # exit
Método 3: a interface de inicialização entra no modo de emergência e reconstrói o arquivo de configuração do menu GRUB
rm -rf /boot/grub2/grub.cfg
# Entre no modo de emergência, carregue a imagem do CD, mude para o ambiente raiz do sistema
sh-4.2#chroot /mnt/sysimage
#Reinstale o programa de inicialização GRUB no setor MRB do primeiro disco rígido (/ dev / sda)
bash-4.2# grub2-install /dev/sda
#Reponha o arquivo de configuração da lista do GRUB
bash-4.2# grub2-mkconfig -o /boot/grub2/grub.cfg
#Sair do ambiente chroot e reiniciar
bash-4.2# exit
sh-4.2# reboot
Esqueci a senha do usuário root
No ambiente de trabalho diário, às vezes esquecemos a senha do root, neste momento, podemos entrar no modo de emergência, carregar a imagem e depois redefinir a senha.
#进入急救模式,加载系统镜像,切换到系统根环境
sh-4.2#chroot / mnt/ sysimage
#重设root用户密码
bash-4.2#passwd root