Actualización de BIOS
Este artículo describe cómo aplicar una actualización BIOS en un sistema Gentoo.
Los fabricantes de hardware a menudo proveen actualización de BIOS y de otros tipos de firmware. Aplicar (comúnmente se dice "flash") las actualizaciones no es siempre una tarea sencilla en sistemas GNU/Linux. Suele requerir algo de trabajo extra.
Si no tenemos problemas operativos con el hardware no suele haber necesidad de realizar una actualización de BIOS. Si algo va mal podemos dañar de forma permanente el BIOS o el firmware del sistema, lo que puede ocasionar una pérdida de la garantía del hardware. ¡Proceder con precaución!
The most prominent and widely used system has historically been the x86-based IBM PC compatible computer and its BIOS, which is why system firmware is sometimes called a BIOS even when it is not an IBM PC compatible BIOS, such as the AlphaBIOS of the DEC Alpha architecture or the OpenBIOS, an implementation of Open Firmware (IEEE-1275). EFI/UEFI, the successor of the PC BIOS, is also often called "(U)EFI-BIOS". Hence, the term "BIOS update" often refers to a system firmware update that is not really a PC BIOS.
This article focuses on the PC BIOS and early versions of its successor EFI/UEFI. On x86 (U)EFI System Class 1 and Class 2 have a BIOS compatible mode called "Legacy BIOS" or "CSM" (short for Compatiblity Support Module), which makes the UEFI behave like a PC BIOS. UEFI System Class 3, the standard since around 2020, no longer has a CSM.
On other firmwares the process of updating the system firmware may have similarities, but can also be completely different.Obtener información del sistema
Primero averiguamos el fabricante y modelo de la placa madre. Revisa el manual de usuario que viene con el sistema. La mayor parte de la información puede ser encontrada en el manual de usuario.
El paquete sys-apps/dmidecode puede ser usado para obtener información adicional del sistema. dmidecode mira en la tabla DMI de la placa madre para encontrar detalles más valiosos acerca del firmware y de los componentes de hardware.
root #
dmidecode -t bios -t baseboard
Finalmente, si es posible el acceso físico a la placa madre, la información necesaria puede encontrarse directamente en la misma.
¡Acceder a la placa madre puede anular la garantía!
Luego de buscar la actualización de firmware del fabricante, hay que proceder a descargar el paquete necesario para actualizar el hardware. Es normal que los fabricantes guarden los paquetes de actualización de firmware en ficheros de extensión .zip, .exe o .iso.
user $
unzip 7235v1A.zip
Archive: 7235v1A.zip creating: 7235v1A/ inflating: 7235v1A/7235v1x.txt inflating: 7235v1A/AWFL865.EXE inflating: 7235v1A/How to flash the BIOS.DOC inflating: 7235v1A/W7235IMS.1A0
Opciones de BIOS
Muchos BIOS tienen la opción de leer la nueva imagen binaria desde una memoria externa o un disco interno. Entrar a la configuración del BIOS y buscar la opción. Si el BIOS no soporta esto, continúa a la siguiente sección.
Boot-CD
A veces los fabricantes ofrecen una imagen de CD-ROM como medio de arranque. El fichero tiene que tener extensión .iso y debe ser grabado en un CD-R(W) vacío. Una herramienta para esto es cdrecord:
root #
cdrecord BOOT-CD.iso
cdrecord es provisto por dos paquetes. Elige uno de los siguientes: app-cdr/cdrtools o app-cdr/cdrkit.
Elige desde el menú de arranque del BIOS el arranque desde CD y sigue las intrucciones de la web del fabricante o del manual de usuario.
Entornos FreeDOS
Existe un arranque adecuado FreeDOS en el SystemRescueCD que funciona correctamente y ahorrará mucho trabajo permitiendo que los lectores se salten esta sección. Lea la nota al final de la sección Usar SystemRescueCD para arrancar FreeDOS para obtener los detalles.
FreeDOS puede ser utilizado para ejecutar herramientas de actualización basadas en DOS. Una imagen "personalizada" de FreeDOS que incluya las herramientas de BIOS necesarias debe ser creada. Luego de generar la imagen personalizada, debes arrancar desde la imagen siguiendo uno de los métodos descritos abajo.
Descargar FreeDOS y las herramientas:
- FreeDOS - Descargar el archivo fdboot.img.
- FreeDOS bootsector - Descargar el archivo sys-freedos-linux.zip.
- El programa DOS-Flash y el nuevo BIOS desde la web del fabricante.
Crear una imagen personalizada de FreeDOS
Primero descargar el software necesario y habilitar el soporte para dispositivos loopback en el kernel:
Device Drivers --->
[*] Block devices --->
<M> Loopback device support
Si el módulo no fue cargado usa modprobe para cargarlo:
root #
modprobe loop
Instala el software necesario:
root #
emerge --ask dev-lang/nasm app-arch/unzip sys-fs/dosfstools
Crea una imagen de ~20MB usando el comando dd. El nombre debe ser freedos.img:
root #
dd if=/dev/null of=freedos.img bs=1024 seek=20480
Formatea la imagen:
root #
mkfs.fat freedos.img
Escribe el sector de arranque del arhivo de imagen:
root #
unzip sys-freedos-linux.zip && ./sys-freedos.pl --disk=freedos.img
Ahora copia los archivos de FreeDOS a la nueva imagen.
Crea los puntos de montaje:
root #
mkdir -p /mnt/freedos /mnt/freedos_new
Monta la imagen original:
root #
mount -o loop fdboot.img /mnt/freedos
Monta la nueva imagen:
root #
mount -o loop freedos.img /mnt/freedos_new
Copia los archivos de sistema de FreeDOS a la nueva imagen:
root #
cp -ar /mnt/freedos/* /mnt/freedos_new/
Ahora copia el programa de actualización y la nueva BIOS a la imagen:
root #
cp -ar FLASH-PROGRAM BIOS-UPDATE /mnt/freedos_new
Desmonta las dos imágenes:
root #
umount /mnt/freedos_new /mnt/freedos
DOS solo puede mostrar nombres de un tamaño máximo de 8 caracteres. Es una buena idea renombrar algunos de los archivos si el nombre es más largo que ese límite.
Usando SystemRescueCD para arrancar FreeDOS
SystemRescueCD viene con una versión de FreeDOS. Esta versión puede reemplazar la imagen original y crear una memoria usb booteable que contenga los programas necesarios para actualizar el firmware.
Descargar SystemRescueCD y preparar el LiveUSB
- SystemRescueCD - Descargar la imagen ISO estable.
Crear la memoria usb booteable
Usar el método predeterminado para crear el medio de arranque de SystemRescueCD, el script usb_init.sh proveerá una guía durante la instalación.
¡Esto borrará toda la información de la memoria usb! ¡Asegúrate de hacer un respaldo de cualquier información importante que tuvieras en ella!
Crear el directorio en /mnt:
root #
mkdir /mnt/SysRescueCD
Montar la imagen de CD:
root #
mount -o loop systemrescuecd-x86-VERSION.iso /mnt/SysRescueCD
Ejecutar el script de instalación:
root #
/mnt/SysRescueCD/usb_inst.sh
Desmontar la imagen de CD:
root #
umount /mnt/SysRescueCD
Si simplemente desea actualizar su BIOS, no hay necesidad de entretenerse con la imagen de FreeDOS en SystemRescueCD. Después de crear el dispositivo arrancable de SystemRescueCD tal y como se describe arriba, monte el disco USB en un directorio. Copie la actualización del BIOS allí y ¡Ha terminado!. Arranque desde el dispositivo USB y seleccione "DOS Tools ---> FREEDOS" desde el menú de arranque de SystemRescueCD. Encontrará el nombre truncado de su actualización BIOS en el directorio A:. Si no lo ve, pruebe con C:. No creo que esto dañe la instancia de SystemRescueCD en el dispositivo USB pero si esto ocurre, es bastante fácil recrearlo cuando haya terminado.
Reemplazar la imagen de FreeDOS
Ahora reemplazamos la imagen original de FreeDOS en la memoria con SystemRescueCD.
Montamos el usb de SystemRescueCD (/dev/sdX1 tiene que ser reemplazado por el nombre del dispositivo correspondiente a la memoria usb):
root #
mount /dev/sdX1 /mnt/SysRescueCD
Reemplazar el archivo freedos.img:
root #
cp freedos.img /mnt/SysRescueCD/bootdisk/
Desmontar la memoria usb:
root #
umount /mnt/SysRescueCD
Iniciar la imagen de FreeDOS directamente desde el GRUB
Para iniciar FreeDOS sin ningún medio externo, usa la herramienta memdisk de syslinux para autorizar a grub (u otro gestor de arranque) a iniciar la imagen de FreeDOS directamente.
root #
emerge --ask sys-boot/syslinux
Montar la partición de /boot si es necesario:
root #
mount /boot
Copiar el binario de memdisk y la nueva imagen de FreeDOS a /boot:
root #
cp /usr/share/syslinux/memdisk /boot
root #
cp freedos.img /boot
Agregar la entrada para FreeDOS en /boot/grub/grub.conf:
title FreeDOS (BIOS update)
kernel /boot/memdisk floppy
initrd /boot/freedos.img
Actualización de BIOS
Reiniciar y seleccionar el arranque desde la memoria usb o desde la nueva entrada de grub. Si usamos SystemRescueCD, poner en la línea de comandos de GRUB:
freedos
Esto iniciará la nueva imagen de FreeDOS. Debe aparecer el prompt de DOS:
C:\
Ahora ejecuta la actualización del BIOS siguiendo las instrucciones del fabricante. Algunos comandos de DOS útiles:
- cd <dir>
- Cambiar de directorio.
- dir
- Listar el contenido del directorio actual.
- type [drive][path]filename
- Mostrar el contenido de un archivo.
Flashrom
Algunos motherboards soportan la actualización directamente desde el sistema (usando el paquete sys-apps/flashrom). En este caso el único componente que necesitamos es la imagen del BIOS. Antes de seguir este camino, primero debemos revisar la lista de hardware soportado.
Si el hardware es soportado, verificar la nueva imagen de BIOS:
root #
flashrom -v W7235IMS.1A0
Si todo está bien, entonces porcedemos a actualizar:
root #
flashrom -vw W7235IMS.1A0
UEFI Firmware Capsule
Since EFI/UEFI is the successor of the PC BIOS on x86, the same tools as for BIOS updates were often used on early (U)EFI systems.
For modern UEFI, firmware updates can be upgraded using UEFI Capsules (introduced with UEFI 2.0[1]). This method is available on Linux and Windows.[2] Vendors have to provide firmware updates for the use with Linux, which they do via the Linux Vendor Firmware Service (LVFS).[3]
Refer to fwupd for further details.
Vea también
- BIOS — the standard firmware of IBM-PC-compatible computers until it was phased out in 2020.
- Bootable DOS USB stick — describes how to prepare a bootable USB stick which loads DOS using tools available in Gentoo.