GRUB2의 새로운 메뉴 항목, "파일을 찾을 수 없음" 및 "먼저 커널을 로드해야 합니다" 오류

GRUB2의 새로운 메뉴 항목, "파일을 찾을 수 없음" 및 "먼저 커널을 로드해야 합니다" 오류

GRUB2 목록에 새 메뉴 항목을 추가하고 싶습니다. 이것이 내가 시도하는 방법과 필요한 정보입니다.

에로스GRUB2 목록에서 "Debian Wheezy" 메뉴 항목을 선택한 후:

error:file not found
error:you need to load the kernel first

/etc/grub.d/12_debian

#!/bin/sh -e
cat << EOF
menuentry "Debian Wheezy" {
set root=(hd0,5)
linux /boot/vmlinuz-3.2.0-3-amd64
initrd /boot/initrd.img-3.2.0-3-amd64
}
EOF

ls /시작

config-3.2.0-3-amd64  initrd.img-3.2.0-3-amd64  vmlinuz-3.2.0-3-amd64
grub                  System.map-3.2.0-3-amd64

분할

sda1 - ntfs - Windows boot
sda2 - ntfs - Windows C:
sda3 - ntfs - Windows D:
sda4 - extended
-sda5 - ext4 - /boot
-sda6 - lvm - Debian testing
And inside sda6 there's LVM group calld G1 divided into volumes:
home, root, tmp, usr, var, swap

원천모든 설정이 실패했을 때 이것을 사용했습니다.

GRUB2 명명 규칙

GRUB 2 부트로더 - Dedoimedo.com의 전체 튜토리얼

뭐가 문제 야?

편집 #1

fdisk -l

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      206847      102400    7  HPFS/NTFS/exFAT
/dev/sda2          206848    83473739    41633446    7  HPFS/NTFS/exFAT
/dev/sda3        83473799   935802314   426164258    7  HPFS/NTFS/exFAT
/dev/sda4       935802315   976771071    20484378+   f  W95 Ext'd (LBA)
/dev/sda5       935802880   936779775      488448   83  Linux
/dev/sda6       936781824   976771071    19994624   8e  Linux LVM

편집 #2

그럽 콘솔

linux /[TAB]
Possible files are:
lost+found/ bin/ share/ sbin/ lib/ include/ src/ games/ local/

set root=(hd0,msdos5)
linux/[TAB]
Possible files are:
lost+found/ config-3.2.0-3-amd64 vmlinuz-3.2.0-3-amd64 grub/ 
System.map-3.2.0-3-amd64 initrd.img-3.2.0-3-amd64

Grub 콘솔, 테스트 시작

set root=(hd0,msdos5)
linux /vmlinuz-3.2.0-3-amd64 root=/dev/G1/root
initrd /initrd.img-3.2.0-3-amd64
boot

#Many, many, many lines of text. After few seconds they stop. The most
#interesting i think are:

ALERT! /dev/G1/root does not exist. Dropping to a shell!
/bin/sh: can't access tty; job control turned off

/etc/grub.d/12_debian을 다시 시도해 보세요.

#!/bin/sh -e
cat << EOF
menuentry "Debian Wheezy" {
insmod ext4
set root=(hd0,msdos5)
echo 'loading...'
linux /vmlinuz-3.2.0-3-amd64
echo 'starting kernel...'
initrd /initrd.img-3.2.0-3-amd64
}
EOF

결과:

error:file not found
loading...
starting kernel...

편집 #3

/boot/grub/grub.cfg의 일부

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Debian GNU/Linux, with Linux 3.2.0-3-amd64' --class debian --    class gnu-linux --class gnu --class os {
    insmod gzio
    insmod lvm
    insmod part_msdos
    insmod ext2
    set root='(G1-root)'
    search --no-floppy --fs-uuid --set=root 94215fad-dcbe-4339-92be-f562b1b37133
    echo    'Loading Linux 3.2.0-3-amd64 ...'
    linux   /boot/vmlinuz-3.2.0-3-amd64 root=/dev/mapper/G1-root ro  quiet
    echo    'Loading initial ramdisk ...'
    initrd  /boot/initrd.img-3.2.0-3-amd64
}
### END /etc/grub.d/10_linux ###

/etc/grub.d/12_debian 다음에 시도해 보세요

#!/bin/sh -e
cat << EOF
menuentry "Debian Wheezy" {
insmod ext4
set root=(hd0,msdos5)
echo 'loading...'
linux /vmlinuz-3.2.0-3-amd64 root=/dev/mapper/G1-root
echo 'starting kernel...'
initrd /initrd.img-3.2.0-3-amd64
}

결과

error:file not found
loading...
starting kernel...

답변1

전용 /boot 파티션(아마도 필요하지 않음)이 있기 때문에 해당 파티션에는 /boot라는 디렉터리가 없으므로 이러한 파일을 찾을 수 없습니다. 경로에서 /boot를 제거하십시오.

답변2

menuentry "Debian Wheezy" {
insmod ext4
set root='(hd0,msdos5)'
echo 'loading ..'
linux /boot/vmlinuz-3.2.0-3-amd64
echo 'starting kernel ...'
initrd /boot/initrd.img-3.2.0-3-amd64
}

답변3

흠...오래된 스레드이지만 유효한 답변을 생성하지 못하는 것 같습니다. 최근에 비슷한 문제가 발생했는데 해결되었습니다. 비슷한 문제가 있는 다른 사람은 변경하는 것이 좋습니다.

set root='(hd0,msdos5)'

다음에

 search --no-floppy --fs-uuid --set=root '5bbd33b6-3333-3a33-3333-8045d333bb63'

여기서 1234-567A는 다음에서 얻은 원하는 파티션의 UUID입니다.

sudo blkid /dev/sda5

결과는 아래와 같습니다.

/dev/sda1: LABEL="SYSTEM" UUID="5bbd33b6-3333-3a33-3333-8045d333bb63" TYPE="ext4" PARTLABEL="EFI system partition" PARTUUID="0c33e3ab-d3dc-3af3-333d-a33eee3c333c"

관련 정보