UEFI 바이오스가 Windows가 아닌 GRUB을 시작하게하는 방법?


23

편집에 추가 된 TL; DR :

질문은 ~이야:

동일한 UEFI 부팅 파티션에서 BIOS가 Windows 부팅 관리자보다 GRUB을 선호하도록하려면 어떻게해야합니까?

문제는 Grub이 아닙니다. BIOS는 BIOS를 시작할 때 올바른 일을합니다. Windows UEFI 부트 스트랩과 Grub UEFI 부트 스트랩이 모두 부트 가능하기 때문에 문제는 "디스크를 부트 할 수 없습니다"라는 문제가 아닙니다. 문제는 BIOS가 부팅하기로 선택한 UEFI 부트 스트랩입니다.

새 컴퓨터를 설정하고 기본적으로 Ubuntu로 부팅하려고하지만 부팅시 Windows를 선택할 수있는 옵션이 있습니다. 전원이 꺼졌다가 다시 들어오는 경우에 특히 중요합니다. 나는 심지어 집에 없을 것입니다.

내부 NVMe 디스크에 Ubuntu 17.04를 설치하고 디스크 절반을 사용하기 위해 GPT로 파티션을 나누고 별도의 UEFI 부팅 파티션을 시작했습니다. GRUB은 잘 부팅되고 GRUB에 대해 알고있는 항목을 선택할 수있는 GRUB 부팅 메뉴가 시작됩니다.

그런 다음 최근에 다운로드 한 ISO에서 Windows 10 Pro를 설치했습니다. 동일한 UEFI 파티션에 Windows 부팅 관리자를 설치하고 우분투를 그대로 두어 Windows 10으로 부팅합니다.

그러나 UEFI 펌웨어가 전원을 켤 때 GRUB 대신 Windows 부팅 관리자를 즉시 ​​선택하게하는 것은 "무언가"였습니다. Linux를 부팅하는 유일한 방법은 BIOS 부팅 관리자 (BIOS의 F11)를 사용하고 GRUB 부팅 로더를 수동으로 선택하는 것입니다. UEFI BIOS는 UEFI 파티션에 부팅 가능한 설치가 여러 개 있다는 것을 알고 있습니다. 부팅 관리자에서 선택할 수 있기 때문입니다. 그러나 UEFI BIOS의 설정 메뉴에 있으면 부팅 우선 순위 선택에서 "내부 드라이브 UEFI 부팅"을 선택할 수 있습니다. 해당 파티션에서 사용할 특정 부트 로더를 선택할 수는 없습니다. . 그리고 기본적으로 GRUB이 아닌 Windows를 선택합니다.

인터넷 (및이 사이트) 은이 문제를 해결하는 오래된 방법은 실행 update-grub(GRUB이 Windows를 인식 함)을 누른 다음 grub-install(장치에 GRUB을 다시 넣는 것 )을 제안합니다 .하지만이 작업을 수행했지만 불행히도 여전히 동작은 다음과 같습니다 위에서 설명한 BIOS는 기본적으로 Windows 부팅 관리자를 선택합니다. ( update-grubWindows 부팅 관리자 설치를 찾아서 메뉴에 추가하고 UEFI 부팅 관리자에서 GRUB 파티션을 수동으로 선택하면 해당 메뉴 항목이 작동합니다.)

UEFI 부팅 파티션에서 GRUB을 "기본"부팅으로 만들려면 어떻게해야합니까?

MSI X399 카본 마더 보드 사용.

두 번째 편집 : 정답은 답변에 대한 주석에서 언급되기 때문에 여기에서 반복합니다.

"BCDEDIT" in an admin shell on Windows is the working solution. The others don't work.

Windows와 Linux를 설치하면됩니다. 다른 방법은 아닙니다. 나는 정반대의 문제가 있습니다. 전원이 꺼졌다가 다시 들어 오면 내 컴퓨터는 grub으로 들어가서 Linux로 부팅합니다. 한 가지는, 각 시스템이 자체 드라이브에 있다는 것입니다. 부팅 순서에서 Linux 및 Grub이 포함 된 드라이브를 선택합니다.
dmb

1
많은 사람들이 다른 사람들이 이미 제안한 것을 제안하는 것이 놀랍습니다. 저는 원래 게시물이나 아래 주석에서 작동하지 않았다고 말했습니다. 올바른 해결책은 Windows 관리 셸에서 "BCDEDIT"입니다. 다른 어떤 제안도 그것을 해결하지 못했습니다 (그리고 그들 대부분은 이미 내 질문에 따라 시도했습니다).
Jon Watte

답변:


22

이 작업을 수행하는 방법에는 다음과 같은 몇 가지가 있습니다.

  • EFI 설정 유틸리티 -대부분 의 EFI 는 부팅시 특수 키 (Esc, Del 또는 기능 키 (일반적으로 시스템마다 다름)를 누르면 액세스 할 수있는 설정 유틸리티를 제공합니다. 항상 그런 것은 아니지만 종종 부팅 순서를 조정하는 방법을 제공합니다. 펌웨어가 이러한 옵션을 제공하는 경우,이를 사용하여 GRUB을 최상위 위치로 이동할 수 있습니다. ( ubuntu그 배포판에서 GRUB 을 설치했다면 GRUB이라고 할 수 있습니다 .)
  • EFI 셸 -Arch Linux 위키에bcfg 설명 대로 EFI 버전 2 셸에서 명령을 사용할 수 있습니다 . 시스템이 액세스하기 쉬운 쉘로 아직 설정되지 않은 경우이 방법은 다른 방법보다 사용하기 어려울 수 있지만 OS에 구애받지 않습니다.
  • EasyUEFI- 타사 Windows EasyUEFI 프로그램이 원하는 작업을 수행하는 가장 쉬운 방법 일 수 있습니다. ubuntuEasyUEFI 목록에서 해당 항목을 클릭 하여 맨 위로 이동할 수 있습니다.
  • bcdedit-Windows bcdedit명령은 NVRAM 기반 부팅 순서를 변경할 수 있습니다. 특히, 관리자 명령 프롬프트 창을 열고 bcdedit /set "{bootmgr}" path \EFI\ubuntu\shimx64.efi(선택적으로 bcdedit /set "{bootmgr}" description "ubuntu"설명을 적절하게 유지하기 위해 선택적으로 입력 ) 트릭을 수행해야합니다.
  • efibootmgr-이 Linux 도구는 부팅 순서를 조정할 수 있습니다. sudo efibootmgr옵션을 보려면 혼자 입력하여 시작 하십시오. 항목 Boot####과 관련된 번호 ( ) ubuntu및 현재 부팅 순서 ( BootOrder라인)를 확인하십시오. 그런 다음 옵션 ubuntu을 사용하여 맨 위에 항목이 있는 새 부팅 순서를 입력 할 수 있습니다 -o. 예를 들어, 현재 부팅 순서가 0000,0003,0007,0004이고 ubuntu0007이면 sudo efibootmgr -o 0007,0000,0003,0004부팅 순서를 조정하도록 입력 해야합니다.
  • refind-mkdefault-이 스크립트는 rEFInd와 함께 제공되며 앞의 절차를 자동화하는 방법입니다. rEFInd를 사용하지 않는 경우 여기 에서 스크립트를 다운로드하여 실행 가능하게해야합니다 ( chmod a+x refind-mkdefault). 그런 다음 GRUB을 기본 부팅 항목으로 만들 sudo ./refind-mkdefault -L ubuntu거나 실행합니다 sudo ./refind-mkdefault -L shimx64.

이러한 옵션 중 하나에 잠재적 인 문제와 합병증이 있습니다. 가장 복잡한 요소는 이전 또는 대체 ubuntu부팅 항목이있는 경우입니다. 부팅 순서에서 올바른 위치를 올바른 위치로 옮기는 것이 중요합니다. 잘못 이동하면 동작이 변경되지 않거나 작동하지 않는 부팅이 발생하여 부팅하기가 더 어려워집니다. 를 사용 efibootmgr하는 BootCurrent경우이 줄은 어떤 옵션을 기본값으로 설정해야하는지 알려주는 데 도움이 될 수 있습니다.

과잉 인 다른 방법이 있습니다. 다시 설치 (통해 GRUB 부트 수리 또는 grub-install) 예를 들어, 트릭을해야한다. 그러나 이러한 접근 방식은 알려진 GRUB 구성을 손상시킬 위험이 있습니다.

또한 일부 EFI는 버그가 있으며 GRUB을 안정적으로 부팅하기 어려운 다른 문제도 있습니다. 이러한 문제가 발생하면 AskUbuntu에서 이러한 질문과 답변을 확인하십시오.


질문에서 설명했듯이 EFI 설정 유틸리티를 사용하면 수동 부팅 메뉴에서 우분투를 기본값으로 선택할 수는 없습니다. 드라이브를 선택한 다음 Windows를 시작합니다. efibootmgr이 부팅 순서를 변경하려고 시도했지만 BIOS는 재부팅시주의를 기울이지 않았습니다. EasyBCD가 작동하지 않아 메뉴 항목을 더 추가 할 수 없었습니다. 그러나 관리 셸의 "BCDEDIT"가 실제로 작동했기 때문에 해당 옵션에 감사드립니다!
Jon Watte

EasyBCD와 EasyUEFI는 동일한 공급 업체의 서로 다른 두 프로그램입니다. 안타깝게도 무료 버전의 EasyUEFI를 더 이상 사용할 수없는 것 같습니다. 평가판 만 제공됩니다. 그러나 BOOTICE는 UEFI 부팅 설정을 편집 할 수있는 또 다른 무료 프로그램입니다. 원본 중국어 사이트 , 설명 및 스크린 샷이있는 영어 사이트입니다 .
telcoM

sudo efibootmgr -n 0002현재 SO 순서를 수정하는 것보다 사용하는 것이 훨씬 좋습니다. 그것은 변경 BootNext: 0001떠나 BootCurrent: 0002그대로 현재 GRUB 항목을두고, 다음 시간. chmod +x재부팅 명령과 함께 bash를 추가하고 해당 명령을 래핑하십시오.
m3nda

3

지난 몇 주 동안이 정확한 문제가 발생했습니다. 이 옵션을 사용하여 알아 냈습니다. 이러한 작업을 수행하기 전에 BIOS / UEFI로 이동하여 부팅 순서를 확인하고 먼저 grub이 설치된 위치가 올바른지 확인하는 것이 좋습니다.

그래서 내가 보는 방법에는 두 가지 옵션이 있습니다.

옵션 1

내가 권장하는 것은 Windows 10을 먼저 설치하는 것입니다 . 그런 다음 우분투를 설치하십시오. 그러나 "소프트웨어를 다시 설치하십시오"라고 말하는 것이 금기이므로 다른 대안도 제공 할 것입니다.

옵션 2

현재 설정으로 Live Ubuntu CD / 플래시 드라이브로 부팅하고 설치 및 실행하는 것이 좋습니다 boot-repair. "권장 수리"옵션을 클릭하고 지시 사항을 따르십시오. 신중하게 살펴보고 실행하기 전에 모든 명령을 읽으십시오. 이것은 현재 grub 설치를 새로운 것으로 대체 할 것입니다.


제안에 대해 감사하지만 이미 시도했습니다. 처음 설치했을 때는 먼저 Windows 10, Ubuntu 17.04, Boot Repair를 차례로 방문했습니다. 그것은 여전히 ​​Windows로 기본 설정 된 다음 Ubuntu로 먼저 닦았다가 다시 설치하여 현재 위치로 이동합니다.
Jon Watte

UEFI에서 부팅 순서를 조정했다고 가정합니다.
taterbotz

예, "UEFI BIOS의 설정 메뉴에있을 때 부팅 우선 순위 선택에서"내부 드라이브 UEFI 부팅 "을 선택할 수 있습니다. 특정 부팅 로더를 선택할 수 없습니다." 파티션에서 사용하기 "
Jon Watte

2

몇 가지 해결책이 있습니다.

  1. UEFI를 편집하여 기본값을 조정하십시오. 리눅스에서는을 사용할 수 있습니다 efibootmgr. Windows에서는 확실하지 않지만 UEFI를 구성 할 수있는 복구 옵션으로 부팅 할 수 있다고 생각합니다. 또는 rEFInd와 같은 것을 설치하는 것이 좋습니다.
  2. EFI 파티션에서 폴더 이름을 변경하십시오. 라는 폴더를 선호하거나 다시 생각합니다 boot.
  3. Windows 부트 로더를 사용하면 다른 OS를 부팅하도록 구성 할 수 있다고 생각합니다.

efibootmgr을 사용하여 부팅 순서를 편집 할 수 있지만 BIOS는이를 무시하고 Windows를 시작합니다. 부트 폴더 이름을 변경하거나 심지어 grub을 "boot"로 복사하면 Microsoft 폴더를 제거 할 때까지 작동하지 않습니다. Windows 부트 로더는 Windows 이외의 OS를 부팅하지 않습니다 (적어도 서명되지 않은 것)
Jon Watte

@JonWatte 어쩌면 uefi 부트 로더가 다를 수 있습니다. 32 비트 BIOS 시스템의 Windows 7 부트 로더에서 우분투를 부팅하는 것을 기억합니다. 아마 grub2를 체인로드 할 수 있습니까? efibootmgr작동하지 않기 때문에 MSI를 구매하지 않을 것입니다.
jiggunjer

예,이 MSI 마더 보드에도 다른 문제가 있으며 기가 바이트와 교환하여 Amazon으로 되돌아갑니다.
Jon Watte

1

방금 노트북에서 마더 보드를 교체하고 그럽이 완전히 사라졌습니다.

나는 이것이 고정으로 표시되어 있음을 알고 있지만 그것이 당신에게 유용 할 것이라고 생각했습니다.

grub을 부팅 옵션으로 표시합니다. 바이오스에 EFI를 추가해야했습니다.

BIOS에서 "부팅 목록 옵션"으로갔습니다. "부팅 옵션 추가"를 클릭했습니다 (이것은 바이오스에 특정한 것임을 알고 있습니다). 이것은 나에게 파일 이름에 대한 옵션을 \EFI\ubuntu\grubx64.efi주었다.grub

그런 다음 grub항목을 부팅 순서의 맨 위로 이동하면 이제 기본 항목으로 표시됩니다.

즉, 올바른 EFI 파일을 찾아 부팅 순서 / 순서의 맨 위로 이동해야 할 수도 있습니다.


1

구형 HP 655 랩탑에서는 위의 옵션 중 어느 것도 효과가 없었습니다. 해결책은 Windows 부팅 관리자를 비활성화하는 것입니다.

sudo -s
efibootmgr
efibootmgr -b 4 --inactive

Windows 부팅 관리자 수를 4로 바꿉니다. efibootmgr을 다시 실행하면 별표가 사라져 비활성 상태로 표시됩니다.

내 컴퓨터가 grup 부팅 메뉴로 부팅 한 후에도 여전히 윈도우를 선택할 수 있습니다.


-2

가능한 해결책은 / etc / default / grub 파일을 수동으로 편집하는 것입니다.

sudo vim /etc/default/grub

기본 항목은 GRUB_DEFAULT=/ etc / default / grub 의 설정에 따라 결정됩니다 . 첫 번째 "메뉴 항목"의 값은 "0"입니다. 부팅 화면에서 Ubuntu가 두 번째 항목 인 경우 GRUB_DEFAULT = 1을 설정하십시오.

그런 다음, grub config를 업데이트하려면 다음 명령을 실행해야합니다. update-grub

다른 옵션은 grub-customizer를 설치하고 GUI를 사용하여 부팅 우선 순위를 구성하는 것입니다.


문제는 Grub과 관련이 없습니다. 게시물에서 말했듯이 BIOS에서 Grub UEFI 부팅 옵션을 선택할 수 있다면 Grub 부팅 메뉴가 표시되어 Windows 또는 Ubuntu를 선택할 수 있습니다. 기본적으로 원하는 메뉴입니다. 불행히도 BIOS는 기본적으로 Windows 부팅 관리자를 선택합니다.
Jon Watte

내가 말했듯이 Ubuntu를 시작하는 첫 번째 시스템으로 구성하여 grub 부팅 순서로 수정할 수 있습니다. GUI를 사용하여이를 수행하려면 grub-customizer를 사용하십시오. linuxandubuntu.com/home/…
Mr. Raspberry

다시 말하지만, Grub은 BIOS에 의해 시작되지 않습니다. 그럽 부팅 순서는 중요하지 않습니다. GRUB_DEFAULT는 중요하지 않습니다. 그것은 여기서 문제가 아닙니다.
Jon Watte
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.