내 컴퓨터는 Sony Vaio Notebook입니다. 듀얼 부팅으로 Ubuntu와 Win 8을 사용했지만 Windows는 시작시 OS를 선택하기 위해 메뉴를 제거했습니다. BIOS가 UEFI라고 생각합니다. 보안 부팅이 이미 비활성화되어 있고 부팅 복구가 실패합니다.
이 문제를 어떻게 해결할 수 있습니까?
내 컴퓨터는 Sony Vaio Notebook입니다. 듀얼 부팅으로 Ubuntu와 Win 8을 사용했지만 Windows는 시작시 OS를 선택하기 위해 메뉴를 제거했습니다. BIOS가 UEFI라고 생각합니다. 보안 부팅이 이미 비활성화되어 있고 부팅 복구가 실패합니다.
이 문제를 어떻게 해결할 수 있습니까?
답변:
소니, HP 및 많은 랩톱 공급 업체는 Windows 만 부팅하도록 하드 코딩되어 있습니다.
grub grubx64.efi
또는 shimx64.efi
파일을 Windows 위로 이동시키는 몇 가지 해결 방법이 있습니다 /EFI/windows/bootmgfw.efi
. 그러나 Windows Update가 복원 bootmgfw.efi
되고 부팅 창으로 돌아 가기 때문에 권장하지 않습니다 .
대신 폴백 /EFI/Boot/bootx64.efi의 이름을 바꾸고 하드 드라이브 항목을 부팅하거나 rEFInd를 사용하는 것이 좋습니다.
변경하기 전에 전체 EFI 파티션을 백업해야합니다.
사용 가능한 몇 가지 옵션이 있습니다.
I. grub 파일 grubx64.efi
또는 shim64.efi
(보안 부팅을 위해)이 폴더 / 파일로 이동하고 이름을 바꿉니다./EFI/BOOT/BOOTX64.EFI
/efi/boot/bootx64.efi의 이름을 바꾸고, shim 또는 grub을 / efi / boot에 복사하고 이름을 bootx64.efi로 지정한 다음 하드 드라이브 항목을 부팅하십시오. 새 버전의 Boot-Repair는 고급 옵션의 '표준 EFI 파일 사용'을 사용하여 자동으로이 작업을 수행합니다. 또한 현재 .efi 부팅 파일의 복사 본인 현재 bootx64.efi를 백업합니다.
라이브 설치 프로그램에서 하드 드라이브에 efi 파티션을 마운트하십시오. efi 파티션을 마운트하십시오. 부팅 플래그로 어떤 파티션이 FAT32인지 확인하십시오. 종종 sda1 또는 sda2이지만 다양합니다.
sudo mount /dev/sda1 /mnt
이미 존재하지 않는 경우에만
sudo mkdir /mnt/EFI/Boot
sudo cp /mnt/EFI/ubuntu/* /mnt/EFI/Boot
새 폴더가 생성되면 bootx64.efi가 존재하지 않습니다.이 명령을 건너 뛰십시오.
sudo mv /mnt/EFI/Boot/bootx64.efi /mnt/EFI/Boot/bootx64.efi.backup
UEFI에서 grub을 하드 드라이브 부팅 항목으로 설정하십시오. 존재하지 않는 경우 efibootmgr을 사용하여 UEFI를 업데이트해야 할 수도 있습니다.
sudo mv /mnt/EFI/Boot/grubx64.efi /mnt/EFI/Boot/bootx64.efi
필요한 경우 새 UEFI 하드 드라이브 부팅 항목을 추가하십시오.
man efibootmgr
ESP가 sda 또는 기본 드라이브 및 파티션 항목 인 경우 :
sudo efibootmgr -c -L "UEFI Hard drive" -l "\EFI\Boot\bootx64.efi"
ESP가 sda1이 아닌 경우 sdX는 드라이브이고 Y는 efi 파티션이며 NVMe 드라이브도 있습니다.
sudo efibootmgr -c -g -w -L "UEFI hard drive" -l '\EFI\Boot\bootx64.efi' -d /dev/sdX -p Y
sudo efibootmgr -c -L "UEFI hard drive" -l "\EFI\Boot\bootx64.efi" -d /dev/nvme0n1 -p 2
(이것은 Boot-Repair가 II 에서 사용했던 것과 동일합니다 . 현재 권장되지 않음 : /efi/Microsoft/Boot/bootmgfw.efi의 이름을 바꾸고 grub 또는 shim을 / efi / Microsoft / Boot에 복사하고 이름을 bootmgfw.efi로 복사하십시오. grub 메뉴로 부팅하려면 boot Windows 항목 이름을 바꾼 Windows efi 파일을 부팅하려면 grub 메뉴 항목을 수동으로 추가해야합니다 Grub2의 os-prober 항목 boot bootfwfw.efi 항목은 이제 grub이므로 작동하지 않습니다.
efi 파일을 수동으로 이동 한 사용자는 # 6 게시물을 참조하십시오.
http://ubuntuforums.org/showthread.php?t=2101840
http://ubuntuforums.org/showthread.php?t=2219452
http://ubuntuforums.org/showthread.php?t=2221498&p=13012109#post13012109
II. 오래된 복사본으로 "버기 UEFI"에 대한 Boot-Repair 수정 프로그램을 실행 한 경우 실행 취소하는 것이 가장 좋습니다. 그런 다음 bootx64.efi를 사용하도록 위와 같이 변경합니다. 파일을 원래 이름으로 실행 취소하고 이름을 바꾸려면 Boot-Repair의 "EFI 백업 복원"옵션을 선택하면됩니다.
수동으로 또는 Boot-Repair를 사용하여 이름을 바꾸면 Windows 업데이트 후 Windows 파일이 복원되므로 다시 실행해야합니다.
III. shim이 Windows 이름을 갖도록 Boot-Repair의 이름 바꾸기 대신 Windows BCD를 편집하십시오. Windows를 기본값으로 계속 재설정하는 시스템의 경우 일부 시스템은 Windows 내부에서 grub / shim을 등록하는 것이 좋습니다.
Windows 8.1 Ubuntu 13.10 이중 부팅시 시작시 그럽이 표시되지 않음
bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
https://coderwall.com/p/vfyqkg
IV. Description이 Windows 여야하는 경우 UEFI 설명을 변경하십시오. 이것은 실제로 우분투가 있고 Windows가 전혀 설치되지 않은 사람들에게만 효과적입니다.
sudo efibootmgr -c -L "Windows Boot Manager" -l "\EFI\ubuntu\shimx64.efi"
복원 또는 새 Windows UEFI 항목-sda2 인 경우 기본 sda1 add -p 2를 가정합니다 (man efibootmgr -d drive & -p partition 옵션 참조) :
sudo efibootmgr -c -L "Windows Boot Manager" -l "\EFI\Microsoft\Boot\bootmgfw.efi"
sudo efibootmgr -c -L "Windows Boot Manager" -l "\EFI\Microsoft\Boot\bootmgfw.efi" -d /dev/nvme0n1 -p 1
V. 일부 다른 해결 방법으로 부팅 아이콘이 멋진 rEFInd를 설치합니다.
http://www.rodsbooks.com/refind/index.html
http://www.rodsbooks.com/refind/secureboot.html
Ubuntu에 쉽게 설치할 수 있도록 PPA 제공
http://www.rodsbooks.com/refind/getting.html
VI. Ubuntu UEFI 항목 복원 sdX는 드라이브이고 Y는 efi 파티션입니다 (예 : sda2 인 경우)
sudo efibootmgr -c -L ubuntu -l "\EFI\ubuntu\shimx64.efi" -d /dev/sda -p 1
sudo efibootmgr -c -L "Ubuntu" -l "\EFI\ubuntu\shimx64.efi" -d /dev/nvme0nX -p Y
VII. efibootmgr을 사용하여 부팅 순서를 변경하십시오.
VIII. UEFI 항목을 제거하십시오.
mountvol S: /S
EFI 파티션을 S :로 마운트하기 위해 실행 했습니다. 폴더를 올리거나 내리는 데 이상한 문제가 있었지만 한 번에 grubx64.efi 복사본을 폴더를 / EFI / Boot로 이동 한 다음 이름을 bootx64.efi로 바 꾸었습니다.
위 의 답변 은 친구의 HP Pavilion에서는 작동하지 않지만 적절한 해결 방법을 찾았습니다. HP의 펌웨어는 항상 BootOrder
부팅 할 때마다 전원을 덮어 쓰고 Windows를 먼저 설정하지만 여전히을 존중 BootNext
합니다. 그래서 BootNext
매 부팅마다 설정할 시작 스크립트를 작성했습니다 .
운영
efibootmgr
의 숫자 코드를 찾습니다 BootCurrent
. 내 친구의 경우 이것은이었다 0003
.
/etc/systemd/system/boot-linux-next.service
:
[Unit]
Description=Boot Linux next
[Service]
Type=oneshot
# Replace '3' in the next line with the appropriate code.
ExecStart=efibootmgr --bootnext 3
[Install]
WantedBy=multi-user.target
운영
systemctl enable --now boot-linux-next.service
이것은 다른 부팅을 할 경우 다음에 부팅 할 때 수동으로 Linux를 선택해야한다는 것을 의미합니다.