리눅스

#3 리눅스의 구조

sundori 2024. 12. 15. 12:17

목차

    부트 매니저(Boot Manager)

    부트 매니저란 말 그대로 부팅을 도와주는 프로그램으로 특히 컴퓨터에 윈도우, 리눅스 등 여러 운영체제가 설치되어 있을 경우에 선택하여서 부팅을 할 수 있도록 해준다.

    부트 매니저 프로그램은 부트 로더, BootLoader라고도 부르며, 하드 디스크의 맨 앞 쪽 영역인 MBR(Master Boot Record)에 설치된다.

     

    1. 부트로더(Boot Loader)

    • 정의: 부트로더는 운영체제를 실행하기 위해 하드웨어와 소프트웨어 사이를 연결하는 초기 프로그램이다.
    • 역할: 시스템을 부팅할 때, 하드웨어 초기화 및 운영체제 커널 로딩을 수행한다.
    • 예시:
      • GRUB (Linux의 일반적인 부트로더)
      • LILO (오래된 Linux 부트로더)
      • BOOTMGR (Windows의 부트로더 역할)

    2. 부트 매니저(Boot Manager)

    • 정의: 여러 운영체제나 부트 옵션이 있는 경우, 사용자가 선택할 수 있도록 돕는 프로그램이다.
    • 역할: 사용자가 어떤 운영체제를 부팅할지 선택하는 인터페이스를 제공하며, 이를 바탕으로 부트로더를 실행한다.
    • 예시:
      • GRUB (부트 매니저와 부트로더 역할을 동시에 수행)
      • Windows Boot Manager

    차이점

    • 부트로더는 커널을 로드하여 운영체제 실행을 준비하는 데 초점을 둔다.
    • 부트 매니저는 여러 부트 옵션을 관리하고 선택하는 데 주력한다.
    디스크 파티션 형식 설명
    MBR

    1. MBR (Master Boot Record)

    • 설명: MBR은 디스크의 첫 번째 섹터에 저장되는 부트 섹터 유형으로, 디스크 파티션 정보를 관리하는 가장 오래된 형식이다. IBM PC에서 처음 도입되었으며, 대부분의 오래된 BIOS 기반 시스템에서 사용된다.
    • 특징:
      • 최대 4개의 기본 파티션만 지원.
      • 디스크 크기 제한: 최대 2TB.
      • 파티션 정보를 디스크의 첫 512바이트에 저장.
      • 부트로더 코드가 MBR에 포함되어 있어, 시스템 부팅 시 첫 단계로 읽힌다.
      • 단일 포인트 실패 가능성(MBR이 손상되면 디스크 접근 불가).
    • 사용 사례: 구형 하드웨어 또는 BIOS 기반 시스템에서 주로 사용.

      현재까지도 가장 많이 사용이되고 있으며, MBR은 파티션 섹터(Partition Sector)라고도 하는데 하드디스크로 부팅하기 위한 정보, 파티션 분할 정보, 부팅에 사용되는 실제 파티션 정보를 저장하고 관리한다.
    GPT

    2. GPT (GUID Partition Table)

    • 설명: GPT는 UEFI(Unified Extensible Firmware Interface) 표준의 일부로, MBR을 대체하기 위해 설계된 현대적인 디스크 파티션 형식이다. 대규모 저장 장치와 높은 안정성을 요구하는 환경에서 사용된다.
    • 특징:
      • 무제한에 가까운 파티션 수 지원(운영체제에 따라 제한, 일반적으로 128개).
      • 디스크 크기 제한: 최대 9.4ZB(제타바이트).
      • 디스크 구조의 복원성을 위해 백업 파티션 테이블을 디스크 끝에 저장.
      • 각 파티션에 고유 식별자(GUID) 할당.
      • CRC32 체크섬을 사용해 파티션 정보의 무결성을 확인.
    • 사용 사례: 최신 하드웨어, 대용량 디스크(2TB 초과), UEFI 기반 시스템에서 사용.

    GRUB (Grand Unified BootLoader)

    GRUB는 GNU 프로젝트에서 만든 부트로더로 LILO에 비교하여 다양한 파일 시스템을 지원하고, 부팅 시에 커널 인자를 조정하여 동적인 부팅을 지원한다.

    Rocky Linux 9 GRUB 메뉴(부팅 시 Shift 연타)

    위의 사진을 보면 GRUB의 부트화면이 보인다. 위 화면에서 일정 시간 아무런 입력도 없다면 자동으로 기본 모드로 실행이 된다.

    그리고 밑에 설명 부분을 읽어보면 제시된 목록에서 상하 방향키로 선택한 후 [Enter] 키를 입력하면 부팅이 되며 e 나 c 키를 누루면 커널 인자값(argument) 조정을 통한 부팅 환경 수정이 가능하다.

    편집 모드

    Grub 목록에서 선택 후 e키를 누룰 시 설정된 항목들이 나타나면서 사용자가 직접 편집할 수 있도록 해준다.

    e 키 입력 시 나오는 편집모드

    Ctrl + X를 누루면 부팅이 시작이되며 Ctrl + C를 누루면 관련 설정을 직접 입력할 수 있는 명령 프롬프트 모드가 호출된다.

     

    명령 프롬프트 모드

    GRUB 화면에서 C를 누루면 진입되는 모드로서 상호 대화식으로 직접 명령어를 입력할 수 있어 Bash Shell과 동일한 느낌이다.

    c 키 입력 시 나오는 명령 프롬프트 모드

    GRUB 환경 설정

    GRUB는 /etc/grub.d에 있는 파일들과 /etc/default/grub 파일을 이용해서 작동한다.
    GRUB에 대한 운영과 작동에 관련된 주요 설정들은 /etc/default/grub 파일에 정의한다.

     

     

    1.GRUB_TIMEOUT = 5

    GRUB 화면에서 대기하는 시간을 말한다. 단위는 초단위이다.

     

    2.GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"

    GRUB 화면에서 각 엔트리(entry) 앞에 보여질 리눅스의 배포판 이름을 추출할 때 사용한다. /etc/system-release라는 경로에서 추출한다.

     

    3.GRUB_DEFAULT=saved

    부트화면에서 제시된 목록 중에서 부팅될 기본 모드를 선택하는 곳이다. 일반적으로 0부터 N에 해당하는 정수값을 입력하는데, 'saved'는 부팅 옵션에서 마지막으로 선택된 부팅 항목을 기본값으로 설정한다.

     

    4.GRUB_DISABLE_SUBMENU=true

    GRUB 메뉴에서 서브메뉴를 비활성화하는 설정이다. 커널 버전별로 부트 항목이 서브메뉴 형태로 표시되는 것을 방지하고, 모든 항목을 동일한 레벨로 보여준다.

     

    5.GRUB_TERMINAL_OUTPUT="console"

    GRUB 화면의 출력 방식을 설정한다. "console"로 설정하면 텍스트 기반의 출력 화면을 사용하며, 그래픽 출력이 비활성화된다.

     

    6.GRUB_CMDLINE_LINUX="crashkernel=1G-4G:256M,4G-64G:320M,64G-:576M rd.lvm.lv=rl/root rd.lvm.lv=rl/swap rhgb quiet"

    커널에 전달할 명령줄 옵션을 정의한다. 시스템 크래시 시 메모리 덤프를 위한 메모리 크기를 설정하고, LVM 볼륨 그룹 및 논리 볼륨을 지정한다. 또한 rhgb와 quiet를 사용하여 부팅 화면을 그래픽 기반으로 표시하며, 상세 부팅 메시지를 숨긴다.

     

    7.GRUB_DISABLE_RECOVERY="true"

    GRUB 메뉴에서 복구 모드(Recovery Mode) 항목을 비활성화한다. 복구 모드 옵션을 표시하지 않아 단순화 및 보안성을 강화한다.

     

    8.GRUB_ENABLE_BLSCFG=true

    GRUB이 BLS(Boot Loader Specification) 형식을 활성화하도록 설정한다. BLS는 부트 항목을 표준화된 형식으로 관리하며, 부팅 항목이 /boot/loader/entries/ 디렉토리에 저장된다. 최신 Linux 배포판에서 표준화된 부트 환경을 유지하기 위해 사용된다.

     

    GRUB를 이용한 활용

    1.root 비밀번호 재설정

    2.GRUB 비밀번호 설정

    3.콘솔 모드의 해상도 변경

    4.네트워크 이름 변경

     

     

    '리눅스' 카테고리의 다른 글

    #5-2 리눅스 부팅과 셧다운  (0) 2025.01.09
    #5-1 리눅스 부팅과 셧다운  (1) 2024.12.15
    #4 리눅스 디렉터리  (0) 2024.12.15
    #2 리눅스 시스템  (1) 2024.12.13
    #1 리눅스  (2) 2024.12.13