리눅스에서 시스템에 접근할 수 없거나 루트 패스워드를 잊어버린 경우, GRUB 모드를 사용하여 패스워드를 복구할 수 있습니다. 이 과정은 시스템을 복구할 때 유용합니다. 아래에 GRUB 모드 변경 및 패스워드 복구 방법을 단계별로 설명합니다. GRUB (GRand Unified Bootloader) 메뉴는 시스템이 부팅되는 방식을 제어하는 강력한 도구입니다. 때로는 부팅 옵션을 수정하거나 커널 인자를 전달하고 싶을 때가 있지만, 영구적인 변경은 원하지 않을 수 있습니다.

리눅스 GRUB 메뉴에서 일시적인 변경을 적용하는 방법 (한 번의 부팅 과정에만 해당)

GRUB 메뉴 항목을 수정하거나 커널에 인수를 전달할 수 있으며, 이는 현재 부팅에만 적용됩니다. 부트 로더 메뉴에서 선택된 메뉴 항목에 대해 다음을 수행할 수 있습니다:

  • e 키를 눌러 메뉴 항목 편집기 인터페이스를 표시합니다.
  • Esc 키를 눌러 변경 사항을 취소하고 기본 메뉴 인터페이스를 다시 로드합니다.
  • c 키를 눌러 명령줄 인터페이스를 로드합니다.
  • 필요한 GRUB 명령어를 입력하고 Enter 키를 눌러 실행합니다.
  • Tab 키를 눌러 문맥에 따라 명령어를 자동 완성합니다.
  • Ctrl+a 키 조합을 눌러 줄의 시작으로 이동합니다.
  • Ctrl+e 키 조합을 눌러 줄의 끝으로 이동합니다.

GRUB 메뉴 항목 수정 단계별 가이드:

  1. GRUB 메뉴에 접근하기:
  • 시스템을 시작하면 GRUB 메뉴가 표시됩니다. 이 메뉴에는 부팅할 수 있는 다양한 운영 체제나 커널 버전이 나열됩니다.
  1. 메뉴 항목 편집 인터페이스 열기:
  • GRUB 메뉴에서 원하는 항목을 선택한 후, 부팅하지 않고 e 키를 눌러 편집 인터페이스를 엽니다. 이 인터페이스에서 선택한 메뉴 항목을 일시적으로 수정할 수 있습니다.
  1. GRUB 명령 수정:
  • 편집 인터페이스에 들어가면 부팅 과정을 정의하는 코드 라인을 스크롤하여 확인할 수 있습니다.
  • 여기에서 커널 매개변수를 추가하거나 수정할 수 있습니다. 예를 들어, 그래픽 문제를 해결하기 위해 nomodeset을 추가하거나, 단일 사용자 모드로 부팅하기 위해 single을 추가할 수 있습니다.
  1. 변경 사항 취소:
  • 변경 사항을 취소하거나 실수를 한 경우, Esc 키를 눌러 수정 사항을 취소하고 기본 GRUB 메뉴로 돌아갈 수 있습니다.
  1. 명령줄 인터페이스로 접근:
  • 더 세부적인 제어가 필요한 경우, c 키를 눌러 GRUB 명령줄 인터페이스를 불러올 수 있습니다.
  • 이곳에서 필요한 GRUB 명령을 입력하고 Enter 키를 눌러 실행할 수 있습니다.
  1. 유용한 키 조합:
  • Tab 키: Tab 키를 사용하면 문맥에 맞는 명령을 자동 완성할 수 있어, 명령어의 전체 문법이 확실하지 않은 경우 유용합니다.
  • Ctrl + a: Ctrl + a 조합을 사용하면 커서가 현재 줄의 시작으로 이동합니다.
  • Ctrl + e: Ctrl + e 조합을 사용하면 커서가 현재 줄의 끝으로 이동합니다.

중요 팁:

  • 일시적인 변경 사항만 적용: 이러한 변경 사항은 영구적으로 저장되지 않습니다. 시스템을 다시 부팅하면 GRUB 메뉴는 기본 설정으로 돌아갑니다.
  • 문제 해결에 유용: 커널 인자를 수정하여 부팅 문제를 해결할 수 있으며, 설정을 잘못 변경해도 시스템 부팅에 영향을 미치지 않기 때문에 안전합니다.

GRUB 메뉴에서 일시적인 변경을 적용하는 것은 커널 매개변수를 테스트하거나 부팅 문제를 해결하는 데 유용한 방법입니다. 이러한 변경 사항은 현재 부팅에만 영향을 미치므로, 미래의 시스템 시작에 영향을 줄 위험이 없습니다.

리눅스 GRUB 소개

GRUB (GNU GRand Unified Bootloader)는 시스템 부팅 시 운영 체제나 커널을 선택하고, 커널에 인자를 전달할 수 있는 부트로더입니다. GRUB을 사용하면 부팅 과정에서 원하는 운영 체제나 커널을 선택할 수 있으며, 필요에 따라 커널에 특정 명령을 전달할 수도 있습니다.

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

GRUB의 두 가지 인터페이스:

  1. 메뉴 인터페이스:
  • 시스템을 시작할 때 기본적으로 GRUB 메뉴 인터페이스가 나타납니다. 이곳에서 운영 체제나 커널을 선택할 수 있습니다.

명령줄 인터페이스 (GRUB 명령 셸):

리눅스 GRUB command shell

c 키를 눌러 명령줄 인터페이스로 전환할 수 있습니다. 명령줄 인터페이스에서는 GRUB 명령어를 직접 입력할 수 있습니다.

리눅스 GRUB command shell ESC

명령줄에서 exit 명령을 입력하고 Enter 키를 누르면 다시 메뉴 인터페이스로 돌아갈 수 있습니다.

GRUB BLS 파일

GRUB의 부트로더 메뉴 항목은 Boot Loader Specification (BLS) 파일로 정의됩니다. BLS 파일은 각 부팅 옵션에 대한 부트로더 구성을 관리하는 파일 형식으로, 기존의 부트로더 구성 파일을 직접 수정하지 않고도 설정을 변경할 수 있습니다. grubby라는 유틸리티를 사용하면 이러한 BLS 파일을 편집할 수 있습니다.

GRUB 구성 파일

/boot/grub2/grub.cfg 파일은 GRUB의 주요 구성 파일이지만, 메뉴 항목을 직접 정의하지는 않습니다. 메뉴 항목은 주로 BLS 파일에 의해 관리됩니다.

이와 같이 GRUB은 시스템 부팅 과정에서 유연한 제어와 설정을 가능하게 하며, 메뉴 기반 인터페이스와 명령줄 인터페이스를 제공하여 다양한 사용자 요구를 충족시킵니다.

리눅스 BLS(BootLoader Specification) 소개

BLS (BootLoader Specification)은 부트로더 설정을 관리하는 표준화된 형식과 구조를 정의합니다. 이 방식은 드롭인 디렉토리(drop-in directory)에 부트 옵션을 관리하며, 각 부팅 항목은 개별 구성 파일로 표현됩니다. 기존의 방식과 달리, BLS는 주요 부트로더 설정 파일을 수동으로 편집하거나 재생성할 필요가 없습니다.

BLS의 주요 특징:

  • 드롭인 디렉토리 시스템: 각 부팅 항목은 별도의 파일로 관리되므로, 부트로더 옵션을 추가하거나 제거하고, 개별 부팅 항목 파일을 편집하는 방식으로 설정을 간편하게 관리할 수 있습니다.
  • 간소화된 커널 설치: 각 부팅 항목을 개별적으로 처리하므로 BLS 시스템은 다양한 시스템 아키텍처에서 커널 설치 프로세스를 일관되게 간소화합니다.
  • 정적 부트로더 구성 파일: BLS는 주요 부트로더 구성 파일을 변경하지 않고 유지합니다. 대신, 부팅 항목은 드롭인 디렉토리 내의 개별 파일로 관리됩니다.

도구 및 유틸리티:

  • grubby 유틸리티: grubby 도구는 BLS를 위한 래퍼 스크립트로, 일반적인 grubby 인수와 옵션을 지원합니다. 또한 부팅 설정 과정에서 초기 램 디스크(initramfs) 이미지를 생성하기 위해 dracut을 실행합니다.

다양한 아키텍처에서의 사용:

이 접근 방식은 RHEL 8에서 특히 중요합니다. 왜냐하면 모든 시스템 아키텍처가 동일한 부트로더를 사용하는 것은 아니기 때문입니다. 예를 들어:

  • GRUB은 64비트 ARM과 x86-64를 포함한 대부분의 시스템에서 사용됩니다.
  • Petitboot은 Open Power Abstraction Layer (OPAL)를 사용하는 IBM Power Systems에서 사용됩니다.
  • ziplIBM Z 아키텍처에서 사용됩니다.

BLS는 이러한 다양한 아키텍처에서도 기본 부트로더 설정 파일을 변경할 필요 없이 일관된 부트 구성을 유지할 수 있도록 합니다.

Rescue 모드로 부팅하기

Rescue 모드는 시스템이 정상적으로 부팅할 수 없을 때, 시스템을 수리할 수 있는 편리한 단일 사용자 환경을 제공합니다. Rescue 모드에서는 시스템이 로컬 파일 시스템을 마운트하고 일부 중요한 시스템 서비스를 시작하려고 시도하지만, 네트워크 인터페이스를 활성화하지 않으며 동시에 다른 사용자가 시스템에 로그인할 수 없게 됩니다.

Rescue 모드 부팅 절차

  1. GRUB 부트 화면에서 편집 모드로 진입:
  • 시스템 부팅 중 GRUB 부트 화면이 나타나면 e 키를 눌러 편집 모드로 들어갑니다.
  1. Rescue 모드 파라미터 추가:

linux 라인의 끝에 다음 파라미터를 추가합니다:
systemd.unit=rescue.target

Rescue 모드 파라미터 추가
Rescue 모드 linux 라인의 끝 systemd.unit=rescue.target 파라미터 추가
  1. Rescue 모드로 부팅:
  • Ctrl + X 또는 F10 키를 눌러 Rescue 모드로 부팅합니다

이 절차를 통해 Rescue 모드로 부팅되어 시스템 수리를 위한 단일 사용자 환경에 접근할 수 있습니다.

Rescue 모드로 부팅
Ctrl + X 또는 F10 키를 눌러 Rescue 모드로 부팅

Emergency 모드로 부팅하기

Emergency 모드는 시스템이 Rescue 모드로도 진입할 수 없는 경우, 시스템을 복구할 수 있는 가장 최소한의 환경을 제공합니다. 이 모드에서는 시스템이 루트 파일 시스템을 읽기 전용으로 마운트하고 필수적인 서비스 몇 가지만 시작하지만, 다른 로컬 파일 시스템을 마운트하거나 네트워크 인터페이스를 활성화하지 않습니다.

Emergency 모드로 부팅 절차

  1. GRUB 부트 화면에서 편집 모드로 진입:
  • 시스템 부팅 중 GRUB 부트 화면이 나타나면 e 키를 눌러 편집 모드로 들어갑니다.
  1. Emergency 모드 파라미터 추가:

linux 라인의 끝에 다음 파라미터를 추가합니다:
systemd.unit=emergency.target

Emergency 모드 linux 라인의 끝 systemd.unit=emergency.target 추가
Emergency 모드 linux 라인의 끝 systemd.unit=emergency.target 추가
  1. Emergency 모드로 부팅:
  • Ctrl + X 또는 F10 키를 눌러 Emergency 모드로 부팅합니다.
Emergency 모드 부팅  Ctrl + X 또는 F10
Ctrl + X 또는 F10 키를 눌러 Emergency 모드로 부팅

이 절차를 통해 Emergency 모드로 부팅되며, 최소한의 환경에서 시스템을 복구할 수 있습니다.

Debug 셸로 부팅하기

systemd 디버그 셸은 부팅 과정에서 매우 초기 단계에 셸을 제공하여 시스템 부팅 문제를 진단할 수 있는 환경을 제공합니다. 디버그 셸에 들어가면 systemctl 명령어를 사용하여 systemd 관련 부팅 문제의 원인을 찾을 수 있습니다.

Debug 셸 부팅절차:

  1. GRUB 부트 화면에서 편집 모드로 진입:
  • 시스템 부팅 중 GRUB 부트 화면이 나타나면 e 키를 눌러 편집 모드로 들어갑니다.
  1. 디버그 셸 파라미터 추가:

linux 라인의 끝에 다음 파라미터를 추가합니다:
systemd.debug-shell

Debug 셸 부팅절차 linux 라인의 끝 systemd.debug-shell 추가
Debug 셸 부팅절차 linux 라인의 끝 systemd.debug-shell 추가
  1. 디버그 셸로 부팅:
  • Ctrl + X 또는 F10 키를 눌러 디버그 셸로 부팅합니다.

추가 옵션 (선택 사항):

  • 디버그 옵션 추가:
  • 추가로 커널 명령줄에 debug 옵션을 추가하면 로그 메시지가 더 많이 생성됩니다. systemd의 경우, debug 옵션은 systemd.log_level=debug의 단축키 역할을 합니다.

주의 사항:

  • 보안 위험 경고: 디버그 셸을 영구적으로 활성화하는 것은 보안 위험이 있습니다. 인증 없이 시스템에 접근할 수 있기 때문에 디버깅 세션이 끝난 후 반드시 디버그 셸을 비활성화해야 합니다.

디버그 셸에 연결하기

부팅 과정 중에, systemd-debug-generator가 TTY9에서 디버그 셸을 설정합니다.

전제 조건

  • 디버그 셸로 성공적으로 부팅한 상태여야 합니다.

디버그 셸에 연결하기 절차

  1. Ctrl+Alt+F9를 눌러 디버그 셸에 연결합니다.
  • 가상 머신을 사용하는 경우, 이 키 조합을 보내려면 가상화 응용 프로그램의 지원이 필요합니다. 예를 들어, Virtual Machine Manager를 사용하는 경우 메뉴에서 “Send Key Ctrl+Alt+F9″를 선택합니다.
  • 디버그 셸은 인증이 필요 없으므로, TTY9에서 다음과 유사한 프롬프트를 볼 수 있습니다:
  • sh-4.4#

디버그 셸 확인

다음 명령어를 입력합니다:

sh-4.4# systemctl status $$

디버그 셸 확인 systemctl status $$
디버그 셸 확인 systemctl status $$

디버그 셸에 연결된 것을 확인할 수 있습니다.

부팅이 성공적으로 완료된 경우, 기본 셸로 돌아가려면 Ctrl+Alt+F1을 누릅니다.

리눅스 OS 설치 디스크를 사용하여 루트 패스워드 재설정하기

루트 패스워드를 잊어버리거나 분실한 경우, 패스워드를 재설정할 수 있습니다.

리눅스 OS 설치 디스크를 사용하여 루트 패스워드 재설정 절차:

  • 1. 시스템을 설치 디스크(또는 USB)로 부팅합니다.

2. 부트 메뉴에서 트러블슈팅 옵션 선택:

리눅스 부팅 Troubleshooting 옵션
  • 설치 미디어의 부트 메뉴에서 “Troubleshooting” 옵션을 선택합니다.

3. 복구 시스템 옵션 선택:

트러블슈팅 메뉴에서 Rescue a Red Hat Enterprise Linux system 옵션
트러블슈팅 메뉴에서 “Rescue a Red Hat Enterprise Linux system” 옵션 선택
  • 트러블슈팅 메뉴에서 “Rescue a Red Hat Enterprise Linux system” 옵션을 선택합니다.

4. 복구 메뉴에서 1을 선택하고 Enter 키를 눌러 계속 진행합니다.

리눅스 트러블슈팅 메뉴에서 1을 선택하고 Enter 키
복구 메뉴에서 1을 선택하고 Enter 키를 눌러 계속 진행합니다.

5. root 파일 시스템 변경:

다음 명령어를 입력하여 파일 시스템을 변경합니다

sh-4.4# chroot /mnt/sysimage

chroot /mnt/sysimage
chroot /mnt/sysimage

6. root 패스워드 변경:

다음 명령어를 입력하여 root 패스워드를 변경합니다:

passwd

root 패스워드 변경
  • 명령어 입력 후 화면에 표시된 지침에 따라 새 root 패스워드를 입력하고 확인합니다.

7. SELinux 자동 레이블 파일 제거

SELinux 자동 레이블링을 방지하기 위해 다음 명령어를 입력하여 .autorelabel 파일을 제거합니다

SELinux 디스크의 시간이 많이 소요되는 재레이블링을 방지하려면 autorelabel 파일을 제거하세요.

sh-4.4# rm -f /.autorelabel

8. chroot 환경에서 종료:

chroot 환경에서 종료하려면 다음 명령어를 입력합니다:

exit

9. 시스템 부팅 완료:

위의 exit 명령어를 다시 입력하여 초기화 과정을 계속하고 시스템 부팅을 완료합니다.

이 절차를 완료하면 root 패스워드가 성공적으로 변경되고 시스템이 정상적으로 부팅됩니다.

rd.break를 사용하여 root 패스워드 재설정하기

root 패스워드를 잊어버리거나 분실한 경우, rd.break를 사용하여 패스워드를 재설정할 수 있습니다.

rd.break를 사용하여 root 패스워드 재설정 절차:

  1. GRUB 부트 화면에서 편집 모드로 진입:
  • 시스템을 부팅할 때 GRUB 부트 화면에서 e 키를 눌러 편집 모드로 들어갑니다.
  1. rd.break 파라미터 추가:
  • linux 라인의 끝에 다음 파라미터를 추가합니다:
    rd.break
rd.break를 사용하여 root 패스워드 재설정 절차
rd.break를 사용하여 root 패스워드 재설정 절차
  1. 변경된 파라미터로 시스템 부팅:
  • Ctrl + X 또는 F10 키를 눌러 시스템을 변경된 파라미터로 부팅합니다.
Ctrl + X 또는 F10 키를 눌러 시스템을 변경된 파라미터로 부팅
Ctrl + X 또는 F10 키를 눌러 시스템을 변경된 파라미터로 부팅
  1. 파일 시스템을 쓰기 가능한 상태로 다시 마운트:
  • 다음 명령어를 입력하여 파일 시스템을 쓰기 가능한 상태로 다시 마운트합니다:
    mount -o remount,rw /sysroot
  1. 파일 시스템의변경:
  • 다음 명령어를 입력하여 파일 시스템의 루트 디렉토리를 변경합니다:
  • Change Root Directiory의 줄임말로 현재 실행중인 프로세스와 자녀 프로세스의 루트 디렉토리를 변경하는 작업입니다.
    chroot /sysroot
  1. root 패스워드 변경:
  • 다음 명령어를 입력하여 root 패스워드를 변경합니다:
    passwd
root 패스워드 변경
root 패스워드 변경
  • 명령어 입력 후 화면에 표시된 지침에 따라 새 root 패스워드를 입력하고 확인합니다.
  1. 다음 시스템 부팅 시 모든 파일 재레이블링:
  • 다음 시스템 부팅 시 모든 파일을 재레이블링하도록 .autorelabel 파일을 생성합니다:
    touch /.autorelabel
  1. 파일 시스템을 읽기 전용으로 다시 마운트:
  • 다음 명령어를 입력하여 파일 시스템을 읽기 전용으로 다시 마운트합니다:
    mount -o remount,ro /
  1. chroot 환경에서 종료:
  • chroot 환경에서 종료하려면 다음 명령어를 입력합니다:
    exit
  1. 시스템 부팅 완료:
    • 위의 exit 명령어를 다시 입력하여 초기화 과정을 계속하고 시스템 부팅을 완료합니다.

주의 사항:

  • SELinux 재레이블링: SELinux 재레이블링 과정은 시간이 오래 걸릴 수 있습니다. 과정이 완료되면 시스템이 자동으로 재부팅됩니다.

SELinux 재레이블링 생략하기

SELinux 재레이블링 과정을 생략하고 루트 패스워드를 재설정하는 방법은 다음과 같습니다.

SELinux 재레이블링 생략하기 절차:

  1. GRUB 부트 화면에서 편집 모드로 진입:
  • 시스템을 부팅할 때 GRUB 부트 화면에서 e 키를 눌러 편집 모드로 들어갑니다.
  1. rd.breakenforcing=0 파라미터 추가:
  • linux 라인의 끝에 다음 파라미터를 추가합니다:
    rd.break enforcing=0
  1. 변경된 파라미터로 시스템 부팅:
  • Ctrl + X 또는 F10 키를 눌러 시스템을 변경된 파라미터로 부팅합니다.
  1. 파일 시스템을 쓰기 가능한 상태로 다시 마운트:
  • 다음 명령어를 입력하여 파일 시스템을 쓰기 가능한 상태로 다시 마운트합니다:
    mount -o remount,rw /sysroot
  1. 파일 시스템의 루트 변경:
  • 다음 명령어를 입력하여 파일 시스템의 루트를 변경합니다:
    chroot /sysroot
  1. 루트 패스워드 변경:
  • 다음 명령어를 입력하여 루트 패스워드를 변경합니다:
    passwd
  • 명령어 입력 후 화면에 표시된 지침에 따라 새 루트 패스워드를 입력하고 확인합니다.
  1. SELinux 보안 컨텍스트 복원:
  • /etc/shadow 파일의 SELinux 보안 컨텍스트를 복원하려면 다음 명령어를 입력합니다:
    restorecon /etc/shadow
  1. SELinux 정책 강제 적용 활성화 및 확인:
  • SELinux 정책 강제 적용을 다시 활성화하려면 다음 명령어를 입력합니다:
    setenforce 1
  • SELinux 상태를 확인하려면 다음 명령어를 입력합니다:
    getenforce
  • 출력 결과가 Enforcing으로 표시되면 SELinux가 강제 적용되고 있는 것입니다.
  1. 파일 시스템을 읽기 전용으로 다시 마운트:
  • 다음 명령어를 입력하여 파일 시스템을 읽기 전용으로 다시 마운트합니다:
    mount -o remount,ro /
  1. chroot 환경에서 종료:
    • chroot 환경에서 종료하려면 다음 명령어를 입력합니다:
    exit
  2. 시스템 부팅 완료:
    • 위의 exit 명령어를 다시 입력하여 초기화 과정을 계속하고 시스템 부팅을 완료합니다.

참고 사항:

  • touch /.autorelabel 명령어 생략: 3단계에서 enforcing=0 옵션을 추가했으므로, 위 단계의 .autorelabel 명령어 입력을 생략할 수 있습니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.

아마존 해외 구매: 서버, 네트워크, 노트북 구매

Amazon Best Sellers Servers

Amazon Best Sellers Networking

Amazon Best Sellers Laptops

위로 스크롤