Hacía tiempo que la Muerte Roja devastaba el país. Nunca hubo peste tan mortífera ni tan horrible. La sangre era su emblema y su sello, el rojo horror de la sangre – La Máscara de la Muerte Roja de Edgar Allan Poe
Ayer un cliente me solicitó apoyo, ya que, después de un reinicio de sanidad, su server no arrancaba y le aparecía una pantalla roja con un mensaje de error:
Illegal OpCode
Buscando un poco en google, encontré que este mensaje tenía dos escenarios:
- Al bootear desde una USB (no era este caso)
- Al bootear desde el disco, como una posible falla de GRUB
Recordando el proceso de arranque del sistema:
Todo indicaba que, por alguna razón (aunque el inge de HP no lo admitía), el disco había modificado algún identificador y la BIOS no encontraba el MBR, por lo que GRUB no iniciaba, enviando la famosa pantalla roja. La solución más rápida, entonces, era reinstalar GRUB.
Después de un buen rato, ya que convencí al inge de HP que actualizará la ILO porque su certificado estaba caducado, pude conectarme a la consola remota e iniciar la reinstalación:
1. Con el disco de instalación, ejecute el linux rescue:
2. Después de seleccionar el idioma, el teclado y que no utilizará las interfaces de red, el sistema rescate buscaría en el disco la instalación y lo montaría en un path temporal de trabajo:
3. Tras una breve revisión, encontramos el dispositivo donde debería encontrarse GRUB:
4. Al ejecutar el comando para reinstalar GRUB, mandaba un mensaje de error:
sh-3.2# grub-install /dev/vda1 The file /boot/grub/stage1 not read correctly
5. Para solucionar este mensaje, se desmontó la partición y se ejecutó un fsck:
6. Después de reparar error, remontamos la partición y se realizó un respaldo del directorio /boot:
sh-3.2# tar czvf boot.bkp.tar.gz boot/
7. Desmontamos nuevamente y se formateo la partición como ext3 :
8. Restauramos el respaldo y realizamos nuevamente la instalación de GRUB:
sh-3.2# tar xzvf boot.bkp.tar.gz ... sh-3.2# sh-3.2# grub-install /dev/vda1 The file /boot/grub/stage1 not read correctly
9. Como el error se mantenía, ejecutamos la instalación sin grub-install y reiniciamos el server:
sh-3.2# grub grub> root (hd0,0) grub> setup (hd0) grub> quit sh-3.2# reboot
10. Al reiniciar, el server ya cargaba GRUB, pero mando un mensaje de error:
11. Este error se debía a que en el archivo /etc/fstab el montaje de /boot apuntaba a la etiqueta del dispositivo marcado como /boot. Como formateamos esa partición, la etiqueta ya no correspondía con el UUID del dispositivo. Para solucionarlo, volvemos a montar el disco de rescate y editamos el archivo /etc/fstab, apuntándolo al dispositivo correctamente:
12. Al reiniciar, el server ya arrancaba de forma correcta:
Este caso requirió de mucho análisis ya que, aunque la respuesta se veía sencilla, tuvo complicaciones que la hicieron más compleja y quise compartir con ustedes como la solucionamos.
Les comparto, además, los artículos de la KB de Red Hat utilizados:
HP server fails to boot, getting a Red Screen with Illegal Opcode
HP Server will not boot – Illegal Opcode
How to re-install GRUB bootloader on the Master Boot Record(MBR) in rescue mode?
How to fsck in rescue mode for Red Hat Enterprise Linux
‘grub-install’ fails with error ‘The file /boot/grub/stage1 not read correctly.’
Espero les sirva…
Plus: Como es el Buen Fin en México, como una oferta, como una promoción les vengo ofreciendo de manera gratuita el texto mencionado en el intro. Espero les guste 😉