UEFI 시스템 파티션의 절대 최소 크기는 얼마입니까?

UEFI 시스템 파티션의 절대 최소 크기는 얼마입니까?

플래시 드라이브가 있고 부팅이 가능하길 원한다고 가정해 보겠습니다. 어떤 일을 수행할 수 있는 기본 EFI 파일도 있다고 가정해 보겠습니다. 그렇다면 ESP의 최소 크기는 얼마입니까? 100MB라고 읽었는데 이는 특히 Windows와 관련된 것 같습니다. EFI 파티션은 시스템이 인식할 수 있는 특정 크기여야 합니까? 아니면 최신 운영 체제가 그만큼 많이 사용하기 때문에 100이 권장되는 것입니까?

답변1

최신 운영체제가 그만큼 많이 사용하기 때문에 100을 권장하는 걸까요?

최소 파티션 크기는 100MB입니다. UEFI에서는 최소 크기에 대해 설정된 사양이 없지만마이크로소프트해당 운영 체제에 대해 이 100MB 크기를 권장합니다.

FAT32 파일 시스템을 사용하여 EFI 파티션을 포맷해야 한다고 가정해 보겠습니다. FAT32 드라이브의 최소 파티션 크기는 다음과 같이 계산됩니다.sector_size x 65527.

Advanced Format 4K 기본 드라이브에는 섹터당 4KB가 있습니다. 이 경우 FAT32 드라이브의 최소 파티션 크기는 다음과 같이 계산됩니다.4 KB x 65527 = 256 MB. 그렇기 때문에 4K 드라이브에 권장되는 최소 크기는 260MB입니다.

그러나 Advanced Format 512e 드라이브에서는 에뮬레이트된 섹터 크기가 512바이트입니다. 이 경우 FAT32 드라이브의 최소 파티션 크기는 다음과 같이 계산됩니다.512 bytes x 65527 = 32 MB이는 이 파티션의 최소 크기인 100MB보다 작습니다.

EFI 파티션은 시스템이 인식할 수 있는 특정 크기여야 합니까?

Microsoft는 운영 체제에 100MB를 권장하지만 Linux 포럼에서는 Linux 기반 운영 체제나 이중 부팅 또는 다중 부팅 상황에 대해 더 많은 용량을 제안합니다.

그만큼작가gdisk의 경우 550MiB를 제안합니다.

아치 리눅스에 따르면법정, 일부 EFI의 잠재적인 문제를 방지하려면 ESP 크기가 512MiB 이상이어야 합니다. MiB/MB 혼동과 실수로 FAT16 생성을 방지하려면 550MiB를 권장합니다.

따라서 EFI 시스템 파티션의 가장 일반적인 크기 지침은 100MB에서 550MB 사이입니다. 그 이유 중 하나는 드라이브의 첫 번째 파티션이므로 나중에 크기를 조정하기 어렵기 때문입니다. EFI 파티션에는 언어, 글꼴, BIOS 펌웨어, 기타 펌웨어 관련 항목이 포함될 수 있습니다. 데이터 드라이브 대신 EFI 파티션에 일부 펌웨어/소프트웨어가 설치되어 있습니다. 그리고 미래에 ESP에 기능을 추가할 수 있는 기능을 원하는 사람들도 있습니다.

나중에 필요할 경우 크기를 늘리기가 어려울 수 있고 요즘 하드 디스크 크기가 더 커질 수 있으므로 ESP에는 100MB 또는 550MB와 같은 큰 크기를 권장합니다. 그러나 일반적인 경우에는 몇 킬로바이트의 공간만 사용합니다.

플래시 드라이브가 있고 부팅이 가능하길 원한다고 가정해 보겠습니다.

귀하의 설명에는 명확하지 않지만 펜 드라이브를 Windows 설치용 UEFI 호환 드라이브로 부팅 가능하게 만들려고 하면 펜 드라이브에 추가 ESP를 생성할 필요가 없습니다. 사용루퍼스또는 UEFI 지원 드라이브로 변환하는 유사한 도구입니다. 그러나 해당 드라이브에 Windows를 설치할 때 하드 드라이브에 ESP가 필요합니다.

답변2

피할 수 있는 절대 최소 크기에는 fat12 파일 시스템을 사용하는 것이 포함됩니다(따라서32KB), 실제로는 기본 파티션과 거기에 포함된 커널을 읽기 위한 파일 시스템 드라이버를 통합하는 일부 최소 부팅 관리자를 사용해야 합니다. 이는 grub 또는 rEFInd를 의미합니다. 일반적인 grub-install 이미지는 약 200KB이지만 여전히 전혀 나쁘지 않습니다.

저는 꽤 오랫동안 2MB fat12 ESP로 부팅을 잘 해왔기 때문에 확실히 완료할 수 있습니다!

512MB를 사용하라는 일반적인 조언이 어디서 나온 것인지는 확실하지 않습니다.아치 위키최근 fat12의 가능성을 언급하기 위해 ... 나에 의해 수정되었습니다.

http://www.rodsbooks.com/linux-uefi/적어도 fat16이 다음을 제외하고는 잘 작동해야 함을 나타내는 것 같습니다.Windows 설치 프로그램을 혼란스럽게 함, 이는 실제로 관련이 없습니다. IMHO. Arch Wiki는 그 조언에 기초한 것 같지만, 나는 그것을 완전히 다시 작성할 만큼 용감하지 않습니다.

위키에서 언급했듯이 UEFI 사양은fat12 드라이버를 요구합니다. "이동식 드라이브만 의무화됩니다"라는 주장을 들었습니다. 누군가 어딘가에 fat12 파일 시스템 드라이버를 포함하는 UEFI 구현을 작성했거나 작성할 가능성이 있지만 UEFI 시스템 파티션을 마운트하는 데 사용을 금지할 가능성이 있습니다. 개인적으로는 그럴 가능성이 없다고 생각합니다.

답변3

Linux의 경우 터미널에서 실행하여 sudo fdisk -l스토리지 드라이브의 섹터 크기를 확인하세요.

EFI 파티션은 FAT32로 포맷되어 있으므로 FAT32 드라이브의 최소 파티션 크기는 sector_size x 65527. 512바이트 x 65527 = 32MiB인 최신 스토리지의 경우. EFI 부팅 관리자 실행 파일은 약 125KiB이므로 최소 32MiB는 EFI 파티션 크기에 필요한 것보다 많습니다. 더 큰 크기에 대한 다른 주장이 있지만 특정 상황에서 실행하지 않는 한 더 큰 크기는 필요하지 않습니다.

답변4

@원본 포스터: EFI 파티션에 필요한 최소 크기를 알고 싶지만 염두에 두고 있는 OS가 무엇인지 밝히지 못했습니다. 단일 요구사항은 없습니다. 인터넷에서 정보를 읽을 때 어떤 사람들은 "2MB"(위)라고 말하고 다른 사람들은 테라바이트의 공간을 제안합니다. 모든 사람이 자신의 시스템에 대한 최소 요구 사항을 작성하면 모든 OS 요구 사항에 대한 멋진 목록을 얻을 수 있습니다. 이제 데비안 OS에 관한 귀하의 질문에 답변해 드리겠습니다.

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

그리고 윈도우 10:

ver

Microsoft Windows [Version 10.0.19042.804]

이제 데비안을 설치할 때 EFI 파티션에 필요한 크기를 알고 싶었습니다. 이것이 제가 이 페이지를 찾은 방법입니다. 단, 여기에 제공된 정보는 도움이 되지 않습니다. 그래서 저는 5MB면 충분하다고 생각해요. 데비안 설치 프로그램의 최소 요구 사항은 35MB입니다.

먼저 fdisk로 EFI 파티션을 분할한 후 데비안 설치를 시도하면 알 수 없는 오류 메시지와 함께 설치가 거부됩니다:

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

fdisk와 데비안 설치 프로그램(파티션을 허용한 경우)에 설정된 플래그를 비교하면:

fdisk -> "B K"

Debian -> "B f"

플래그를 수정하려면 데비안 설치 프로그램 내에서 EFI 파티션을 다시 선택하세요. 멍청한 데비안.

또한 Hyper-V 내에서 fdisk를 사용할 때 표시할 파티션 16진수 코드 목록을 가져올 수 없습니다. 강화 모드(VmConnect)가 작동하지 않고 SSH가 설치되지 않았기 때문에 fdisk의 16진수 코드 목록 출력이 그냥 날아가기 때문입니다. VmConnect 창을 위로 스크롤할 수 있는 방법이 없습니다. VMWare Workstation에서는 SHIFT+PageUp으로 작동하지만 Hyper-V에서는 어떻게 해야 하는지 알 수 없습니다. 사실 아무도 이 질문을 제기한 사람도 없습니다! 그래서 마침내 fdisk에서 EFI 파티션이 "1"이라는 것을 알게 되었습니다.

어쨌든, 데비안 설치 프로그램에 필요한 공간이 정말 필요한가요? 데비안을 설치한 후 실제로 필요한 공간을 확인했습니다.

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! 550MB, 1기가바이트, 10테라바이트 등 더 많은 입찰을 제안할 용기가 있으신가요?! 어떤 사람들은 grub 부트 로더가 EFI 파티션에 있다고 말하고, 다른 사람들은 "update-initramfs"가 이 파티션에 쓸 것이라고 말하는데, 이것이 바로 많은 공간이 필요한 이유입니다. 헛소리야, 다!

하지만 아쉽게도 피해가 발생했으니 이제 처리해야 합니다.

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

PARTUUID를 수정하세요.

partprobe /dev/sda

blkid

gdisk /dev/sda

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

fstab에서 UUID를 수정합니다.

nano /etc/fstab -> set the new UUID

왜 "mkfs.fat -F32"가 아니고 "mkfs.fat"(위)입니까? 그 이유는 다음과 같습니다.

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는 fat32 형식도 거부합니다.

format fs=fat32 quick

Volume too small

따라서 30MB의 공간이 절약되었지만 아직 할당되지 않았습니다. 할당하는 방법? fdisk를 실행하고 ext4 파티션을 삭제한 후 할당되지 않은 공간(dn, 모두 기본값)을 포함하여 다시 생성하면 시스템을 부팅할 수 없게 됩니다. 인터넷에서는 이 파티션이 불가능하기 전에 할당되지 않은 공간으로 파티션을 확장하면 원시 공간을 하드 디스크 끝으로 이동한 다음 확장해야 한다고 알려줄 것입니다. 할당되지 않은 공간을 끝까지 이동하는 방법은 무엇입니까? 몰라. fdisk, gdisk, parted, MS diskpart를 시도했습니다. 알 수 없습니다. 그래서 마침내 "gparted-live-1.2.0-1-amd64.iso"를 다운로드했습니다. gParted는 하드 디스크 끝에 1MB 공간을 남겨둔 것을 제외하고는 할당되지 않은 공간으로 ext4 파티션을 확장할 수 있었습니다. 인터넷에서는 이것이 사양에 따라 수행되었다고 말할 것입니다. 정말? 흥미로운 점은 fdisk가 이 메가바이트를 마지막에 남기지 않는다는 것과 파티션을 확장할 때 Microsoft의 diskpart도 마찬가지라는 것입니다. 인터넷에서 누군가는 "고작 1MB인데 저장하기 위해 사양을 어길 생각은 없다"고 말했다. 모든 사양을 짓밟아야 하더라도 이 불쌍한 메가바이트를 절약하겠습니다! 걱정하지 마세요, 불쌍한 방치형 메가바이트, 제가 구해줄게요!

그래서 gParted를 속였어, 헤헤. 할당되지 않은 공간을 할당하지 않고 디스크 끝으로 옮겼습니다. 그런 다음 gParted를 닫고 대신 fdisk를 사용하여 ext4 파티션을 확장했으며 불량한 메가바이트를 포함하여 모든 공간을 여기에 할당했습니다.

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

윈도우에 대해서. 그래서 MS는 100MB efi + 16MB msr이라고 말합니다. 그리고 물론, 항상 붙여넣기 정보를 확인하지 않고 복사하는 악명 높은 복사자들은 이러한 잘못된 정보를 인터넷 전체에 퍼뜨립니다. 하지만 이 정도의 공간이 정말 필요한 걸까요? 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

나는 당신을 위해 목록을 인쇄합니다. 거기에 무엇이 있는지 알고 있습니다. Windows 이미지를 EFI 시스템에 dism 복원할 때 파일을 직접 거기에 넣었기 때문입니다(이미지는 MBR 시스템에서 dism에 의해 생성되었습니다). 어떤 파일이 실제로 필요한지 알아내는 것은 거의 불가능합니다. 시행착오를 거쳐 위의 3개만 있으면 된다는 것을 알게 되었습니다.

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

여러분이 직접 만들어야 하는 bcd 저장소에 대해서는 여기서 자세히 설명하지 않겠습니다.

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

그러니까 1.636.008! 마이크로소프트는 116MB라고 했죠? 그리고 이 정보는 인터넷 곳곳에 복사되어 퍼졌습니다. 나는 먼저 그 지침을 따랐습니다. 나는 바보입니다. 그러나 이제는 MS에서 요구하는 크기가 실제로 필요한지 확인하고 싶었습니다(Windows를 부팅할 수 없게 만드는 것과 같이).

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:\

손가락질하세요. 재부팅하겠습니다! 휴스턴, Windows 로켓 발사 성공 보고!... 휴스턴, Windows 부팅 및 계정 로그인 성공 보고! 휴스턴, 마이크로소프트는 망할 거짓말쟁이들이에요!

그래서 114MB를 절약했지만 이 공간은 할당되지 않았습니다.

디스크파트?

하하하!

diskmgmt.msc

하하하 하하하!

그리고 뭐? 또 헤어졌나 봐요. Linux 프로그램을 사용하여 NTFS 파티션을 조작하는 것은 그다지 좋은 생각이 아니지만 시도해 보겠습니다. 그래서 할당되지 않은 공간을 하드디스크 끝으로 옮겼습니다. 공장. DVD에서 다시 Windows를 재부팅한 후(Hyper-V에서 이 작업을 수행했기 때문에 내 경우에는 ISO가 마운트된 가상 DVD) 다음을 수행합니다.

diskpart

select disk 0

select partition 1

extend

완료.

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

하지만 Linux 도구를 통해 EFI 및 MSR 파티션을 삭제하려면 어떻게 해야 할까요? 이유는 모르겠지만 이렇게 하면 Windows 시스템이 부팅할 수 없게 됩니다. diskpart에 했던 것과 정확히 동일한 매개변수를 gdisk/fdisk/parted에 전달했지만 이 모든 도구가 뭔가를 망가뜨렸습니다! diskpart에서 MSR 파티션 삭제:

select partition 1

delete partition override

재부팅하면 Windows가 부팅됩니다.

gdisk에서도 똑같은 일이 발생합니다!:

gdisk /dev/sda

d (select msr partition)
w

재부팅하면 시스템이 부팅되지 않고 영원히 거기에 앉아 있는 빌어먹을 Hyper-V 로고가 내 얼굴에 나타납니다. 이유?

관련 정보