이중 부팅 시스템을 사용할 때 Windows가 GRUB를 덮어쓰는 것을 방지하는 방법

이중 부팅 시스템을 사용할 때 Windows가 GRUB를 덮어쓰는 것을 방지하는 방법

저는 이중 부팅에 대해 많이 읽었으며 Windows를 로드한 다음 GRUB를 사용하여 Linux를 로드하는 것만큼 간단해 보이지만 모든 사람들은 Windows가 기회가 있을 때마다 GRUB를 버리는 것을 좋아한다고 말합니다. 이런 일이 발생하지 않도록 하려면 어떤 조치를 취해야 합니까(가능한 한 간단하게 만들고 싶은 Windows 부트로더를 사용하는 것 외에)?

답변1

Windows는 Windows를 설치하거나, ​​새 버전으로 업그레이드하거나, 또는 이전 버전과 같은 도구를 사용할 때마다 bootrec /fixmbr부팅 섹터를 덮어씁니다 . 일반적으로 Windows를 먼저 설치한 다음 Linux를 설치합니다. 위 작업 중 하나를 수행할 때까지 부팅 섹터는 변경되지 않은 상태로 유지됩니다. (MBR에 쓰는 다른 방법이 있을 수도 있습니다.) 그러나 GRUB를 잃어버린 경우 복구하기 쉽습니다.bootrec /fixbootfdisk /mbr

  • Live CD(CD/DVD 또는 플래시 드라이브)에서 부팅합니다.
  • 루트로 로그인하거나 sudo다음 명령을 사용하십시오.
  • 필요한 경우 사용 가능한 파티션을 나열하십시오.fdisk -l
  • Windows는 거의 확실하게 /dev/sda1에 존재합니다.mount /dev/sda1 /mnt
  • MBR에 GRUB를 다시 설치합니다.grub-install --root-directory=/mnt/ /dev/sda
  • 재시작:shutdown -r now
  • GRUB 메뉴를 복원합니다.update-grub

컴퓨터가 충분히 강력하다면 100% Unix, Linux 또는 BSD를 설치하고 가상 머신에서 Windows를 실행할 수도 있습니다.

또한: 컴퓨터의 BIOS에는 부트 섹터를 보호하는 옵션이 있을 수 있습니다.

답변2

내가 찾은 해결책온라인 어딘가(unix.stackexchange.com)에는 Windows 부팅 관리자 비활성화가 포함됩니다. Linux(원본 설치 또는 사용 가능한 경우 라이브 CD/DVD)로 이동하여 다음 명령을 실행합니다.

efibootmgr

이 방법은 Linux가 UEFI 모드로 설치된 경우에만 작동하므로 Linux가 레거시 모드로 설치된 경우 오류 메시지가 표시됩니다. UEFI 모드로 설치하면 몇 가지 정보와 목록이 표시됩니다. 목록 어딘가에 Windows 부트로더/관리자 및 Linux가 표시됩니다. Windows의 우선 순위가 더 높을 수 있습니다(목록 위의 부팅 순서).

일부 항목은 옆에 별표 *가 표시되어 활성 상태임을 표시합니다.

Windows 항목 옆에 있는 4자리 시작 번호를 찾아 실행하세요.

sudo efibootmgr --bootnum #### --inactive

그러면 Windows 항목이 비활성화됩니다. 또한 현재 비활성화된 Windows의 우선 순위가 더 높은지 확인하세요(아직 그렇지 않은 경우).

sudo efibootmgr --bootorder ####,$$$$,&&&&,%%%%

여기서 ####은 Windows 시작 번호입니다.

지금 재부팅하면 grub으로 부팅됩니다(Linux 옵션이 가장 높은 우선순위로 활성화된 경우).

Windows는 비활성화된 것을 인식하지 못하는 것 같으므로 Windows를 시작하거나 업데이트해도 복원되지 않습니다.

저는 관심 있는 사람들을 위해 Linux를 설치하는 지역 Linux 설치 페스티벌에 참석합니다. 대부분 Windows 다음 보조 운영 체제로 사용됩니다. 나는 아직 이 접근 방식이 실패하는 것을 본 적이 없으며 여러 배포판(주로 Ubuntu 및 Mint)과 여러 공급업체(Asus, Acer, HP, Lenovo)에서 시도했습니다.

답변3

위의 좋은 제안 중 일부를 시도했지만 소용이 없었습니다. MS가 더 까다로워지는 것 같아요.

2021년에 나에게 가장 효과가 있었던 것은 Windows를 부팅하고 명령 프롬프트에서 다음 명령을 실행할 것을 제안하는 시동 복구 요약에 나열된 조언을 따르는 것이었습니다(이 작업을 수행하려면 관리자 권한으로 명령을 실행해야 했습니다).

bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi

참고: 위 명령은 UEFI 보안 부팅 상황에 맞게 사용자 정의되었으므로 이 방법을 따르려면 boot-repair권장 수정 사항을 실행하고 기록해야 합니다.

실행하는 대신 boot-repairLinux에서 다음 명령을 사용하여 올바른 efi 경로를 얻을 수 있습니다(Linux 배포판에 액세스할 수 없는 경우 이를 설치하거나 live-usb를 사용해야 할 수 있습니다).

efibootmgr -v

Windows에서 이 명령을 실행한 후에 bcdedit는 항상 grub 메뉴가 표시됩니다. Windows로 부팅하면 grub이 중단되지 않는 것 같고 재부팅 시 기본적으로 Linux로 설정된 grub 메뉴가 다시 표시됩니다. 이것은 매우 아름다운 일입니다.

답변4

다음은 내가 사용한 해결 방법이며 개입 없이 Windows 업데이트에서 작동합니다. EFI/Microsomething에서 EFI/Microsoft의 이름을 바꾸고 grub.cfg의 Windows 부팅 경로를 다음과 같이 EFI/Microsomething/bootmfgw.efi로 바꿉니다.

menuentry "Microsoft Windows UEFI-GPT" {
    insmod part_gpt
    insmod fat
    insmod search_fs_uuid
    insmod chain
    search --fs-uuid --set=root <PROVIDE YOUR EFI DRIVE UUID>
    chainloader /EFI/Microsomething/Boot/bootmgfw.efi
}

관련 정보