GRUB Rescue를 사용하여 Linux를 수정하는 방법

게시 됨: 2023-05-14
노트북의 Ubuntu Linux 시작 화면
Jordan Gloor / 하우투 괴짜
GRUB 셸에 "grub>" 프롬프트가 표시되면 ls , set , linuxinitrd 명령을 사용하여 Linux 시스템을 수정할 수 있습니다. 대신 "grub rescue>" 프롬프트가 표시되면 set , insmod , linuxinitrd 명령을 사용하여 PC를 부팅하십시오.

Linux 컴퓨터가 해당 운영 체제로 부팅할 수 없는 경우 GRUB 셸의 프롬프트를 보고 있을 가능성이 높습니다. 손상된 부팅 프로세스를 복구하려면 다음 단계를 따르십시오.

목차

부트로더가 부팅되지 않을 때
GRUB 셸 사용
GRUB 복구 셸 사용
기타 가능한 구제책

부트로더가 부팅되지 않을 때

부팅 실패만큼 마음을 깊고 빠르게 가라앉히는 컴퓨터 문제는 거의 없습니다. 작동하는 운영 체제가 없으면 컴퓨터는 실제로 컴퓨터가 아닙니다.

근본 원인을 드릴다운하는 쉬운 방법이 없는 매우 불투명한 문제일 수 있습니다. Linux에 액세스하지 않으면 문제를 조사하는 데 사용하는 일반적인 진단 도구 및 프로세스를 사용할 수 없습니다. 문제가 무엇인지 확인하지 않고 어떻게 해결할 수 있습니까?

Linux에서 GRUB는 부트 프로세스를 제어하는 ​​소프트웨어입니다. 여러 운영 체제가 설치되어 있는 경우 부팅할 운영 체제를 선택할 수 있습니다.

GRUB은 구성에 의해 제어됩니다. 기능을 수행하기 위해 다른 지원 파일에도 의존합니다. 이 중 하나라도 없거나 손상되면 GRUB이 작동하지 않습니다. 컴퓨터의 하드 드라이브 및 파티션에 대한 변경 사항은 GRUB 구성에 반영되어야 합니다. 그렇지 않은 경우 GRUB의 지침이 이해되지 않으며 부팅 프로세스가 작동하지 않습니다.

Linux에서 USB 드라이브에 ISO 파일을 굽는 방법
관련 Linux에서 USB 드라이브에 ISO 파일을 굽는 방법

참고로, 우리 모두가 GRUB이라고 부르는 것은 실제로 GRUB 2입니다. 이것은 2012년에 다시 출시된 GRUB의 고급 버전입니다. 다른 변경 사항 중에서 "grub.cfg" 파일이 생성되는 방식이 변경되었으며 이동식 미디어에서 부팅합니다.

GRUB이 운영 체제를 로드할 수 없는 경우 GRUB 셸의 프롬프트에 남아 있게 됩니다. 몇 가지 작업을 수행할 수 있는 최소한의 환경입니다. 그러나 올바르게 수행하면 이러한 단계를 통해 컴퓨터를 부활시킬 수 있습니다.

두 가지 다른 GRUB 셸이 있습니다. 문제의 근본 원인에 따라 GRUB 셸 프롬프트에서 자신을 찾을 수 있습니다.

 땅벌레>

또는 GRUB 복구 셸 프롬프트에서:

 땅벌레 구조>

GRUB 복구 셸은 GRUB 셸보다 훨씬 더 제한적이지만 여전히 컴퓨터를 부팅하기에 충분한 성능을 제공합니다. 컴퓨터가 부팅되면 근본 원인을 치료할 수 있는 훨씬 더 나은 위치에 있습니다.

GRUB 셸 사용

GRUB 셸은 Linux 명령의 작은 하위 집합을 사용할 수 있는 명령줄 인터페이스입니다. 일반적인 로그인 화면이 아닌 여기에서 자신을 찾으면 부팅 프로세스가 엉망이라는 의미입니다.

GRUB 셸 프롬프트

액세스 권한이 있는 명령은 일반적인 Linux 버전과 동일하지 않습니다. 예를 들어 GRUB 셸 ls 명령은 Bash ls 명령이 아닙니다. 공통점이 거의 없습니다. --help 옵션을 사용하여 이를 확인할 수 있습니다.

 ls --도움말 

ls의 GRUB 셸 버전과 함께 --help 옵션 사용

다섯 가지 옵션만 나열합니다. 이는 Bash에서 ls 가 지원하는 수십 가지 옵션과는 거리가 멀다. 그럼에도 불구하고 다소 음소거된 명령 팔레트로도 상황을 바로잡을 수 있습니다.

프롬프트에서 ls 입력하고 “Enter”를 누르십시오.

 ls 

드라이브 및 파티션을 보여주는 ls의 GRUB 셸 버전 출력

이 컴퓨터에는 세 가지 항목이 나열됩니다.

  • (hd0) 은 첫 번째 하드 드라이브입니다.
  • (hd0,gpt1)은 첫 번째 하드 드라이브의 첫 번째 파티션입니다.
  • (hd0,gpt2)는 첫 번째 하드 드라이브의 두 번째 파티션입니다.

"gpt" 레이블은 GUID 파티션 테이블을 나타냅니다. 파티션을 참조할 때 대괄호 " () "를 포함해야 하지만 레이블을 생략할 수 있습니다.

파티션을 차례로 보려면 ls 사용합니다.

 ls (hd0,1)
 ls (hd0,2) 

ls의 GRUB 셸 버전을 사용하여 Linux 파티션 식별

두 번째 파티션에 Linux 파일 시스템이 있는 것을 발견했습니다. 해당 파티션의 루트 디렉터리를 살펴봄으로써 조금 더 자세히 조사하겠습니다.

 ls (hd0,2)/ 

ls의 GRUB 셸 버전을 사용하여 특정 파티션 검사

분명히 이것은 부트 디렉토리가 있는 Linux 파티션입니다. GRUB 파일, Linux 부팅 이미지 및 기타 부팅 파일이 저장되는 위치입니다.

이 컴퓨터에서 명령을 실행할 때 파티션 (hd0,2) 을 참조해야 합니다. 컴퓨터에서 Linux 설치를 찾은 파티션을 사용합니다.

다음과 같이 파티션 이름에 디렉터리 경로와 파일 이름을 추가하여 cat 명령을 사용하여 텍스트 파일을 찾을 수 있습니다.

 고양이 (hd0,2)/기타/문제 

GRUB 셸에서 cat 명령을 사용하여 Linux 버전 보기

다중 부팅 설치에서 이것은 올바른 파티션에 있는지 확인하는 유용한 방법입니다. 구성 파일 내부를 살펴보는 데에도 유용합니다.

여기서는 -l (긴) 및 -h (사람이 읽을 수 있는 크기) 옵션과 함께 ls 명령을 사용하여 "/boot" 디렉토리의 파일을 나열합니다.

 ls -lh (hd0,2)/부팅 

ls의 GURB 버전을 사용하여 /boot 디렉토리에 있는 파일 나열

이 컴퓨터를 부팅하려면 새로 검색된 Linux 파티션에 부팅 파일이 있음을 GRUB에 알려야 합니다.

 루트=(hd0,2) 설정

부팅할 Linux 커널을 지정해야 합니다. 우리는 이것을 linux 명령으로 수행합니다. 또한 일반적인 Linux 하드 드라이브 및 파티션 명명 체계를 사용하여 루트 디렉터리를 제공해야 합니다.

 리눅스 /boot/vmlinuz-6.2.0-20-일반 루트=/dev/sda2

예제 컴퓨터에서는 첫 번째 하드 드라이브인 (hd0) 을 사용하고 있습니다. 이것은 일반적인 Linux 명명법에서 sda 라고 합니다. 두 번째 파티션이 Linux 파티션인 것을 확인했으므로 sda2 지정해야 합니다.

기계가 다를 수 있습니다. 예를 들어 Linux 파티션이 (hd2,1) 로 보고되면 세 번째 하드 드라이브 또는 sdc1 의 파티션 1을 의미합니다.

또한 컴퓨터가 부팅될 때 사용할 RAM 기반 파일 시스템 이미지를 지정해야 합니다. 이것은 우리가 사용하고 있는 Linux 커널과 동일한 숫자 구성 요소를 사용해야 합니다.

 초기화 /boot/initrd.img-6.2.0-20-generic 

GRUB 셸에서 부팅 매개변수 설정

이제 시스템을 부팅하려면 "boot"를 입력하고 "Enter"를 누르십시오.

이렇게 하면 컴퓨터가 Linux로 부팅됩니다. 다시 실행하게 되었지만 여전히 GRUB를 수정해야 컴퓨터를 시작할 때마다 이 작업을 수행할 필요가 없습니다.

update-grub 실행합니다. 이렇게 하면 시스템을 스캔하고 운영 체제를 식별하며 새로운 GRUB 구성을 생성합니다. 루트 사용자로 이것을 실행해야 합니다.

 sudo 업데이트-그럽 

update-grub을 실행하여 grub.cfg 파일 재구축

드물게 grub-install 사용하여 GRUB 부트로더를 다시 설치해야 할 수도 있습니다.

 sudo grub-install /dev/sda

설치할 파티션을 지정할 필요 없이 어떤 드라이브만 지정하면 됩니다. 일반 설치에서는 Linux가 있는 동일한 드라이브입니다.

푸딩의 증거는 다음 재부팅과 함께 제공됩니다. 컴퓨터가 정상적으로 재부팅됩니다.

관련: GRUB2 부트 로더 설정을 구성하는 방법

GRUB 복구 셸 사용

부팅 문제의 특성에 따라 GRUB 셸에 들어가지 못할 수도 있습니다. GRUB 복구 모드에 남아 있을 수 있습니다. 이 경우 프롬프트는 다음과 같습니다.

 땅벌레 구조>

이 셸에서 실행해야 하는 명령은 다릅니다. GRUB 쉘을 사용하는 것처럼 ls 사용하여 Linux 파티션을 찾아야 합니다. Linux 파티션을 식별했으면 계속해서 다음 명령을 입력할 수 있습니다.

컴퓨터에 맞는 드라이브 식별자와 커널 버전 번호를 사용해야 합니다. insmod 명령은 커널 모듈을 로드합니다.

 접두어 설정=(hd0,2)/boot/grub
 루트=(hd0,2) 설정
 인스모드 노멀
 인스모드 리눅스
 리눅스 /boot/vmlinuz-6.2.0-20-일반 루트=/dev/sda2
 초기화 /boot/initrd.img-6.2.0-20-generic 

GRUB 복구 셸에서 부트 매개변수 설정

그런 다음 "boot"를 입력하고 "Enter"를 눌러 컴퓨터를 재부팅할 수 있습니다. 재부팅되고 로그인되면 update-grub 명령으로 GRUB를 업데이트합니다.

기타 가능한 구제책

문제가 "vmlinuz" 및 "initrd.img" 파일과 같은 부팅 파일 누락으로 판명되면 Live DVD 또는 부팅 가능한 Linux USB 플래시 드라이브에서 컴퓨터를 부팅하고 누락된 파일을 제자리에 복사할 수 있습니다.

"vmlinuz" 및 "initrd.img" 파일은 일치하는 쌍으로 작동하므로 버전 번호가 동일해야 합니다 .

관련: Mac에서 부팅 가능한 Linux Live USB를 만드는 방법