¿Herramientas para modificar las variables UEFI en Windows / Linux?

12

Tengo una máquina DELL que usa Phoenix SecureCore Tiano como UEFI / BIOS. Sin embargo, no es totalmente configurable ya que su shell y menús UEFI están ocultos en la configuración del BIOS.

Me pregunto si hay herramientas que puedan modificar la configuración de UEFI (como los elementos de arranque) en modo de usuario. como "efibootmgr" en linux.

por cierto, debido a que no es configurable, creo que el proceso de arranque está en modo heredado, por lo que los sistemas operativos no pueden detectar que existe UEFI, ¿estoy en lo cierto?

entonces, esa es la paradoja: ¿debo arrancar en modo no heredado para permitir que las herramientas UEFI modifiquen los elementos de arranque en modo de usuario? pero debo habilitar las herramientas UEFI para modificar los elementos de arranque primero para habilitar el arranque no heredado?

marstone
fuente
acabo de encontrar que los efi vars almacenados en nvram, tal vez este enlace ayude: wikileaks.org/ciav7p1/cms/page_26968084.html
marstone

Respuestas:

3

Las implementaciones de EFI deben proporcionar alguna forma de controlar el modo de arranque (EFI vs. BIOS), excepto, por supuesto, para las implementaciones solo de EFI sin soporte de BIOS. Sin embargo, con demasiada frecuencia, el firmware le da al usuario poco o ningún control explícito del asunto; en cambio, el firmware intenta inferir el modo de arranque correcto en función del estado del disco duro; por ejemplo, podría usar el modo EFI si se detecta un GPT y el modo BIOS si se encuentra un MBR; o podría usar el modo EFI si se encuentra una Partición del sistema EFI (ESP) y el modo BIOS si no. Puede encontrar una pista sobre lo que está haciendo su firmware leyendo el manual. Si no, solo tendrás que experimentar.

Al iniciar medios extraíbles, las reglas pueden ser diferentes, pero a menudo puede darle una patada en la dirección correcta al proporcionar solo un modo de inicio. Esto puede requerir volver a masterizar un CD o (más fácilmente) seleccionar cuidadosamente un CD. Si está intentando forzar un arranque en modo EFI, mi rEFInd , y en particular su versión de CD de arranque, puede ser útil; arranca solo en modo EFI y, como está configurado, actuará como administrador de arranque para otras botas basadas en EFI, pero no para las botas en modo BIOS.

Rod Smith
fuente
¡Gracias! cuando particiono mi hd en modo MBR, funciona como se esperaba. sin embargo, si uso el modo GPT, no importa si hay un ESP o no, simplemente no arrancará y dará este error: "Sistema operativo no encontrado". El mensaje de error / error de sintaxis w, seguramente es del BIOS en sí mismo después de que realicé la ingeniería inversa de la ROM del BIOS (no de ningún cargador de arranque o registro de arranque), por lo que simplemente no puedo pasar el control de arranque en modo GPT.
Marstone
Algunos sistemas basados ​​en EFI solo se iniciarán en modo BIOS si detectan una partición MBR con su conjunto de indicadores "boot" (también conocido como "activo"). En un disco GPT, esto requiere configurar ese indicador en la partición protectora 0xEE en el MBR. Puede usar una herramienta como el fdisk de Linux para hacer esto (use la opción "a"). Qué no usar separado, GParted, u otras herramientas basadas en libparted para hacer esto; en un disco GPT, no le dan control sobre lo que hay en el MBR , y el "indicador de arranque" se aplicará a una partición GPT , con el significado de que establece el código de tipo al de una Partición de Sistema EFI (ESP) .
Rod Smith
2

Acabo de liberar mi utilidad si alguien está interesado. Edita la variable UEFI en Windows.

https://gist.github.com/Zibri/19f9838ffd12349bb2c6c3afddc9388f/

Actualizado el 25/02/2020 a la versión 1.2.
No se necesita conexión a internet.
El total de virus informa 6 (falsos positivos) sobre 96 porque el código está ofuscado.

Zibri
fuente
NO LO ES. El programa está comprimido y protegido, y algunos antivirus dan un falso positivo. No es un virus.
Zibri
Para los abanderados: este programa obtiene una detección algo alarmante en Virustotal, pero parece ser una detección genérica y detecciones de "programas potencialmente no deseados". Es posible que, debido a lo que hace este programa, haya llegado a las suites de malware, pero hasta que alguien pueda ofrecer evidencia directa de que se trata de malware real, entonces la respuesta está bien por ahora.
Mokubai
No publiqué el código fuente y dificulté la ingeniería inversa solo para "retrasar" o "limitar" exactamente la proliferación de malware basado en mi código "simple". Estoy pensando en lanzar la fuente, no es ningún secreto, simplemente no quería ser la causa principal del futuro malware basado en uefi.
Zibri
Editar: actualizado hoy a la versión 1.1.
Zibri
Actualizado a la versión 1.2
Zibri
1

Acabo de comprar un Dell XPS 17 (l702x) y estoy interesado en arrancar múltiples una variedad de sistemas operativos. Si lo que he entendido es correcto, Dell tiene alguna forma de 'BIOS' Phoenix SecureCore Tiano UEFI bloqueado. Por lo que he leído, UEFI no se puede usar directamente (posiblemente a través de un menú oculto, etc., lo que puede requerir un mod BIOS).

Parece posible usar / acceder a un shell EFI compatible con Phoenix, utilizando los paquetes de código abierto TianoCore edk2 / ShellPkg (fuente) y edk2 / ShellBinPkg (binario) ( GIT Repo ).

Recomiendo el ShellBinPkg más nuevo , utilizando el perfil de "shell completo" de UEFI Shell 2.0 (admite la mayoría de los comandos). También puede reconstruir un shell personalizado utilizando ShellPkg (compilación independiente o incluirlo en el paquete OVMF para generar una versión x64) - Inclusión del shell UEFI en la distribución iso de Linux .

El binario de shell [U] EFI se compila para ejecutarse independientemente del firmware. Esto se puede probar colocando el shell en un sistema de archivos FAT32 (memoria USB, partición del disco duro), renombrado como /efi/boot/bootx64.efiy luego arrancando desde su BIOS [UEFI].

Se accede al texto de ayuda para el shell escribiendo help utilname. Solo usando helpproduce una lista de todos los comandos de shell disponibles.

Nota: Si no puede iniciar UEFI Shell directamente desde el firmware, cree una memoria USB FAT32 con Shell.efi copiado como (USB) /efi/boot/bootx64.efi. Este USB debería aparecer en el menú de arranque del firmware. Al iniciar esta opción, se iniciará UEFI Shell por usted. - La versión de Arch Linux sobre UEFI

Grande rico
fuente
eso es genial. Compré el mismo modelo l702x ;-) ¡Lo probaré mañana! el menú oculto sigue siendo desbloqueable hasta donde yo sé. por cierto, ¿has compilado bootx64.efi y ya has probado en tu xps?
marstone
ShellBinPkg es un binario precompilado de shell UEFI, se supone que solo debes cambiarle el nombre y ponerlo en el directorio correcto. Lo intenté y no funcionó para mí, pero no creo que sea el único shell disponible (también soy nuevo en esto). Esta publicación parece ofrecer una descarga de shell que debería funcionar con Phoenix SecureCore Tiano (Ver la conversación.ridikulus.rat-> cfr). Háganos saber cómo le va.
Big Rich
Intenté poner el archivo efi de la publicación anterior en /efi/boot/bootx64.efi, sin embargo, mi disco usb arrancó a grub normalmente (ya es arrancable); luego formateé mi disco u al modo HDD, y recibí el error "Eliminar discos u otros medios ...". Luego realicé una búsqueda hexadecimal para esta cadena sector por sector en mi disco en U, no existía. el mensaje debe ser de Tiano BIOS de L702x. algo mal para mis operaciones?
marstone
@marstone, lo siento, pero soy un novato cuando se trata de estas cosas de UEFI (estoy de acuerdo con mi Google-fu ;-)). He estado ocupado en otro lugar, tan pronto como tenga algo de tiempo lo intentaré yo mismo y le haré saber cómo me llevo. Saludos, rico.
Big Rich
Aunque Dell ha lanzado una BIOS compatible con UEFI ( A19 ), 'capitankasar' en la revisión del portátil publicó 2 bioses A18 modificadas ( uefi , uefi + nvida gpu ), abordan UEFI, overclocking de GPU NVidia y velocidades de ventilador, etc. (algunas de estas características también puede existir en el lanzamiento oficial de Dell, no lo he confirmado yo mismo). Como siempre, úselo bajo su propio riesgo ;-)
Big Rich
0

En mis experimentos, llegué a la siguiente conclusión:

Si desea utilizar una llave USB de arranque múltiple U / EFI, DEBE:

  1. borre todas las particiones / borre la unidad por completo;
  2. convertirlo a GPT;
  3. crear una partición primaria y formatearla como Fat32;
  4. crea un directorio llamado EFI (no distingue entre mayúsculas y minúsculas) en la raíz de la unidad;
  5. crear un subdirectorio en el directorio anterior llamado arranque (no distingue entre mayúsculas y minúsculas, también)
  6. coloque el archivo .efi deseado allí y cámbiele el nombre para que coincida con la arquitectura del sistema: bootx64.efi si x64, bootia32.efi si x86 o bootaa64.efi si ARM64.

Lo probé en una pantalla táctil Dell Inspiron 5437 y funcionó perfectamente.

Una última cosa: si el archivo .efi no está firmado con la firma digital de Microsoft, debe deshabilitar solo el modo de inicio seguro en la configuración de fw. Deje habilitado el arranque UEFI y el modo de arranque rápido.

Para las pruebas, encuentre la clave de arranque múltiple de su máquina OEM antes de instalarla permanentemente y seleccione uefi: <your usb key>de la lista presentada.

Thiago Postio
fuente