Averigua aquí cómo convertir discos UEFI a BIOS para evitar problemas de ejecución dentro de la plataforma de Jotelulu.
Las máquinas montadas con tecnología UEFI no están soportadas por Jotelulu, concretamente las máquinas virtuales de Azure Gen2 (de Segunda Generación) y las máquinas virtuales de Hyper-V Get2 (de Segunda Generación).
Al intentar arrancar una máquina de este tipo, posiblemente nos encontraremos con un error como el siguiente o muy similar:
iPXE: (hrrp://ipxe.org) 00:04.0 CA00 PCI2.10 PMM-0010000100011020 CA00
Press F12 for boot menu.
Boot device: Hard Disk – success.
Boot device: CD-Rom – Failure: could not read boot disk
No bootable device.
Powering of in 30 seconds.
NOTA: Además, en el Paso 5 de este tutorial puedes encontrar un procedimiento guiado para solventar problemas de corrupción del arranque de un servidor Microsoft Windows.
¿Cómo convertir discos UEFI a BIOS?
Pre-requisitos o pre-configuración
Para completar de forma satisfactoria este tutorial y convertir discos UEFI a BIOS se necesitará:
- Por un lado, estar dado de alta en la Plataforma Jotelulu con una organización y estar registrado en la misma tras hacer Log-in.
- Por otro lado, haber dado de alta una suscripción de Servidores
- Tener un servidor Windows migrado con problemas de arranque dentro de la suscripción.
- Tener un servidor Ubuntu 20 operativo dentro de la suscripción.
NOTA: Antes de hacer la operativa, se recomienda hacer una copia de seguridad del disco sobre el que vamos a operar, para así poder recuperarlo en caso de cometer algún error durante el proceso, ya que, entre otras cosas, es posible que cometamos un error y borremos su contenido.
NOTA: Al finalizar la operativa, es recomendable que eliminemos las copias de seguridad que hayamos creado y que no sea necesario almacenar, ya que, si bien no se factura por las copias de seguridad que se puedan hacer, sí que se factura por el espacio en disco almacenado.
Paso 0. Preparar la máquina Ubuntu
En caso de no tener una máquina Ubuntu 20 provisionada en la suscripción de servidores, se deberá desplegar para así poder operar y usarla para la recuperación del disco que está dando problemas.
Además, se debe preparar la máquina virtual para poder acceder a ella mediante una conexión directa por SSH y que así sea más cómodo que trabajar desde la consola. Para esto, será necesario también que se abra el puerto de SHH en el firewall de la suscripción de servidores de Jotelulu y que se use algún programa para la conexión, como por ejemplo PuTTY en el caso de conectar desde un equipo Microsoft Windows.
Paso 1. Preparación de los discos
Lo primero que se debe hacer es detener la máquina virtual cuyo arranque no está funcionando correctamente. Para ello se debe acceder a la suscripción donde se encuentra la máquina virtual que falla al arrancar e ir al servidor concreto que falla.
Una vez ahí, se debe ir a la parte superior de la pantalla y hacer clic en “Parar” (1) para detener la máquina virtual.
Paso 1. Paramos la máquina virtual que está dando problemas para poder desconectar los discos
Una vez se esté seguro de que la máquina ha parado, se debe ir a la sección de discos (2) de la suscripción de servidores, buscar el disco que pertenece a dicha máquina virtual y hacer clic sobre los tres puntos (3) para seleccionar la opción “desconectar” (4).
Paso 1. Desconectamos el disco que queremos modificar para poder operar con el
En este momento ya se tiene el disco desconectado del servidor de origen y hay que conectarlo al servidor Ubuntu 20 que se va a usar para la operativa de reparación del arranque mediante el cambio de GPT a BIOS.
Para conectar este disco a la máquina Ubuntu, se debe ir a la sección de discos (5) de la suscripción de servidores, que en principio es la sección donde se está en este momento, buscar el disco que se ha desconectado de la máquina virtual y hacer clic sobre los tres puntos (6) para seleccionar la opción “Conectar” (7).
Paso 1. Conectamos el disco a la máquina Ubuntu para su manipulación
Al seleccionar el disco, se pide seleccionar el servidor (8) al que hay que conectarlo, por lo que se debe seleccionar el equipo pertinente y hacer clic en “Continuar” (9).
Paso 1. Seleccionamos el servidor al que se va a conectar el disco
Cuando se tenga el disco conectado al servidor, se debe ir a la sección de servidores, seleccionar el servidor y arrancar la máquina virtual (10) a la que acabamos de conectarle el disco para empezar la operativa en sí.
Paso 1. Arrancamos el servidor sobre el que vamos a tratar el disco
Tras esto, creamos una regla de entrada en el firewall del servidor para poder acceder en remoto vía SSH y trabajar de manera más cómoda, en vez de conectar desde la consola integrada en Jotelulu, ya que trabajar desde la consola es un poco más incómodo.
Para ello se debe ir a la suscripción de servidores, se debe acceder a la configuración de servidor de Ubuntu y, en la parte inferior de la pantalla, en la sección “Firewall – Reglas de entrada”, se debe hacer clic en “Nueva regla” (11).
Paso 1. Creamos una nueva regla de entrada para conectar por SSH en el firewall de Jotelulu
En la nueva ventana, se deben configurar los siguientes datos de conexión:
- Seleccionar red: (12) Se deberá seleccionar la red a través de la que se realizará la conexión. Por lo general será la que viene configurada.
- IP o Network: (13) La IP o red desde la que se puede hacer la conexión. Por defecto está como “Cualquier IP” pero se recomienda limitarlo, poniendo la IP o rango de IP de la empresa del cliente, ya que estas conexiones no se van a realizar desde ningún otro lugar, y así minimizamos la superficie de ataque.
- Protocolo y Puerto público: (14) Es el puerto que queremos que se use para conectar, está compuesto de Protocolo (TCP o UDP) en este caso TCP y el número de puerto, que en este caso es el puerto 22.
- Public IP: (15) La IP pública del servidor a la que se conectará a través de esta regla.
- Private (IP): (16) La IP privada del servidor a la que se conectará a través de esta regla.
- Puerto privado: (17) Es el puerto que queremos que se use para conectar, en la pata interna, en este caso solo se necesita el número de puerto (Puerto 22).
Una vez configurado todo, se tendrá que hacer clic en “Continuar” (18) para que se cree la regla.
Paso 1. Creamos una regla de conexión para SSH en el firewall del servidor dando los datos
Tras esta configuración, se podrá conectar a la consola del servidor GNU/Linux a través de SSH usando para ello algún programa de conexiones como PuTTY, que es uno de los programas más ampliamente usados para poder conectar por SSH (y otros protocolos) desde equipos Windows.
NOTA: Puedes descargar el programa PuTTY de la siguiente URL.
Paso 1. Usamos PuTTY para conectar al servidor sobre el que vamos a hacer la operativa
Paso 2. Operativa de modificación del disco
Lo siguiente que se tiene que hacer es conectar vía SSH desde el equipo usado para administrar, usando para ello la herramienta por la que se haya optado, como por ejemplo el PuTTY que se ha propuesto anteriormente.
Una vez conectados, lo primero que hay que hacer es listar los discos disponibles en el servidor para así identificar el disco que hemos montado para su reparación. Para ello se pueden usar varios comandos, pero en nuestro caso se debe usar el comando “fdisk -l” (19) que muestra todos los discos y particiones disponibles en el equipo.
Al mostrar los discos que existen (20) que por lo general tendrán una forma similar a:
/etc/xvda1
/etc/xvda2
/etc/xvda3
/etc/xvdb1
/etc/xvdb2
/etc/xvdb3
/etc/xvdb4
/etc/xvdb5
En este caso, vemos que todos empiezan con “/etc/” esto se debe a que los dispositivos y particiones tienen su archivo de configuración vinculado al disco montado.
Además, vemos que después, todos comparten una cadena, la conformada por “xvdb”.
Por último, se puede ver que hay una “a” o una “b” seguida de un número. Esto se debe a que cada disco del sistema tiene una letra asignada, ordenada alfabéticamente, y, por tanto, comenzando desde la “a”, y seguida por la “b”, etc. Además, cada partición del disco recibe un número que empezará por “1” y seguirá incrementándose.
Con lo que acabamos de comentar, la lista de discos y particiones mostrada anteriormente, “/etc/xvda1”, “/etc/xvda2” y “/etc/xvda3” pertenecerán al disco “/etc/xvda”, mientras que “/etc/xvdb1”, “/etc/xvdb2”, “/etc/xvdb3”, “/etc/xvdb4” y “/etc/xvdb5” pertenecerán al disco “/etc/xvdb”.
Dicho esto, de la lista que se nos muestra, nos interesará el disco “b”, ya que el primero (a) es el que ejecuta el sistema operativo Ubuntu y el segundo (b) es el montado para su reparación, pero ojo, esto dependerá de si tenemos más discos montados en dicho servidor.
Paso 2. Comprobamos los discos conectados en el servidor para identificar el que se ha pinchado
Lo siguiente que se debe hacer es editar el disco que se quiera cambiar (comúnmente el “/etc/xvdb”) y para ello se debe lanzar el comando “gdisk /dev/xvdb” (21).
Al lanzar este comando, se devolverá una información sobre el estado de la tabla de particiones, informando del tipo que es. En el caso que nos ocupa, debería ser de tipo GPT por lo que deberá mostrar un “GPT: Present” (22), que indicará que es un disco de tipo GPT que no presenta ningún tipo de problema.
Si se mostrara un mensaje como “GPT: Damaged” se deberá hacer un paso adicional que contamos en el paso 3. Si en el caso que estás tratando se muestra este error, pasa al Paso 3 y vuelve aquí cuando termines de realizarlo.
Paso 2. Editamos el disco con gdisk y comprobamos el estado de la partición
En caso de que el mensaje sea “GPT: present” se deben escribir las siguientes opciones (23) del menú de “gdisk” en el orden que se muestra a continuación:
r: Prepara las opciones de recuperación y transformación.
g: Convierte la partición de GPT a MBR.
s: Prepara la partición MBR.
p: Muestra la tabla MBR.
w: Escribe la tabla de particiones MBR.
y: Validaremos la escritura y saldrá del programa.
Paso 2. Comenzamos a lanzar los comandos de gdisk para hacer el cambio en el disco
Con esto se habrá terminado esta parte de la operativa y se deberá ir al Paso 4.
Paso 3. Operativa en caso de tener el mensaje “GPT: Damaged”
IMPORTANTE: Lo que se cuenta a continuación solo se debe ejecutar en caso de que el disco presente el mensaje “GPT: Damaged”.
NOTA: Se debe recordar que es una buena práctica hacer un backup del disco con el que estamos operando antes de hacer toda esta operativa.
Al lanzar el comando “gdisk /dev/xvdb” se ha mostrado el error “GPT: Damaged” por lo que se debe realizar una operativa adicional.
Esta consiste en que cuando el comando “gdisk” devuelva el prompt se deberán poner las siguientes opciones en el orden (24) que aquí se listan:
p: Imprimir la información de la tabla de particiones.
w: Escribir la tabla de particiones y salir.
y: Confirmar la escritura de la tabla de particiones.
Paso 3. Continuamos con los comandos de gdisk para recuperar la partición GPT
Para comprobar que todo ha ido bien, se debe lanzar de nuevo el comando “gdisk /dev/xvdb” (25) y comprobar que se muestra el mensaje “GPT: present” en vez del “GPT: damaged” que se mostraba anteriormente.
Paso 3. Comprobamos con gdisk que el estado de GPT es present y no damaged
Si todo ha ido bien, se podrá volver al punto del Paso 2 donde estábamos antes de pasar a solventar el problema de GPT.
Paso 4. Reparación del arranque de Windows
En este paso, ya se ha hecho la conversión del disco, pero aún no es arrancable dentro de Windows. Por esta razón se debe apagar las máquinas virtuales, desconectar el disco de la máquina Ubuntu que se ha usado para su recuperación y conectarlo a la máquina Windows de la que se había desconectado previamente.
NOTA: El proceso de desconexión de una máquina para conectarlo en otra se ha reproducido previamente, por lo que no se vuelve a describir. Si el lector tiene dudas lo remitimos a la operativa previamente realizada.
Lo siguiente que se debe hacer tras conectar el disco de nuevo, es introducir una imagen ISO para que pueda arrancar desde ella, de la misma manera que si trabajáramos con un equipo físico y quisiéramos hacer tareas de mantenimiento o recuperación.
Para hacer esta operativa se debe ir al portal de administración de Jotelulu, acceder a la suscripción de servidores donde se encuentra el servidor, seleccionar el servidor y, en la ventana de administración o edición del servidor, ir a la parte superior de la ventana, donde en principio podrá leerse “Ninguna ISO” (26) y desplegar las opciones para seleccionar la ISO (27) correspondiente al sistema operativo del servidor (por ejemplo, Windows Server 2019).
Paso 4. Seleccionamos la ISO a montar en el servidor para poder lanzar las opciones de recuperación
Una vez hecho esto, se debe arrancar la máquina. Para ello, en la consola de administración de Jotelulu se deberá hacer clic en “Encender” (28), confirmando cuando consulta si se desea encender el servidor.
Paso 4. Arrancamos la máquina virtual
Tras esto, se deberá esperar un momento mientras se arranca la máquina y se deberá lanzar la consola (29).
NOTA: Seguramente no consigamos conectarla a la primera, ya que está arrancando el sistema, motivo por el que se deberá lanzar tantas veces como sea necesario hasta conseguir que se muestre el arranque desde la ISO.
Paso 4. Lanzamos la consola de administración remota disponible en la plataforma
Cuando se consiga abrir la consola se debe lanzar el arranque desde CD/DVD, o sea, desde la ISO que se ha introducido, se deberá esperar a que se muestre el mensaje “Presionar cualquier tecla para iniciar desde el CD o DVD…” se deberá pulsar la tecla “Enter” (30) para que arranque desde la imagen y empiece a cargar los ficheros del sistema.
Paso 4. Pulsamos enter para que cargue la imagen que hemos conectado a la máquina
NOTA: Es bastante común que no se coja la pulsación a la primera por lo que podría acabar viéndose que arranca el sistema operativo instalado en la máquina virtual. Si sucede esto, se deberá reiniciar o apagar la máquina y repetir el intento.
En este momento, si todo va bien, el sistema comenzará a cargar la ISO y descomprimir los binarios para poder ejecutar la consola con la que deberemos realizar la operativa, por lo que habrá que tener paciencia mientras carga.
Paso 4. Esperamos mientras se carga la imagen del sistema
Cuando cargue la ventana de “Configuración del sistema operativo Windows Server”, se deberá hacer clic en “Siguiente” (31), no siendo demasiado importante si está en un idioma o en otro ya que trabajaremos en línea de comandos.
Paso 4. Hacemos clic en siguiente para pasar al siguiente menú
En la siguiente ventana, se deberá hacer clic en “Reparar el equipo” (32) para entrar en las opciones de recuperación del sistema.
Paso 4. Hacemos clic en Reparar equipo
Tras esto se mostrará una nueva ventana en la que se deberá seleccionar “Solucionar problemas” (33).
Paso 4. Seleccionamos solucionar problemas en el menú visual
Y por fin, dentro de las opciones avanzadas se deberá seleccionar la opción “Símbolo del sistema” (34) que lanzará una ventana de CMD de Windows sobre la que ya podremos operar.
Paso 4. Seleccionamos símbolo del sistema entre las opciones que se nos ofrecen
Ahora que se tiene una consola de símbolo de sistema de Windows, lo que comúnmente se llama “Command” o “CMD”, se deben ejecutar una serie de comandos (35), que son los mismos que cuando se está haciendo un disco USB arrancable.
Los comandos para ejecutar son los siguientes:
diskpart
list disk
select disk <boot_disk>
list partition
list volume (nos servirá para identificar el volumen donde está instalado Windows)
Donde:
- “<boot_disk>” será el disco que se quiere usar para arrancar el sistema, no pudiéndose elegir uno de datos.
Una vez hecho esto, se debe revisar hasta encontrar la partición “C:”, lanzando los siguientes comandos y usando el número de partición correspondiente (36) a la partición buscada.
select partition <boot partition>
active
exit
Tras la ejecución del comando “activate”, si todo va bien, se deberá recibir el mensaje “Diskpart marca la partición actual como activa” (37).
Paso 4. Lanzamos diskpart y hacemos la operación sobre el disco
Hecho esto, se debe hacer la partición arrancable, por lo que se debe buscar la letra donde está el sistema operativo Windows, que posiblemente sea “D:” ya que “C:” está usada por el sistema de recuperación, y por otro lado, también se tiene que buscar la letra de la unidad donde se ha cargado la ISO, que sería la equivalente al CD/DVD, pudiendo ser “E:” o “F:” las opciones más comunes.
Cuando se tienen claras las letras de unidad se deben ejecutar los siguientes comandos (38):
F:
dir
BCDBOOT D:\Windows
bootrec /fixmbr
Donde:
- F: Es la unidad donde tenemos mapeada la ISO (El CD/DVD) en nuestro caso.
- D: Es la unidad donde está el sistema operativo Windows de la máquina virtual.
Tras la ejecución del comando “bootrec /fixmbr”, si todo va bien, se deberá ver el mensaje “la operación se completó con éxito”.
Si esto es así, se habrá terminado la operativa, por lo que se podrá reiniciar la máquina y comprobar que la máquina arranca sin problemas.
Si, por el contrario, al ejecutar el comando “BCDBOOT D:\Windows” nos devuelve el mensaje “Error al intentar copiar archivos de arranque”, significará que el comando ha fallado por lo que se deberá continuar en el Paso 5.
Paso 4. Recuperamos el arranque de Windows
Paso 5. Solución del fallo de copia de archivos de arranque
NOTA: Este procedimiento solo tiene que aplicarse si ha fallado la ejecución del comando “BCDBOOT D:\Windows” y ha devuelto el error “Error al intentar copiar archivos de arranque”.
Para solventar este problema, únicamente hay que seguir el siguiente procedimiento sin saltarse ningún paso y en el orden que a continuación se expone.
Primero se debe lanzar la aplicación “diskpart” (39) para localizar el disco y partición del sistema operativo Windows:
diskpart
list disk
Cuando se tenga claro el disco se debe seleccionar (40) para usarlo:
select disk 0
A continuación, se deben listar las particiones y seleccionar la que tenga Windows instalado y marcarla como activa (41):
list partition
select partition 3
active
exit
Paso 5. Ejecutamos la primera parte de la recuperación del arraque
Por último, se deberán lanzar los comandos de reparación (42) desde la unidad ISO (CD/DVD):
dir
BCDBOOT D:\Windows
bootrec /fixmbr
Donde:
- F: Es la unidad donde tenemos mapeada la ISO (El CD/DVD) en nuestro caso.
- D: Es la unidad donde está el sistema operativo Windows de la máquina virtual.
Paso 5. Ejecutamos la segunda parte de la recuperación del arraque
Con esto ya debería estar recuperado el arranque.
Conclusiones
El proceso descrito en este tutorial, como convertir discos UEFI a BIOS, permite realizar la conversión de una máquina Windows UEFI proveniente de Microsoft Azure o un Microsoft Hyper-V para permitir ser ejecutada en la arquitectura Jotelulu.
Así mismo, en este mismo tutorial, se puede ver como solucionar la corrupción del arranque de una máquina Microsoft Windows.
Como se puede ver, son procesos un poco más complicados de lo habitual, pero se ha descrito de una manera guiada mediante pasos bien definidos para que el lector no tenga problemas.
Esperamos que con esta pequeña guía no tengas problemas en la conversión de discos UEFI a BIOS y no tengas problemas en solucionar posibles problemas en el sector de arranque, pero si los tuvieras, no dudes en contactar con nosotros para que podamos echarte una mano.
¡Gracias por tu confianza!