IBM®
메인 컨텐츠로 가기
    Korea [국가변경]    이용약관
 
 
   
        제품    서비스 & 솔루션    고객지원 & 다운로드    회원 서비스    
메인 컨텐츠로 가기

한국 developerWorks  >  AIX and UNIX  >

유닉스를 능숙하게 사용하기: 부팅

유닉스 기계에서 부팅 방법 이해하기

developerWorks
문서 옵션

JavaScript가 필요한 문서 옵션은 디스플레이되지 않습니다.

영어원문

영어원문


제안 및 의견
피드백

난이도 : 중급

Adam Cormany, National Data Center Manager, Scientific Games Corporation

옮긴이: 박재호 이해영 dwkorea@kr.ibm.com

2008 년 9 월 23 일

컴퓨터가 똑딱거리며 동작하거나 유닉스(UNIX®) 서버가 동작하는 원리가 궁금합니까? 컴퓨터에 붙어 있는 전원 버튼을 누를 때 무슨 일이 일어나는지 궁금하게 생각하는 사람을 위해, 여기에 내부 모습을 공개합니다. 이 기사는 다양한 부트 유형, IBM® AIX® 부트목록 관리 방법, AIX 부트 절차를 설명합니다. 이 기사를 읽고 나면, 서버가 시작할 때 정확하게 무슨 일이 일어나는지 좀 더 제대로 이해하게 될 것입니다.

소개

AIX 운영체제는 IBM이 특별히 만든 유닉스 변종이다. IBM은 1986년 AIX 버전 1.0을 출시했고, 지난 22년 동안 여러 차례 개선했으며(이 글을 쓰는 시점에서 최신 버전은 AIX 6.1이다), 튼튼한 유닉스 시스템으로 자라났다.

AIX와 RS/6000 용어를 섞어 쓰는 경우도 있지만, 같은 개념이 아니다. AIX는 유닉스 운영체제이며, IBM RS/6000®은 RISC(Reduced Instruction Set Computer) 서버 하드웨어로 여기서 AIX가 돌아간다. IBM은 초기에 IBM 6150 RT 워크스테이션에서 AIX를 선보였다. 세월이 흐르면서 AIX는 IBM PS/2 인텔(Intel®) 386 컴퓨터, IBM 메인 프레임, POWER 아키텍처에서 동작하도록 발전해나갔다. 지금 AIX는 IBM System p™ 시리즈(과거 RS/6000)와 System i™ 시리즈(과거 IBM iSeries®와 AS/400®) 컴퓨터에서 동작한다.




위로


AIX 부트 방법

AIX 운영체제를 부팅하는 방법은 일반 부트, 단독 부트, 네트워크 부트라는 세 가지 유형이 있다.

일반 부트

전형적인 AIX 부트 방법은 일반 부트 옵션이다. 일반 부트 옵션은 AIX를 지역 디스크에서 서버로 부트한다. 부트가 끝나면 운영체제는 다중 사용자 모드로 동작한다.

단독 부트

AIX 시스템에서 다음 부트 유형은 단독 부트이며, 유지 보수 모드 옵션으로 부른다. 단독 부트 옵션은 일반 부트 옵션과 비슷하지만, 다중 사용자 모드로 시작하는 대신에 시스템은 단독 사용자 유지보수 모드로 시작한다. AIX 시스템에서 여러 가지 방법으로 단독 부트가 가능하다. 이동식 매체(테이프나 CD)를 통해 서버를 부팅하거나, 초기 하드웨어 주변 장치 점검 과정에서 키보드가 초기화된 다음에 F5(하드웨어에 따라 F6이 될지도 모른다)를 누르거나, 아니면 (파일 시스템 손상과 같이) 문제가 발생해 일반 부트로 들어가기 앞서 시스템 복구가 필요한 경우가 대표적이다. 단독 부트는 소프트웨어 설치, 문제 해결, 진단 수행, 다른 사용자가 없는 상황에서 자원을 잠궈버릴 위험을 줄인 상태에서 하드웨어 설정과 같은 작업을 허용한다.

네트워크 부트

마지막 부트 유형은 네트워크 부트 옵션이다. 물론 일반 부트 옵션과 비슷하며, AIX 시스템은 다중 사용자 모드로 부트한다. 하지만 이 옵션을 사용하면, AIX는 부트 정보를 네트워크에 존재하는 다른 서버에서 받는다.




위로


부트 목록과 관리 기법

다양한 매체로 AIX를 부트할 수 있기 때문에, 다양한 유형을 관리할 방법이 있어야 한다. 여기서 부트 목록이 이런 문제를 해결한다. 부트 목록은 시스템이 제공하는 각 부트 방법에 대한 모든 부트 디바이스 목록을 관리한다.

특정 부트 방법에 대한 부트 목록을 보려면 간단하게 스위치 -o를 붙인다. 다음 예제에서 일반 부트 방법을 표시한다. 서버가 부트를 시도할 순서는 첫 번째 지역 논리 디스크(hdisk0), 그 다음으로 CD(cd0), 마지막으로 테이프(rmt0) 순이다.

                # bootlist -m normal -o
hdisk0
cd0
rmt0

특정 부트 방법에 대한 부트 목록을 설정하려면 -m 스위치를 입력하고 적절한 부트 방법 다음에 원하는 부트 디바이스를 지정한다. 다음에 제시하는 예는 일반 부트 목록을 hdisk0, cd0, cd1 순서로 서버가 부트하도록 변경한다.

                bootlist -m normal hdisk0 cd0 cd1
            

직전 예제에서 살펴본 바와 같이, -m 스위치는 부트 방법을 변경하거나 출력할 때 확인을 위해 매번 사용했다. 이 옵션은 normal, service(단독 사용자 유지보수 모드), both(normal과 service), prevboot(직전 부트 목록)으로 변경을 허용한다.




위로


AIX 부트 순서

부트 방법을 선택했다면, 서버 전원이 들어온 다음에 일어나는 실제 사건 순서를 살펴볼 시간이 왔다.

참고: 이 기사 나머지 부분에서, 서버를 일반 부트 모드로 부트했다고 가정한다.

POST

전원을 켜서 서버가 시작할 때, 문제점이 없는지 서버 하드웨어를 검사하고 가능한 문제점이 없는지 점검한다. 이 단계를 POST(Power-On Self-Test)라고 부른다. 서버가 이 단계를 밟고 있을 때 POST는 메모리, 키보드, 사운드 카드, 네트워크 디바이스를 점검한다. 이 시점에서 단독 모드(단독 사용자 유지보수)로 들어가고 싶다면, 키보드 초기화 이후에 F5나 F6을 누른다. 하지만 이 기사에서는 어떤 키도 누르지 않기에 서버는 정상 부트 모드로 부트가 이뤄진다.

부트스트랩

POST 과정을 마친 다음에, 좀 더 큰 프로그램을 적재하기 위해 사용되는 작은 프로그램인 부트 스트랩을 메모리에 올린다. 그러고 나서 부트 스트랩은 부트 논리 볼륨(BLV, Boot Logical Volume)을 메모리에 올린다. BLV를 메모리에 올린 다음에 커널은 부트 과정을 넘겨 받는다.

BLV와 bosboot 명령어

BLV는 AIX에서 부트 가능한 이미지를 포함하는 위치다. 일반적으로 BLV는 서버의 지역 디스크에서 발견된다. BLV는 AIX 커널, rc.boot 파일, 부트 과정에 필요한 명령어, ODM(Object Data Manager)을 축약한 버전을 포함한다.

부트 가능한 이미지를 만들기 위해 bosboot 명령어를 사용한다. bosboot를 사용해 램 디스크, 파일 시스템, 커널에서 부트 파일(즉, 부팅 가능한 이미지)을 만든다. 부팅 가능한 이미지는 서버의 부트 ROS(Read-Only Storage)/EPROM(Erasable Programmable Read-Only Memory)과 인터페이스하도록 만들어진다.

다음 예제는 시스템을 부트할 지역 고정 디스크에 있는 기본 BLV에서 부팅 가능한 이미지를 생성하는 방법을 보여준다.

                bosboot -a
            




위로


AIX 커널

BLV에 저장된 AIX 커널은 /(루트), /usr, /var 파일 시스템을 램에 생성한다. 커널과 함께 이 파일 시스템은 운영체제 부트 절차 도중에 램에 처음으로 저장된다. 파일 시스템이 램에 있기 때문에 BLV 외부에 있는 어떤 파일 시스템에도 접근하지 못한다.

파일 시스템이 RAM에 올라온 다음에, 커널은 부트 절차를 넘겨 받을 init 프로세스를 수행한다.

init 프로세스

AIX 커널은 프로세스 init을 프로세스 식별자(PID) 1로 메모리에 올린다. 이 프로세스는 AIX에서 동작하는 다른 모든 프로세스의 어버이나 루트 프로세스다. init 프로세스가 메모리에 올라와서 부트 과정을 시작하면 init은 rc.boot를 호출한다.

rc.boot 파일

rc.boot 파일은 AIX 부트 과정에서 세 가지 중요한 수행 절차를 포함한다. rc.boot에서 첫 번째 수행 절차는 운영체제 부트를 준비하기 위해 시스템 하드웨어를 초기화한다. 시스템을 시작하기 위해 꼭 필요한 몇몇 디바이스를 이 시점에서 환경 설정 관리 명령어인 cfgmgr로 설정한다.

rc.boot에서 두 번째 수행 절차는 파일 시스템 /, /usr/, /var와 페이징 영역 마운트다. 이 파일 시스템을 마운트하고 나면, init은 디스크에 존재하는 init으로 대체되며(PID는 1), 램 내용은 지워진다.

rc.boot에서 세 번째이자 마지막 수행 절차는 실제 init 프로세스를 디스크에서 수행한다. init을 수행할 때, /etc/inittab을 읽어 각 항목을 수행한다. 이 과정에서, /tmp 파일 시스템은 이제 디스크로 마운트된다. 시스템이 부트 과정에서 마지막 구간을 통과하면, rc.boot에서 첫 번째 수행 절차에서 설정하지 않은 남은 디바이스에 대해 cfgmgr 명령어를 다시 한번 실행한다.




위로


/etc/inittab 파일

init 프로세스를 수행한 다음 단계로 init이 /etc/inittab을 열고 각 항목을 읽어들인다. /etc/inittab 파일의 목적은 시작 시점에서 일반적인 작업을 시작하는 프로세스 목록을 init 프로세스에 전달하는 데 있다.

/etc/inittab 파일 형식은 아주 구체적이며, 각 필드는 콜론으로 나뉜다. /etc/inittab 형식은 다음과 같다.

<ID>:<Run Level>:<Action>:<Command>

/etc/inittab 파일에 정의된 필드 설명은 다음과 같다.

  • ID: 객체를 인식하는 유일한 문자열
  • Run Level: 시스템이 해당 init 단계에 들어갈 때 <Command>를 수행한다. 예를 들어, /etc/inittab에 있는 항목이 실행 단계 2로 설정되어 있다면, 운영체제가 init 단계 2로 들어가면 해당 명령이 수행될 것이다.

    init이나 실행 단계는 AIX와 여타 유닉스/리눅스 기반 시스템마다 제각각이다. 다음 실행 단계는 AIX용으로 정의된 내용이다.

    • 향후 운영체제 확장을 대비한 예약
    • 2: 기본 실행 단계
    • 3에서 9: 사용자 정의
    • a에서 c: 새로운 실행 단계(init이 실행 단계 a, b, c에서 수행될 때, 프로세스는 kill 신호를 받지 않는다. 직전 실행 단계에서 동작 중인 프로세스를 건드리지 않고, 새로운 실행 단계에 할당된 프로세스를 수행한다.)
    • Q, q: /etc/inittab 파일을 다시 검색하라고 init에게 지시하는 빠른 방법
  • Action: 이 필드는 inittab 파일에 존재하는 각 항목에서 프로세스를 다루는 방법을 init 프로세스에 알려준다. 다음은 AIX가 사용하는 필드 값이다.
    • respawn: 프로세스가 존재하지 않으면 프로세스를 시작한다. 종료까지 기다리지 않으며 계속해서 inittab 파일을 탐색한다. 프로세스가 끝나면 다시 시작한다.
    • wait: 프로세스를 시작하고 종료를 기다린다.
    • once: 프로세스를 시작하고 종료를 기다리지 않는다. 프로세스가 종료되면 다시 시작하지 않는다.
    • boot: 시스템 부트 과정에서만 항목을 처리한다.
    • bootwait: 서버가 단독 사용자에서 다중 사용자 모드로 넘어갈 때 처음으로 항목을 처리한다.
    • powerfail: 전원 실패 신호를 init이 받을 때만 명령을 수행한다.
    • powerwait: 전원 실패 신호를 init이 받을 때만 명령을 수행하며, inittab 파일을 계속해서 탐색하기 앞서, 프로세스가 종료될 때까지 기다린다.
    • off: 프로세스가 현재 동작 중이라면 SIGTERM을 보내고 그 다음 20초 동안 SIGKILL을 보낸다.
    • ondemand: respawn과 같지만, 실행 단계 a, b, c에만 적용된다.
    • initdefault: init이 처음 수행될 때만 항목을 탐색한다.
    • sysinit: 로그인에 앞서 init이 콘솔에 접근하기 전에 항목을 수행한다.
  • Command: /etc/inittab에서 마지막 필드다. <run level>이 시작될 때 <action>이 필요하다고 판단될 때 실제 명령을 수행한다. 명령 수행 준비가 끝나면, AIX는 sh -c exec <command> 명령으로 프로세스를 포크(fork)한다.

다음 예제는 실행 단계 2를 시작하는 시점과 실행 단계 2가 매번 불릴 때마다 다시 시작되는 /usr/bin/rc.atc_bin이라는 셸 스크립트를 보여준다.

CORMANY_BIN:2:respawn:/usr/bin/rc.atc_bin

동일한 스크립트를 실행 단계 0, 1, 3, 6, 9에서 비활성화하려면 다음 명령을 내린다.

CORMANY_BIN:245780:respawn:/usr/bin/rc.atc_bin

inittab 읽고 수정하기

AIX는 /etc/inittab 파일을 수동으로 변경하는 대신에 삶을 편하게 만들어줄 명령어를 제공한다. 명령어는 다른 AIX 명령어와 같은 이름 관례를 따른다.

  • mkitab: inittab 파일에 레코드를 추가한다.

    다음 예제는 실행 단계 2로 inittab에 /usr/bin/rc.atc_bin 스크립트를 추가한다.

    mkitab "CORMANY_BIN:2:respawn:/usr/bin/rc.atc_bin"
    

  • chitab: inittab 파일에 있는 레코드를 변경한다. 구문은 inittab 파일에 있는 실제 레코드와 똑같다.

    다음 예제는 inittab에서 직전에 다룬 /usr/bin/rc.atc_bin 스크립트를 실행 단계 3으로 변경한다.

    chitab "CORMANY_BIN:3:respawn:/usr/bin/rc.atc_bin"
    

  • lsitab: inittab 파일에 있는 레코드를 출력한다. lsitab을 사용하면 개별적으로나 전체적으로 inittab 레코드를 안전하게 살펴보는 방법을 제공한다.

    다음 예제는 inittab 파일에 있는 모든 레코드를 출력한다.

    lsitab -a
    

    다음 예제는 CORMANY_BIN으로 인식되는 레코드만 출력한다.

    lsitab CORMANY_BIN
    

  • rmitab: inittab 파일에서 레코드를 제거한다.

    다음 예제는 inittab 파일에서 CORMANY_BIN으로 인식되는 레코드를 제거한다.

    rmitab CORMANY_BIN
    




위로


결론

이제 inittab 파일을 읽었으며, 모든 적절한 프로세스를 수행했기에 시스템은 로그인을 기다린다. 로그인한 다음에 AIX 시스템을 즐기기 바란다.

서버에 있는 전원 스위치를 눌러 마법처럼 시동이 걸릴 때 별일 없어 보였을지도 모르겠다. 하지만 이 기사에서 살펴본 바와 같이, 시동 시점에서 AIX 시스템에는 많은 일이 일어난다. 다행히, 이 기사를 읽음으로써 튼튼한 운영체제 기초를 제공하기 위해 AIX가 수행하는 작업을 제대로 이해했을 것이다.



참고자료

교육

제품 및 기술 얻기

토론


필자소개

Adam Cormany는 National Data Center의 관리자로 현재 일하고 있다. Cormany는 유닉스 시스템 엔지니어, 유닉스 관리자, Scientific Games Corporation에서 운영 관리자를 맡아왔다. Cormany는 10년 넘게 솔라리스, 레드햇 리눅스 관리자는 물론이고 AIX도 광범위하게 다뤘다. Cormany는 pSeries AIX 시스템 관리 분야에서 IBM eServer® 공인 전문가다. 관리 업무 이외에, Cormany는 배시, csh, ksh을 사용한 셸 스크립트와 C, PHP, 펄 프로그래밍에도 광범위한 지식을 습득했다. Cormany의 전자편지 주소는 acormany@yahoo.com이다.




기사에 대한 평가


보다 나은 서비스를 제공하기 위함이오니 잠시 짬을 내어 이 양식을 제출하여 주십시오.



 


 


 


이 문서 북마킹 하기

mar.gar.in mar.gar.in naver naver eolin eolin del.icio.us del.icio.us





위로


IBM, AIX, AS/400, eServer, iSeries, pSeries, and RS/6000 are registered trademarks of International Business Machines in the United States, other countries, or both. UNIX is a registered trademark of The Open Group in the United States and other countries. Intel is a registered trademark of Intel Corporation or its subsidiaries in the United States and other countries. Linux is a registered trademark of Linus Torvalds in the United States, other countries, or both. 기타 회사, 제품, 및 서비스명은 다른 상표나 서비스 마크일 수 있습니다.

developerWorks 콘텐트를 다른 사이트에 전재하기:
developerWorks 콘텐트에 대한 저작권은 IBM에 있습니다. IBM의 서면 허가나 원본 저자의 허락이 없이는 전재를 금합니다. 저희 콘텐트를 전재하시려면 IBM developerWorks 담당자 에게 문의하십시오.
    IBM 소개 개인정보 보호정책 문의