Insyde H2O EFI bios가 포함 된 Sony VAIO는 GRUB EFI로 부팅되지 않습니다


12

새로운 Sony Vaio S 시리즈 노트북을 구입했습니다. Insyde H2O BIOS EFI를 사용하고 Linux를 설치하려고하면 나를 미치게합니다.

root@kubuntu:~# parted /dev/sda print
Model: ATA Hitachi HTS72756 (scsi)
Disk /dev/sda: 640GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start  End    Size    File system  Name                          Flags
 1      1049kB  274MB  273MB  fat32        EFI system partition          hidden
 2      274MB  20.8GB  20.6GB  ntfs        Basic data partition          hidden, diag
 3      20.8GB  21.1GB  273MB  fat32        EFI system partition          boot
 4      21.1GB  21.3GB  134MB                Microsoft reserved partition  msftres
 5      21.3GB  342GB  320GB  ntfs        Basic data partition
 6      342GB  358GB  16.1GB  ext4        Basic data partition
 7      358GB  374GB  16.1GB  ntfs        Basic data partition
 8      374GB  640GB  266GB  ntfs        Basic data partition

놀라운 것은 디스크에 2 개의 EFI 시스템 파티션이 있다는 것입니다. sda2 파티션은 기본 복구 인터페이스로 창을로드하는 20GB 복구 파티션입니다. 일반 전원 버튼이 아닌 "ASSIST"버튼을 누르면 액세스 할 수 있습니다. sda1 EFI 시스템 파티션 (ESP)이이 복구에로드된다고 가정합니다.

sda3 ESP에는 실제로 Windows 7 (Windows의 bcdedit.exe에 의해 확인 됨)에 들어가는 Microsoft Windows 항목이 더 많이 있습니다. 우분투는 sda6에 설치되어 있으며 설치하는 동안 부트 파티션으로 sda3을 선택했습니다. 설치 관리자가 sda3 / EFI / ubuntu / grubx64.efi 응용 프로그램을 올바르게 만들었습니다.

진짜 문제 : 내 인생에서 기본값으로 설정할 수 없습니다! grubx64.efi라는 sda3 / startup.nsh를 만들려고 시도했지만 재부팅해도 시스템이 여전히 Windows로 부팅됩니다. efibootmgr을 사용해 보았습니다.

root@kubuntu:~# efibootmgr 
BootCurrent: 0000
BootOrder: 0000,0001
Boot0000* EFI USB Device
Boot0001* Windows Boot Manager
root@kubuntu:~# efibootmgr --create --gpt --disk /dev/sda --part 3 --write-signature --label "GRUB2" --loader "\\EFI\\ubuntu\\grubx64.efi" 
BootCurrent: 0000
BootOrder: 0002,0000,0001
Boot0000* EFI USB Device
Boot0001* Windows Boot Manager
Boot0002* GRUB2
root@kubuntu:~# efibootmgr
BootCurrent: 0000
BootOrder: 0002,0000,0001
Boot0000* EFI USB Device
Boot0001* Windows Boot Manager
Boot0002* GRUB2

그러나 다시 부팅하면 컴퓨터가 Windows로 직접 다시 부팅됩니다.

내가 생각할 수있는 유일한 것은 :

  1. sda1 파티션이 어떻게 든 사용되고 있습니다
  2. grubx64.efi를 사용하여 /EFI/Boot/bootx64.efi 및 /EFI/Microsoft/Boot/bootmgfw.efi를 덮어 씁니다.

누구든지 나를 도울 수 있습니까? 감사합니다.이 문제로 인해 많은 도움이되었습니다.


Sony Vaio S에서 MS .efi 파일을 GRUB 파일로 바꾸고 MS .efi의 사본을 다른 디렉토리에 보관 한 다음 사본으로 체인로드하여 Windows를 부팅하는 동일한 접근 방식을 따랐습니다. 이것은 일반적으로 작동하지만 나쁜 부작용은 최대 절전 모드에서 Windows를 다시 시작할 수 없다는 것입니다. 부트 로더 오류가 발생하고 완전히 재부팅해야합니다.

답변:


11

나는 결국 이것을 해결할 수 있었다. EFI / Microsoft / boot / bootmgfw.efi를 grub64.efi로 교체했습니다. 전자의 이름을 bootmgfw.efi.old로 바꾸고 grub을 사용하여 메뉴 옵션을 체인로드에 추가했습니다.

이는 펌웨어가 Microsoft Windows 부트 로더를 찾도록 하드 코딩되었으며 efibootmgr 설정 또는 startup.nsh를 고려하지 않음을 의미합니다. 정말 끔찍합니다.

Sony EFI 부팅 프로세스가 어떻게 작동하는지 알아 냈습니다.

  1. /EFI/Microsoft/Boot/fwbootmgr.efi를보십시오. 있는 경우 부팅하십시오.
  2. grubx64.efi에 대한 / EFI /의 모든 하위 디렉토리를 확인하십시오. 있는 경우 부팅하십시오.
  3. 부팅 /EFI/Boot/bootx64.efi
  4. "운영 체제를 찾을 수 없음"과 같은 오류 메시지를 표시하십시오.

Linux에서는 efibootmgr 도구가 작동하지만 마지막으로 사용한 USB 드라이브를 포함하여 많은 자동 생성 된 넌센스를 표시합니다.

이 모든 것을 배운 방법은 다음과 같습니다.

  1. Linux와 Mac을 나란히 설치하기 위해 새 컴퓨터를 열고 Windows 파티션을 축소했습니다.
  2. Ubuntu 12.10을 설치했고 설치 관리자가 fwbootmgr.efi를 덮어 써서 기존 Windows 부트 로더를 백업했습니다.
  3. 이전 Windows 부트 로더를 복원했지만 Windows 이외의 다른 장치로는 부팅 할 수 없습니다.
  4. Windows 부트 로더의 이름을 가짜로 바꾼 다음 Grub BL이 대신했습니다.
  5. 나는 rEFInd를 설치했지만 우분투 디렉토리의 이름을 다른 것으로 바꾸었고 Grub은 여전히로드되었습니다.
  6. rEFInd가 원하는 것을 수행 할 수있는 유일한 방법은 다음과 같습니다.

  7. fwbootmgr.efi를 상위 디렉토리로 이동하십시오. rEFInd는 여전히 해당 파일을 찾고 Windows는 이름을 변경했다고 불평하지 않습니다.

  8. grubx64.efi의 이름을 rfgrubx64.efi 또는 다른 것으로 인식 가능한 이름으로 바꿉니다.
  9. rEFInd를 / EFI / refind에서 / EFI / boot로 복사하고 /EFI/refind_x64.efi의 이름을 * .bak로 바꾸고 마지막으로 /Boot/refind_x64.efi의 이름을 bootx64.efi로 바꾸십시오. rEFInd에서 Windows BL 또는 GRUB을 부팅 할 수 있습니다. MacOS 설치를 Clover로 업그레이드하고 rEFInd에서도 Clover를로드 할 계획입니다.

(아마도 Windows 부팅 관리자를 사용하여이 모든 작업을 수행 할 수는 있지만 EeasyBCD의 EFI 지원은 여전히 ​​경험상 엉망입니다. 잠시 동안 다시 터치하지 않습니다.)


Windows 부팅 관리자가 grub으로 설정되도록 Windows에서 BCD [bcdedit.exe 사용] 설정을 수정하려고 시도했지만 여전히 작동하지 않습니다. 실제로 .efi 파일을 grub의 .efi로 바꿔야했습니다. .
Rohan Dhruva 2016 년

5

먼저 두 개의 ESP가 없습니다. ESP는 파티션 유형 코드가 C12A7328-F81F-11D2-BA4B-00A0C93EC93B 인 파티션으로, 부분적으로 "부트 플래그"가 설정된 파티션으로 식별됩니다. 출력 결과는 / dev / sda3에만 "부트 플래그"가 설정되어 있으므로 하나의 ESP (/ dev / sda3) 만 있습니다. GPT에서 파티션은 이름을 가질 수 있으며 이름이 "EFI 시스템 파티션"인 두 개의 파티션이 있지만이 이름은 사람 식별 목적으로 만 사용됩니다. 따라서 내 생각에 당신 (또는 일부 자동 유틸리티)은 ESP로 만들 의도로 / dev / sda1을 만들었지 만 파티션 유형 코드를 설정하는 데 오류가 있거나 다른 유틸리티가 형식 코드를 잘못 변경했습니다. 다른 것에 C12A7328-F81F-11D2-BA4B-00A0C93EC93B.

이 문제를 해결하는 방법에는 여러 가지가 있습니다. 가장 간단한 방법은 혼동을 피하기 위해 / dev / sda1의 이름을 변경하는 것입니다. / dev / sda1이 아무 목적이 없다고 생각되면 백업하고 삭제할 수 있습니다. 이렇게하면 방해가되지 않고 혼란을 피할 수 있지만 물론 273MB의 사용하지 않는 디스크 공간이 생깁니다. 또는 혼동을 피하기 위해 필요한 경우 이름과 유형 코드를 변경하여 다른 목적으로 공간을 할당 할 수 있습니다. EFI는 여러 ESP를 명시 적으로 허용하므로, 예를 들어 parted를 사용하여 "부트 플래그"를 설정하여 유형 코드를 변경하고 두 ESP를 모두 사용할 수 있습니다. 그러나 이것은 혼란 스러울 수 있습니다.

이 문제는 모든 관련 파일이 / dev / sda3에있는 것처럼 들리므로 Linux를 부팅 할 수없는 것과 관련이 없을 수 있습니다. 이 문제에 대한 몇 가지 가능한 이유는 다음과 같습니다.

  • efibootmgr 명령에서 잘못 입력했을 수 있습니다. 명백한 오타는 보이지 않지만 GRUB 바이너리가 지정한 위치에 없으면 명령이 작동하지 않습니다. "--gpt"및 "--write-signature"옵션은 거의 불필요하며 문제를 일으킬 수 있지만 대부분 그렇지는 않습니다.
  • 펌웨어에 efibootmgr 명령의 효과가 일시적인 원인이되는 버그가있을 수 있습니다. 재부팅을 시도한 다음 "sudo efibootmgr -v"를 입력하여 생성 한 항목이 재부팅 후에도 남아 있는지 확인하십시오.
  • 펌웨어에 부팅 순서 변수가 무시되는 버그가있을 수 있습니다. 나는 그런 마더 보드를 가지고있다; BootOrder 변수로 지정된 순서가 아니라 부트 항목이 작성된 순서대로 부트됩니다. 이 버그를 해결하려면 모든 항목을 삭제하고 사용하려는 부팅 순서대로 다시 만들어야합니다.
  • grubx64.efi 바이너리는 펌웨어가 펌웨어 실행을 거부하는 방식으로 손상되어 부팅 순서에서 다음 항목으로 진행될 수 있습니다.

efibootmgr 명령을 조정하거나 새 바이너리를 찾거나 이러한 가능성을 테스트하지 않을 수 있습니다. 다른 모든 방법이 실패하면 다음을 수행하는 것이 좋습니다.

  1. efibootmgr 또는 펌웨어를 사용하여 부팅 항목을 모두 삭제하십시오 (인터페이스가 제공되는 경우).
  2. grubx64.efi를 ESP의 EFI / Boot / bootx64.efi로 복사하십시오.
  3. 재부팅해도 여전히 Windows가 표시되면 EFI / Microsoft / Boot / bootmgfw.efi의 이름을 EFI / Microsoft / bootmgfw.efi로 바꿉니다.

부팅 로더의 기본 이름 (EFI / Boot / bootx64.efi)을 사용하여 GRUB 부팅을 수행해야합니다. 이에 대한 한 가지 문제점은 GRUB에 Windows에 대한 작업 항목이 없을 수 있다는 것입니다. 아마 수동으로 만들 수 있습니다. 이와 같은 항목이 작동해야합니다.

menuentry "Windows 7" {
    set root='(hd0,gpt3)'
    chainloader /EFI/Microsoft/bootmgfw.efi
}

또는 rEFIt 또는 rEFInd 를 EFI / Boot / bootx64.efi로 설치할 수 있습니다. 사이트에서 제공되는 rEFIt 바이너리는 UEFI 기반 PC에서 작동하지 않습니다. Ubuntu 리포지토리에서 버전을 사용해야합니다. rEFInd는 더 나은 UEFI 지원을 포함하여 수많은 버그 수정 및 업데이트가 포함 된 rEFIt입니다. (rEFIt는 약 2 년 전에 포기 된 것 같습니다.) 따라서 rEFIt 대신 rEFInd를 사용하는 것이 좋습니다. 그러나 저는 rEFInd의 관리자이므로이 점수에 대해 독립적 인 관찰자가 아닙니다. 불행히도 AFAIK rEFInd는 아직 우분투 리포지토리에 포함되어 있지 않으므로 수동으로 다운로드하여 설치해야합니다.


정말 감사합니다,로드! 그러나 sda1 자체는 ESP [기본적으로 부팅 가능하지 않음]이며 복구 파티션 (20Gb SONSYS)으로 부팅하는 데 사용됩니다. 나는 그것이 이상한 설정이라는 것을 알고 있지만 소니는 어떤 이유로 든 그렇게하기로 결정했습니다. 전원 버튼이 아닌 "ASSIST"버튼을 누르면 해당 부트 로더가 호출됩니다.
Rohan Dhruva 2016 년

정보로드 주셔서 감사합니다, 나는 같은 문제가 있었고 당신의 단계를 수행하면 부분적으로 수정합니다. GRUB은 잘 작동했고 Win7에 대한 항목을 추가하려고 시도했지만 이제는 GRUB이 표시되지 않고 우분투로 바로 부팅됩니다. 왜 그리고 어떻게 고칠 아이디어가 있습니까? 또한 내 EFI 파티션은 sda1이고 Win은 sda3입니다.이 줄에서 X는 "set root = '(hd0, gptX)'"가 1 또는 3입니까? 나는 둘 다 시도했다!
barro32

@로드, 메뉴 항목을 어디에 추가해야합니까 (Windows 7)? \ etc \ default \ grub에?
alekhine

4

새로운 소니 바이오 시리즈에서 동일한 시작 위치입니다. 답변 주셔서 감사합니다.

누군가 연습이 필요한 경우를 위해 이것이 나를 위해 일한 것입니다.

win7과 함께 USB에서 우분투 12.04를 설치했습니다.

라이브 세션에서 / dev / sda3 마운트

  • EFI / ubuntu / grubx64.efi를 EFI / Boot /로 복사
  • EFI / Boot / bootx64.efi의 이름을 bootx64.efi.old로 바꿉니다.
  • EFI / Boot / grubx64.efi의 이름을 bootx64.efi로 바꿉니다.

이제는 grub2로 직접 부팅되었지만 win7 항목은 없습니다.

우분투를로드 한 후 편집했습니다.

/etc/grub.d/40_custom

첨가

menuentry "Windows 7" {
    set root='(hd0,gpt3)'
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

그리고 후에

sudo update-grub

모든 것이 잘 작동합니다


1

두 가지 대안을 제안합니다.

  1. Windows mbr을 덮어 쓰지 말고 grub을 시작하는 데 사용하십시오.

  2. 부팅 옵션의 BIOS 설정 ( f2또는 f3시작시)을 UEFI에서 LEGACY로 변경하면 일반적으로 설치된 마지막 시스템이 시작됩니다


MBR은 EFI 컴퓨터에는 적용되지 않습니다
Ben Voigt

0
  1. liveCD / liveUSB에서 부팅 복구 실행
  2. Recommended Repair버튼을 클릭하십시오 . (필요한 경우 SecureBoot 매개 변수를 포함하여 grub-efi에 대한 올바른 매개 변수를 자동으로 설치하고 UEFI 펌웨어가 Windows 파일에 잠겨있는 경우 EFI 파일 이름을 바꿉니다). 문제가 발생하면 표시 될 URL을 나타냅니다.

부팅 수리

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.