오류 : '/grub/i386-pc/normal.mod'파일을 찾을 수 없습니다


46
error: file '/grub/i386-pc/normal.mod' not found.
grub rescue>

내가 무엇을 할 수 있을지? 난 그냥 앉아서 쳐다 봐.

약 4 년 동안 사용하지 않은 오래된 넷북 (Dell Inspiron 1010)을 찾았습니다. Windows XP를 Ubuntu 12.10으로 교체했습니다. 부팅 가능한 USB 드라이브를 사용했습니다. 설치하고 재부팅했습니다. normal.mod찾을 수없는 메시지 가 나타납니다.

어떻게해야합니까? 유형 exit, reboot또는 quit? 다시 설치해야합니까?


1
아래의 답변은 작동하지 않습니다. 이 작업은 작동합니다 : OS를 다시 설치하고 "다른 작업 수행"으로 이동 한 다음 파티션 테이블을 생성하십시오 use your windows partition as your primary boot device. 마지막 단계는 필수적입니다. / boot를 사용하지 마십시오. 다른 해결책이있을 수 있습니다. 시작하는 동안 부팅 장치를 수동으로 변경해보십시오. 그러나 나는 그것이 효과가 있다고 생각하지 않습니다. 이것은 우분투에서 17.10을 포함하여 오래 지속 된 문제입니다. 감사합니다.
Wolfpack'08

이 지침 중 어느 것도 나를 위해 일하지 않았습니다. 실제로 다양한 복구 도구를 사용하면 문제가 악화되었습니다. grub 일종의 재설치를 얻을 수 있었지만 lvm2를 사용하기 때문에 커널을 시작하지 못했습니다. lvm2를 사용하는 경우이 문제가 발생하면 OS를 다시 설치해야합니다. 내가 알 수있는 한, 실패한 커널 업데이트 + grub + lvm2 조합에서 복구가 없습니다. lvm2는 Ubuntu Server LTS에 대해 한 번에 푸시되었지만 공식 지원이 거의 없습니다. 데이터를 백업하고 OS를 다시 설치하고 lvm2를 다시 터치하지 않습니다. 내 수업을 배웠습니다.
CubicleSoft

1
나는 lvm2에서 이미 전환했으며 그 이후로 문제가 없었습니다. 내 인프라 중 어느 것도 더 이상 사용하지 않습니다. 기본 시스템 복구 솔루션 (그래픽 및 CLI)은 LVM을 인식하지 못하거나 거의 알지 못하기 때문에 LVM을 사용하지 않는 충분한 이유입니다. 시스템을 복구하라는 지시를 따랐지만 작동했지만 나중에 문제가 다시 발생할 수 있습니다. OS를 다시 설치하고 LVM을 버리는 것이 가장 빠르고 빠른 옵션이었습니다.
CubicleSoft

1
내 경우에는 @Wolfpack 문제는 normal.mod를 설정하지 않으면 우분투를 다시 설치하지 못하게하고 lgoin이 작동하지 않는다는 것입니다. 내가 무엇을 할 수 있을지?
HoCo_

1
@ Wolfpack'08 솔루션을 답변으로 다시 게시하십시오. 의견으로 솔루션을 게시하면 사이트 원칙을 우회합니다. 또한 언급해야 하는 더 그들에게 있기 때문에 "작동 결코 아래의 대답".
Melebius

답변:


40

Grub에는 부팅시로드되는 작은 코어 이미지가 있습니다. 핵심 이미지는 추가 기능을 제공하는 모듈을 동적으로로드합니다. i386-pc/normal.mod not foundgrub은 normal 명령 을 제공하는 grub 모듈 인 normal.mod를 로드 할 수 없음을 나타냅니다 . 부하에 normal.mod 당신은 어디 GRUB을 말할 필요가있다. 이를 위해 grub 명령 줄 (일명 Rescue Console)을 사용할 수 있습니다. 부팅에 문제가있는 경우 Grub은 명령 줄을 시작하거나, grub이 시작될 때 Shift 키를 누른 상태에서 (grub 메뉴를 강제로 표시) 'c'키를 눌러 수동으로 시작할 수 있습니다.

grub을 사용하면 드라이브, 파티션 및 파일 시스템을 탐색 할 수 있습니다. 다음을 수행해야합니다.

  • ls 또는 search.file을 사용하여 GRUB 설치를 찾으십시오.
  • 그룹 변수 $ prefix 및 $ root 설정
  • 일반 모듈로드 및 실행

다음은 예일뿐입니다. 로컬 드라이브 및 파티션 설정에 맞게 조정해야합니다.

normal.mod는 어디에 있습니까? 가능성이있는 위치를 살펴보세요

grub> search.file /i386-pc/normal.mod
error: no such device: /i386-pc/normal.mod

grub> search.file /grub/i386-pc/normal.mod
error: no such device: /grub/i386-pc/normal.mod

grub> search.file /boot/grub/i386-pc/normal.mod
hd0,msdos1

이 경우 "Unknown command 'search.file'"search.file 명령을 사용할 수 없음을 의미합니다. grub rescue>프롬프트가 아닌 grub>프롬프트에 있기 때문일 수 있습니다 . 이 경우에도 ls파티션 레이아웃에 대한 지식과 명령을 계속 사용하여 찾을 수 normal.mod있습니다.

(hd0, msdos1)에서 찾았습니다.

grub> ls (hd0,msdos1)/boot/grub/i386-pc/normal.mod
normal.mod

그럽이 왜 찾지 못했습니까?
$ prefix-grub 디렉토리의 절대 위치를 점검하십시오
(grub-install이 grub을 설치할 때 설정됩니다)

grub> echo $prefix
(hd0,msdos2)/boot/grub

$ root 확인-장치를 포함하지 않는 경로의 기본 장치는
처음부터 $ prefix에서 장치로 설정합니다.

grub> echo $root
hd0,msdos2

루트 및 접두사가 잘못된 파티션 (hd0, msdos2)을 가리키고
$ root 및 $ prefix를 normal.mod (hd0, msdos1)를 찾은 파티션으로 설정합니다.

grub> set root=(hd0,msdos1)
grub> set prefix=(hd0,msdos1)/boot/grub

일반 모듈로드 및 실행

grub> insmod normal
grub> normal

도움이 될 수있는 다른 명령들

ls는 모든 장치와 파티션을 나열합니다

grub> ls
(hd0) (hd0,msdos5) (hd0,msdos1)

ls 파티션

grub> ls (hd0,msdos1)
        Partition hd0,msdos1: Filesystem type ext* - Last modification time
2014-05-08 15:56:38 Thursday, UUID c864cbdd-a2ba-43a4-83a3-66e305adb1b6 -
Partition start at 1024KiB - Total size 6290432Kib

ls 파일 시스템 (주 / 끝)

grub> ls (hd0,msdos1)/
lost+found/ etc/ media/ bin/ boot/ dev/ home/ lib/ lib64/ mnt/ opt/ proc/
root/ run/ sbin/ srv/ sys/ tmp/ usr/ var/ vmlinuz initrd.img cdrom/


i386-pc 디렉토리의 / boot / grub
존재는 x86_64-efi 디렉토리의 BIOS 설치 존재이며 EFI 설치를 나타냅니다.

grub> ls (hd0,msdos1)/boot/grub
i386-pc/ locale/ fonts/ grubenv grub.cfg


+1이 단계를 따라 우분투 설치로 부팅 한 후 sudo grub-install /dev/sdXgrub을 설치했습니다. LVM 설치가 어떻게 든 grub을 혼란스럽게 생각합니다.
DavidG

방금했던 것처럼 "알 수없는 명령 'search-file'명령을 얻는다면 포기할 때가 된 것 같습니다. 사람들에게 제 조언은 Windows 복구 DVD없이 우분투를 설치하지 않는 것입니다. . 그것은 그들이 정말 화가 될 것입니다 망쳐 놨 경우 때문에 충분하지 브가 엉망 또한, 누군가에 우분투를 설치하지 도착하면 다른 Windows 컴퓨터가 있습니다.
스쿠터

@Scooter 라이브 CD / USB를 부팅하여 Grub을 다시 설치하는 방법에 대한 지침 은 이 답변 을 참조하십시오 .
bain

@bain 답장을 보내 주셔서 감사합니다. 필자의 경우 Ubuntu iso 디스크에서 다시 설치했습니다. 우분투는 grub이 엉망이거나 자동으로 덮어 썼다는 것을 알았지 만 Windows로 다시 부팅 할 수 있었던 곳으로 다시 수정했습니다.
스쿠터

Grub 복구 쉘은 이러한 명령을 지원하지 않는 것 같습니다. "알 수없는 명령 'search.file'"
Cerin

30

오늘 오후에 기계에서이 문제를 해결했습니다. 이 문제의 원인 중 하나는 설치 관리자가 잘못된 GRUB 파일을로드하지 않아로드 할 때 EFI 보안 부팅이 있다고 생각하는 것 같습니다.

GRUB 2를 설치해야합니다.이를 위해서는 라이브 인스턴스로 부팅하고 루트 파티션을 마운트하고 설치해야합니다.

라이브 인스턴스에서 루트 파티션이로드 된 파티션을 찾으십시오. GParted가이를 알려 주거나 사용할 수 있습니다

sudo fdisk -l

우분투가 설치된 파티션으로 이동하십시오.

파티션이 있으면 마운트해야합니다. 루트 파티션이 / dev / sda5에 있다고 가정하면 다음과 같습니다.

sudo mount /dev/sda5 /mnt

그런 다음 GRUB 2를 설치하십시오

sudo grub-install /dev/sda --root-directory=/mnt [올바른 공간이 필요하므로 복사하여 붙여 넣기를 사용하십시오.]

이것이 문제라고 가정하면 다시 부팅하면 모든 것이 잘 작동합니다.

이에 대한 원래 솔루션은 다음과 같습니다. http://ubuntujournal.blogspot.com/2012/11/fix-new-install-of-ubuntu-1210-wont-boot.html


1
나를 위해 작동하지 않았다. 나는 같은 문제가 있는데 여전히 해결책을 찾고 있습니다.
ExpatEgghead 12

3
--root-directory 는 이제 grub2의 --boot-directory 입니다.
bain

1
나를 위해 일한 또 다른 쉬운 수정은 /etc/grub.d/backup에있는 grup 백업을 / boot / grub에 복사하는 것입니다. 첨부 된 추가 정보에서 적절한 폴더 및 경로를 확인하십시오.
jhexp

내 경우에는 문제는 2 개의 하드 드라이브가 있고 BIOS 시퀀스가 ​​먼저 잘못된 드라이브를 찾고 있다는 것입니다. 해당 드라이브에 오래된 그럽 설치가 손상되었습니다.
eusoubrasileiro

fdisk에서 어떤 것이 올바른지 알 수 없다면,이 방법으로 도움을받을 수 있습니다 (/ media / ubuntu / some-name에있는 장치를 찾는 데 도움이 됨) unix.stackexchange.com/questions/11311/…
Michael

2

포럼에서 해당 정보를 찾지 못 했으므로이 질문이 오래 전에 요청되었다는 사실에도 불구하고 몇 가지 정보를 공유하고 싶습니다.

Ubuntu가 설치된 큰 (예 : 1TB) 파티션이 있고 / boot /에 추가 파티션을 할당하지 않은 경우 이러한 오류가 발생할 수 있습니다. GRUB이 시작되면 / boot / grub / 디렉토리에서 일반 드라이버를 읽기 위해 biosdisk 드라이버를 사용합니다. 때때로이 디렉토리는 biosdisk 섹터가 지원하는 최대 값 이후 어딘가에 하드 드라이브에 실제로 위치 할 수 있습니다. 예를 들어 시스템 업그레이드 후 문제가 나타날 수 있습니다. 또한, 나는 Ubuntu 13.10을 새로 설치 한 후에 항상 그 문제에 직면 해 있지만 마더 보드 / 바이오스에 따라 다를 수 있습니다.

grub 복구를 사용하여 올바른 PREFIX 및 ROOT를 설정 한 후 ls / boot를 시도하십시오. 아무것도 보이지 않으면 라이브 CD / 플래시 드라이브에서 부팅 할 때 위에 설명 된 문제보다 파일을 볼 수 있습니다. .

시스템을 부팅 가능하게 만들기 위해 다른 작업을 수행 할 수 있지만, 향후 문제 (dist-upgrade 중)를 피할 수있는 유일한 방법은 / boot 디렉토리를 별도의 작은 파티션에 두는 것입니다.


1

grub-rescue프롬프트가 표시되고 구성에서 LVM을 사용 하는 경우 다른 솔루션이 작동하지 않을 수 있습니다 .

복구 디스크로 부팅합니다 (팁 : 백업 USB 디스크의 전용 파티션에 작은 배포를 유지합니다).

LVM을 사용하는 경우 lvdisplay또는 다른 LVM 관련 명령 을 사용하여 볼륨 그룹의 이름을 찾으십시오 . 활성화하십시오 (그렇지 않으면 mount: special drive /dev/volumegroupname/partition does not exist마운트하려고 할 때 오류가 발생합니다).

vgchange -a y volumegroupname

이제 일반적인 /파티션을 마운트하십시오 /mnt .

mount /dev/volumegroupname/partition /mnt

/boot별도의 파티션에있는 경우 뿐만 아니라 몇 가지 특수 장치도 마운트하십시오 .

mount -t proc none /mnt/proc
mount -o bind /dev /mnt/dev
mount -t sysfs /sys /mnt/sys

그런 다음 chroot평소 배포판으로 :

chroot /mnt

마지막으로 GRUB2 재설치 — 명령은 배포판에 따라 다를 수 있습니다. 이는 Slackware에서 작동합니다 (드라이브가 인 경우 /dev/sda).

grub-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg

재부팅하면 완료됩니다.


0

선택된 답변은 작동하지 않습니다.

이 작동합니다 :

  1. OS를 다시 설치 하고 " 다른 작업 수행 "으로 이동하여 파티션 테이블을 만들고
  2. Windows 파티션을 기본 부팅 장치로 사용하십시오 .

두 번째 단계는 필수 입니다.

사용하지 마십시오/boot .

다른 해결책이있을 수 있습니다. 시작하는 동안 부팅 장치를 수동으로 변경해보십시오. 그러나 나는 그것이 효과가 있다고 생각하지 않으며 아직 테스트하지 않았습니다.

이것은 우분투에서 17.10을 포함하여 오래 지속 된 문제입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.