개키우는개발자 : )

리눅스 부팅 과정과 런 레벨(Run Levels) 본문

Linux/Linux 무작정 따라하기

리눅스 부팅 과정과 런 레벨(Run Levels)

DOGvelopers 2019. 2. 13. 13:31
반응형

컴퓨터 켜고 끄기와 Run Level



리눅스 부팅 순서



리눅스 부팅 순서 이미지리눅스 부팅 순서



1) BIOS(Input/Output System)


바이오스 라는 용어는 게리 킬당이 발명하였으며, 1975년 CP/M 운영 체제에 처음 등장하였는데, 하드웨어와 직접 연결되는 부팅 시간 동안 불러들이는, 기기의 특화된 CP/M의 일부로 기술하고 있다.


운영 체제 중 가장 기본적인 컴퓨터의 입출력을 처리하는 소프트웨어이다. 사용자가 컴퓨터를 켜면 시작되는 프로그램으로 주변 장치와 컴퓨터 운영 체제 사이의 데이터의 흐름을 관리한다. 


펌웨어(firmware)의 한 종류로서 IBM호환 컴퓨터의 경우에 전원이 공급되면 시작되는 부팅절차에서 하드웨어 초기화를 수행하고, 운영체제나 응용 프로그램에게 런타임 서비스(컴퓨터 프로그램의 실행을 지원하는 서비스)를 제공한다.



2) Master Boot Record(MBR)


마스터 부트 레코드 또는 파티션 섹터(partition sector)는 파티션된 기억 장치(이를테면 하드 디스크)의 첫 섹터 인 512 바이트 시동 섹터이다.(파티션되지 않은 장치의 시동 섹터는 볼륨 부트 레코드이다.)


MBR은 다음의 것들 가운데 하나 이상을 위해 사용된다.


- 디스크 프라이머리 파티션 테이블을 소유한다.

- 부트스트래핑 운영 체제 (컴퓨터 바이오스가 실행을 MBR 안에 포함된 기계어 명령어로 통과시킨 뒤)

- 32비트 디스크 서명이 있는 각 디스크 매체의 구별


IBM PC 호환 컴퓨터의 대중화 때문에, 지원을 넓히고 다른 컴퓨터로 통합하기 위해 이러한 종류의 MBR이 널리 사용된다.



3) LILO OR GRUB


3-1) LILO(LInux LOader)


리눅스로더는 리눅스를 위한 부트 로더이다. LILO는 처음에 Werner Almesberger가 개발하였으나, 현재의 개발자는 

존 코프먼(John Coffman)이다.


LILO는 특정한 파일 시스템에 의지하지 않으며, 플로피 디스크와 하드 디스크(이를테면 리눅스 커널)로 부터 운영 체제를 시동할 수 있다. 최대 16개의 다른 이미지를 시동 메뉴 안에서 고를 수 있다. 루트 장치와 같은 여러 변수는 각 커널에 독립적으로 설정할 수 있다. 

LILO는 마스터 부트 레코드 (MBR)이나 파티션의 시동 섹터 안에 위치한다. 후자의 경우 다른 무언가가 LILO를 불러오기 위해 MBR 안에 위치해야 한다.

시스템이 시작할 때, LILO가 하드 드라이브에 접근하도록 하기 위해 바이오스 드라이버만 사용할 수 있다. 이러한 까닭에, 매우 오래된 바이오스들의 경우, 접근할 수 있는 영역이 처음 두개의 하드 디스크의 실린더 0부터 1023까지 한정되어 있다. 나중에 나온 바이오스들의 경우, LILO는 32비트 논리주소 어드레싱 (LBA)를 사용하여 바이오스가 접근하는 모든 하드 디스크의 자료를 실용적으로 접근한다.

LILO는 loadlin이 대중화된 뒤 여러 해 동안 대부분의 리눅스 배포판을 위한 기본 부트로더였다. 오늘날 대부분의 배포판들은 GRUB을 기본 부트로더로 사용한다.

3-2) GRUB

GNU GRUB은 GNU 프로젝트의 부트로더이다. 대부분 운영 체제의 커널을 불러올 수 있으며, 인자를 넘겨 줄 수도 있다. GNU GRUB의 이전 이름은 GRand Unified Bootloader이었고 이는 대통일이론의 영문 이름의 패러디이다. 대부분 리눅스 배포판에서 부트로더로 사용한다.


대부분 사용되는 GRUB은 "GRUB Legacy"로 분류된다. 현재의 버전은 기능 추가 대신 버그 수정이 이뤄지고 있다. 현재는 GRUB2 개발에 집중하고 있으며 이는 PUPA 프로젝트의 코드를 기반으로 한다.



4) kernel


컴퓨터 과학에서 커널은 컴퓨터의 운영 체제의 핵심이 되는 컴퓨터 프로그램의 하나로, 시스템의 모든 것을 완젆 ㅣ통제한다. 운영 체제의 다른 부분 및 응용 프로그램 수행에 필요한 여러 가지 서비스를 제공한다. 핵심 이라고도 한다.


4-1) kernel 역할


- 보안


커널은 컴퓨터 하드웨어와 프로세스의 보안을 책임진다.


- 자원 관리


한정된 시스템 자원을 효율적으로 관리하여 프로그램의 실행을 원활하게 한다. 특히 프로세스에 처리기를 할당하는 것을 스케줄링이라 한다.


- 추상화


같은 종류의 부품에 대해 다양한 하드웨어를 설계할 수 있기 때문에 하드웨어에 직접 접근하는 것은 문제를 매우 복잡하게 만들 수 있다. 일반적으로 커널은 운영 체제의 복잡한 내부를 감추고 깔끔하고 일관성 있는 인터페이스를 하드웨어에 제공하기 위해 몇가지 하드웨어 추상화(같은 종류의 장비에 대한 공통 명령어의 집합)들로 구현된다. 이 하드웨어 추상화는 프로그래머가 여러 장비에서 작동하는 프로그램을 개발하는 것을 돕는다. 하드웨어 추상화 계층(HAL)은 제조사의 장비 규격에 대한 특정한 명령어를 제공하는 소프트웨어 드라이버에 의지한다.



5) Init


유닉스 기반 컴퓨터 운영 체제에서 Init은 컴퓨터 시스템의 부팅 과정 중 최초의 프로세스이다. Init은 시스템이 종료될 때까지 계속 실행하는 데몬 프로세스이다.


다른 모든 프로세스의 직간접 부모 프로세스 이며 자동으로 고아 프로세스들을 입양한다. Init은 하드 코딩된 파일 이름을 이용하여 커널에 의해 시작된다. 커널이 이를 시작할 수 없으면 커널 패닉이 발생한다. 


Init은 일반적으로 프로세스 식별자 1로 할당된다.



5) Run Level


runlevel 이란, 리눅스 시스템 관리의 용이함을 위하여 서비스의 실행을 단계별로 구분하여 적용하는 것을 말함. 보통 0~6 까지 총 7가지 모드가 있음. 리눅스마다 조금씩 다르지만 0(정지), 1(싱글모드), 6(재시작)은 일치함. 낮은 레벨일수록, 시스템 시작시 불러오는 드라이버나 데몬 수가 적음. runlevel은 높아지는 방향으로 진행되며, 부팅되면 0부터 시작함. reboot 명령어를 실행하면 runlevel이 6이 됨.



Run Level 이미지Run Level




실습


ps -p 1 ef


1번 프로세스 목록 보기. sbin/init 파일이 프로세스 1번을 차지하고 있다.


cd /etc/rc (run commend) + TAP 두번


rc0.d /~~~rc6.d 런레벨 을 확인할 수 있다.



cd /etc/rc6.d => ls


서비스 목록들이 나온다 . 앞에 KO1을 제외하고 보면 서비스 이름이 된다.


실습 이미지1실습(1)



cat K01atd + TAP + ENTER


atd 파일의 스크립트문이 출력 된다. $1=인자 값이 start & stop 이면 해당되는 스크립트가 실행되도록 

설계되어 있다.



K01atd 스크립트 이미지K01atd 스크립트



sudo init 6


입력하고 비밀번호를 적으면 우분투가 재시작 된다. 처음 화면을 실행 시킬 때와 같이 화면이 출력되다 로그인 하라는 문구가 나올 것이다.


우분투 재시작 이미지재시작



sudo init 1


입력후 비밀번호를 작성하면 싱글유저(복구모드) 모드로 접속한다. 어떤한 명령어를 입력하면 실행되는 설명을 출력해준다.


journalctl -xb : 시스템 로그 보기

systemct1 reboot : 시스템 재부팅

systemct1 default or exit : 기본모드로 부팅


exit 로 빠져나온다.


복구모드 이미지싱글유저(복구) 모드



우분투의 기본 run level = 3


cd /etc/rc + TAB 두번 => cd /etc/rc3.d => ls


rc3의 일련번호는 S01 이다. s는 start 관련 서비스 이다. 

그렇다면 rc1.d 의 일련번호는 K01이였다. K = Kill 서비스를 죽인다는 서비스 이다. 

안전모드에선 최소한의 서비스를 제공한다. 그렇기 때문에 다른 서비스들을 최소한의 서비스 말고는 나머지모두 k을해서 기본 서비스는 Kill이다.


나머지 rc 보기 


2~5는 모두 같은 서비스를 제공한다.


runlevel보기 이미지나버지 runlevel 보기



컴퓨터 시작과 종료 명령어


명령어 이미지컴퓨터 부팅 명령어


shutdown


여러명의 사용자가 있다면 그 사용자에게 shutdown 한다고 메시지를 보내는거다.

shutdown을 하지 않는다면 shutdown -c 로 캔슬한다.


shutdown이미지shutdown 실행



poweroff


현재 사용자가 나 혼자이기 때문에 바로 시스템 종료 된다.


사용종료 이미지poweroff




출처[뉴렉처] 유튜브 채널

https://www.youtube.com/watch?v=Y7VzJjTEOXc&index=34&list=PLq8wAnVUcTFU9zLWK-dHWrvTJ0PF8Y0Sf

반응형
Comments