티스토리 뷰

리눅스 운영체제의 구조와 특징.리눅스 부팅순서 (출처:네이버)

 

리눅스 부팅 순서(과정)에서는 항상 그에 따른 메시지를 콘솔모니터를 통해 알려주게 된다. 
부팅과정에서 콘솔로 뿌려지는 메시지들의 의미를 100% 이해한다면, 리눅스가 부팅이 되는 과정을 무심코 살펴본다면, 리눅스의 디렉토리 구조를 이해한다면 리눅스를 잘 사용할 수 있게 될 것이다. 

1. 리눅스 운영체제 부팅 과정

2. 리눅스 부팅 프로세스

3. 리눅스 시스템 디렉토리 구조

 

리눅스를 부팅시킬 때에 수많은 메시지들이 콘솔모니터를 나타났다가 스쳐간다. 우리는 흔히 부팅이 되는구나 하고 부팅되면서 보이는 내용들은 자세하게 보지 못한 채 무심코 지나가 버리는 경우가 허다할 것이다. 하지만, 리눅스 콘솔로 뿌려지는 내용들 하나하나가 우리 서버관리자들에게는 소중한 정보를 주기 위한 리눅스의 세심한 배려라는 것을 기억해보자. 
콘솔로 뿌려지는 모든 메시지들에는 그에 따른 이유가 있으며 친절하게도 리눅스는 자기를 사용하는 관리자에게 이런 메시지를 충실히 알리고 있는 것이다. 시스템에 이상이 있다거나 비정상적일 경우에도 마찬가지 일 것이다. 

 

리눅스마스터 자격증 소개하기
리눅스마스터 자격증 소개하기

 

[리눅스 운영체제 부팅 과정]

 1. ROM BIOS: 물리적으로 각종 메모리와 디바이스들이 정상적으로 동작하는지 체크하는 역할
 2. MBR: BIOS과정에서 문제가 없으면 하드웨어의 가장 앞인 0번 섹터를 읽어 실행한다. 부팅과정의 시작이다.
 3. GRUB: 부트로더를 의미, 예전엔 MBR안에 탑재되었지만 기능이 많아져 따로 떨어져나옴 (GRUB 등이 있음)
 4. 커널: 운영체제 소프트웨어 메모리에 올려서 구동함, /sbin/init을 실행해서 initrd 패키지를 실행함(pid 1)
 5. Init: 부팅의 과정, 루트 유저 프로세스로 systemd 등의 부팅 과정을 수행함.
 6. Runlevel: 부팅의 과정2

참조) 위와 같은 이러한 일련의 과정을 Trust Chain이라고 함.

 

 

 

 

[리눅스의 부팅 프로세스]

리눅스의 부팅 시스템은 계속해서 변화해왔는데 16.04 버전부터 사용된 systemd boot process가 위에서 init 부터 실행되는 부팅 시스템이다. systemd의 경우 기존 init보다 단순한 프로세스로 동시성을 제공하며 부팅 속도를 대폭 향상시킨다. 여러 장점들이 있는데 이런 과정을 "start up process"라고 한다. 단, 리눅스는 init명령과 systemd명령이 아직 혼재되어있다.
즉, "네트워크 서비스"를 재시작시킬 때 아래 두 명령어가 모두 가능하다. 

  service network restart

  systemctl restart network 

위 두 명령어는 같은 내용인데, 가능하면 systemctl을 통해 systemd 명령을 써주는게 바람직하다 한다. 어차피 CentOS7에서는 위와 같이 service를 사용하면 systemctl을 통하여 서비스에 적용되어진다. 

 

 

[리눅스 시스템 디렉토리 구조]

MS의 'Windows'에 익숙해져 있는 대다수의 컴퓨터 사용자들에게 있어서 리눅스의 파일/디렉토리 구조는 참으로 특이하고도 복잡하게 느껴질 것이다. 하지만 리눅스와 사귀기 위해서 꼭 정복해야 할 것들 중의 하나가 파일/디렉토리 구조를 이해하는 것이다. 왜냐하면 어떤 시스템을 사용하는 데 있어서 그 시스템의 파일/디렉토리 구조를 이해하는 것은 필수이기 때문이다. 가볍지만 진지한 마음으로 하나하나 짚어본다면 아래 표와 같다. 

 

리눅스의 파일 구조는 윈도우와는 다른 구조를 가지고 있다. 기본적으로 디렉토리를 구분하는 기호로 우분투에서는 ‘/’, 윈도우에서는 ‘'를 사용한다. 디렉토리 또한 그 명칭을 리눅스에서는 디렉토리(directory), 윈도우에서는 폴더(folder)라고 부른다.

디렉토리(directory)  설명(Expanation) 
/(루트)  최상위 디렉토리인 루트 디렉토리를 의미, 리눅스의 모든 디렉토리들의 시작점이다. 즉, 모든 디렉토리들은 절대 경로로 표기할 때에 이 디렉토리부터 시작한다. 
/bin  기본적인 명령어가 저장된 디렉토리. 리눅스 시스템 사용에 있어서 가장 기본적이라고 할 수 있는 명령어들이 이 디렉토리에 존재한다. 루트 사용자와 일반 사용자가 함께 사용할 수 있다. 
/boot  리눅스 부트로더(Boot Loader)가 존재하는 디렉토리로 GRUD와 같은 부트로더에 관한 파일들을 가지고 있다. 
/dev  시스템 디바이스 파일을 저장하고 있는 디렉토리. 하드디스크, CD-ROM 장치 등과 같은 장치파일들이 존재하는 디렉토리. 
/etc  시스템 대부분의 모든 설정 파일이 존재하는 디렉토리. 
/etc/mail/  sendmail의 설정파일들이 존재하는 디렉토리. 
/etc/ssh/  SSH 서비스, 즉 sshd 데몬에서 사용하는 각종 설정파일 들이 존재하는 디렉토리. 
/etc/squid/  squid 프락시 서버의 설정파일들이 저장된 디렉토리. 
/etc/skel/  계정 사용자 생성 시의 초기화 파일들이 저장된 디렉토리. 
/etc/rc.d/  부팅레벨 별 부팅스크립트파일들이 존재하는 디렉토리. 
/etc/rc.d/init.d/  시스템 초기화 파일들의 실제 파일들이 존재한다. 
/etc/pam.d/  PAM 설정 정보파일들이 저장된 디렉토리. 
/etc/httpd/  RPM으로 설치된 아파치 설정파일들이 저장된 디렉토리. 
/etc/xinetd.d  xinetd 수포 데몬에 의해 서비스되는 서비스 설정 파일이 존재한다. 
/home  사용자의 홈 디렉토리, useradd 명령어로 새로운 사용자를 생성하면 대부분 사용자의 ID와 동일한 이름의 디렉토리가 자동으로 생성된다. 
/lib  커널이 필요로 하는 커널 모듈 파일과 라이브러리 파일, 각종 라이브러리 파일들이 존재하는 디렉토리. 
/media  DVD, CD-ROM, USB 등과 같은 탈부착이 가능한 장치들의 마운트포인트로 사용되는 디렉토리. 
/mnt  /media 디렉토리와 비슷한 용도로 탈부착이 가능한 장치들에 대하여 일시적인 마운트포인터로 사용하는 디렉토리. 
/proc  “가상파일시스템” 이라고 하는 곳으로 현재 메모리에 존재하는 모든 작업들이 파일형태로 존재하는 곳. 디스크 상에 실제 존재하는 것이 아니라 메모리 상에 존재하기 때문에 가상파일 시스템이라고 부른다. 
/root  시스템 최고관리자인 root 사용자의 개인 홈 디렉토리. 
/sbin  ifconfig, ethtool 등과 같이 시스템 관리자들이 사용하는 시스템 관리자용 명령어를 저장하고 있는 디렉토리. 
/tmp  “공용 디렉토리” 시스템을 사용하는 모든 사용자들이 공통으로 사용하는 디렉토리. 
/usr  시스템이 아닌 일반 사용자들이 주로 사용하는 디렉토리. 일반 사용자들용 명령어들은 /usr/bin에 위치한다. 
/usr/bin/  일반 사용자들의 사용가능한 명령어 파읻들이 담긴 디렉토리. 
/usr/X11R6/  X 윈도우 시스템의 루트 디렉토리. 
/usr/include/  C프로그램에 필요한 헤드파일의 디렉토리. 
/usr/lib/  /lib에 포함되지 않은 라이브러리 디렉토리. 
/usr/src/  프로그램 소스(커널)가 조정되는 디렉토리. 
/usr/local/  Apache, PHP 등과 같은 애플리케이션들을 소스로 컴파일 설치 할 때 사용되는 장소 
/usr/share/man/  명령어들의 도움을 주는 메뉴얼 페이지 디렉토리. 
/var/  시스템 운용 중에 생성되었다가 삭제되는 데이터를 일시적으로 저장하기 위한 디렉토리 
/var/tmp/  /tmp 디렉토리와 같은 공용 디렉토리. 
/var/log/  시스템 로그파일이 저장되는 디렉토리. 
/var/ftp/  FTP 서비스를 위한 FTP 홈 디렉토리. 
/var/named/  DNS에서 사용되는 zone파일들이 저장되는 디렉토리. 
/var/spool/mail/  각 계정 사용자들의 메일파일이 저장되는 디렉토리. 
/var/spool/lpd/  프린트를 하기 위한 임시 디렉토리. 
/var/spool/at/  예약작업에 관한 파일들이 저장되는 디렉토리. 
/lost+found  최상위 디렉토리인 ‘/’ 디렉토리에만 존재하는 것이 아니라 파일 시스템마다 존재할 수 있는 디렉토리. 이 디렉토리는 파일 시스템 체크 및 복구 유틸리티 실행 후에 주로 생성 되는 것으로 복구되지 않은 채로 블록만 존재하는 파일, 연결이 끊어진 inode들이 숫자 파일 형태로 존재하는 곳이다. 숫자 형태로 존재하는 파일들은 파일이름만 바꾸면 바로 복구 가능하다. 

 

리눅스의 디렉토리 구조에 어느 정도 익숙해졌기를 바란다.