다른 비슷한 질문도 있었던 것으로 알고 있지만 이번 경우는 좀 다른 것 같아요.
시스템은 SSD 2개가 있는 Lenovo T430입니다(하나는 광학 드라이브 베이에 있음).
원래 설치는 메인 SSD의 Win10이었습니다. 듀얼 부팅이 가능하도록 Mint를 추가했습니다.
보조 SSD에서 Kali를 사용하여 트리플 부팅하기로 결정했습니다. 여전히 좋습니다(Kali는 Mint와 Win 10을 모두 선택했습니다).
보조 SSD에 XP와 Kali를 설치한다는 좋은 아이디어를 얻을 때까지는 모든 것이 순조롭게 진행되었습니다(이유가 있으니 걱정하지 마세요). 기본 SSD를 꺼내고 보조 SSD를 다시 제자리에 장착했습니다. 먼저 원본 Kali를 미러링한 다음 드라이브를 지우고 XP를 설치했습니다. 완료되면 최신 버전의 Kali를 설치했습니다. 프로세스 중에 UEFI를 강제로 적용할지 묻는 메시지가 표시되었습니다. 처음에는 거절했지만 드라이브를 지우고 싶은 것 같았는데 나도 분명히하고 싶지 않았습니다. 그렇다면 UEFI를 강제 적용하겠습니다. 말할 필요도 없이 Kali가 설치되어 있는데 XP가 보이지 않습니다(괜찮습니다. XP 설치를 덮어쓰지 않도록 따로 파티션을 나누어 놓았습니다. XP CD로 부팅하고 MBR을 복구한 다음 XP로 부팅했지만, Kali는 보이지 않습니다. 어쨌든 서로 잘 작동하지 않을 수도 있다고 생각했습니다. 걱정하지 마세요. 각 파티션의 이미지를 찍어서 그 중 하나를 사용해야 할 때 드라이브를 다시 이미지화하면 됩니다.
그래서 기본 및 보조 시스템을 원래 구성(기본은 Win 10 + Mint, 보조는 XP 및 액세스할 수 없는 Kali)으로 복원하고 보조 시스템을 삭제한 다음(XP와 Kali 부품을 별도로 이미징한 후) Kali를 다시 설치했습니다. 보조 운영 체제에만 운영 체제가 있습니다. "UEFI를 강제하시겠습니까?"라는 메시지가 다시 떴습니다. 저는 지금 최신 운영체제를 모두 사용하고 있으니 문제없다고 생각하고 예라고 했습니다.
이번에는 메인 서버에 Windows가 표시되지 않습니다. Mint를 보고 시작할 수는 있지만 Windows는 볼 수 없습니다. 파티션이 여전히 gparted에 존재하는 것 같습니다. 복구를 위해 Win 10을 사용해 보았지만 작동하지 않았습니다. Mint를 다시 설치해 보았지만 원래 구성으로 되돌릴 수 있다고 생각했지만 그렇지 않았습니다. Grub을 작성하려고 할 때 Mint가 실패했습니다.
그래서 나는 붙어 있습니다. 보조 드라이브를 지워서 비어 있습니다(지금은 방정식에서 제외 - 너무 복잡하지는 않음).
Windows를 복원하는 방법? 나는 Kali가 실제로 그것을 먹은 것이 아니라 단지 그것을 가리키는 무언가를 덮었을 뿐이라는 것을 압니다. 나는 그것이 거기에 있다는 것과 나에게 필요한 것이 많이 있다는 것을 알았습니다.
도움을 주셔서 미리 감사드립니다. 나는 (분명히) 문제에 빠질 만큼 Linux에 대해 충분히 알고 있지만, 능숙하다고 말할 만큼은 아닙니다.
편집: 사진을 추가합니다. SSD2는 GPT이고 SSD1은 MBR인 것 같나요? 또한 둘 다 2.5인치 SSD인데, 이 노트북은 NVMe 드라이브를 사용하기에는 너무 오래되었습니다. 감사해요!
돕다!
답변1
좋습니다. 먼저 몇 가지 배경 정보를 알아보세요.
기본적으로 UEFI로 부팅되는 운영 체제는 운영 체제가 UEFI NVRAM 부팅 변수 집합으로 실행되는 동안 부팅 구성에 액세스할 수 있습니다. 이는 UEFI 사양의 일부입니다. Linux에서 가장 사용자 친화적인 방법은
efibootmgr
Windows에서 명령을 사용하는 것입니다. 이bcdedit
명령은 관리자로 실행될 때 UEFI 부팅 변수에 액세스할 수 있습니다. 부팅 변수를 보려면efibootmgr -v
Linux에서는 루트로 실행하고bcdedit /enum FIRMWARE
Windows에서는 관리자로 실행하세요.일부 UEFI 펌웨어 구현은 BIOS 구성 메뉴에서 UEFI 부팅 변수에 대한 전체 액세스를 제공하지 않지만 BIOS와 유사한 단순화된 부팅 디스크 선택을 요구합니다. 고급 다중 부팅 시나리오를 구축하려고 할 때 이로 인해 문제가 발생할 수 있습니다. UEFI 부팅 변수의 존재를 인지하고 다양한 설치 프로그램이 잘못되었을 때 이를 편집할 준비를 해야 합니다.
NVMe SSD가 있는 경우 NVMe SSD는 전혀 SATA 드라이브처럼 작동하지 않으므로 시스템 펌웨어는 SSD 부팅을 특별히 지원해야 합니다. 일부 UEFI 펌웨어는 UEFI 모드의 NVMe 장치에서의 부팅만 지원합니다. 이는 일반적으로 운영 체제에 사용 가능한 NVMe 드라이버가 있는 경우 운영 체제가 NVMe 장치에 액세스하는 것을 방지하지 않습니다.
대부분의 UEFI 지원 운영 체제 설치 프로그램은 운영 체제 설치 프로그램의 부팅 모드(BIOS 또는 UEFI)를 감지하고 문제 없이 일치하는 유형의 부트 로더를 설치합니다. Kali는 분명히 "UEFI 강제" 기능을 제공합니다. 즉, 설치 프로그램이 BIOS 스타일 부팅임에도 불구하고 UEFI 부트로더를 설치합니다.
BIOS 스타일 부팅을 사용하면 디스크의 MBR은 한 번에 하나의 부트 로더/관리자만 사용할 수 있습니다. 일반적으로 여러 운영 체제(예: GRUB)를 부팅하는 데 가장 적합한 운영 체제를 선택합니다. 다른 운영 체제가 MBR을 덮어쓰는 경우 외부 부팅 미디어를 사용하여 "지정된 MBR 관리자 운영 체제"를 부팅하고 MBR을 덮어쓸 수 있어야 합니다.
UEFI 스타일 부팅의 경우 부트로더는 표준화된 디렉터리 구조의 ESP 파티션(기본적으로 FAT32 파티션) 내에 포함됩니다.여러 운영 체제용 부트로더는 단일 ESP 파티션에 공존할 수 있습니다.그러나 특정 부팅 로더 파일을 지정하는 UEFI 부팅 변수가 없으면 UEFI 펌웨어는 "마법의" 부팅 로더 파일 이름을 찾습니다. x86_64 하드웨어에서는
\EFI\BOOT\BOOTX64.efi
일반적으로 Windows에서 파일을 두 번째 복사본\EFI\Microsoft\Boot\bootmgfw.efi
으로 이 위치에 배치합니다. UEFI NVRAM 부팅 변수가 손실된 경우에도(예: BIOS 업데이트/새로 고침으로 인해) Windows를 부팅할 수 있습니다. Kali의 "Force UEFI?"는 UEFI GRUB 사본을\EFI\BOOT\BOOTX64.efi
ESP 파티션에 쓰는 것을 의미할 수도 있고 그렇지 않을 수도 있습니다.운영 체제마다 UEFI 지원 수준이 다르며 부팅 방법 선택은 파티션 유형 선택과 관련될 수 있습니다.
- Windows XP(일반 32비트 버전)는 UEFI 모드로 부팅할 수 없으며 GPT 파티션 디스크에 액세스할 수 없습니다. BIOS 스타일 부팅만 지원됩니다.
- 64비트 버전의 Windows XP(드물고 드라이버 찾기가 어려울 수 있음)는 GPT 파티션 디스크에 액세스할 수 있지만 부팅하려면 MBR 파티션 시스템 디스크가 필요합니다. BIOS 스타일 부팅만 지원됩니다.
- Windows 10은 두 가지 부팅 방법을 지원할 수 있지만 BIOS 모드로 부팅하려면 MBR 파티션이 있는 시스템 디스크가 필요하고 UEFI 모드로 부팅하려면 GPT 파티션이 있는 시스템 디스크가 필요합니다. 혼합해서 사용할 수는 없습니다.
- Linux는 일반적으로 임의의 조합으로 부팅하도록 구성할 수 있지만 보다 난해한 조합에는 특별한 주의가 필요할 수 있습니다. MBR 파티션 디스크의 UEFI에는 UEFI 부트로더를 포함하기 위한 0xef 유형의 FAT32 파티션이 필요합니다. GPT 파티션 디스크의 BIOS 스타일 부팅에는 일반적으로 UEFI 부트로더가 포함된 GPT 지원 BIOS와 특수 "biosboot" 파티션이 필요합니다. MBR 및 첫 번째 파티션의 시작 부분. GPT 파티션에서는 이 공간을 사용할 수 없기 때문입니다.
Windows XP와 달리 Windows 10에는 여러 파티션이 필요합니다. UEFI 스타일로 부팅하는 경우 ESP 파티션(다른 운영 체제와 공유 가능), 기본 Windows 시스템 파티션(일반적으로 C: 드라이브) 및 작은 복구 파티션이 필요합니다. 새 설치에는 일반적으로 "Microsoft Reserved" 파티션도 있지만 기술적으로는 반드시 필요한 것은 아닙니다. 이전 버전의 Windows에서 업그레이드한 설치에는 이 파티션이 없을 수도 있습니다.
대부분의 부트 로더/부팅 관리자는 부트 로더와 동일한 부팅 스타일을 사용하여 운영 체제만 부팅할 수 있습니다. 하나의 레거시 OS와 하나의 UEFI 기본 OS로 이중 부팅하는 경우 운영 체제를 전환하는 유일한 방법은 부팅 모드에서 BIOS 메뉴를 사용하거나 "UEFI/Legacy First" 기본 설정 전환을 사용하는 것입니다.rEFInd 부팅 관리자UEFI 기본 부트로더이며 어떤 경우에는 분명히 BIOS 스타일 부트로더를 시작할 수 있지만 모든 시스템에서 작동한다는 보장은 없습니다.
시스템의 BIOS 메뉴가 여러 부팅 방법 옵션을 제공하는 경우 유용합니다.
- 호환성 지원 모듈 활성화/비활성화 = BIOS 스타일 부팅 기능
- BIOS 스타일 부팅 방법으로만 기능을 제한합니다.
- 이동식 미디어에서 부팅할 때 UEFI/BIOS 스타일 부팅 방법을 선호합니다.
- HDD/SSD에서 부팅할 때 UEFI/BIOS 스타일 부팅 방법을 선호합니다.
- 부팅 순서 목록에 BIOS와 UEFI 스타일 부팅 대상을 모두 포함하는 기능도 있습니다.
일부 노트북이나 유명 브랜드 데스크탑은 단순화된 BIOS 메뉴를 제공할 수 있지만 구성 가능성은 매우 제한적입니다. 이러한 경우 시스템이 UEFI를 선호하는지 아니면 BIOS를 선호하는지 파악해야 할 수 있으며, 최악의 경우 OS 설치 미디어를 생성하고 "잘못된" 유형의 부트로더를 의도적으로 비활성화해야 할 수도 있습니다(USB 스틱의 경우 제거 \EFI\boot\bootx64.efi
하여 BIOS 전용이거나 MBR 부팅 코드를 유효한 비부팅 MBR로 교체하여 UEFI 전용으로 만듭니다.
메인 디스크가 GPT로 파티션되어 있고 그 운영 체제가 UEFI를 사용하고 있는 것 같습니다. 이를 확인하려면 fdisk -l
원래 질문에 대한 출력을 실행하고 편집하십시오.
그렇다면 UEFI 부팅 변수가 현재 잘못 구성되었거나 Windows UEFI 부트 로더( /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
Mint가 보는 위치)가 손상되었을 수 있습니다. Linux에서 실행 하여 sudo efibootmgr -v
UEFI 부팅 변수의 현재 상태를 확인하고 출력을 원래 질문으로 편집하거나, 긴 경우 예를 들어 Pastebin 사이트에 넣고 질문에 연결하십시오.
ESP 파티션의 상태를 시각화하는 가장 쉬운 방법은 아마도 sudo tree --charset ASCII /boot/efi
Linux에서 실행하는 것입니다. 원래 질문에 이것을 추가하십시오. /boot/efi/EFI/Microsoft/Boot
언어별 디렉터리가 여러 개 있으므로 더 짧게 만들려면 이 디렉터리의 하위 디렉터리를 생략할 수 있습니다 .
이 정보를 사용하면 나(또는 StackExchange의 다른 사람)가 맹목적으로 추측할 필요 없이 도움을 줄 수 있습니다.
그림에서 볼 수 있듯이 sda
디스크는 MBR 스타일로 분할되어 있지만 efibootmgr -v
출력에는 Windows Boot Manager
과거 어느 시점에 시스템이 UEFI 스타일로 Windows를 부팅했음을 나타내는 줄이 포함되어 있습니다. UEFI 변수는 GPT 파티션의 고유 GUID(Linux)로 참조하는 ESP 파티션을 식별하며 Windows 부팅 관리자 줄의 GUID는 PARTUUID
의 줄에 있는 GUID와 일치하지 않습니다.kali
반면에 ubuntu
행은 MBR 파티션을 참조하며 행에는 0xd1e9685
의 디스크 식별자와 정확히 일치하는 값이 포함되어 있습니다 sda
.
이를 바탕으로 보면 다음과 같습니다.
어느 시점에서 디스크가 GPT에서 MBR로 변환되었거나 sda
Windows를 설치할 때 두 디스크가 모두 이미 존재하고 sda
MBR 스타일로 파티션되어 있었습니다. 그러나 Windows 설치 프로그램은 GPT 스타일로 부팅되므로 적절한 UEFI 스타일 부팅을 위해 ESP 파티션을 GPT 파티션 디스크에 추가할 위치를 찾습니다. 따라서 보조 SSD를 GPT 방식으로 포맷하고 그 당시 완전히 초기화되지 않았을 수 있으므로 ESP 파티션과 Windows 부트로더를 그 안에 넣습니다.
(기회가 주어진다면 ESP를 나머지 Windows와 다른 디스크에 배치하는 경향은 Windows 10 설치의 알려진 문제입니다. 표준 권장 사항은 일시적으로 다른 디스크를 분리하거나 비활성화하는 것입니다(시스템에 1개 이상의 디스크가 있는 경우). 디스크).
Mint를 설치할 때 설치 프로그램은 UEFI 스타일로 다시 부팅되지만 Windows 설치 프로그램과 달리 명시적으로 지시하지 않는 한 디스크를 건드리지 않으므로 sda5
MBR 파티션 디스크에 자체 ESP 파티션(파티션 유형 0xef)을 생성합니다.
첫 번째 Kali는 분명히 보조 SSD에 자체 ESP 파티션을 생성했지만 GPT 파티션 내에서 각 파티션에는 UEFI가 각 운영 체제가 부팅에 사용하는 ESP 파티션을 식별하는 데 사용하는 고유한 GUID가 있으므로 이로 인해 혼동이 발생하지 않습니다.
XP를 설치하기 위해 기본 SSD를 분리하고 보조 SSD를 다시 제자리에 놓으면 0xee 유형의 파티션이 나타날 수 있습니다. 이는 GPT 파티셔닝 표준의 일부이며 디스크가 사용 중임을 GPT를 지원하지 않는 운영 체제에 나타내는 데 사용되는 가상 MBR 파티션 테이블입니다. 그러나 디스크가 사용되지 않았다고 가정하고 이를 무시했습니다. 따라서 사용자도 모르게 Windows 부트 로더를 덮어썼습니다.
Kali의 두 번째 설치도 UEFI 모드로 부팅해야 하며 Mint와 마찬가지로 MBR에 ESP 파티션을 생성합니다. Kali에서 "Force UEFI"는 두 가지를 의미할 수 있습니다.
- 기존 MBR 부팅 코드가 제거되므로 디스크가 MBR 스타일로 부팅되지 않습니다.
- 또한 부트로더의 복사본을
\EFI\BOOT\BOOTx64.efi
ESP 파티션에 기록합니다.
결과적으로 이제 동일한 디스크에 부팅 방법이 다른 두 개의 운영 체제가 있습니다. Kali의 UEFI GRUB는 Windows XP를 부팅할 수 없습니다. GRUB에서 XP 부트로더로 점프하려면 BIOS 호환성을 다시 켜야 하는데 GRUB는 이를 수행하는 방법을 모르기 때문입니다. 귀하의 시스템은 UEFI보다 레거시 모드로 부팅하는 것을 선호하는 것 같습니다. XP의 MBR을 수정한 후 펌웨어가 바로 BIOS 모드로 부팅되기 때문입니다. 이로 인해 16비트 BIOS 호환 모드로 인해 Kali의 UEFI GRUB로 전환이 불가능해집니다. UEFI GRUB의 64비트 코드를 의미 있게 사용할 수는 없습니다.
디스크를 원래 위치로 다시 이동하고 보조 디스크를 다시 지우면 이제 Windows 부트 로더가 두 번 지워집니다. Windows 10 부팅 복구는 MBR 파티션 디스크에서 대부분의 Windows(UEFI 스타일 부팅용으로 구성)를 볼 수 있는 반면, GPT 파티션 디스크에는 ESP 파티션이 표시되지 않기 때문에 혼란스럽습니다. Mint 설치 프로그램도 어떤 면에서는 혼란스러울 수도 있지만, 그게 가장 중요한 것은 아닐 것입니다.
이 상황에서 벗어나 일반 구성으로 돌아가는 가장 좋은 방법은 아마도 Mint를 사용하여 Windows sda2
디스크에 액세스하고 중요한 모든 것을 이동식 미디어나 기타 안전한 위치에 복사하는 것입니다.
sudo mkdir /windows_c
sudo mount -t ntfs-3g /dev/sda2 /windows_c
cd /windows_c
cp <whatever> </some/where/safe>
그런 다음 보조 SSD를 분리하고 기본 SSD를 지우고 Windows 10 UEFI 스타일 설치를 시작합니다. 가능하다면 모든 것이 UEFI 스타일로 작동하도록 BIOS 설정을 변경하여 레거시 BIOS 스타일 호환성을 끄는 것이 좋습니다. 그런 다음 측면에 Mint를 설치하십시오.
그런 다음 기본 SSD를 제거하고 보조 SSD를 해당 위치에 설치한 다음 BIOS 스타일 호환성을 다시 켜고 XP를 설치할 수 있습니다. 이제 두 디스크를 원래 위치로 다시 이동하고 UEFI 모드에서 두 번째 디스크에 Kali를 설치합니다("Force UEFI"를 선택하지 않음). 그런 다음 Mint로 부팅하고 os-prober
패키지가 설치되었는지 확인한 다음 sudo update-grub
Kali를 Mint의 부팅 메뉴로 실행하세요.
이제 Kali 또는 Mint와 함께 GRUB을 사용하든 둘 다 Kali, Mint 및 Windows 10의 세 가지 옵션을 제공해야 합니다. 안타깝게도 XP에 들어가려면 BIOS 설정으로 가서 보조 디스크에서 레거시 스타일을 부팅하도록 명시적으로 선택해야 합니다.
답변2
다음 명령을 사용하여 디스크를 다시 GPT로 변환합니다 gdisk
.
sudo gdisk /dev/sda
출력은 다음과 유사해야 합니다.
$ sudo gdisk /dev/sda
[sudo] password for xxx:
GPT fdisk (gdisk) version 1.0.3
Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present
***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory. THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by
typing 'q' if you don't want to convert your MBR partitions
to GPT format!
***************************************************************
Warning! Secondary partition table overlaps the last partition by
33 blocks!
You will need to delete this partition or resize it in another utility.
Command (? for help):
위의 경고가 표시되지 않으면 w디스크에 변경 사항 쓰기를 누른 다음 로 확인하세요 y. 그런 다음 다시 실행 sudo gdisk /dev/sda
하고 키를 눌러 pEFI 파티션이 코드와 함께 나열되는지 확인하십시오 EF00
. 그렇지 않은 경우 유형을 변경해야 합니다(옵션 t, 파티션 번호 선택, 입력 ef00
, w변경 사항 쓰기, 로 확인 y). 그렇지 않으면 로 종료합니다 q. 그런 다음 다시 시작하십시오. 운이 좋으면 Windows가 다시 시작될 것입니다.
경고가 표시되면 종료하세요 q. 디스크 끝에 보조 파티션 테이블을 위한 공간을 확보하려면 위에서 언급한 블록 수에 따라 Mint 파티션의 크기를 미리 조정해야 합니다. 당신은 그것을 사용할 수 있습니다 gparted
. 아니면 /dev/sda6
다시 설치하고 싶다면 삭제하세요. 그런 다음 반복하십시오.
레거시 모드에서 다시 부팅되지 않도록 Bios 의 부팅 모드를 ->에서 UEFI/Legacy Boot
변경할 수 있습니다.Both
UEFI only
기존 "kali" 및 "ubuntu" UEFI 부팅 항목을 삭제할 수도 있습니다 efibootmgr
.
sudo efibootmgr -b19 -B
이 Boot0019* kali
항목을 삭제하세요.
답변3
업데이트: 이제 Windows로 부팅할 수 있습니다.
이것이 내가 한 일입니다:
- Freddy가 제안한 대로 GPT로 변환합니다. 정상적으로 Mint를 다시 설치할 수는 있었지만 문제 자체가 해결되지는 않았습니다.
- Mint를 다시 설치했습니다(Grub이 Windows를 복원하기를 바랐습니다. 그렇지 않았지만 grub 없이 Mint로 직접 부팅되었습니다. 즉 어떤 이유로든 Windows가 표시되지 않음을 의미합니다)
- Win10 설치 USB로 부팅하고 부팅 복구를 시도해보세요. 실패했기 때문에 명령 프롬프트로 이동했습니다. 거기서 나는 여기에 있는 일련의 명령을 시도했습니다.https://docs.Microsoft.com/en-us/Windows/client-management/advanced-troubleshooting-boot-problems
저는 방법 3을 직접 사용합니다. 그림과 같이 D:\Windows에서 Windows를 찾았습니다. 그래서 나는 그것이 여전히 거기에 있고 작동한다는 것을 알고 있습니다.
재부팅 후 이번에는 Grub에 접속했지만 여전히 Grub 메뉴에서 Windows를 찾을 수 없습니다.
다시 재부팅하고 "일회성 부팅 메뉴"로 들어간 다음 Windows 부팅 관리자를 시도했습니다(이전에는 매번 실패했습니다). 이번에는 Windows로 부팅되었습니다.
아직 마법의 조합이 무엇인지 잘 모르겠지만 GPT 변환이 1단계이고 BCD 오류 수정이 2단계이고 이제 Windows 부팅 관리자가 이를 볼 수 있다고 생각됩니다.