그럽 메뉴가 나타나지 않습니다

그럽 메뉴가 나타나지 않습니다

Lenovo z570에 Windows 8.1이 설치되어 있습니다. 다음을 사용하여 만든 USB에서 Linux Mint 17을 설치했습니다.유미소프트웨어. 설치 후에는 grub 메뉴가 나타나지 않고 Windows가 자동으로 시작됩니다. Windows에서도 빠른 시작을 꺼두었습니다. 보안 부팅도 꺼야 한다는 글을 읽었습니다. 그러나 msinfo32에는 보안 부팅: 지원되지 않음이라고 표시됩니다. 나는 또한 라이브 CD에서 grub-repair를 시도했습니다. 여전히 grub 부팅 메뉴를 얻을 수 없습니다. 어떤 문제가 발생할 수 있나요?

답변1

이 질문에 대한 대답은 다양합니다.

UEFI !=BIOS

가장 먼저 해야 할 일은 BIOS 관련 부팅 지식을 잊어버리는 것입니다. 여기서는 해당 지식이 적용되지 않습니다. MBR 없음, 없음두 번째 단계부트로더, 아니요시작하다분할. 다행히도 이러한 것들은 곧 25년 전의 16비트 BIOS만큼 쓸모없게 될 것입니다.INT-13H리얼 모드 디스크 인터페이스를 지원하도록 설계되었습니다.

부팅 프로세스

다음으로 실행 시작을 고려해야 합니다. 컴퓨터가 부팅되면 펌웨어는 EFI 실행 파일을 호출하기 전에 운영 체제 커널 또는 운영 체제 커널을 호출하도록 지시하는 중복 체인 로더 등의 작업을 수행합니다.

빠른 시작

먼저 전원 및 중단을 확인한 다음 비디오를 확인합니다. 이전 리얼 모드 비디오 BIOS oprom을 호출하고 완료될 때까지 기다리거나 보호 모드 GOP 비디오 ROM을 감지하고 스위치를 켜고 계속합니다. 이는 크게빠른 시작대부분의 인터페이스에서. 펌웨어는 다음을 처리하는 리얼 모드 비트를 사용해야 합니다.CSM (호환성 지원 모듈)또는 일부 GOP 표준을 자동으로 구현하고 나머지 비디오 초기화 작업은 곧 호출될 운영 체제에 맡길 수도 있습니다. 분명히 GOP 호환 비디오 카드가 있습니다. 이 기능을 활용하는 것은 Windows 특정 옵션이 아닙니다.

여전히 BIOS가 아닙니다.

또한 OEM이 마더보드의 플래시 메모리에 저장한 모든 UEFI 드라이버를 로드하지만 대부분의 경우 이를 무시할 수 있으며 주요 예외는 FAT 파일 시스템 드라이버입니다. 앞서 언급했듯이 MBR이 없거나시작하다파티션이 있지만EFI 시스템분할. 둘 사이에는 근본적인 차이점이 있습니다. 전자는 BIOS 펌웨어가 원시 디스크의 첫 번째 섹터를 읽고 거기에서 발견된 모든 코드를 실행하는 파티션인 반면, 후자는 UEFI에 의해 파티션으로 마운트되는 파티션입니다. 펌웨어. 파일 시스템에서 파일을 실행합니다.

ESP

최대 1개가 있습니다.특히각 GPT 포맷 디스크에 대해 레이블이 지정된 파티션입니다. 이미 GPT로 포맷된 드라이브가 있거나 앞으로도 없을 것입니다.빠른 시작먼저 창문입니다. 현재 귀하의 USB 디스크의 포맷 유형을 알 수 없습니다. 일부 UEFI 펌웨어의 경우 이동식 디스크는 레이블을 지정할 필요가 없으므로 특별한 경우입니다.특히파티션 테이블이 전혀 없는 경우, 즉 일반적으로 FAT 파일 시스템으로 완전히 파티션을 나누거나 포맷한 적이 없는 USB 디스크에서 부팅이 가능합니다. 이는 반드시 신뢰할 수 있는 기능은 아니지만 일반적입니다.

0000 시작

펌웨어가 마운트되면특히파티션을 나누면 이미 메모리에 저장된 경로가 로드됩니다. 메모리 모듈은 펌웨어가 부팅 사이에 필요한 정보를 저장하는 온보드 NVRAM 칩입니다.Boot0000-{GUID}바꾸다. 귀하의 경우 이 변수의 내용은 다음과 같습니다.${ESP-GUID}\EFI\BOOT\BOOTx64.efi거의 항상 Microsoft의 자체 부팅 관리자를 가리킵니다.(이것은아니요 BOOTMGR.efi, 그건 그렇고-MS 시작 프로세스 중에 나타납니다).

x64.efi 부팅

일반적으로 다음을 수행할 수 있습니다.

mv ${ESP}/EFI/BOOT/BOOTx64.efi ${ESP}/EFI/BOOT/BOOTx64.efi.bak
mv ./${mybootmgr}.efi ${ESP}/EFI/BOOT/BOOTx64.efi

...NVRAM 변수를 전혀 편집할 필요가 없습니다.

NVRAM

EFI 모드로 부팅할 때 Linux 커널은 자동으로 efivarfs커널 모듈을 로드하고 NVRAM 내용을 마운트 해야 합니다 /sys/firmware/efi/efivars. ls이 디렉터리에서 모든 efi 변수의 이름을 볼 수 있습니다. 이것은 내 변수의 내용입니다 Boot0002-{GUID}.

 printf %b $(
     od -An -t o1 -w1 -v \
         /sys/firmware/efi/efivars/Boot0002-* | 
     sed 's/ */\\0/'
 )
 #OUTPUT �^��~�J�3K��8���0\EFI\BOOT\BOOTX64.EF�AMBO

말도 안되는 문자는 내 Linux 시스템의 UTF-8 인코딩이 아니라 UEFI UTF-16 인코딩의 결과입니다. 어쨌든, 그 쓰레기가 내 것이라고 상상해보세요유스프의GUID. 내 생각엔 더 이상 없는 것 같아Boot0000-{GUID}변수 - 어느 순간 삭제했나봐요.

efibootmgr

만약 그렇게 했다면 아마도 이 프로그램을 사용해서 했을 것입니다 efibootmgr. 인수 없이 호출하면 시작 순서가 인쇄됩니다.

efibootmgr
#OUTPUT
BootCurrent: 0002
Timeout: 3 seconds
BootOrder: 0002,000F,000D
Boot0002* UEFI: KINGSTON SV300S37A120G
Boot000D* Hard Drive 
Boot000F* CD/DVD Drive 

다음은 해당 페이지의 일부입니다 man.

man efibootmgr 2>/dev/null | 
sed '/^ *DESCRIPTION/,/^ *OPTIONS/!d;//c\\'
#OUTPUT
   efibootmgr is a userspace application used to  mod‐
   ify  the  Intel Extensible Firmware Interface (EFI)
   Boot Manager.   This  application  can  create  and
   destroy boot entries, change the boot order, change
   the next running boot option, and more.
   Details on the EFI Boot Manager are available  from
   the  EFI  Specification,  v1.02 or later, available
   from:
    <URL:http://developer.intel.com>
          Note: efibootmgr requires  that  the  kernel
          support access to EFI non-volatile variables
          through      /sys/firmware/efi/vars       or
          /sys/firmware/efi/efivars/.

UEFI: 배워보세요

내 개인적인 조언은 지금부터 따라하라는 것입니다내 다른 답변거기서부터Rodsbooks.com거기에 링크된 것처럼, 당신 grub은 완전히 포기하게 됩니다. 이것은 당신이 곧 알게 되기를 바라는 것처럼 당신의 상황을 불필요하게 복잡하게 만드는 것입니다. 그러나 부팅 시 펌웨어가 호출하는 EFI 실행 파일을 선택하는지 여부에 관계없이 다음 내용 grub을 읽어야 합니다. Rodsbooks.com.

UEFI 부팅 가능한 USB 만들기

다음 셸 섹션(Mint 설치 중 기본 선택 제공)은 MBR 플래시 드라이브를 자체 EFI 시스템 파티션 및 부팅 관리자가 있는 UEFI 부팅 가능 GPT 형식 드라이브로 변환할 수 있어야 합니다. 약간의 주의를 기울이면 동일한 스틱에 다른 설치를 쉽게 추가할 수 있으며 Windows 설치도 가능하며 장기적으로 유지 관리가 훨씬 쉽습니다. tar파일 시스템 권한을 보존하기 위해 몇 가지 명령줄 옵션을 지정해야 한다고 느끼기 때문에 이에 대해 약간 회의적이라는 점을 인정합니다.(누군가 더 알고 싶나요?). 그래도 저에게는 잘 작동하는 것 같습니다 qemu. 부팅 가능한 USB Mint Live 디스크에서 부팅 가능한 USB Mint Live 디스크로 전환했습니다.

그러나 만족스러운 부팅 관리자(예: rEFInd)를 사용하여 기본 부팅 가능한 파티션을 구성하려는 경우 다음을 수행할 수 있습니다.할 수 있다현재 가지고 있는 것과 같은 레거시 형식의 부팅 디스크에서 부팅합니다.

다음 명령을 실행하는 경우 다음 경로를 입력해야 합니다 BIG_LONG_TAR_BACKUP_LOCATION_VAR_PATH.아니요디렉토리 경로 에 /tmp/usbwd그대로 생성되었습니다.또한 삭제이 디렉토리를 통과할 때. 필요할 것이예요적어도unziptar, , gdisk, wget및 패키지가 작동하도록 설치되었습니다 coreutils. 모두 시도하려는 Linux 라이브 부팅 가능 디스크에 이미 설치되어 있을 수 있지만 제가 생각할 수 있는 모든 패키지 관리자를 통해 사용할 수도 있습니다.

mkdir -p /tmp/usbwd/mintmnt; cd /tmp/usbwd; mkdir esp
wget -qO ./refind.zip \
    'http://sourceforge.net/projects/refind/files/0.8.3/refind-bin-0.8.3.zip/download'
unzip -qq ./refind.zip
sudo sh -se -- "/dev/${USBDISK}" \
    "${PATH_TO_A_DIR_WHERE_YOU_CAN_SAVE_A_BACKUP_OF_MINT_INSTALL}" \
<<\SUDO
    mount "${1}1" ./mintmnt
    tar -C ./mintmnt -czf "$2" ./; umount ./mintmnt
    printf %s\\n o y n '' '' \+750M ef00 n 2 '' '' '' w y |
        gdisk "${1}" || :
    mkfs.vfat -n USBESP "${1}1"
    ./refind*/install.sh --usedefault "${1}1"
    mkfs.${YOUR_FS_OF_CHOICE=ext4} -L MINTROOT "${1}2"
    mount "${1}1" ./esp; mount "${1}2" ./mintmnt
    mkdir ./esp/EFI/mintboot
    >./esp/EFI/mintboot/refind_linux.conf \
        printf %s\  \
            '"Linux Mint"' \
            '"root=/dev/disk/by-label/MINTROOT quiet splash"'
    cd ./mintmnt && tar -xzf "$2"
    >>./etc/fstab \
        printf %s\\n \
            '/dev/disk/by-label/USBESP /esp vfat defaults 0 1' \
            '/esp/EFI/mintboot /boot none bind,defaults 0 0'
    cp -T ../esp/EFI/mintboot ./boot/vmlinuz* ./boot/init*
    cd ..; umount ./mintmnt; umount ./esp
SUDO
    cd ~; rm -rf /tmp/usbwd

답변2

Hiren 소프트웨어를 사용하여 라이브 창으로 부팅한 다음(버전에 상관없이) 닫으십시오. 모든 새로운 설정은 디스크에 기록되며 Windows에서 생성된 디스크를 쉽게 마운트할 수 있습니다.

관련 정보