- El shell UEFI permite acceder y manipular dispositivos, archivos y opciones de arranque directamente desde el firmware.
- Incluye comandos esenciales para gestión de discos, diagnóstico, scripting y configuración avanzada del sistema.
- Es compatible principalmente con sistemas de archivos FAT16/FAT32 y su sintaxis puede variar entre fabricantes.
- Dominar el shell UEFI es clave para tareas de mantenimiento, personalización y reparación de equipos modernos.
Hoy en día, cada vez más usuarios avanzados y profesionales necesitan interactuar con el firmware de sus dispositivos, especialmente durante tareas de mantenimiento, solución de problemas o instalación de sistemas operativos. En este contexto, el shell UEFI (Unified Extensible Firmware Interface) destaca como una herramienta poderosa que ofrece acceso directo y flexible a una serie de comandos y utilidades esenciales para gestionar, configurar y diagnosticar el entorno de arranque de un equipo.
Sin embargo, a pesar de su relevancia, existe cierta confusión sobre su uso y sobre cuáles son realmente los comandos útiles en el shell UEFI. Si este tema te suena a chino, o si ya tienes algo de experiencia y quieres ir más allá, aquí tienes una guía en profundidad que recopila la información más completa y actualizada basada en la documentación oficial y las mejores fuentes disponibles.
¿Qué es exactamente el shell UEFI?
El shell UEFI actúa como una consola similar a otros intérpretes de comandos (como el antiguo DOS o la terminal de Linux), pero situada justo en el entorno de firmware de tu placa base. Desde aquí puedes ejecutar comandos para gestionar particiones EFI, acceder a sistemas de archivos, cargar controladores, lanzar aplicaciones .efi, editar archivos de configuración e incluso automatizar secuencias a través de scripts. Además de todo esto, ofrece potentes opciones de diagnóstico y reparación, lo que lo convierte en un recurso fundamental para administradores y entusiastas del hardware.
¿Por qué utilizar el shell UEFI?
Acceder al UEFI shell puede ser una tabla de salvación cuando necesitas modificar la secuencia de arranque, instalar un gestor de arranque personalizado, diagnosticar hardware, solucionar problemas de arranque o manipular variables y archivos del firmware de forma directa. Además, en muchas instalaciones profesionales de sistemas, servidores o incluso hackintosh, esta consola es la única forma de realizar ciertas configuraciones avanzadas.
Tipos de comandos en el shell UEFI
En el entorno UEFI se dispone de una gran variedad de comandos y utilidades. Estos se pueden clasificar en diferentes categorías según su propósito. A continuación, analizamos los más habituales y útiles, desglosados por áreas de uso:
Comandos para explorar y gestionar unidades y archivos
- fsX: Cambia entre distintas particiones reconocidas, donde X representa el número asignado (ejemplo: fs0: para acceder a la primera partición FAT16 o FAT32 reconocida). Es fundamental para navegar entre dispositivos y sistemas de archivos desde la shell.
- cd : Permite cambiar el directorio actual y moverse dentro de la estructura de archivos de la partición activa.
- ls : Muestra una lista de los archivos y carpetas del directorio actual o del especificado, muy útil para explorar el contenido de la EFI.
- cp archivo(s) destino: Copia archivos o carpetas (con -r para copia recursiva de directorios).
- mv : Mueve o renombra archivos y carpetas.
- rm archivo/dir: Elimina archivos y directorios.
- mkdir dir: Crea nuevos directorios en la ruta especificada.
- type archivo: Muestra el contenido de un archivo en formato texto.
- edit nombre_de_archivo: Abre un editor de texto sencillo para crear o modificar archivos directamente desde la shell.
Comandos de mapeo y gestión de dispositivos
- map : Lista todos los dispositivos y particiones accesibles por el UEFI, asignando nombres como fs0: para sistemas de archivos o blk0: para dispositivos de bloque. Es esencial para identificar las ubicaciones de discos y particiones EFI. Por ejemplo, puedes ver una salida como:
fs0 : VenHw(Unknown Device:00)/HD(Part1,Sig00000000) blk0 : VenHw(Unknown Device:00)
fsX: hace referencia a sistemas de archivos FAT16/FAT32 accesibles, mientras que blkX: identifica dispositivos de bloque detectados por el firmware.
- mount BlkDevice : Monta un dispositivo de bloque como sistema de archivos con un alias si así lo deseas.
- deblk : Realiza un volcado hexadecimal de los dispositivos de bloque, útil para inspección a bajo nivel.
- devtree : Muestra el árbol de dispositivos disponibles, muy interesante para conocer la topología de hardware.
Gestión del arranque y variables EFI
- bcfg: Este comando es clave para gestionar las opciones de arranque en la NVRAM EFI. Permite añadir, eliminar o listar entradas de boot y driver. Por ejemplo, para añadir un cargador personalizado (como Clover), podrías usar:
bcfg boot add 0 fs1:\EFI\CLOVER\CLOVERX64.efi "Clover"
Donde 0 es la prioridad, fs1: la partición donde se ubica el archivo .efi, y el último argumento es el nombre de la entrada en el menú de arranque. Para gestionar las variables EFI, también puedes consultar .
- dmpstore: Vuelca el contenido de almacén de variables EFI, facilitando la revisión o edición de los valores actuales.
- reset : Realiza un reinicio en frío del sistema, útil tras modificar configuraciones críticas.
Controladores, protocolos y mantenimiento
- connect Handle#: Asocia un controlador EFI a un dispositivo y lo inicia.
- disconnect DeviceHandle# ]: Desconecta el dispositivo del controlador, algo relevante al manipular controladores o diagnosticar incompatibilidades.
- drivers : Muestra los controladores cargados en el sistema.
- drvcfg, drvdiag: Invocan protocolos de configuración y diagnóstico para los controladores, útiles para debugging en ambientes complejos.
- loadpcirom, load driver_name: Cargan ROMs de opciones de PCI o controladores adicionales, permitiendo extender la funcionalidad del firmware.
- bootmaint: Inicia el gestor de mantenimiento de arranque, una utilidad visual para modificar opciones de boot dentro de la shell.
Gestión de memoria y volcado de información
- dmem : Permite mostrar el contenido de una localización de memoria, ideal para depuración avanzada.
- mem : Vuelca la memoria o I/O asignada.
- memmap : Muestra el mapa de memoria del sistema, proporcionando una visión global de la memoria utilizada y libre.
- mm dirección : Permite modificar regiones de memoria, ya sea física o MMIO. Usado normalmente por técnicos y desarrolladores.
Comandos relacionados con la fecha, hora y entorno
- date : Muestra o establece la fecha del sistema.
- time : Consulta o ajusta la hora.
- ver: Muestra la versión actual del shell UEFI.
- cls : Limpia la pantalla del terminal, ideal para mantener el orden cuando se trabaja mucho tiempo en la consola.
- mode : Configura o consulta el modo gráfico actual en la shell.
Comandos de scripting y automatización
- echo | ]: Muestra texto en pantalla y controla el eco de comandos dentro de scripts .nsh.
- if, else, endif, for, endfor, goto etiqueta, pause: Estructuras básicas de control para scripts automáticos, facilitando la automatización de tareas rutinarias o complejas en el entorno UEFI.
Diagnóstico avanzado y pruebas de hardware
Algunos entornos UEFI, como los implementados por Oracle o en plataformas empresariales, incorporan una CLI de diagnóstico con comandos específicos para verificar el hardware del sistema. Los más relevantes son:
- cfgtbl: Muestra todas las tablas UEFI instaladas, vital para entender la estructura de firmware.
- cpu { cpuid | info | model | speed | simd | top | sysregs | idt | memcfg }: Ejecuta tests y muestra información detallada sobre la CPU.
- fpu: Ejecuta pruebas de la unidad de coma flotante.
- graphics: Muestra modos gráficos disponibles o realiza pruebas sobre ellos.
- memory { test | info }: Prueba y muestra información de la memoria RAM y sus configuraciones.
- network: Visualiza interfaces Ethernet o ejecuta test de conectividad.
- rtc: Consulta la fecha y hora actual en formato 24h.
- storage { info | mst | rrt | srt | rwv }: Analiza y realiza pruebas sobre dispositivos de almacenamiento.
- system { acpi | info | inventory | smbios | cpusockets | pelink }: Despliega información general del sistema, muy útil en servidores.
- tpm: Muestra detalles sobre el módulo de seguridad (TPM) y registros de acceso.
- usb: Lista información de dispositivos y concentradores USB.
Cosas a tener en cuenta al trabajar con el shell UEFI
Algunas cuestiones básicas a considerar antes de lanzarse:
- El shell UEFI, salvo en casos específicos, suele trabajar únicamente con particiones formateadas en FAT16 o FAT32. Si el sistema de archivos de tu disco es NTFS, exFAT o cualquier otro, este entorno no podrá acceder a él.
- Para conocer todos los comandos disponibles en tu versión del shell UEFI, puedes utilizar el comando o , dependiendo del idioma y el firmware concreto.
Ejemplo práctico de uso: añadir un gestor de arranque personalizado
Uno de los motivos más habituales para trabajar con el shell UEFI es modificar la secuencia de arranque para cargar un bootloader personalizado (por ejemplo, Clover u OpenCore en hackintosh o instalaciones personalizadas de Linux). El proceso básico sería:
- Cambiar a la partición EFI adecuada con fsX:
- Verificar el contenido con ls o dir.
- Ejecutar el comando bcfg boot add , por ejemplo:
bcfg boot add 0 fs1:\EFI\CLOVER\CLOVERX64.efi "Clover"
- Revisar que la entrada se ha creado correctamente y reiniciar el equipo para verificar el cambio.
El shell UEFI es una herramienta extremadamente versátil y potente. Dominar sus comandos y utilidades no solo facilitará tareas de mantenimiento y solución de problemas, sino que también te permitirá tener un control total sobre el proceso de arranque de tu sistema. La práctica y la experimentación en entornos controlados son las mejores formas de familiarizarse con su funcionamiento y aprovechar al máximo sus capacidades.
Redactor apasionado del mundo de los bytes y la tecnología en general. Me encanta compartir mis conocimientos a través de la escritura, y eso es lo que haré en este blog, mostrarte todo lo más interesante sobre gadgets, software, hardware, tendencias tecnológicas, y más. Mi objetivo es ayudarte a navegar por el mundo digital de forma sencilla y entretenida.