- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Link
- 재능이의 돈버는 일기
- StresslessLife
- K_JIN2SM
- 소소한 일상
- My Life Style & Memory a Box
- Blog's generation
- 공감 스토리
- 취객의 프로그래밍 연구실
- Love Me
- Dream Archive
- 세상에 발자취를 남기다 by kongmingu
- hanglesoul
- 카마의 IT 초행길
- 느리게.
- 미친듯이 즐겨보자..
- Joo studio
- Gonna be insane
- 악 다 날아갔어!! 갇대밋! 왓더...
- xopowo05
- 맑은공기희망운동
- 엔지니어 독립운동
- 혁준 블로그
- Simple in Complex with Simple
- 무의식이 의식을 지배한다
드럼치는 프로그래머
[Linux] 리눅스 Booting 및 init 와 shutdown 본문
제가 아는바로 설명을 드릴 수도 있으나 Linux의 시스템의 시동과 종료과정에 대해서는
워낙 잘 설명된 곳이 있어 아래에 퍼왔습니다. 아래를 찬찬히 훑어보세요.
리눅스 설치를 마치고, CD를 꺼내고 나면, 시스템이 다시 시작 됩니다.
여러분이 리눅스 설치 중 Default로 선택된 값을 변경 하지 않고 기본적인 설치를 하였다면, 위와 같은 프롬프트 비슷한 것이 나타납니다.
만일, 여러분이 MS 윈도우가 설치된 상태에서 리눅스를 설치 하셨다면, Tab 키를 누르면 부팅 가능한 OS의 Label들(linux window98 ... )이 나타날 것입니다. 그 중 리눅스 설치시 리눅스를 위한 Label로 선택했던 이름을 입력하시면 됩니다. (Default는 'linux' 입니다.) 레드햇과 마찬가지로 최근 버전인 6.2 up이상을 설치하셨다면, 그래픽 환경의 LILO가 뜨게 됩니다. 그러면, 화살표 키로 가볍게 Linux Label에 해당하는 것을 선택하시고 엔터! 하지만, 선택하지 않아도, LILO는 기본적으로 LINUX를 Loading하게 됩니다. LILO(LInux LOader)는 주로 MBR(Master Boot Record)에 설치되어, 여러개의 커널로 부팅이 가능한 경우, 커널들이 어디어디에 위치하고 있는지에 관한 정보들을 파악하고 있다가, 사용자로 하여금 사용할 운영체제를 선택하도록 하고, 선택된 운영체제에 맞는 커널을 읽어들이는 역할을 하는 것입니다. 화면에 메시지를 가득 채우면서, 약간의 시간이 경과한 후, 와우리눅스6.2 up의 경우 다음과 같은 화면이 나타납니다.
login 에 'root' 라 입력하고,
passwd : 에는 인스톨 할 때 입력했던 패스워드를 입력합니다. 이제, 명령어를 입력하면 반응을 보이게 되는, 준비된 쉘 프롬프트 상태가 되었을 것입니다. 잘 되는지 'ls' 명령을 한 번 입력해 보세요. 파일 이름 같은 리스트가 주루룩 뜬다면 성공입니다.
'리눅스가 시작되면서 화면 가득히 뜨는 메시지들은 도대체 어디서 내보내는 것일까, 무슨 일이 일어나는 것일까.... ???' 라는 궁금증이 생기신 분들도 계실 것입니다.
다음은 로그인 프롬프트를 보여주기 전까지 어떤 작업들이 수행되는지에 관한 절차를 나타낸 것입니다. 물론, 지금 완전한 이해를 해야하는 것은 아닙니다. 이러한 절차를 알고 있다면, 시스템이 시작될 때 어떠한 작업을 추가하거나 삭제하는 것이 가능해집니다. 이곳에 언급된 파일들을 직접 열어 구경해보면, 좀 더 도움이 될 것입니다. 파일들에 관한 설명을 보고 싶으신 분들은 다음의 KLDP문서(리눅스 부트 프로세스)를 참고하세요. 앞부분(커널 압축 해제 이전 부분까지)은 일반적인 운영체제의 로딩 과정 을 설명한 것입니다.
↓
/etc/rc.d/rc[0-6].d에서 [0-6]은 실행할 실행레벨로, 다음과 같은 종류가 있습니다.
실행레벨은 시스템의 사용 용도나 형편에 따라, 수행되어야 할 서비스들을 묶어 놓은 그룹 정도로 해석할 수 있습니다. 관리자만이 시스템에 접근해야 할 필요가 있을 경우에는 실행레벨 1로, X window 로 로그인 하려면 실행레벨 5로 정해주면, 알아서 그룹으로 묶여 있는 서비스들이 시작되거나, 종료되는 것입니다.
해당 디렉토리를 검색해 보면 알 수 있겠지만, 각 실행레벨(runlevel)은 각기 실행할 스크립트들을 각각의 디렉토리에 링크파일로 가지고 있어, init에 의해 해당 스크립트를 실행시키도록 합니다. 앞서 말했듯이 사용자의 편의대로 실행레벨을 별경할 수 있으며, 아래 파일을 수정함으로써 가능합니다. 3 부분을 원하는 실행레벨로 바꾸면 됩니다.
당연한 이야기겠지만, 위의 실행레벨로 미루어 볼 때, 3 혹은 5가 올 것입니다.
그외, 사용자가 정의 한 특정 실행레벨로 실행 시키고 싶을 때는 실행레벨 4가 올 수도 있을 것입니다. 그러나, 0 혹은 6같은 실행레벨을 준다면, 부팅 즉시 종료 혹은 리부팅을 시키는 것이 됩니다.
위의 절차 중에서 /etc/rc.d/rc 스크립트의 실행내용을 보면, /etc/inittab 파일 중 'id'부분에 정의된 실행레벨에서 실행될 스크립트들을 실행시키는 일을 합니다.
실행시킬 스크립트들은 /etc/rc.d/rc[0-6].d 디렉토리에 들어 있는데, 이 파일들은 알고 보면, /etc/rc.d/init.d 디렉토리에 실제적인 실행 스크립트들이 들어 있습니다. 그래서, 추가적으로 실행될 스크립트를 추가하려면, /etc/rc.d/init.d 에 스크립트를 추가하고, 실행되기 원하는 레벨의 디렉토리에서 링크를 만들어 주는 것입니다. 위 보기의 경우, 실행 레벨이 '3'이고, /etc/rc.d/rc3.d 디렉토리에 실행될 스크립트를 가리키는 링크들이 들어 있습니다. 그 링크 이름의 구성을 보면, 앞쪽의 Character가 두가지인 것을 알 수 있습니다. 'K' Stop 'S' Start 를 의미하는 것으로, 'K15httpd'는 /etc/rc.d/init.d/httpd stop 으로 실행되고, 'S85httpd'는 /etc/rc.d/init.d/httpd start 로 실행되는 것입니다. 뒤의 숫자는 실행 순서를 나타내는 것으로 번호가 앞서는 것이 먼저 실행됩니다. 이렇게 실행레벨 별로 따로 실행시킬 필요가 없는 경우에는
에 실행시킬 스크립드의 내용을 넣어 두면, 해당 실행레벨의 스크립트들이 실행되고, 마지막으로 항상 스크립트가 실행됩니다.
부팅시 자동으로 실행되어야 할 서비스들은 사용자의 필요에 따라 실행 여부를 조정할 수 있습니다. 리눅스에서는 다음과 같은 방법들을 사용하여, 쉽게 서비스를 조정할 수 있습니다. 이것은 위에서 살펴 본 디렉토리의 내용들을 보다 쉽게 관리할 수 있도록 한 것입니다.
linuxconf
linuxconf는 서비스 설정 뿐만이 아니라, 시스템에 관한 대부분의 것들을 모두 설정할 수 있습니다. 그 중, 제어->제어판->서비스 활동 제어 메뉴를 선택하여, 아래와 같은 메뉴에서 설정을 변경할 수 있습니다. ntsysv X window를 사용하지 않는 사용자들이 주로 사용하는 툴로, 아래와 같이 '*' 선택된 부분이 부팅시 실행되는 서비스입니다. 기본적으로는 현재 실행 중인 레벨의 서비스를 조정하지만, 실행시 다른 레벨을 지정해 주면, 다른 레벨의 실행 서비스도 조정할 수 있습니다. chkconfig 아래와 같이 모든 실행 레벨의 상태를 텍스트로 보여줍니다. 명령행에서 옵션을 사용해 추가하거나, 삭제할 수 있습니다.
시스템에 따라 속도 차이는 있겠지만, 부팅 되는 과정이 모니터에 쭈루룩 표시되고 나면, 그 내용을 보고 싶어도 제대로 볼 수가 없습니다.
다음과 같이, 부팅에 관한 Log를 확인할 수 있습니다.
혹은, 간단하게, Shift + Pg Up / Pg Dn 버튼을 이용하여, 볼 수도 있습니다.
이제 그만 리눅스를 종료하고, 컴퓨터를 꺼야겠다. 그러나,
이것도 익숙치 않으면, 고민스러운 일입니다. 몇가지 시스템 종료 방법을 소개합니다.
X window 모드로 부팅한 경우
runlevel 5로 부팅한 경우, X window로 Start하게 됩니다.
이런 경우, 좌측의 발바닥을 누르고, --> 로그아웃 --> 시스템 종료를 선택합니다. init
위에서 언급했던 'init '를 이용하여 시스템을 종료하거나, 리부팅하는 것이 가능합니다.
그러나, 이 방법은 여러명의 사용자가 시스템에 연결되어 있는 경우, 좋지 않은 방법입니다.
shutdown
이런 경우, 사용자들에게 미리 대처할 수 있도록 시간여유와 시스템 종료에 관한 메시지를 내보내는 'shutdown'명령을 사용하는 것이 좋습니다.
halt
halt명령은 아직 정해지지 않은 디스크의 운영 상태를 완성시키고, /var/log/wtmp에 login 과 logout에 관한 내용을 저장하고, 커널에게 reboot 할 것인지, poweroff 할 것인지를 알려, 시스템을 안전하게 종료하도록 합니다.
shutdown -h now 와 같은 명령입니다. Ctrl + Alt + Del 키로 시스템 종료 및 리부팅
/etc/inittab 파일안의
항목에 위와 같이 설정하면, Ctrl + Alt + Del로 리부팅 시킬 수 있습니다.
init 명령으로 실행레벨을 바꾸거나, 종료할 경우, 다중 사용자 모드라면, 현재 사용중인 사용자들이 아무런 대책없이 종료 당하게 되므로, shutdown 명령을 사용하여 사용자들로 하여금 미리 대비할 여유를 주는 것이 좋습니다.
다음 파일 안에 shutdown 시킬 권한이 있는 사용자들을 정의할 수도 있습니다.
shutdown 명령을 -a 옵션과 함께 사용하며, /etc/inittab 파일 안에 정의해 두어야 합니다.
-a 옵션에 의해서, 어떤 사용자가 콘솔로 로그인 하여 Ctrl + Alt + Del 키를 입력하면, 다음 파일을 검사합니다.
이 파일에는 셧다운이 가능한 사용자들의 id가 들어 있어, 이중 하나의 사용자 혹은 root사용자가 아니라면, 다음과 같은 메시지와 함께 shutdown은 더 이상 진행되지 않습니다.
이렇게 함으로써, 어떤 사용자가 시스템에 물리적으로 접근하여, Ctrl + Alt + Del 키를 눌러 시스템을 실수로, 혹은 고의적으로 잽싸게 종료시키는 것을 방지할 수가 있습니다. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'★─Programing > ☆─Linux' 카테고리의 다른 글
[Linux] 파일시스템의 종류 (0) | 2007.08.06 |
---|---|
[Linux] 손쉬운 리눅스 관리 (0) | 2007.08.06 |
[Linux] cron 사용법 (0) | 2007.08.06 |
[Linux] 데몬이란? (0) | 2007.08.06 |
[Linux] 리눅스 편리한 단축키들 (0) | 2007.08.06 |
Comments