GRUB Rescue를 사용하여 Linux를 수정하는 방법
게시 됨: 2023-05-14ls
, set
, linux
및 initrd
명령을 사용하여 Linux 시스템을 수정할 수 있습니다. 대신 "grub rescue>" 프롬프트가 표시되면 set
, insmod
, linux
및 initrd
명령을 사용하여 PC를 부팅하십시오.Linux 컴퓨터가 해당 운영 체제로 부팅할 수 없는 경우 GRUB 셸의 프롬프트를 보고 있을 가능성이 높습니다. 손상된 부팅 프로세스를 복구하려면 다음 단계를 따르십시오.
부트로더가 부팅되지 않을 때
GRUB 셸 사용
GRUB 복구 셸 사용
기타 가능한 구제책
부트로더가 부팅되지 않을 때
부팅 실패만큼 마음을 깊고 빠르게 가라앉히는 컴퓨터 문제는 거의 없습니다. 작동하는 운영 체제가 없으면 컴퓨터는 실제로 컴퓨터가 아닙니다.
근본 원인을 드릴다운하는 쉬운 방법이 없는 매우 불투명한 문제일 수 있습니다. Linux에 액세스하지 않으면 문제를 조사하는 데 사용하는 일반적인 진단 도구 및 프로세스를 사용할 수 없습니다. 문제가 무엇인지 확인하지 않고 어떻게 해결할 수 있습니까?
Linux에서 GRUB는 부트 프로세스를 제어하는 소프트웨어입니다. 여러 운영 체제가 설치되어 있는 경우 부팅할 운영 체제를 선택할 수 있습니다.
GRUB은 구성에 의해 제어됩니다. 기능을 수행하기 위해 다른 지원 파일에도 의존합니다. 이 중 하나라도 없거나 손상되면 GRUB이 작동하지 않습니다. 컴퓨터의 하드 드라이브 및 파티션에 대한 변경 사항은 GRUB 구성에 반영되어야 합니다. 그렇지 않은 경우 GRUB의 지침이 이해되지 않으며 부팅 프로세스가 작동하지 않습니다.
참고로, 우리 모두가 GRUB이라고 부르는 것은 실제로 GRUB 2입니다. 이것은 2012년에 다시 출시된 GRUB의 고급 버전입니다. 다른 변경 사항 중에서 "grub.cfg" 파일이 생성되는 방식이 변경되었으며 이동식 미디어에서 부팅합니다.
GRUB이 운영 체제를 로드할 수 없는 경우 GRUB 셸의 프롬프트에 남아 있게 됩니다. 몇 가지 작업을 수행할 수 있는 최소한의 환경입니다. 그러나 올바르게 수행하면 이러한 단계를 통해 컴퓨터를 부활시킬 수 있습니다.
두 가지 다른 GRUB 셸이 있습니다. 문제의 근본 원인에 따라 GRUB 셸 프롬프트에서 자신을 찾을 수 있습니다.
땅벌레>
또는 GRUB 복구 셸 프롬프트에서:
땅벌레 구조>
GRUB 복구 셸은 GRUB 셸보다 훨씬 더 제한적이지만 여전히 컴퓨터를 부팅하기에 충분한 성능을 제공합니다. 컴퓨터가 부팅되면 근본 원인을 치료할 수 있는 훨씬 더 나은 위치에 있습니다.
GRUB 셸 사용
GRUB 셸은 Linux 명령의 작은 하위 집합을 사용할 수 있는 명령줄 인터페이스입니다. 일반적인 로그인 화면이 아닌 여기에서 자신을 찾으면 부팅 프로세스가 엉망이라는 의미입니다.
액세스 권한이 있는 명령은 일반적인 Linux 버전과 동일하지 않습니다. 예를 들어 GRUB 셸 ls
명령은 Bash ls
명령이 아닙니다. 공통점이 거의 없습니다. --help
옵션을 사용하여 이를 확인할 수 있습니다.
ls --도움말
다섯 가지 옵션만 나열합니다. 이는 Bash에서 ls
가 지원하는 수십 가지 옵션과는 거리가 멀다. 그럼에도 불구하고 다소 음소거된 명령 팔레트로도 상황을 바로잡을 수 있습니다.
프롬프트에서 ls
입력하고 “Enter”를 누르십시오.
ls
이 컴퓨터에는 세 가지 항목이 나열됩니다.
- (hd0) 은 첫 번째 하드 드라이브입니다.
- (hd0,gpt1)은 첫 번째 하드 드라이브의 첫 번째 파티션입니다.
- (hd0,gpt2)는 첫 번째 하드 드라이브의 두 번째 파티션입니다.
"gpt" 레이블은 GUID 파티션 테이블을 나타냅니다. 파티션을 참조할 때 대괄호 " ()
"를 포함해야 하지만 레이블을 생략할 수 있습니다.
파티션을 차례로 보려면 ls
사용합니다.
ls (hd0,1)
ls (hd0,2)
두 번째 파티션에 Linux 파일 시스템이 있는 것을 발견했습니다. 해당 파티션의 루트 디렉터리를 살펴봄으로써 조금 더 자세히 조사하겠습니다.
ls (hd0,2)/
분명히 이것은 부트 디렉토리가 있는 Linux 파티션입니다. GRUB 파일, Linux 부팅 이미지 및 기타 부팅 파일이 저장되는 위치입니다.
이 컴퓨터에서 명령을 실행할 때 파티션 (hd0,2)
을 참조해야 합니다. 컴퓨터에서 Linux 설치를 찾은 파티션을 사용합니다.
다음과 같이 파티션 이름에 디렉터리 경로와 파일 이름을 추가하여 cat
명령을 사용하여 텍스트 파일을 찾을 수 있습니다.
고양이 (hd0,2)/기타/문제
다중 부팅 설치에서 이것은 올바른 파티션에 있는지 확인하는 유용한 방법입니다. 구성 파일 내부를 살펴보는 데에도 유용합니다.
여기서는 -l
(긴) 및 -h
(사람이 읽을 수 있는 크기) 옵션과 함께 ls
명령을 사용하여 "/boot" 디렉토리의 파일을 나열합니다.
ls -lh (hd0,2)/부팅
이 컴퓨터를 부팅하려면 새로 검색된 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
이제 시스템을 부팅하려면 "boot"를 입력하고 "Enter"를 누르십시오.
이렇게 하면 컴퓨터가 Linux로 부팅됩니다. 다시 실행하게 되었지만 여전히 GRUB를 수정해야 컴퓨터를 시작할 때마다 이 작업을 수행할 필요가 없습니다.
update-grub
실행합니다. 이렇게 하면 시스템을 스캔하고 운영 체제를 식별하며 새로운 GRUB 구성을 생성합니다. 루트 사용자로 이것을 실행해야 합니다.
sudo 업데이트-그럽
드물게 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
그런 다음 "boot"를 입력하고 "Enter"를 눌러 컴퓨터를 재부팅할 수 있습니다. 재부팅되고 로그인되면 update-grub
명령으로 GRUB를 업데이트합니다.
기타 가능한 구제책
문제가 "vmlinuz" 및 "initrd.img" 파일과 같은 부팅 파일 누락으로 판명되면 Live DVD 또는 부팅 가능한 Linux USB 플래시 드라이브에서 컴퓨터를 부팅하고 누락된 파일을 제자리에 복사할 수 있습니다.
"vmlinuz" 및 "initrd.img" 파일은 일치하는 쌍으로 작동하므로 버전 번호가 동일해야 합니다 .
관련: Mac에서 부팅 가능한 Linux Live USB를 만드는 방법