¿Cuál es el tamaño mínimo absoluto que puede tener una partición del sistema UEFI?

¿Cuál es el tamaño mínimo absoluto que puede tener una partición del sistema UEFI?

Supongamos que tengo una unidad flash y quiero que sea de arranque. Supongamos que también tengo un archivo EFI básico que logrará algo. Entonces, ¿cuál es el tamaño mínimo que puede tener el ESP? He leído que son 100 MB, pero parece ser específicamente en lo que respecta a Windows. ¿Una partición EFI debe tener un tamaño determinado para que el sistema la reconozca? ¿O simplemente se recomienda 100 porque los sistemas operativos modernos usan esa cantidad?

Respuesta1

¿Se recomienda 100 simplemente porque los sistemas operativos modernos usan esa cantidad?

Tenga en cuenta que el tamaño de partición de 100 MB es el mínimo. Aunque UEFI no establece una especificación para un tamaño mínimo, peromicrosoftrecomienda este tamaño de 100 MB para sus sistemas operativos.

Pensemos que necesitamos que la partición EFI esté formateada usando el sistema de archivos FAT32. El tamaño mínimo de partición de la unidad FAT32 se calcula comosector_size x 65527.

En las unidades nativas 4K de formato avanzado, hay 4 KB por sector. En ese caso, el tamaño mínimo de partición para la unidad FAT32 se calcula como4 KB x 65527 = 256 MB. Es por eso que el tamaño mínimo recomendado para unidades 4K es 260 MB.

Pero en las unidades de formato avanzado 512e, el tamaño del sector emulado es de 512 bytes. En ese caso, el tamaño mínimo de partición para la unidad FAT32 se calcula como512 bytes x 65527 = 32 MB, que es inferior al tamaño mínimo de 100 MB para esta partición.

¿Una partición EFI debe tener un tamaño determinado para que el sistema la reconozca?

Aunque Microsoft recomienda 100 MB para sus sistemas operativos, los foros de Linux sugieren más para sistemas operativos basados ​​en Linux o para cualquier situación de arranque dual o arranque múltiple.

Elautorde gdisk sugiere 550 MiB.

Según Arch Linuxforo, para evitar posibles problemas con algunos EFI, el tamaño del ESP debe ser de al menos 512 MiB. Se recomiendan 550 MiB para evitar la confusión MiB/MB y la creación accidental de FAT16.

Por lo tanto, la pauta de tamaño más común para la partición del sistema EFI es entre 100 MB y 550 MB. Una de las razones detrás de esto es que es difícil cambiar el tamaño más adelante, ya que es la primera partición del disco. La partición EFI puede contener idiomas, fuentes, firmware BIOS y otros elementos relacionados con el firmware. Hay algunos firmware/software que se instalan en la partición EFI en lugar de en la unidad de datos. Y hay algunos que quieren tener la capacidad en el futuro de agregar cosas al ESP.

Como puede ser difícil aumentar el tamaño en caso de que sea necesario más adelante y el tamaño del disco duro hoy en día es mayor, se recomienda una gran cantidad de tamaños como 100 MB o 550 MB para ESP. Pero en el caso general, utiliza sólo algunos kilobytes de espacio.

Supongamos que tengo una unidad flash y quiero que sea de arranque.

Aunque no queda claro en su declaración, si intenta hacer que su pendrive sea de arranque como unidad compatible con UEFI para la instalación de Windows, entonces no es necesario crear ESP adicional en el pendrive. Usarrufoo herramientas similares que se encargarán de convertirlo en una unidad habilitada para UEFI. Pero se necesita ESP en su disco duro al instalar Windows en ese disco.

Respuesta2

El tamaño mínimo absoluto con el que puede salirse con la suya implica el uso de un sistema de archivos fat12 (por lo que32 KB), y en la práctica requiere el uso de algún administrador de arranque mínimo que incorpore controladores del sistema de archivos para leer su partición primaria (y el kernel contenido allí), lo que implica grub o rEFInd. Una imagen típica de instalación de grub tendrá alrededor de 200 KB, lo que no está nada mal.

He estado arrancando bien con un ESP fat12 de 2 MB desde hace bastante tiempo, ¡así que claramente se puede hacer!

No estoy del todo seguro de dónde viene el consejo común de usar 512 MB, peroWiki Arcofue modificado recientemente por... yo... para hacer referencia a la posibilidad de fat12.

http://www.rodsbooks.com/linux-uefi/parece indicar que al menos fat16 debería funcionar bien excepto porconfundiendo el instalador de Windows, lo cual no es realmente relevante en mi humilde opinión. Arch Wiki parece haberse basado en ese consejo, pero no soy lo suficientemente valiente como para reescribirlo por completo.

Como mencioné en la Wiki, la especificación UEFIexige controladores fat12. He escuchado argumentos de que "sólo son obligatorias las unidades extraíbles", dejando abierta la posibilidad de que alguien, en algún lugar, tenga o escriba una implementación UEFI que incluya esos controladores del sistema de archivos fat12 pero que de alguna manera prohíba su uso para montar la partición del sistema UEFI, pero yo Personalmente considero esto poco probable.

Respuesta3

Para Linux, en la terminal, ejecute sudo fdisk -lpara averiguar el tamaño del sector de su unidad de almacenamiento.

Dado que la partición EFI está formateada como FAT32, el tamaño mínimo de partición de la unidad FAT32 se calcula como sector_size x 65527. Para el almacenamiento moderno, eso es 512 bytes x 65527 = 32 MiB. El ejecutable del administrador de arranque EFI pesa alrededor de 125 KiB, por lo que el mínimo de 32 MiB es más de lo necesario para el tamaño de la partición EFI. Hay otros argumentos a favor de tamaños más grandes, pero a menos que corras en esas situaciones particulares, no es necesario un tamaño más grande.

Respuesta4

@Póster original: desea saber el tamaño mínimo requerido de una partición EFI, pero no indicó qué sistema operativo tiene en mente. No existe un requisito único. Al leer información en Internet, algunas personas dicen "2 mb" (arriba), mientras que otras sugieren terrabytes de espacio. Sugiero que todos escriban los requisitos mínimos para su propio sistema, así tendríamos una buena lista de todos los requisitos del sistema operativo. Déjame responder a tu pregunta sobre el sistema operativo Debian:

uname -r

5.10.0-6-amd64

uname -a

Linux localhost 5.10.0-6-amd64 #1 SMP Debian 5.10.28-1 (2021-04-09) x86_64 GNU/Linux

y Windows 10:

ver

Microsoft Windows [Version 10.0.19042.804]

Ahora, al instalar Debian, quería saber el tamaño necesario para la partición EFI. Así es como encontré esta página, excepto que la información proporcionada aquí no es útil. Entonces pienso, ¿5 MB son suficientes? Resulta que el instalador de Debian tiene un requisito mínimo de 35 MB.

Tenga en cuenta que si primero particiona la partición EFI con fdisk y luego intenta instalar Debian, se rechazará con un mensaje de error críptico:

The attempt to mount a file system with type vfat in SCSII (0,0,0), partition #1 (sda) at /boot/efi failed.

Si compara los indicadores establecidos por fdisk y el instalador de Debian (si le permite particionar):

fdisk -> "B K"

Debian -> "B f"

Vuelva a seleccionar la partición EFI dentro del instalador de Debian para corregir las banderas. Estúpido Debian.

Además, cuando se usa fdisk dentro de Hyper-V, no se puede mostrar la maldita lista de códigos hexadecimales de partición, porque el modo mejorado (VmConnect) no funciona, SSH no está instalado, por lo que la lista de códigos hexadecimales generada por fdisk simplemente vuela. y no hay forma de desplazar la ventana de VmConnect hacia arriba. En VMWare Workstation esto funciona con SHIFT+PageUp, pero no puedo encontrar cómo hacerlo en Hyper-V; de hecho, ¡nadie planteó esta pregunta! Finalmente descubrí que la partición EFI es "1" en fdisk.

De todos modos, ¿REALMENTE se necesita la cantidad de espacio requerida por el instalador de Debian? Después de instalar Debian, verifiqué el espacio realmente requerido:

mount /dev/sda1 /mnt

cd /mnt

du -hs

/efi/debian
    -rwx------ 1 root root    1K 27. Apr 00:11 BOOTX64.CSV
    -rwx------ 1 root root 1180K 27. Apr 00:11 fbx64.efi
    -rwx------ 1 root root    1K 27. Apr 00:11 grub.cfg
    -rwx------ 1 root root 1634K 27. Apr 00:11 grubx64.efi
    -rwx------ 1 root root 1233K 27. Apr 00:11 mmx64.efi
    -rwx------ 1 root root 1292K 27. Apr 00:11 shimx64.efi

5,3M

¡5,3M! ¿Tiene el descaro de sugerir 550 MB, un gigabyte, 10 terrabytes, alguna oferta más? Algunas personas dirán que el cargador de arranque grub está situado en la partición EFI, otros dirán que "update-initramfs" escribirá en esta partición, por eso se requiere tanto espacio. ¡Mierda, todo eso!

Pero, por desgracia, el daño está hecho y ahora tengo que afrontarlo.

mount /dev/sda1 /mnt

cp -r /mnt/EFI /work

umount /dev/sda1

blkid

/dev/sda1: UUID="6995-68F6" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="a7196942-ec1b-e64a-9182-009a28d2cc44"

gdisk /dev/sda
d 1
n 1
+5466KB
EF00
w

umount /dev/sda1

mkfs.fat /dev/sda1

mount /dev/sda1 /mnt

mv /work/EFI /mnt

umount /dev/sda1

Arreglar el PARTUUIDO:

partprobe /dev/sda

blkid

gdisk /dev/sda

x
c (1) -> set the old PARTUUID (a7196942-ec1b-e64a-9182-009a28d2cc44 in my example)

corrija el UUID en fstab:

nano /etc/fstab -> set the new UUID

¿Por qué "mkfs.fat" (arriba) y no "mkfs.fat -F32"? Es por eso:

https://github.com/dosfstools/dosfstools/blob/master/src/mkfs.fat.c

According to Microsoft FAT specification (fatgen103.doc) disk with 65525 clusters (or more) is FAT32

define MIN_CLUST_32 65525

diskpart también se negará a formatear como fat32:

format fs=fat32 quick

Volume too small

Entonces, 30 MB de espacio ahorrados, aún no asignados. ¿Cómo asignar? Al ejecutar fdisk, eliminar la partición ext4 y volver a crearla, incluido el espacio no asignado (dn, todo predeterminado), el sistema no se puede iniciar. En la red, le dirán que no es posible extender una partición por el espacio no asignado ANTES de esta partición, el espacio sin procesar debe moverse al final del disco duro y luego extenderse. ¿Cómo mover el espacio no asignado hasta el final? Ni idea. Probé fdisk, gdisk, parted, MS diskpart. No puedo averiguarlo. Finalmente descargué "gparted-live-1.2.0-1-amd64.iso". gParted fue capaz de extender la partición ext4 por el espacio no asignado, excepto que dejó 1 MB de espacio al final del disco duro. En internet te dirán que esto se hace según especificaciones. ¿En realidad? Interesante entonces que fdisk NO deja este megabyte al final, ni tampoco el diskpart de Microsoft al extender una partición. Alguien en Internet dijo: "es sólo 1 megabyte y no deseas violar las especificaciones para guardarlo". ¡Ahorraré este pobre megabyte, incluso si tengo que pisotear todas las especificaciones que existen! ¡No te preocupes, pobre megabyte descuidado, yo te salvaré!

Así que engañé a gParted, jeje. Moví el espacio no asignado al final del disco, sin asignarlo. Luego cerré gParted y usé fdisk en su lugar para extender la partición ext4, y le asigné TODO el espacio, incluido el megabyte pobre:

fdisk /dev/sda

F
    Start   End     Sectors Size
    14336   73727   59392   29M

d 2
n 2 14336

fdisk -l

Device     Start      End  Sectors  Size Type
/dev/sda1   2048    12979    10932  5,3M EFI System
/dev/sda2  14336 20971486 20957151   10G Linux filesystem

Acerca de Windows. Entonces MS dice, 100 MB efi + 16 mb msr. Y, por supuesto, los notorios copistas, que siempre copian y pegan información sin verificarla, difunden esta información errónea por todo Internet. ¿Pero es realmente necesaria esta cantidad de espacio? Echemos un vistazo a lo que reside en la partición EFI:

 Verzeichnis von B:\efi\boot

    1.558.344 bootx64.efi

Verzeichnis von B:\efi\microsoft\boot

    28.672 bcd

Verzeichnis von B:\efi\microsoft\boot\fonts

    48.992 wgl4_boot.ttf

Anzahl der angezeigten Dateien:
           3 Datei(en), 1.636.008 Bytes

Imprimo la lista solo para usted, sé lo que hay allí, ya que yo mismo puse los archivos allí, al restaurar una imagen de Windows en una máquina EFI (la imagen fue creada por dism en una máquina MBR). Es casi imposible saber qué archivos se necesitan realmente. Por prueba y error descubrí que solo necesitas los 3 (arriba)

diskpart

select disk 0

select partition 1

assign letter b

mkdir b:\efi
mkdir b:\efi\boot
mkdir b:\efi\microsoft
mkdir b:\efi\microsoft\boot
mkdir b:\efi\microsoft\boot\fonts

copy c:\windows\boot\efi\bootmgfw.efi b:\efi\boot\bootx64.efi

copy c:\windows\boot\fonts\wgl4_boot.ttf b:\efi\microsoft\boot\fonts

La tienda bcd la tienes que crear tú mismo, no entraré en detalles aquí, entonces:

copy X:\bcd b:\efi\microsoft\boot

¡Entonces 1.636.008! Microsoft dijo, ¿116 MB? Y esta información se copió por todo Internet. Primero seguí esas instrucciones, por muy idiota que sea, pero ahora quería ver si los tamaños requeridos por MS son REALMENTE necesarios (como hacer que Windows no pueda arrancar):

dism /Capture-Image /ImageFile:c:\copy\efi.wim /CaptureDir:b:\ /Name:efi /Compress:fast

diskpart

select disk 0

select partition 0

delete partition override
    efi killed

select partition 1

delete partition override
    msr killed

create partition efi size=2

format fs=fat quick

assign letter b

dism /Apply-Image /ImageFile:c:\copy\efi.wim /Index:1 /ApplyDir:b:\

¡Cruza los dedos, voy a reiniciar! ¡Houston, informando el despegue exitoso del cohete de Windows!... Houston, informando el inicio exitoso de Windows y el inicio de sesión de la cuenta. ¡Houston, Microsoft son un montón de malditos mentirosos!

Así que guardamos 114 MB, pero este espacio no está asignado.

¿parte del disco?

¡Jajaja!

diskmgmt.msc

Jajajajajaja!

¿Y que? Se separaron de nuevo, supongo. No es exactamente una buena idea usar un programa de Linux para alterar una partición NTFS, pero intentémoslo. Entonces moví el espacio no asignado al final del disco duro. Obras. Reinicié Windows desde el DVD nuevamente (DVD virtual con un ISO montado en mi caso, ya que estaba haciendo esto en Hyper-V), luego:

diskpart

select disk 0

select partition 1

extend

Hecho.

list partition

Partition ###  Typ               Größe    Offset
-------------  ----------------  -------  -------
Partition 1    System            2048 KB  1024 KB
Partition 2    Primär              39 GB  3072 KB

select partition 1

detail partition

Volume ###  Bst  Bezeichnung  DS     Typ         Größe    Status     Info
----------  ---  -----------  -----  ----------  -------  ---------  --------
* Volume 1                      FAT    Partition   2048 KB  Fehlerfre  System

Pero, ¿qué pasaría si quisieras eliminar las particiones EFI y MSR mediante herramientas de Linux? No sé por qué, pero hacer esto da como resultado un sistema Windows que no se puede iniciar. Pasé exactamente los mismos parámetros a gdisk/fdisk/parted que a diskpart, ¡pero todas estas herramientas rompen algo! Eliminar la partición MSR en diskpart:

select partition 1

delete partition override

Reinicie, Windows arranca.

¡Lo mismo en gdisk!:

gdisk /dev/sda

d (select msr partition)
w

Reinicie, aparece el maldito logotipo de Hyper-V en mi cara, ahí para siempre, el sistema no arranca. ¿Razón?

información relacionada