오늘은 리눅스의 부트 매니저에 대해 알아보는 시간을 갖도록 하겠습니다.
부트로더
부트로더란?
- Bootstrap Loader의 준말
- 컴퓨터를 사용자가 사용할 수 있도록 디스크나 플래시에 저장된 운영체제를 읽어 주기억장치에 적재해주는 프로그램
부트로더 기능
- OS 실행 전 커널이 정상 실행을 위해 필요 모든 관련 작업을 마무리하고 최종적으로 OS를 실행시키기 위한 프로그램
- 임베디드 시스템 부트로더는 PC의 BIOS와 OS Loader기능 수행하며 시스템이 부팅할 때 가장 먼저 수행
- OS 실행에 필요한 환경 설정하고 OS 이미지 메모리에 복사한다.
- 부트로더는 부트매니저라고도 부르며 크기는 512byte로 하드디스크의 첫 번째 섹터인 MBR(Master Boot Record)에 위치한다.
- 주 파티션마다 부트 섹터가 할당된다.
- 분할된 주 파티션들은 자신의 부트 레코드를 MBR에 기록하여 실행된다.
- 한 컴퓨터에 여러 개의 OS가 설치되어 있을 경우 작업 OS를 선택하여 부팅할 수 있게 한다.
- x86 아키텍처에서 많이 사용되는 부트로더는 LILO(LInux LOader)와 GRUB(GRand Unified Bootloader)이다.
- LILO는 Linux OS 한정되어 사용되는 반면 GRUB은 리눅스 OS 외에도 다른 OS에서도 사용 가능하다.
- LILO, GRUB 모두 System 전원 공급 시 먼저 ROM-BIOS에서 시스템 제어권을 가지고 하드웨어에 대한 점검과 인식
- ROM-BIOS는 MBR에 있는 Boot Loader에게 제어권을 넘긴다.
GRUB
- Erich Stefan Boleny에 으해서 개발된 부트로더이다.
- 리눅스의 전통적인 부트로더로 사용되어 왔던 LILO의 단점을 보완한 것이다.
- LILO에 비해 설정 및 사용이 편리하다.
- 부트 정보를 사용자가 임의 변경 후 부팅 가능, 부트 정보가 올바르지 않더라도 부팅 시 바로 수정하여 부팅 가능
- 다른 OS와 멀티부팅 가능
- 대화형 설정이므로 커널 경로와 파일 이름만 알면 부팅 가능
- 메뉴 인터페이스 환경 지원, 대화형 모드로 부트 정보 설정
- 파일 시스템과 커널 실행 포맷 인식하여 커널 위치와 커널 이미지 파일명만 알고 있으면 부팅 가능
[환경 설정 파일]
- 기존 GRUB 1 (Legacy) 버전과 GRUB 2 버전의 주요 차이점
구분 | GRUB 1 | GRUB 2 |
설정 파일 | /boot/grub/menu.lst | /boot/grub2/grub.cfg |
파티션 | 첫 번째 파티션은 0부터 시작 | 첫 번째 파티션은 1부터 시작 |
root 파티션 지정 방법 | root (hd0,0) | set root=(hd0,msdos1) |
커널 이미지 설정 옵션 | kernel=옵션으로 커널 이미지 명시 | linux=옵션으로 커널 이미지 명시 |
GRUB 1 | |
root(hd0,0) | · root 파티션의 위치를 지정 · (hd0,0) primary master의 첫 번째 파티션을 의미 |
kernel/boot/vmlinuz | · 부팅하면서 메모리에 위치하는 리눅스 커널에 전달할 인수를 지정하는 옵션 · /boot 파티션을 별도로 사용하고 있으면 커널 위치는 /kernel/boot/vm |
initrd/boot/initrd | · 이미지 파일의 경로 지정 옵션 |
[장치명]
- GRUB에서는 ROM-BIOS에서 사용하는 정보를 사용하며 IDE, SCSI 장치명을 별도로 구분짓지 않는다.
- IDE와 SCSI의 구분 없이 시스템에 정착된 순서대로 hd0, hd1로 표기한다.
- 디스크 번호, 파티션 번호는 0부터 시작한다.
- (디스크장치명,파티션명) 형식으로 표기한다.
구분 | DISK | Partition |
1 | hd0 | (hd0,0), (hd0,1), (hd0,2) .. |
2 | hd1 | (hd1,0), (hd1,1), (hd1,2) .. |
3 | hd2 | (hd2,0), (hd2,1), (hd2,2) .. |
[GRUB 작업 모드]
- GRUB 명령 모드 : 초기 화면에서 'c' key
- GRUB 편집 모드 : 초기 화면에서 'e' key
편집모드에서 사용할 수 있는 키와 기능 | |
↑, ↓ | 위, 아래 이동 |
a | grub, conf에서 커널과 관련된 매개변수 추가 |
b | 선택된 boot menu로 시스템 부팅 |
e | 선택된 boot menu 명령어 편집 |
c | · 상호 대화식으로 직접 입력할 수 있는 모드 · 명령어를 입력하는 환경이 bash셸과 유사 |
o | 새로운 행을 커서 다음 행에 삽입 |
O | 새로운 행을 커서 앞 행에 삽입 |
d | 선택된 행 삭제 |
ESC | GRUB 이전 메뉴로 이동 |
런레벨
런레벨이란?
- 프로세스 init이 참조하는 것
- 런레벨은 프로세스 init이 수행해야 할 일련의 처리 방법이다.
- 리눅스 가동시 특정 모드의 레벨을 디폴트로 할 경우 파일 /etc/inittab에 설정한다.
런레벨 | 기능 |
0 | 시스템 종료(shutdown), 명령어 halt 또는 init 0과 동일 |
1 | · 단일 사용자 모드(root만 로그인 가능 모드) · 네트워크, 서버, 파일 공유 서비스를 제공하지 않음 · root 패스워드 분실, 파일 시스템 점검 및 복구, 시스템 점검 시 접근 |
2 | 네트워크가 없는 다중 사용자 모드 |
3 | 텍스트 모드(CUI)에 의한 다중 사용자 모드 |
4 | 미사용 |
5 | 그래픽 모드(GUI)에 의 한 다중 사용자 모드 |
6 | 시스템 재시작(재부팅), 명령어 reboot 또는 init 6과 동일 |
- /etc/inittab 파일 형식은 '코드 런레벨:행동:명령어'이다.
- 현재 실행 런레벨 확인 명령어 : runlevel
로그인과 로그아웃
로그인
- 리눅스는 X 윈도우 상에서의 로그인/로그아웃과 콘솔 상에서의 로그인/로그아웃이 있다.
[로그인 과정]
- 검색 경로 설정
- 터미널 종류 설정 및 각종 터미널 설정
- 환경변수 설정
- 로그인 시 실행 명령어 실행
- 로그인 메시지 출력
파일 | 특징 | 상태 |
/etc/issue | 콘솔(로컬) 접속 시 보여줄 메시지 파일 | 로그인 전 |
/etc/issue.net | 원격 접속 시 보여줄 메시지 파일 | 로그인 전 |
/etc/motd | 로컬접속, 원격접속 모두 해당. 로그인 성공 후 보여줄 메시지 파일 | 로그인 후 |
[로그인 쉘]
- /etc/passwd 파일 마지막 필드에 로그인 셸이 정의되어 있다.
- 로그인 셸에 따라 프롬프트가 다르다.
셸 종류 | 저장 위치 | 프롬프트 |
sh | 본셸, /bin/sh에 위치한다. | $ |
csh | C셸, /bin/csh에 위치한다. | % |
ksh | 콘셸, /bin/ksh에 위치한다. | $ |
bash | 배쉬셸, /bin/bash에 위치한다. | $ |
로그아웃
- 로그아웃은 logout, exit 또는 Ctrl + D를 사용한다.
- 관리자는 일정시간 동안 작업을 수행하지 않는 모든 사용자들을 강제로 로그아웃할 수 있다.
- 강제 로그아웃은 /etc/profile에 TMOUT 변수 값을 지정하여 수행할 수 있다.
참고서 : 2023 이기적 리눅스마스터 2급 기본서
내용 : 53p ~ 62p
'Linux' 카테고리의 다른 글
리눅스 기본 명령어 Chapter 3 (2) | 2023.01.30 |
---|---|
리눅스 기본 명령어 Chapter 1 (0) | 2023.01.26 |
파티션이란? (0) | 2023.01.20 |
리눅스의 설치 (1) | 2023.01.18 |
리눅스 라이선스에 대해 (0) | 2023.01.17 |