- NEW초롱이의 하루
- kisa
- 길은 가면, 뒤에 있다
- C언어 예술가
- Zer0 day - Zer0 day
- Information Security
- Secure-EDU
- 앙큼한유채's 일상 Story
- Library of Ezbeat (잠정 폐쇄)
- The Factory
- 안드
- 모후모후의 커뮤니티
- 공학도의 잡다한 시선
- 안드2
- IT속에 코코아
- IP주소검색(whois)
- IP주소검색(좌표포함)
- 소프트웨어 경력 관리
- 해저 케이블 지도
- MAC주소검색
- IANA
- 포트번호검색
- 자신의IP확인
- 웹페이퍼캡처
- 나의패스워드보안등급
- 웹 취약점 분석
- IT용어정리
- GitHub
- 라이브러리 모음
- 웹마당넷
- 시스템콜참고
- BCD 변환
- 보안뉴스
- 코딩도장(C, Python)
- 백준알고리즘
- 코딩테스트 연습
- 웹 사이트 테스트
- 스크립트꾸미기
- ctf대회목록
- 전자신문
- hash 크랙
- CVE
- 도메인등록
- N클라우드
- BugBountyList
- 칼리공식사이트
- CR4FTING BOX
- 아스키코드 변환
- 웹 사이트 통계 및 평가
- PDF변환
- AWS 및 클라우드 정보
- 가상화 및 서버관련
- 티오리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Shell script
- Tkinter
- docker
- Java
- 리눅스
- centos docker
- RaspberryPi
- Python
- 메소드
- 자바
- Linux
- JSP
- 쉘 스크립트
- 그라파나
- GUI
- API
- synology
- 쉘 스크립트 if문
- 클라우드
- Android
- 쉘 스크립트 기초
- System
- 프로젝트
- GPIO
- 라즈베리파이
- 네트워크
- ACL
- nginx
- 안드로이드
- LEVIATHAN
- Today
- Total
IT창고
리눅스 부팅프로세스 본문
리눅스의 부팅프로세스는 리눅스가 부팅되면서 여러 단계로 이루어지는 초기화 프로세스로 부팅하는 과정은 power on, BIOS, init프로세스를 거쳐 실행됩니다. 시스템의 초기화 및 관리 프로세스를 과거, 현재, 미래로 나눠서 CentOS기준으로 설명하면 과거CentOS 5.x에서는 System V init (init -> inittab -> rc.sysinit) 현재CentOS 6.x에서는 System V init + Upstart (init -> rcS.conf -> rc.conf -> rc.local) 미래CentOS 7.x는 Systemd로 init프로세스가 사라지고 systemd 프로세스가 모든 프로세스를 관리합니다.
부팅 프로세스의 단계를 알아보겠습니다.
먼저 Power on을 합니다 전원이 들어오면 CPU가 ROM(Read Only Memory)에 저장된 BIOS(Basic Input Output System)실행하고 BIOS는 POST(Power On Self Test | 자체 진단 기능)을 수행하며 하드웨어 장치들을 하나씩 인식하며 이상유무를 확인합니다. 부팅장치를 선택해서 부팅 디스크(HDD)의 첫 섹터(Sector)에서 MBR(Master Boot Record)을 읽어 부트로더(Boot Loarder)가 메모리에 로딩됩니다.
부트로더에 보면 부팅메뉴를 선택하고 ( /boot/grub/grub.conf) 후에 해당 메뉴에 설정되어 있는 값에 따라 커널이미지를 실행하면 부트로더는 init 프로세스를 실행합니다.
init프로세스를 실행하면 /etc/inittab 파일을 참조하여 설정된 Runlevel를 확인하여 부팅 레벨(실행환경)을 결정합니다.
vi /etc/inittab 명령어로 init프로세스의 런레벨을 영구적으로 수정할수있는데 inittab파일에 들어가보면 id:3:initdefault: 한줄만 있습니다. 형식은 [id]:[runlevel]:[option] 입니다. runlevel은 시스템을 어떤 방식으로 부팅할것인지 분류해 놓은 것입니다. 0~6까지가 있는데 0은 시스템종료 1은 싱글유저모드(안전모드)(root계정 패스워드 분실시 사용) 2는 네트워크 기능이 없는 다중사용자 모드 3은 네트워크 기능이 있는 다중사용자 모드 4는 사용하지않고(Unuserd) 5는 X-Window환경(GUI환경)이며 6은 시스템 재부팅입니다. 프롬프트창에 reboot가 아닌 init 6을 입력해도 같은 기능으로 작동됩니다 단 프롬프트에서 init명령어를 입력하는 것은 단발성 사용입니다.
CentOS에서도 GUI환경을 구성할수있는데 아래의 명령어를 입력하시면 됩니다.
#yum groupinstall -y "X Window System" "Desktop" "Fonts" "Korean Support"
X-Windows 및 관련 패키지 그룹 설치 명령어 입니다. 설치하시고 init 5를 입력하거나 inittab에 런레벨을 5로 수정하시면 GUI환경에서 작업할수있습니다. 아래는 X-Windows 패키지를 설치하고 GUI 환경으로 접속한 화면입니다.
만약 root비밀번호를 잃어버릴 경우 사용할수있는 방법이 있는데 리눅스 부트로더에서 런레벨 1로 진입하는 방법입니다.
처음 부팅시 보이는 화면인데 이때 아무키나 눌러주면 GRUB부트로더 화면으로 갑니다.
처음보이는 화면에서 e버튼을 눌러주시면 위의 사진과 같은 화면이 나옵니다 e버튼은 edit버튼입니다 위의 화면에서 2번째 Kernel에 e버튼을 눌러주시고 1만 입력하고 엔터쳐서 나온후 b버튼을 눌러 boot하면 런레벨1로 접속하게됩니다. 접속되면 root패스워드를 바꿀수있습니다. 이러한 방법을 쓰면 root권한을 탈취하기가 매우 쉬운데 보안방법이 하나 있습니다
Grub부트로더에 패스워드를 걸어주는 방법을 알려드리겠습니다.
터미널창에 grub명령어를 입력하면 grub 부트로더 설정 프로그램으로 들어가는데 md5crypt를 입력합니다. 이 명령어는 md5 알고리즘을 이용하여 암호화하는 것입니다. 화면에 Encrypted가 암호화된 값인데 복사해둡니다.
vi /boot/grub/grub.conf로 들어가서 아래의 사진처럼 수정해줍니다.
위와 같이 수정해주었다면 재부팅을 하고 다시 부트로더창으로 가봅니다 e버튼을 눌러도 아무런 창이 안뜨는데 아까 grub 패스워드를 설정한 암호를 p버튼을 누르고 입력해야만 부트로더 설정창으로 들어가집니다. 즉 grub패스워드마저 잃어버린다면 OS를 새로 설치해야만 합니다. 꼭 주의해야합니다.
inittab파일에 런레벨이 결정된 후에 해당 런레벨에서 실행해야할 스크립트가 /etc/rc.d/ 디렉토리에 있습니다.
이번엔 chkconfig명령어에 대해 알아보겠습니다. chkconfig는 부팅 시 시작할 데몬을 관리하는 명령어 입니다.
위의 사진과 같이 많은 데몬들이 실행되고 있는데 chkconfig명령어는 옵션과 함께 사용할수있으며 chkconfig --list [데몬명]는 특정데몬의 동작여부를 확인하고 chkconfig [데몬명] on은 부팅 가능한 런레벨에 대해서 모두 활성화 시키며 chkconfig [데몬명] off는 모든 런레벨에서 동작하지 않도록 해제하고 off 대신 reset를 입력하면 기본값으로 초기화시켜줍니다.(기본값은 스크립트 파일내에 명시되어있습니다.) 특정 런레벨만 활성화/비활성화 시키려면 chkconfig --level [런레벨] [데몬명] [on/off]로 입력하시면 됩니다.
데몬의 런레벨을 수정했다면 바로 적용되지 않기때문에 재부팅을 해야하는데 재부팅하지 않고 적용시키는 방법이 있습니다. service 명령어를 사용하면되는데 형식은 service [데몬명] [제어] 입니다. 제어에는 start, stop, restart, status가 있으며 restart는 재시작 status는 상태확인 입니다. start와 stop은 설명하지 않겠습니다.
'서버운영 > Linux' 카테고리의 다른 글
리눅스 네트워크 (0) | 2017.09.12 |
---|---|
리눅스 소프트웨어 관리 (0) | 2017.09.09 |
리눅스 find 명령어 활용 (0) | 2017.09.07 |
리눅스 압축과 아카이브 (0) | 2017.09.06 |
리눅스 파일시스템 쿼터 (0) | 2017.09.05 |