강좌
클라우드/리눅스에 관한 강좌입니다.
자격증 분류

리눅스마스터1급 : 리눅스서버 부팅과 셧다운

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터1: 리눅스서버 부팅과 셧다운

 

 

 

부트 스트래핑(Boot Straping)

 

 

부트 스트랩(boot strap)이라는 말에서 일반적으로 사용하는 부트 프로세스(boot process)라는 용어가 파생되었는데



이 뜻은 스스로 신발끈을 끌어 당겨 올린다는 의미로서 컴퓨터를 시동했을 경우(전원을 켰을 때) CPU는 컴퓨터의 컴퓨터 메인 보드(Main Board)에 장착된 ROM에 내장되어 있는 ROM-BIOS(Read Only memory Basic Input Output System) 프로그램의 시동 코드를 실행하게 된다.

 

 

 

ROM-BIOS는 컴퓨터 부팅 시에 가장 먼저 실행되는 프로그램으로서 컴퓨터 하드웨어 인식과 각 장치들의 사용을 위한 인식 및 준비를 하는 가장 기초적인 작업을 한다.

 

 

 

 

 

 

ROM-BIOS는 전원이 들어오는 즉시 메모리의 특정 번지로 읽어 들여져서 적재된다.

 

 

 

 

또한 CPU는 전원이 들어오면 즉시 메모리의 이 특정 주소(인텔과 인텔 호환의 CPU들은 메모리 주소 FFFFOH에 있는 데이터를 읽어 들인다)에 있는 BIOS 명령들을 실행하도록 만들어져 있다.

 

 

 

 

여기에 저장되어 있는 데이터들은 ROM에 저장되어 있기 때문에 시스템 전원이 꺼지더라도 지워지지 않고 그대로 남아 있다.

 

 

 

 

이후에 다시 전원이 들어오면 다시 메모리로 적재되어 CPU에 의해 읽혀지는 일을 반복한다.

 

이러한 ROM-BIOS는 하드웨어와 관련하여 POST(Power On Self Test) 기능으로서 하드웨어 장치들의 인식과 초기화(자체 진단 기능)를 하고, 부트로더(Boot Loader) 로딩 기능을 한다.

 

 

 

 

 

부팅 절차

 

1) 부트 매니저를 사용한 다중 부트 환경

 

ROM-BIOSPOST 과정이 아무런 이상 없이 수행완료 되었을 때 IPL(Initial Program Loader)의 기능을 포함하는 부트로더를 메모리로 로딩하여 리눅스 부팅을 시작한다.

 

 

 

 

ROM-BIOS는 장치들을 모두 인식한 후에 부트 프로그램(Boot Program)이 기록된 부팅매체(하드 디스크, CD-ROM, USB, 플로피 디스크 등)를 하나씩 검사하기 시작한다.

 

 

 

 

그리고 가장 먼저 검색된 부팅 매체의 0번 섹터(대부분 MBR이라고 부른다)에서 부트 프로그램을 읽어 들여 메모리로 적재한다.

 

 

 

 

이 부트 프로그램을 부트로더라고 하기도 하고 부트 매니저라고 하기도 한다.

 

 

 

 

이러한 리눅스의 부트로더에는 LILOGRUB가 있는데 요즘 거의 대부분 GRUB를 사용하고 있다.

 

 

 

 

한편, 컴퓨터의 하드 디스크에는 파티션을 나누어서 여러 가지의 운영체제를 설치할 수 있는데, 부트로더는 미리 설정된 메뉴에서 각각의 운영체제를 선택하여 실행할 수 있도록 한다.

 

 

 

 

이렇게 부트로더는 리눅스 커널을 RAM으로 적재하는 역할 외에 스와퍼(Swapper) 프로세스를 호출하는 역할도 수행한다.

 

 

 

 

 

이렇게 ROM-BIOS가 부트로더를 메모리로 적재한 이후에는 ROM-BIOS는 시스템 부팅 제어권을 부트로더인 GRUB에게 넘겨주고 자기 자신은 종료한다.

 

 

 

 

이 이후로는 GRUB가 시스템의 모든 제어권을 가지고 이후의 부팅 과정을 주도한다.

 

 

 

 

 

 

2) 컴퓨터 기동 시 부팅 과정

 

ROM-BIOS에서 POST 기능과 부팅매체의 부트로더를 불러들인 후에, 부트로더는 부팅할 운영체제의 선택 과정을 거쳐서 선택된 운영체제의 커널을 RAM에 적재(로드, load)하고 스와퍼를 적재한다.

 

 

 

 

스와퍼 프로세스(0번 프로세스)는 앞 단계에서 인식했던 각 장치들의 드라이브들을 초기화하고, 각 장치들을 초기화한 후에 init 프로세스(1번 프로세스)를 적재하고 스스로 종료한다.

 

 

 

 

 

 

RAM에 적재된 init 프로세스는 /etc/inittab 파일의 내용을 순차적으로 실행한다.

 

 

 

 

우선 부팅레벨을 선택하고, 부팅레벨에 상관없이 /etc/rc.d/rc.sysinit 스크립트를 실행한다.

 

 

 

 

그리고 선택된 부팅레벨(N)에 따라서 /etc/rc.d/rcN.d 디렉토리의 파일들을 순차적을 실행한다.

 

 

 

 

이 디렉토리에는 각 부팅레벨에 따라 시스템 부팅시에 자동실행될 서비스(데몬)들에 대한 링크 형태의 파일들이 존재한다.

 

 

 

 

이 디렉토리에 존재하는 모든 파일들은 /etc/rc.d/init.d 디렉토리에 있는 파일을 원본으로 하는 링크 파일들로서 S로 시작하는 파일들은 해당 부팅레벨로 부팅시에 자동으로 시작되는 서비스들이다.

 

 

 

 

 

 

다음으로 ctrlaltdel 시스템 매직키 설정(CTRL+ALT+DEL 키에 대한 수행 내용에 대한 설정)을 하고, 전원공급 설정(UPS의 전원 부족 시의 시스템의 종료 여부 등을 설정)을 한다.

 

 

 

 

또한 6개의 가상 콘솔을 각각 실행(설정에 따라 실행되는 가상 콘솔의 수를 조정할 수 있다)하고, 3번 부팅레벨로 부팅될 경우 콘솔 상에서 로그인 대기를 한다.

 

 

 

 

이에 대해 5번 부팅레벨로 부팅될 경우에 X 윈도우를 실행한다.

 

 

 

 

SULinux, CentOS, Fedora 등의 배포판들은 기본적으로 GNOME 데스크탑을 기본 X 윈도우로 사용하도록 설정되어 있어서, GNOME 데스크탑을 실행하고 로그인 대기를 한다.

 

 

 

 

3) 부팅 디스크 작성

 

예전 컴퓨터에는 플로피 디스크가 기본적으로 부착되었으나, 현재는 플로피 디스크가 거의 사용되지 않는다.

 

 

 

 

따라서 플로피 디스크를 활용한 리눅스의 부팅 디스켓 작성은 현재 거의 효용성이 없다.

 

 

 

 

 

 

현재는 CD-ROMiso 파일인 boot.isoUSB와 같이 플로피 디스크보다 용량이 큰 미디어를 위한 diskboot.img 이미지 파일을 제공한다.

 

 

 

 

이 파일들은 CD-ROM에 저장되어 있기도 하고 인터넷 사이트에서 별도로 제공하기도 한다.

 

 

 

 

이 파일들을 이용하여 제작된 부팅 디스크를 통해 네트워크 설치와 리눅스 부팅이 가능하다.

 

 

 

 

 

이 파일들은 boot.isoCD 라이팅을 이용하여 CD-ROM에 기록할 수 있고, diskboot.img 이미지 파일은 dd 명령으로 USB 등에 기록할 수 있다.

 

 

 

 

 

 

 

# mount t iso9660 /dev/cdrom /media/cdrom (CD-ROM에 저장된 파일을 이용할 경우)

# cd /media/cdrom/images

# dd if=diskboot.img of=/dev/sda1 (USB/dev/sda1 장치명으로 인식되는 경우)

 

 

 

 

 

 

 

셧다운 절차

 

 

리눅스가 데스크탑용으로 사용되는 경우에는 시스템을 자주 종료하고 시작해야 하겠지만, 서버용으로 사용되는 경우에는 시스템 자체를 한 번 부팅하고 나면 종료하거나 재부팅해야 하는 경우가 그렇게 많지는 않다.

 

 

 

 

하지만 서버를 운용하다보면 여러 가지 이유로 인하여 서버를 종료하거나 재시작할 필요가 있게 된다.

 

 

 

 

, 리눅스 커널의 패치 또는 업그레이드 작업, 주기적인 하드웨어 점검 등을 수행하기 위해 시스템 종료나 재시작의 필요성이 발생한다.

 

 

 

 

 

 

리눅스가 특히 서버로서 역할을 하고 있는 경우에 바로 전원을 내려서 시스템 내부적인 문제가 발생한다면 정상적인 서비스가 불가능하게 되어 문제가 될 수 있으므로 리눅스 시스템을 안전하게 종료시키는 단계가 필요하다.

 

 

 

 

리눅스에는 시스템을 종료하거나 재시작하는 여러 가지 방법들이 존재한다.

 

 

 

 

우선 콘솔상에서 종료와 재시작을 수행하는 명령어로서 shutdown, reboot, halt, poweroff, init 등을 사용할 수 있다.

 

 

 

 

그리고 X 윈도우 환경에서도 종료 또는 재시작이 가능하다.

 

한편, 이렇게 시스템을 종료하기 전에 실행중인 프로세스가 있는지 확인할 필요가 있는데, 이를 위한 명령어로 pstop 명령어가 있다.

 

 

 

 

이에 대해서는 다음에 알아보기로 하고 여기에는 시스템 종료 방법에 대해서 좀 더 알아보도록 한다.

 

 

 

 

 

1) 터미널 모드에서 시스템 종료하기

 

 

리눅스 시스템에서 가장 흔하게 사용하는 종료(재시작) 방법이 shutdown이라는 명령어를 이용하는 것이다.

 

 

 

 

, shutdown을 사용하면 시스템 관리자가 원하는 모든 방법으로 시스템을 종료하거나 재시작 할 수 있다.

 

그런데, 리눅스는 디스크의 빠른 작동을 위해서 읽기/쓰기 버퍼를 사용한다.

 

 

 

 

따라서 필요한 경우에만 디스크에 쓰기 작업을 수행하며 같은 디스크 상에서의 다중 읽기 작업은 디스크에서 읽는 것이 아니라 메모리에서 직접 읽어 들인다.

 

 

 

 

디스크는 CPU나 메모리에 비해 속도가 느리기 때문에 이러한 방법을 사용하면 시스템의 성능이 향상된다.

 

 

 

 

그러나 시스템의 전원이 갑자기 차단되거나 리부팅이 되면 메모리에 있던 데이터가 디스크에 쓰여지지 않고 자료를 잃어버리게 된다.

 

 

 

 

때에 따라서는 시스템에 치명적인 손상을 주기도 한다.

 

 

 

 

따라서 시스템을 종료하거나 재부팅을 할 경우에는 메모리에 있는 데이터를 디스크에 기록해 주어야 한다.

 

 

 

 

이를 위해서 sync 명령을 사용한다.

 

 

 

 

 

 

# sync (메모리에 있는 데이터를 디스크에 기록)

 

 

 

 

 

 

 

그리고 다음과 같이 shutdown, halt poweroff 명령을 내리면 시스템이 종료된다.

 

 

 

 

shutdown 뒤에 h 옵션은 시스템의 종료를 의미하는 옵션이고 now는 지금 즉시 종료하는 것을 의미한다.

 

 

 

 

여기에서 now 대신에 +20과 같이 “+숫자를 기재하면 해당 분 후에 shutdown을 수행하는 것을 의미한다.

 

 

 

 

, “shutdown h +20”이라고 명령을 내리면 20분 후에 shutdown 명령에 의해 시스템이 종료된다.

 

 

 

 

그리고 마지막에 “shutdown h +20 메시지로 명령을 내리면 로그인 한 사용자들에게 해당 메시지를 보내고 20분 후에 시스템 종료하게 된다.

 

 

 

 

 

 

 

 

 

 

# shutdown -h now

또는

# halt (시스템의 종료)

또는

# poweroff (시스템 종료 후 파워를 내린다)

 

 

 

 

 

 

 

만약 시스템을 재부팅하는 경우라면 shutdownh 옵션 대신 재부트(reboot)의 의미를 가지는 r 옵션으로 명령을 내리거나 reboot 명령을 내리면 된다.

 

 

 

 

 

이 때에도 shutdown 명령 뒤에 재부팅 시간 및 메시지를 지정할 수 있다.

 

 

 

 

 

 

 

 

 

# shutdown -r now

또는

# reboot (시스템의 재부팅)

 

 

 

 

 

 

 

이에 대해, 단순히 로그인 대기 상태로 만들려면 콘솔 상에서 logout이나 exit 명령을 내리면 된다.

 

 

2) GNOME에서 시스템 종료하기

 

 

만약 리눅스 시스템의 GUI 환경인 X 윈도우 환경을 사용하고 있다면 다음과 같이 [시작] - [끄기] 메뉴를 눌러서 종료, 재시작 등을 할 수 있다.

 

 

 

 

이렇게 X 윈도우의 끄기 메뉴에서 선택할 수 있는 3가지 항목은 다음과 같다.

 

다시 시작 : 시스템을 재시작함.

취소 : 이 작업을 취소함.

시스템 종료 : 시스템을 완전히 종료함.

 

 

 

ce66ec756e45f2946147457ac3966ce9_1680067641_422.png ce66ec756e45f2946147457ac3966ce9_1680067661_6135.png 

 

 

 

 

시스템을 종료하려면 시스템 종료를 선택하고 시스템을 재시작하려면 다시 시작을 선택하면 된다.

 

 

 

 

그리고 X 윈도우에서는 로그아웃하여 로그인 화면에서도 시스템을 종료하거나 재시작할 수 있다.

 

 

 

 

 

 

그런데 리눅스 배포판이나 해당 배포판의 버전에 따라 X 윈도우 환경이 다를 수 있는데, 이 경우에도 위와 유사한 방법으로 시스템을 종료하거나 재시작할 수 있다.

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,035 명
  • 현재 강좌수 :  35,794 개
  • 현재 접속자 :  144 명