티스토리 뷰

리눅스정리

리눅스 부팅

잔잔한 물결처럼 2025. 4. 19. 19:23

부팅은 PC의 전원을 켜는 순간부터 리눅스가 완전히 동작하여 로그인 프롬프트가 출력될때 까지의 과정을 의미한다.

리눅스 부팅은 PC부팅과 리눅스 부팅으로 나눌 수 있다.

 

1 BIOS PC Booting
MBR
2 BOOT Loader(GRUB) Linux Booting
3 Kernel
4 Systemd
5 Login shell

 

  • BIOS
    1. ROM에 저장되어 ROM-BIOS라고 부른다, PC를 켜면 제일 먼저 동작한다.
    2. PC에 장착된 기본적인 하드웨어의 상태를 확인한다.
    3. 하드디스크의 0번 섹터에서 MBR(Master Boot Record) 를 로딩한다. MBR 에는 Boot code와 Patition Table에 대한 정보를 가지고 있다
  • 부트로더(boot loader)
    1. 컴퓨터를 사용자가 사용할 수 있도록 디스크나 플래시에 저장된 운영체제를 읽어 주기억장치에 적재해 주는 프로그램
    2. 운영체제 실행에 필요한 환경을 설정하고 운영체제 이미지를 메모리에 복사한다
    3. 부트로더(boot loader)는 부트매니저라고도 부르며 크기가 512바이트로 하드디스크의 첫 번째 섹터인 MBR(Master Boot Record)에 위치한다. MBR에는 부트 매니저 프로그램과 파티션 정보를 저장한다.
    4. GRUB 는 x86 아키텍처에서 가장 많이 사용되는 부트로더이다.
    5. CentOS 6 에서는 Grub Legacy를, CentOS 7 이상부터는 GRUB 2 버전을 사용한다.
    6. 해당 GRUB 환경설정 파일은 GRUB1 의 경우 /boot/grub/menu.lst, GRUB2 의 경우 /boot/grub2/grub.cfg에 있다.
  • 커널(Kernel)
    1. 커널은 가장 먼저 시스템에 연결된 메모리, 디스크, 키보드, 마우스 등 장치들을 검사한다.
    2. 장치 검사 등 기본적인 초기화 과정이 끝나면 프로세스와 스레드를 생성한다.
    3. 이 프로세스들은 메모리 관리 같은 커널의 여러 가지 동작을 수행한다.
    4. 프로세스의 개수와 종류는 리눅스의 버전과 종류에 따라 다르다.
    5. 커널 프로세스가 생성되면 커널이 수행할 작업이 끝난다.
    6. 커널은 메모리 관리, 스케줄링 같은 동작을 수행하기 위해 여러 개의 프로세스들을 생성한다.
    7. 커널 프로세스가 생성되면 수행할 작업이 끝나면서 systemd 서비스를 동작시킨다.
  • Systemd
    1. systemd 서비스는 기존의 init 스크립트를 대체한 것으로 다양한 서비스를 동작시킨다.
    2. 각 서비스를 시작하는 과성은 화면에 메시지로 출력된다.
    3. Systemd 프로세스가 1번 프로세스이다.
    4. 설정 파일은 /etc/inittab 이다
    5. init 는 시스템의 상태를 7단계로 정의하고 각 단계에 따라 셀 스트립트를 실행한다.
    6. init 프로세스가 실행하는 스크립트 파일은 /etc/rc.d/init.d 디렉터리에 위치한다
    7. 현재 실행되는 런레벨을 확인하는 명령어는 runlevel 이다
    8. systemd 는 소켓 기반으로 동작하며 inetd 와 호환성을 유지한다.
    9. 셀과 독립적으로 부팅이 가능하다.
    10. 마운트와 fsck 제어가 가능하다
    11. 시스템 상태에 대한 스냅숏을 유지한다.
    12. SELinux 와 통합이 가능하다
    13. 서비스에 시그널을 전달할 수 있다.
    14. 셧다운 전에 사용자 세션의 안전한 종료가 가능하다
    15. systemd는 시스템을 관리하는데 유닛을 사용한다.
유닛 기능
service 시스템 서비스 유닛으로, 데몬을 시작/종료/재시작/로드한다. atd.service
target 유닛을 그루핑한다. basic.target
automount 디렉터리 계층 구조에서 자동 마운트 포인트를 관리한다. proc-sys-fs-binfmt_misc.automount
device  리눅스 장치 트리에 있는 장치를 관리한다. sys-module-fuse.device
mount 디렉터리 계층 구조의 마운트 포인트를 관리한다. boot.mount
path 파일 시스템의 파일이나 디렉터리 등 경로를 관리한다. cups.path
scope 외부에서 생성된 프로세스를 관리한다. init.scope
slice 시스템의 프로세스를 계층적으로 관리한다. system-getty.slice
socket 소켓을 관리하는 유닛으로 AF_INET, AF_INET6, AF_UNIX 소켓 스트림과 데이터그램, FIFO를 지원한다. dbus.socket
swap 스왑 장치를 관리한다. dev-mapper-fedora\x2dswap.swap
timer 타이머와 관련된 기능을 관리한다. dnf-makecache.timer

 

systemd 기반 서비스를 제어하는 명령어는 systemdctl 이다

명령어 설명
systemctl 현재 동작 중인 유닛 출력
systemctl -a 전체 유닛 출력
systemctl status 유닛명 유닛 서비스 상태 확인
systemctl stop 유닛명 유닛 서비스 정지
systemctl start 유닛명 유닛 서비스 시작
systemctl restart 유닛명 유닛 서비스 재시작

 

target 과 런레벨 관련 명령어들은 다음과 같다.

명령어 설명 예제
systemctl get-default 현재 타겟 확인 systemctl get-default
systemctl set-default <타겟명>.target 기본 타겟(레벨) 지정 systemctl set-default rescue.target
systemctl set-default multi-user.target
systemctl set-default graphical.target
systemctl isolate 런레벨 타켓(레벨) 변경 systemctl isolate rescue
systemctl isolate graphical

systemctl isolate runlevel 1
systemctl isolate runlevel 5
init, telinit 런레벨 변경 init 1
init S

 

  • 로그인 과정
    1. 입력한 패스워드와 파일 /etc/passwd 필드를 비교한다
    2. 셀 설정 파일을 실행한다. 
    3. 로그인 셸은 파일 /etc/passwd의 마지막 필드에 정의되어 있다.
셸 종류 저장 위치 프롬프트
sh 본셸, /bin/sh 에 위치 $
csh C셸, /bin/csh 에 위치 %
ksh 콘셸, /bin/ksh 에 위치 $
bash 배쉬셸, /bin/bash에 위치 $

 

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

시스템 종료 명령어  (0) 2025.04.24
네트워크 관련 명령어  (0) 2025.04.24
디렉터리 관련 명령어  (0) 2025.04.23
리눅스 명령어 정리  (0) 2025.04.19
디렉터리별 저장 내용  (0) 2025.04.18
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함