'grub rescue>'크래시 복구 중


25

AskUbuntu.com에 처음 게시 ...

AskUbuntu는 EOL (End Of Life) 버전에 대한 질문 을 닫는 정책을 채택했습니다 . 그것들을 제거하기위한 보컬 조건도 있습니다. 이 인기있는 질문 (342335 조회수)이 유실되는 것을 방지하기 위해 수정 된 버전을 여기에 배치합니다. --- docsalvager

"클래식"시스템 ...

  • Ubuntu 10.04 (Lucid Lynx) 기반 강아지 Linux 5.2.8 (Lucid)
  • GRUB 2 부트 로더

GRUB 2 는에 많은 *.mod파일 (커널 모듈)을 넣 습니다 /boot/grub. 이러한 파일을 삭제하면 (사운드 파일이 잘못되었다고 생각 함) 재부팅 및 프롬프트가 실패했습니다 grub rescue>.

이 상황에서 어떻게 회복합니까?


1
바보 같은 질문 인 것 같습니다. 백업에서 삭제 된 파일을 복원하거나 grub을 다시 설치하십시오 (이미 수행하는 방법에 대한 많은 질문이 있습니다)
psusi

절대 과거 시청 통계는 어제 신문의 통계와 거의 관련이 있습니다.
Anthon

과거의 신문은 수많은 범죄를 해결했으며 세상을 더 나은 곳으로 만드는 많은 문제 해결을 담당했습니다.
DocSalvager

DVD에서 복구 모드로 부팅하고 거기에서 grub을 다시 설치하는 것이 이상적 일 것 같습니다. 언급 된 데이터 손실이 패키지의 파일로 제한되어야하기 때문에 대부분의 사람들에게 훨씬 간단합니다.
Bratchley

initrd에서 특정 파일을 낚시하는 것이 영리하지 않다고 생각하지는 않습니다. 나는 사람들을 돕기 위해 혼동 할 가능성이 있다고 생각합니다. 복구 / 복구 모드로 부팅하는 것이 더 일반적인 절차입니다.
Bratchley

답변:


43

이 답변은 DocSalvager의 답변이 효과가없는 다른 사람들을위한 것입니다.

  1. DocSalvager가 ls올바른 하드 드라이브 파티션을 찾는 데 사용했습니다 . 내 경우에는이었다 (hd0,msdos5).
  2. 그런 다음 다음 명령을 실행하여 일반 grub 부트 로더 화면으로 돌아갑니다.

    grub rescue>  set boot=(hd0,msdos5)
    grub rescue>  set prefix=(hd0,msdos5)/boot/grub
    grub rescue>  insmod normal  
    grub rescue>  normal  
    
  3. 우분투로 부팅 한 후 터미널에서 다음 명령으로 grub 부트 로더를 수리했습니다.

    sudo grub-install /dev/sda 
    

이 과정을 시각적으로 살펴 보려면 이 소스 를 참조 하십시오 .


6
나는 닫혔다이 전에 게시 다행 너희들이야
smac89

2
완벽-내가 부팅하는 데 필요한 정확한 도움! 파티션 레이아웃이 변경 되었기 때문에 sudo update-grub이전 에도 실행했습니다 grub-install.
mwfearnley

insmod normal명령이 얼마나 걸립 니까? Enter를 누르면 우분투가 중단됩니다. 물론 Oracle VirtualBox에서 VM으로 '실행 중'입니다.
snark

1
업데이트 : 결국 돌아 왔 error: failure reading sector 0x8019a4 from 'hd0'으므로 터미널이 예쁜 것 같습니다!
snark

전설적인 답변!
zack

28

그룹 구조 충돌에서 복구 ...

  • grub rescue>자체 변형을 제외하고 는 실제로 일종의 명령 인 cd, cp또는 기타 파일 시스템 명령을 지원하지 않습니다 .lsfind
  • 먼저, 부팅 이미지 파일과 다른 부팅 이미지 파일을 /boot포함하는 디렉토리가있는 파티션을 찾아야했습니다 vmlinuz.

    grub rescue>  ls  
    (hd0,4) (hd0,3) (hd0,2) (hd0,1)  
    
    grub rescue>  ls (hd0,4)/boot
    ... some kind of 'not found' message
    
    grub rescue>  ls (hd0,3)/boot
    ... some kind of 'not found' message
    
    grub rescue>  ls (hd0,2)/boot
    ... grub ... initrd.img-2.6.32-33-generic ... vmlinuz-2.6.32-33-generic 
    
    • ls 인수가 없으면이 시스템에서 네 개의 파티션을 리턴합니다.
    • ls (hd0,4)/boot/boot파티션 에서 디렉토리를 찾지 못했습니다 (hd0,4).
    • ls (hd0,3)/boot/boot파티션 에서 디렉토리를 찾지 못했습니다 (hd0,3).
    • ls (hd0,2)/boot발견 /boot파티션의 디렉토리를 (hd0,2)그리고 그것은 포함 vmlinuz하고 우리가 원하는 다른 부트 이미지 파일을.
  • grub rescue>프롬프트 에서 수동으로 부팅하려면 ...

    grub rescue>  set root=(hd0,2)/boot  
    grub rescue>  insmod linux  
    grub rescue>  linux (hd0,2)/boot/vmlinuz-2.6.32-33-generic  
    grub rescue>  initrd (hd0,2)/boot/initrd.img-2.6.32-33-generic  
    grub rescue>  boot  
    
    • 파티션 root/boot디렉토리 를 사용하도록 설정하십시오 (hd0,2).
    • 그럽 모듈을로드합니다 linux.
    • 커널 이미지를 사용하도록 해당 모듈을 설정하십시오 vmlinuz-2.6.32-33-generic.
    • 이미지를 사용하려면 initrd (init RAM disk)를 설정하십시오 initrd.img-2.6.32-33-generic.
    • 리눅스 부팅.
  • 모든 기본 파일 시스템 명령 ( 및 일부! ) 이있는 BusyBox 명령 줄 프롬프트로 부팅됩니다 .

  • 그런 다음 *.mod파일을 /boot/grub디렉토리로 다시 이동할 수 있습니다 ...

    busybox>  cd /boot  
    busybox>  mv mod/* grub
    busybox>  reboot
    
  • 재부팅 성공!

참조 ...


BusyBox의 루트 레벨에서 부트 폴더를 찾을 수 없습니다
souparno majumder

1
찾고있는 vmlinuz, ... 부팅 이미지는 최상위 루트 파일 시스템에있을 수 있으므로 슬래시 만 사용하십시오. 최상위 디렉토리도 표시됩니다. 부팅 이미지가 최상위 루트에 없으면 가장 유망한 디렉토리를 찾을 때까지 시도해 볼 수 있습니다. 예를 들면 : ls (hd0,1)/, ls (hd0,2)/, ls (hd0,2)/initramfs/, 등
DocSalvager

내 경우에는을 실행 한 후 ls (hd0,7)/boot표시 attempt to read or write outside of disk 'hd0'됩니다.
데이지

hd0 드라이브에 파티션이 7 개 미만입니다. 드라이브에 파티션의 일부가 아닌 할당되지 않은 공간이있을 수도 있습니다.
DocSalvager

1
insmod linux를 실행하기 전에 접두어를 / boot / grub으로 설정해야했습니다!
Emil
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.