Documentação
Amazon EC2 / TurnKey Hub - Corrigir problemas de inicialização de grub / recuperar senha de raiz
Em uma VM (ou instalação de metal nu), você pode usar um ISO ao vivo para corrigir muitos problemas relacionados com o grub, kernel e outros (por exemplo, acesso perdido). Mas no AWS isso não é uma opção. No entanto, é possível anexar o volume raiz de um servidor, para outro servidor, dando-lhe um ambiente um pouco semelhante para corrigir muitos problemas de grub, boot e relacionados. Esta página dá uma visão geral de como fazer isso através do Hub, console AWS e uma sessão SSH.
Passos específicos - incluindo comandos
Eu uso as etiquetas do servidor OLD e NEW para denotar o servidor original (quebrado) e o novo servidor temporário, respectivamente.
Estes passos devem ser feitos dentro do 'Hub' ou 'AWS console' como observado. Os comandos são todos a serem executados dentro de uma shell em seu servidor NEW (através de uma sessão SSH).
- Hub: Iniciar um servidor NEW dentro do mesma zona de disponibilidade do servidor quebrado. Pode ser qualquer appliance ou tamanho, por exemplo, um T2.micro Core seria bom - mas deve estar na mesma zona de disponibilidade!
- Hub: Parar servidor OLD.
- Consola AWS: Uma vez que OLD parou, desamarre o volume da raiz.
- Consola AWS: Anexar o volume da raiz (OLD) ao NEW (como um volume secundário). Quando solicitado para o ponto de montagem, use
/dev/sdf. - Entrar em NEW via SSH: Use os seguintes comandos para configurar um chroot e digite-o:
# check that the OLD server volume is attached as /dev/xvdf: gdisk -l /dev/xvdf # Assuming OLD server volume is /dev/xvdf, mount it and chroot in: mkdir /mnt2 mount /dev/xvdf2 /mnt2 mount --bind /dev /mnt2/dev mount --bind /proc /mnt2/proc mount --bind /sys /mnt2/sys chroot /mnt2
- SSH - Realizar correção( es) em chroot: Assumindo que não tenha sucesso sem erros, você está agora dentro do chroot do seu volume de servidor OLD. O que você fizer a seguir dependerá do problema que você está procurando resolver. Eu noto algumas correções potenciais que são relevantes para problemas de inicialização, bem como redefinir a senha de root:
# optional: update kernel
apt-get update
apt-get install linux-image-$(dpkg --print-architecture)
apt-get install linux-image-$(uname -r)
# optional: regenerate initramfs (will be run automatically if the kernel is updated)
update-initramfs -u
# Note: as part of the initramfs regeneration process (whether via updating the
# kernel, or manually regenerating) it is expected and normal to see the
# following errors/warnings:
#
# /usr/share/initramfs-tools/scripts/casper-bottom/25autologin: 13: .: Can't open /scripts/casper-functions
# /usr/share/initramfs-tools/scripts/casper-bottom/25singleuser_shell: 6: .: Can't open /scripts/casper-functions
# /usr/share/initramfs-tools/scripts/casper-bottom/25ssh_emptypw: 6: .: Can't open /scripts/casper-functions
# To avoid adding grub boot entries for the host machine (i.e. the NEW server), disable the OS prober
# (note os-prober has no value other than on dual boot machines)
chmod a-x /etc/grub.d/30_os-prober
# reinstall grub2
grub-install --boot-directory=/boot /dev/xvdf
update-grub
# reset root password
passwd root
# add a public SSH key
echo "_keytype_ _public_key_data_ _email_" >> /root/.ssh/authorized_keys
# IMPORTANT: replace "_keytype_ _public_key_data_ _email_" with the contents of your public key.
# email is optional but highly recommended
# Você também pode fazer outras coisas, como check logs ou instalar pacotes adicionais como desejado.- SSH - Desmontar o volume OLD: Espero que tudo tenha funcionado bem e que não tenha havido erros.
# exit and tidy up exit umount /mnt2/dev umount /mnt2/proc umount /mnt2/sys umount /mnt2
- Consola AWS: Desanexar o volume raiz OLD do NEW, e voltar a ligar ao servidor original (OLD). Indique o ponto de anexo como
/dev/xvda. - Hub: Boot OLD - dedos cruzados agora vai arrancar! Se assim grande! Se não, repita os passos 2-8 tentando alguns passos diferentes dentro do chroot (passo 6).