GRUB를 이해하기 전에 컴퓨터 부팅을 먼저 이해 해야합니다.
출처 :
부팅과정
전원 ON |
바이오스 단계 |
부트로더 단계 |
커널 초기화 단계 |
systemd 서비스단계 |
로그인 프롬프트 출력 |
PC 부팅 | 리눅스 부팅 |
바이오스 단계
전원 ON |
하드웨어 검사 |
부팅 장치 선택 |
MBR 로드 |
부트 로더 로드 |
부트 로더 단계 |
PC 부팅 | 리눅스 부팅 |
MBR
- 하드디스크에서 파티션 된 첫 섹터. 512Byte(0번 섹터)
MBR은 위와 같이 512Byte로 이루어져있으며, 446 byte의 부트 코드(Boot Code), 64 byte의 파티션 테이블(Partition Table), 2 byte의 시그니처(Signature) 영역으로 구성이 되어 있습니다.
GRUB2란 ?
GRUB는 위 그림에서 부트로더 단계에 존재 하는 소프트웨어 프로그램 이다.
(부트 매니저(Boot Manager) = 부트 로더(Boot Loader))
GNU GRUB(GNU GRand Unified Bootloader의 약어, 일반적으로 GRUB이라고 함) GNU 프로젝트 개발된 멀티 부트로더이다.
(GNU는 "GNU는 유닉스가 아니다."란 의미를 갖는 영어 문장 "GNU's Not UNIX"의 약자로, 스톨만은 GNU를 그누로 읽자고 제안했다. )
부트로더는 시스템이 부팅될 때 처음으로 구동되는 시스템으로 운영체제가 본격적으로 구동되기 전 필요한 작업을 수행하고 운영체제 커널에서 필요한 제어 정보를 커널 프로그램에 전송하는 역할을 한다.
과거 리눅스에서는 LILO라는 부트로더를 지원했다가 현재는 대부분의 리눅스 배포판에서는 GRUB를 지원하는데, GRUB 1 버전이 표준 부트로더로 자리매김 해오다가 요즘은 GRUB2 버전으로 대체되고 있다.
GRUB2는 다른 부트로더와 마찬가지로 하드디스크의 첫번째 부트 섹터인 MBR (Master Boot Record)이라는 곳에 저장된다.
GRUB2 설정 (/etc/default/grub)
/ect/default/grub 파일로 /boot/grubgrub2-mkconfig 명령에 의해 /boot/grub2/grub.cfg 파일이 자동 생성된다.
따라서 제일 먼저 grub2 부트로더를 설정하려면 /etc/default/grub2 파일을 설정해야 한다.
cat /etc/default/grub

✔ 이 파일을 편집한다고 해서 GRUB에 바로 적용되는 것이 아니라 update-grub 명령을 실행하여 해당 편집 내용을 grub.cfg에 적용해야 합니다.
출처: GNU GRUB 2 설정 https://weftnwarp.kr/site-it/?p=7223
/etc/default/grub 설정 파일은 '옵션=값' 형식으로 설정되는데 KEY 값에 공백이 들어가는 경우는 따옴표를 사용한다.
설정값 | 설명 |
GRUB_TIMOUT | GRUB 부트로더 화면에서 자동으로 부팅되는 시간을 초단위로 설정한다. |
GRUB_DISTRIBUTOR | GRUB 부트로더 화면에서 각 선택항목 앞에 붙을 배포판 이름을 추출한다. |
GRUB_DEFAULT = saved | saved는 이전에 선택한 엔트리(항목)가 기본으로 계속 선택되도록하는 것이다. |
GRUB_DISABLE_SUBMENUE | 서브메뉴 사용 여부를 설정한다. true는 사용하지 않는다는 것이다. |
GRUB_TERMINAL_OUTPUT | GRUB가 나올 장치를 설정한다. 기본 값을 console로 설정하면 모니터로 설정된다. |
GRUB_CMDLINE_LINUX | 부팅시 커널에 전달할 파라미터를 지정한다. |
GRUB_DISABLE_RECOVERY | true로 설정하면 메뉴 엔트리에서 복구와 관련된 것을 비활성화한다. |
grub2 환경설정
GRUB는 환경설정 파일을 수정한다고 변경 되지 않는다.
/boot/grub2/grub.cfg | /etc/grub.d | /etc/default/grub |
환경설정파일 | 디렉터리 | 파일 |
GRUB는 신기하게도 환경설정파일을 수정한다고 변경이 적용되지 않는다.
vi 편집기로 GRUB 파일을 수정하고 특정 명령어를 입력하면
디렉터리 하위 파일들과, 수정파일들의 변경사항이 환경설정 파일에 적용이 된다.
이때 쓰는 명령어
grub2-mkconfig –o /boot/grub2/grub.cfg
grub2 명령어 사용해보기
✔ grub2-install /dev/sdb
[root@localhost /]# grub2-install /dev/sdb
Installing for i386-pc platform.
Installation finished. No error reported.
✔ grub2-mkconfig –o /boot/grub2/grub.cfg
* 오류 상관 없음 osproder에러는 "부팅 os를 여러개 검출 하지 못했다"라는 에러임 상관없음
[root@localhost /]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
device-mapper: reload ioctl on osprober-linux-sda1 (253:0) failed: Device or resource busy
Command failed.
device-mapper: reload ioctl on osprober-linux-sda2 (253:0) failed: Device or resource busy
Command failed.
device-mapper: reload ioctl on osprober-linux-sda3 (253:0) failed: Device or resource busy
Command failed.
device-mapper: reload ioctl on osprober-linux-sda6 (253:0) failed: Device or resource busy
Command failed.
done
'리눅스 > 부팅' 카테고리의 다른 글
[리눅스] PXE 부팅 (0) | 2024.01.22 |
---|---|
[리눅스] 콜드(cold boot)와 웜(warm boot) 부팅 (0) | 2023.12.04 |
[리눅스] 부트로더 (0) | 2023.11.27 |
[리눅스] legacy BIOS vs UEFI 방식의 차이 (0) | 2023.11.24 |
댓글