GPT 기반 시스템을 Linux 및 Windows로 부팅하는 방법은 무엇입니까? 새로운 GPT 기반 시스템으로 시작하는 것이 아니라, MBR에서 GPT 기반 시스템으로 시작하는 것이 문제입니다.
내 Asus 노트북 초기 설정,
- 보안 부팅 제어를 비활성화했고
- 활성화했습니다
[Launch CSM]
(호환성 지원 모듈). - MBR을 사용하여 HD를 분할합니다.
- Win8 및 모든 Linux를 포함하여 내 Asus 노트북의 모든 시스템은 이 BIOS/MBR/CSM 모드에서 부팅됩니다.
그러나 나는 발견했다내 USB는 EFI 모드에서만 부팅됩니다.그리고 윈도우 10설치가 거부됨USB가 EFI 모드에서 BIOS/MBR/CSM 모드 시스템으로 부팅될 때.
그래서 나는내 MBR 디스크를 GPT로 변환물론 Krunal이 경고했듯이 이로 인해 내 시스템의 시작이 망가졌고 모든 것을 다시 부팅해야 했습니다.
좋아요, 이제 내 질문이에요.
extlinux
BIOS/MBR/CSM 모드에는 Win8 및 모든 Linux를 포함하여 모든 시스템이 부팅되는(사용) 활성 MBR 파티션이 있습니다 .- 그러나 GPT 모드에서는 여기서 문제가 시작됩니다.
- Linux에서 GPT 파티션을 부팅 가능으로 표시, 에서 "부팅 플래그"를 설정해야 한다는 것을 알았습니다
GParted
(이전에 활성 MBR 파티션을EF00
"EFI 시스템"을 나타내는 유형 코드로 표시) 하여GParted
(EFI 시스템 파티션) 플래그도 설정되었습니다.ESP
- 그러나 따르면wiki.archlinux의 GUID 파티션 테이블(GPT) 사양, 시작하려면 유형 코드
ef02
플래그가 필요합니다 .bios_grub
하지만 그런 파티션을 위한 추가 공간이 없습니다.
- Linux에서 GPT 파티션을 부팅 가능으로 표시, 에서 "부팅 플래그"를 설정해야 한다는 것을 알았습니다
그래서 나는 기본적으로 어느 방향으로 가야할지 모르고 이미 엉망이고 부팅할 수 없는 시스템을 더 이상 엉망으로 만들고 싶지 않습니다.
내 현재 파티셔닝 패턴(관련이 없다고 생각하지만 누군가 요청했기 때문에):
Disk /dev/sda: 698.65 GiB, 750156374016 bytes, 1465149168 sectors
Disk model: HGST HTS541075A9
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: AA9AB709-8A5D-468D-990E-155BA6A2FBB3
Device Start End Sectors Size Type
/dev/sda1 2048 129026047 129024000 61.5G Microsoft basic data
/dev/sda2 129026048 169986047 40960000 19.5G EFI System
/dev/sda3 169988096 186372095 16384000 7.8G Linux filesystem
/dev/sda4 186374144 200710143 14336000 6.9G Linux filesystem
/dev/sda5 200712192 215046143 14333952 6.9G Linux filesystem
/dev/sda6 215048192 231432191 16384000 7.8G Linux filesystem
/dev/sda7 231434240 247818239 16384000 7.8G Linux filesystem
/dev/sda8 247820288 264204287 16384000 7.8G Linux filesystem
/dev/sda9 264206336 276494335 12288000 5.9G Linux filesystem
/dev/sda10 276496384 288784383 12288000 5.9G Linux filesystem
/dev/sda11 288786432 329746431 40960000 19.5G Linux filesystem
/dev/sda12 329748480 452628479 122880000 58.6G Microsoft basic data
/dev/sda13 452630528 493590527 40960000 19.5G Linux swap
/dev/sda14 493592576 903192575 409600000 195.3G Linux filesystem
/dev/sda15 903194624 1465147391 561952768 268G Linux filesystem
이러한 환경에서 Linux(및 Windows)를 부팅하는 방법에 대한 명확한 지침을 주시면 감사하겠습니다. 감사해요.
업데이트/결론:
/dev/sda2
이전에는 활성 MBR 파티션이었으며 위에서 언급한 대로 유형을 Linux filesystem
. 에서 변경했지만 EFI 시스템으로 사용할 수 없도록 포맷 EFI System
되었습니다 .ext4
따라서 위의 문제를 해결하기 위해 필요한 것은 다음과 같습니다.
sda2
유형을 다음으로 되돌립니다Linux filesystem
.sda13
19.5G Linux 스왑 파티션에서 FAT32 파티션을 ESP 파티션으로 분리했습니다.- CSM에서 기본 EFI 모드로 펌웨어 변경
- 그런 다음 @telcoM의 아래 조언을 따르세요.
답변1
내가 아는 한, Windows에서는 변환이 완료된 후 이러한 변환된 시스템 디스크를 특별한 경우로 처리하지 않으므로 "새" GPT 기반 시스템의 디스크와 정확히 동일하게 처리해야 합니다.
특히 Windows에서는 GPT 파티션 시스템 디스크가 항상 UEFI 기본 스타일로 Windows를 부팅해야 한다는 제한을 적용합니다. GPT 파티션 디스크에서는 BIOS 스타일 부팅 절차가 허용되지 않습니다.
먼저 MBR과 GPT 파티션의 차이점을 이해하십시오.
- GPT에서는 MBR 파티션처럼 기본/확장/논리 파티션이 구분되지 않습니다. 모든 GPT 파티션은 단지 파티션일 뿐입니다.
- GPT 파티션 테이블에 "레거시 BIOS 부팅 가능" 파티션 속성 비트가 있지만,UEFI 스타일로 부팅할 때는 전혀 사용하지 마세요..
- MBR 파티션 디스크에는 일반적으로 블록 #0(실제 마스터 부트 레코드)과 첫 번째 파티션의 시작 사이에 사용되지 않은 디스크 블록의 간격이 있습니다. 최신 시스템에서 첫 번째 파티션은 일반적으로 디스크 시작 부분에서 정확히 1MiB에 정렬되므로 공통 512바이트 블록을 사용하는 경우 첫 번째 파티션은 블록 #2048에서 시작됩니다. MBR과 첫 번째 파티션 사이의 간격은 GRUB와 같은 부트 로더에서 사용됩니다. GPT 파티션 디스크에서 이 영역은 실제 GPT 파티션 테이블이 차지하므로 사용할 수 없습니다.
- MBR 파티션 디스크에서 파티션 유형은 단일 바이트로 식별됩니다. GPT 파티션 디스크에서 각 파티션의 유형은 UUID로 식별됩니다.
- MBR 파티션 디스크에는 32비트가 있습니다.디스크 서명; GPT 파티션 디스크에는 동일한 목적으로 사용되는 128비트 UUID가 있습니다. 각 GPT 파티션에는 파티션 테이블에 고유한 UUID도 있습니다. 이는 파티션에 사용된 파일 시스템을 알 수 없는 경우에도 파티션을 고유하게 식별하는 데 사용할 수 있습니다. Linux는 이를
PARTUUID
MBR 파티션 디스크의 경우 실제 파티션 UUID 대신 MBR 디스크 서명과 파티션 번호의 조합으로 사용합니다. - MBR 파티션 테이블은 블록 #0에 존재합니다. 확장 파티셔닝을 사용하는 경우 각 논리 파티션의 시작 부분에 추가 파티션 테이블이 있습니다. GPT 파티션 테이블은 블록 #1에서 시작하여 여러 블록을 차지합니다.GPT 파티션 테이블 백업디스크의 맨 끝 부분에 있습니다. 디스크 시작 부분의 여러 블록을 비워서 디스크 파티션을 지우는 데 익숙하다면 이는 일반적으로 놀랄 것입니다.
파티션 유형 UUID는 사람이 사용하기 편리하지 않기 때문에 이를 단축하기 위해 여러 파티셔너에서 다양한 방법을 사용합니다. gdisk
4자리 유형 코드가 사용됩니다. Gparted는 다양한 플래그를 통해 다양한 파티션 유형 UUID를 나타냅니다(제 생각에는 불행한 선택입니다).
기본 UEFI 스타일 부팅 프로세스도 기존 BIOS 스타일 부팅 프로세스와 매우 다릅니다.
- BIOS 스타일 부팅 프로세스는 일반적으로 BIOS 설정에 의해 현재 부팅 드라이브로 선택된 장치에 BIOS 장치 ID 0x80(= 첫 번째 BIOS 하드 디스크)을 할당합니다. UEFI 모드로 부팅할 때 펌웨어 설정(UEFI 시스템의 "BIOS 설정")은 다음을 정의합니다.시작 경로: 다양한 형식을 취할 수 있지만 설치된 운영 체제에 대한 가장 일반적인 형식은파티션 UUID그리고부팅 파일 경로 이름.
- BIOS 모드로 부팅할 때 펌웨어는 선택한 부팅 디스크의 블록 #0 끝에 있는 2바이트 부팅 서명을 확인한 다음 MBR 블록과 실제 파티션 테이블에 있는 약 440바이트의 기계어 코드만 실행합니다. UEFI 스타일로 부팅할 때 펌웨어에는 특정 유형의 문제를 이해하는 기능이 내장되어 있습니다.파일 시스템: UEFI 사양은 호환 가능한 UEFI 펌웨어를 나타냅니다.~ 해야 하다FAT32를 이해하지만 다른 파일 시스템 유형도 이해할 수 있습니다. UEFI "부팅 가능한 디스크"에는 특별한 유형의 UUID가 있는 파티션이 포함되어야 합니다. 이를 EFI 시스템 파티션 또는 줄여서 ESP라고 합니다. 펌웨어는 고유 UUID가 부팅 경로에 지정된 것과 일치하는 ESP 파티션을 찾은 다음 해당 파티션에서 지정된 부팅 파일을 로드하려고 시도합니다.
- 이동식 미디어 또는 이전에 펌웨어 설정으로 구성되지 않은 디스크에서 UEFI 모드로 부팅할 때 펌웨어는 펌웨어가 읽을 수 있는 파일 시스템과 특정 경로 이름을 가진 파일이 포함된 ESP 파티션을 찾습니다. 64비트 x86 하드웨어의 경우 이UEFI 폴백/이동식 미디어 부팅 경로
\EFI\boot\bootx64.efi
Windows 스타일이나<ESP mount point>/EFI/boot/bootx64.efi
Linux 스타일로 표현하는 경우.
ESP 파티션에는 표준 구조가 있습니다. 설치된 각 운영 체제는 하위 디렉터리를 설정 \EFI\<vendor or distribution name>\
하고 해당 하위 디렉터리에 부트로더 파일만 배치해야 합니다. 이 \EFI\boot\
하위 디렉터리는 다음과 같은 대체/이동식 미디어 부트로더용으로 예약되어 있습니다.하이랜더규칙:한 명만 있을 수 있어요.(각 시스템 아키텍처마다).
비 ESP 파티션에 GParted "부팅 플래그"를 설정하면 실제로 파티션의 유형 UUID가 ESP 유형 UUID로 변경됩니다. 이는 오류입니다. 이제 디스크에 ESP 유형의 파티션이 두 개 있습니다. 변경된 파티션 유형을 다시 원래 유형으로 변경해야 합니다. GParted에서 이는 GParted에서 "boot" 및 "esp" 플래그를 제거하는 것을 의미합니다. gdisk
이는 유형 코드를 8300
("Linux 파일 시스템") 또는 8304
("Linux x86-64 루트")로 설정하는 것을 의미할 수 있습니다.
동일한 디스크에 Windows도 있으므로 BIOS 부팅 파티션( gdisk
유형 코드 ef02
)을 사용하는 것은 권장되지 않습니다. 이렇게 하면 일반적으로 펌웨어 설정으로 이동하여 전환할 때마다 CSM을 활성화/비활성화해야 합니다. 운영체제. 대신, 디스크 설치를 라이브 Linux 부팅 미디어에 마운트한 /mnt
다음 루트를 변경하여 현재 BIOS 스타일 부트 로더(일반적으로 i386-pc
아키텍처 유형의 GRUB)를 기본 UEFI 부트 로더(예: 스키마 유형의 GRUB x86_64-efi
)로 교체할 수 있습니다. 기본적으로 (다음 명령은 모두 입니다 root
):
mount <your root filesystem device> /mnt
mount -o rbind /dev /mnt/dev
mount -t proc none /mnt/proc
mount -t sysfs none /mnt/sys
chroot /mnt /bin/bash
이제 세션은 설치된 Linux 운영 체제의 환경을 사용하며 평소와 같이 패키지 관리자 및 기타 도구를 사용할 수 있습니다(경고: /var
별도의 파티션과 같은 표준 시스템의 일부가 있는 경우 지금 설치하십시오). 또한!)
첫 번째 단계는 ESP용 마운트 지점을 추가하고 설치하는 것입니다. lsblk -o +UUID
ESP 파티션의 UUID를 실행하여 시작하십시오 . 파일 시스템 유형은 FAT32일 가능성이 높으므로 다음 명령을 실제 UUID로 바꾸십시오 xxxx-yyyy
.<ESP UUID>
mount UUID=<ESP UUID> /boot/efi
echo "UUID=<ESP UUID> /boot/efi vfat umask=0077,shortname=winnt,flush 0 2" >>/etc/fstab
다음 단계는 부트로더 유형을 전환하는 것입니다.
불행히도 어떤 Linux 배포판을 사용하고 있는지 언급하지 않았습니다. Debian, Ubuntu 또는 이들에서 파생된 일부 배포판인 경우 표준 패키지 관리 도구를 사용하여 제거 grub-pc
및 grub-pc-bin
패키지하고 설치 grub-efi-amd64
및 grub-efi-amd64-bin
교체한 다음 실행 grub-install /dev/sda
(또는 ESP 파티션이 포함된 디스크)하고 마지막으로 update-grub
재구축을 실행해야 합니다. GRUB 구성.
이 시점에서 chroot를 종료하고 마운트를 취소하고 시스템이 이제 부팅할 수 있는지 확인할 수 있습니다.
(if you had to mount any extra partitions, unmount them now)
exit
umount /mnt/dev
umount /mnt/proc
umount /mnt/sys
umount /mnt
reboot
efibootmgr
Linux가 실행되는 동안 펌웨어 시작 설정을 보고, 백업하고, 수정할 수 있으므로 이 유틸리티를 설치할 수도 있습니다 . (Windows에서는 명령을 사용하여 동일한 작업을 수행할 수 있지만 bcdedit
제 생각에는 명령을 사용하기가 더 어렵습니다 efibootmgr
.)