이 질문의 나머지 부분에서는 "내부"가 있는 것은 내 노트북의 내부 eMMc 드라이브를 나타내고, "USB"가 있는 것은 부팅 가능한 USB 플래시 드라이브를 나타내고, "Debian"은 Debian Buster를 나타내고, "Windows"는 "Windows"라고 가정할 수 있습니다. 윈도우 10을 의미합니다.
내부 드라이브에 Windows를 설치하고 부팅 가능한 USB 플래시 드라이브에 Debian을 설치했습니다. 내 부팅 설정에는 기본 부트로더보다 Grub 부트로더가 우선적으로 적용됩니다.
내 문제는 부팅 가능한 드라이브가 연결되지 않을 때마다 Grub이 드라이브를 찾을 수 없다는 것입니다.아무것명령줄 인터페이스를 시작합니다. 일단 연결되면 그래픽 인터페이스를 통해 Debian과 Windows 중에서 표준을 선택할 수 있었습니다.
나는 Stack Exchange에서 비슷한 답변을 찾았지만 내 물건을 사용할 만큼 좋지 않다고 말할 때 나를 믿으십시오.가지다발견을 통해 문제를 해결할 수 있습니다. 나는 인용한다:
이 중 어느 것도 내 상황과 관련이 없습니다. 왜냐하면 나는할 수 있는USB 스틱을 연결하고 두 운영 체제를 모두 실행한 후 다음을 수행할 수 있습니다.ESCCLI Grub 이전F9내 시작 장치를 선택합니다(Windows만 사용 가능).
나는 붙어있다. 이상적으로는 USB 스틱이 연결되지 않은 경우 컴퓨터가 자동으로 Windows로 부팅되기를 원합니다. 또는 이것이 가능하지 않은 경우 저격할 필요 없이 부팅 방법을 선택할 수 있습니다.ESCCLI Grub이 시작되기 전.
USB 플래시 드라이브를 연결할 때 Grub을 수행하십시오. USB 플래시 드라이브가 Grub 상태인 경우아니요연결됨: 내가 사용할 때의 시작 옵션ESC그리고F9: "debian"은 Grub CLI를 다시 불러옵니다.
답변1
UEFI 기반 시스템을 사용하고 있는 것 같습니다. GRUB와 Windows 부트 로더는 모두 (hd1,1)
GRUB가 보는 EFI 시스템 파티션(줄여서 ESP)에 설치됩니다 .
Debian 10의 기본 UEFI GRUB에는 기본적으로 기본 실행 파일에 모든 GRUB 모듈이 포함되어 있으므로 grubx64.efi
여기서는 파일 시스템 드라이버 부족이 문제가 되지 않습니다. 내부 eMMC에는 표준 Windows 파티션이 있습니다.
(hd1,1)
ESP이며 크기가 약 260M인 FAT32 파일 시스템을 가지고 있습니다(4k 블록 크기 디스크에서 FAT32가 지원하는 최소 크기).(hd1,2)
전혀 포맷되지 않은 "Microsoft Reserve" 파티션이며 크기는 약 128M입니다. 이는 Windows 동적 디스크(Windows용 Linux LVM과 유사) 또는 기타 변환으로 쉽게 변환할 수 있도록 하기 위해 존재합니다.(hd1,3)
NTFS 파일 시스템을 사용하는 기본 Windows 시스템 드라이브입니다.(hd1,4)
NTFS 파일 시스템이 있는 또 다른 파티션(아마도 Windows 복구 파티션)입니다.
모든 Linux 파티션은 외부 플래시 드라이브에 있습니다. 문제는 Debian 10이 기본적으로 아주 작은 GRUB 구성 파일만 ESP에 설치한다는 것입니다. 본질적으로 이는 UUID로 Linux 디렉토리를 포함하는 파일 시스템을 식별 /boot
하고 GRUB에게 거기에서 실제 구성을 로드하도록 지시합니다. 분명히 이것은 외부 플래시 드라이브의 연결이 끊어지면 발생하지 않습니다. 실제 구성 파일에는 Windows용 부팅 메뉴 정의를 포함한 모든 부팅 메뉴 정의가 포함되어 있습니다. 이것이 없으면 GRUB는 명령 프롬프트만 표시할 수 있습니다.
다음과 같이 Linux를 부팅하고 실제 GRUB 구성 파일을 ESP에 복사하여 이 문제를 해결할 수 있습니다.
mv /boot/efi/EFI/debian/grub.cfg /boot/efi/EFI/debian/grub.cfg.mini
cp /boot/grub/grub.cfg /boot/efi/EFI/debian/grub.cfg
그러나 이 update-grub
명령(Debian의 커널 업데이트 패키지에서 사용됨!)은 새 위치를 자동으로 업데이트하지 않습니다. 다행스럽게도 명령은 스크립트이므로 쉽게 수정할 수 있습니다.
먼저전환업데이트가 변경 사항을 덮어쓰지 않도록 패키지 관리 시스템에서 다음을 수행합니다.
dpkg-divert --local --rename --add /usr/sbin/update-grub
그러면 /usr/sbin/update-grub
현재 이름이 자동으로 변경됩니다./usr/sbin/update-grub.distrib
향후 업데이트도 새 위치로 리디렉션합니다..
이제 스크립트를 원래 위치로 다시 복사하고 즐겨 사용하는 텍스트 편집기를 사용하여 수정할 수 있습니다.
cp -a /usr/sbin/update-grub.distrib /usr/sbin/update-grub
처음에 스크립트는 다음과 같습니다.
#!/bin/sh
set -e
exec grub-mkconfig -o /boot/grub/grub.cfg "$@"
세 번째 줄을 다음과 같이 수정해야 합니다.
#!/bin/sh
set -e
exec grub-mkconfig -o /boot/efi/EFI/debian/grub.cfg "$@"
주요 시스템 업데이트(예: Debian 10 "buster"에서 Debian 11로) 후에는 개편이 여전히 작동하는지, 새 버전이 스크립트에 변경 사항을 가져오지 않았는지 확인 /usr/sbin/update-grub.distrib
하고 수정 해야 합니다./usr/sbin/update-grub
update-grub
실제로 GRUB 글꼴 파일(~ /boot/grub/fonts/unicode.pf2
) /boot/efi/EFI/debian/fonts/unicode.pf2
, GRUB 메뉴 배경 이미지 또는 사용 중인 GRUB 테마와 관련된 유사한 파일 등 일부 다른 파일을 ESP에 복사해야 할 수도 있습니다.
답변2
USB 디스크에는 전체 Debian 볼륨( /boot
디렉토리 포함)이 포함되어 있습니다. 이것이 없으면 EFI 시스템 파티션에 내장된 1단계 grub 부트로더는 grub 구성 파일, 모듈 vfat
(따라서 파일 시스템이 없는 것으로 보입니다 (hd1,2)
) 또는 커널을 로드할 수 없습니다 initramfs
.
공간이 있으면 USB 디스크의 파티션을 내부 저장소로 이동하고 grub 구성을 다시 생성하여 grub이 사용자가 수행한 작업을 이해할 수 있지만, 연결되어 있지 않은 경우 이 시점에서 설치를 다시 생성하는 것이 더 쉽습니다.