grubrescue를 사용하여 이동 한 .mod 파일 복구


33

나는 바보 같은 일을했다 ... 나는 Ubuntu 10.04 (Lucid Lynx)가 GRUB  2 로 전환하여 많은 * .mod 파일 (커널 모듈)을에 넣은 것을 잊었다 /boot/grub. 나는 그들이 거기에 잘못 넣은 사운드 트랙 파일이라고 생각했고, 그것들을 옮겼습니다. 말할 필요도없이, 다음 재부트는 외상이었습니다. 나는 '그루브 구조>'프롬프트를 본 적이없는 무언가를 받았다.

GRUB 오류 수정 : "오류 : 알 수없는 파일 시스템" 의 도움 으로 복구 할 수있었습니다 ...

  • GRUB 구조에는 'cd', 'cp'또는 자체 'ls'변형을 제외한 다른 파일 시스템 명령이 없음을 발견했습니다.
  • 그래서 먼저 파일과 다른 부팅 이미지 파일을 /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 
    
  • partition /boot에서 vmlinuz파일이 들어 있는 디렉토리를 찾았습니다 .vmlinuz-2.6.32-33-generic(hd0,2)

  • 그런 다음 'grub rescue>'프롬프트에서 수동으로 부팅했습니다. 다음 명령은 ...

    • 파티션 root에서 /boot디렉토리 를 사용하도록 설정하십시오 (hd0,2).
    • 커널 모듈을로드하십시오 linux.
    • 커널 이미지를 사용하도록 해당 모듈을 설정하십시오 vmlinuz-2.6.32-33-generic.
    • 이미지를 사용하려면 initrd (RAM 디스크 초기화)를 설정하십시오 initrd.img-2.6.32-33-generic.
    • 리눅스 부팅.
  • grub rescue>  set root=(hd0,2)/boot  
    grub rescue>  insmod linux  
    grub rescue>  linux (hd0,2)/boot/vmlinuz-2.6.32-33-generic root=/dev/sda2
    grub rescue>  initrd (hd0,2)/boot/initrd.img-2.6.32-33-generic  
    grub rescue>  boot  
    
  • 이것은 기본적인 파일 시스템 명령을 가지고있는 BusyBox 프롬프트로 부팅하고 충돌합니다.

  • 그런 다음 * .mod 파일을 다시 /boot/grub디렉토리 로 옮겼습니다 .

    busybox>  cd /boot  
    busybox>  mv mod/* grub
    busybox>  reboot
    
  • 재부팅에 성공했지만 많은 작업이있었습니다.

더 쉬운 방법이 있습니까?


1
내 의견으로는 부팅 복구가 훨씬 쉬울 것입니다. Boot-Repair에 대한 여러 답변 중 하나 를 사용하여 자세한 내용을 확인하십시오.
SirCharlo

1
"가장 쉬운"방법이 항상 최선의 방법은 아닙니다. Live CD 사용을 제안하는 모든 의견에 동의하지 않습니다. CD / DVD 리더가없는 시스템에서는 라이브 CD로 부팅하기가 매우 어렵습니다.
Simón

ican은 / boot 디렉토리가있는 파티션을 찾지 못합니다. ls 명령의 모든 파티션은 알 수없는 파일 시스템 출력을 제공합니다.
Rafed Nole

1
귀하의 게시물은 커널과 initrd를 수동으로 부팅하는 데 매우 도움이되었지만 시스템은 dev, sys 또는 proc 등 / fstab 또는 sbin / init를 찾을 수 없습니다. 즉 다른를 알려준 커널을로드하고있는 수동 부팅 방향에 설명 된대로 루트를 설정 제안, 애벌레 문서 , : 예를 들어 grub> linux (hd0,X)/boot/vmlinuz-a.b.c-d-generic root=/dev/sdaX , X와 파티션 /boot, a.b.c-d커널 버전입니다. 그런 다음 시스템이 정상적으로 부팅되었습니다! 감사!
Mark Mikofski

1
[Fixing GRUB error :“error : unknown filesystem”[duplicate]] ( askubuntu.com/q/142300/36961 ) 외에도 이러한 단계를 다루는 또 다른 훌륭한 링크는 Linux 에서 비 부팅 GRUB 2를 구하는 방법입니다 . grub 2 매뉴얼 도 매우 유용합니다
Mark Mikofski

답변:


5

아니요 . grub rescue를 사용하여 시스템 상태를 복구하는 가장 쉬운 방법을 찾은 것 같습니다 . 시스템을 부팅하기에 충분한 기능을 제공하는 매우 작은 시스템입니다.

BTW, .mod파일 을 찾아서 실행 insmod linux했거나 linux명령이 실패했을 것이라고 생각합니다.

언급 한 것처럼 유일한 다른 방법은 라이브 CD를 부팅하고 '루프'시스템에 chroot 한 후 grub2를 다시 설치하는 것입니다.


당신 말이 맞아요! 내가 한 짓을 잊었다. 나중에 참조 할 수 있도록 위의 원래 게시물에 추가되었습니다. 이러한 상황에서주의를 기울이려면 더 잘 훈련해야합니다. 추가 수정이 필요한 경우 알려주십시오.
DocSalvager

나는 또한 같이 커널을로드 할 때 루트를 지정했다 GRUB 문서 grub> linux (hd0,2)/boot/vmlinuz-2.6.32-33-generic root=/dev/sda2
마크 Mikofski

당신이 .MOD 파일을 찾을 경우에도 참고, 당신은 완벽한 기능을 갖춘 GRUB에 "GRUB 구조"를 복원 할 수 있습니다 # Inspect the current prefix (and other preset variables): set # Find out which devices are available: ls # Set to the correct value, which might be something like this: set prefix=(hd0,1)/grub set root=(hd0,1) insmod normal normal 출처 : gnu.org/software/grub/manual/html_node/...
MegaBrutal

7

다음은 부팅 오류를 해결하는 데 도움이되는 일반적인 및 기본 지침입니다 GRUB loading stage 1.5 error 15 (예 : 다른 디스크 드라이브에 Windows를 설치 한 후) :

  1. LiveDVD (예 : Ubuntu Desktop 디스크)로 부팅하십시오.

  2. 터미널을 열고 다음 명령을 사용하여 그럽 구성을 다시 작성하십시오.

    • sudo mount /dev/sdXY /mnt
    • sudo grub-install --root-directory=/mnt /dev/sdX

어디에서 /dev/sdX우분투가 설치된 디스크, 그리고 /dev/sdXY우분투가 설치된 디스크의 파티션입니다. 즉, /dev/sdXY포함 /boot등.

fdisk -lUbuntu 설치 위치를 확인하는 데 사용하십시오 .


작동하지 않았다. 지시 사항이 더 구체적이라면 아마도 효과가 있었을 것입니다.
Tim Stewart

CD 드라이브가없는 컴퓨터에서 grub2 문제가 발생했을 때 Gparted Live USB 메모리 스틱 드라이브를 사용하여 복구 할 수있었습니다. 나는 Gparted 라이브로 부팅했다. 그런 다음 터미널을 시작하고 fdisk -l을 입력했습니다 (문자 1, 숫자 1이 아님). 그 결과는 루트 파티션이있는 파티션을 식별하고 거기에서 위의 우수한 지침을 따르고 곧 다시 행복하게 듀얼 부팅했습니다. .
Vic

4
  1. 라이브 CD로 부팅

  2. 터미널 열기 (CTRL + ALT + T)

  3. 다음 명령을 입력하십시오 :

sudo fdisk -l

그리고 우분투 파티션을 찾으십시오 (첫 번째 파티션 인 경우 / dev / sda1이어야 함)

sudo mount /dev/sda1 /mnt

sudo mount --bind /sys /mnt/sys

sudo mount --bind /proc /mnt/proc

sudo mount --bind /dev /mnt/dev

sudo chroot /mnt

이제 Grub2를 다시 설치하십시오

sudo apt-get install --reinstall grub2

2
이것은 더 나은보다 더 좋은 방법이 있나요 sudo mount /dev/sda1 /mntsudo grub-install --root-directory=/mnt/ /dev/sda && sudo update-grub?

4

시스템을 업그레이드 할 때도 같은 문제가있었습니다.

다음과 같은 간단한 단계를 제안합니다.

  1. 우분투 라이브 CD 또는 라이브 USB로 시스템을 부팅하십시오.
  2. 터미널을 열고 sudo add-apt-repository ppa : yannubuntu / boot-repair && sudo apt-get update 명령을 실행하십시오.
  3. 그런 다음 sudo apt-get install -y boot-repair && boot-repair 명령을 실행하여 부팅 복구를 설치하십시오.

  4. 설치 후 부팅 복구를 시작하십시오. 예를 들어, 메뉴에서 System->Administration->Boot-Repair (Ubuntu 10.04 만 해당)을 사용 하고 지시 사항을 따르십시오.

    문제를 파악하고 해결하는 데 15-20 분이 소요될 수 있습니다.

자세한 도움말은 https://help.ubuntu.com/community/Boot-Repair 링크로 이동 하십시오.


0

라이브 CD를 부팅하고 하드 드라이브를 마운트하고 노틸러스를 루트로 열고 해당 파일을 / boot에 복사 할 수 있습니다.

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