-
리눅스의 기동과 종료Technique/LPIC 2019. 4. 16. 14:48반응형
시스템이 기동 되기 전까지의 흐름
시스템의 전류가 들어가는 순간부터 OS가 기동되기 전까지의 흐름은 컴퓨터 아키텍처에 따라 조금씩 다르다 여기서는 일반적인 PC( x86/x86_64아키텍처 )에 따른 기동 순서를 알아보자
전류를 넣으면 최초의 BIOS/UEFI가 기동된다. BIOS/UEFI는 하드웨어의 체크나 초기화를 실시하며, 기동 디바이스 ( 하드디스크나 SSD )에 기록되어 있는 부트로드 ( boot loader )를 로드한 후 부트로더에 제어를 넘긴다. 부트로더의 주 역할은 기동된 디바이스로부터 커널을 메모리상에 읽어 들이는 것이다.
커널은 메모리의 초기화나 시스템 잠금의 설정을 실행, 임시의 루트 파일 시스템 ( initramfs : 초기 RAM 디스트 )를 마운트 한다. 초기 RAM 디스크에는 시스템의 기동에 필요한 디바이스 드라이버가 들어가 있으며, 이것을 사용하여 하드디스크 등의 디바이스에 접근 가능하게 된다. 루트 파일 시스템이 사용 가능하게 되면 커널은 최초의 프로세스인 init( 또는 systemd )프로세스를 실행한다. init는 필요한 서비스 등을 순차적으로 기동하며 최후에 로그인 프롬프트를 표시하고 로그인 처리를 완료 시킨다.
BIOS/UEFI -> 부트로더 -> 커널 -> init/systemd기동 시의 이벤트 확인
dmesg 커맨드를 사용하면 시스템 기동 시에 커널이 어떠한 처리를 행하는지 확인 가능하다.
dmesg 커맨드는 커널이 출력한 메시지를 일시적으로 보관하는 버퍼의 내용을 표시한다. 시스템이 기동한 뒤 커널이 출력한 메시지를 옮겨두므로 버퍼에 쌓여진 낡은 메시지는 사라진다. 그 때문에 장기간 기동되어온 시스템에서는 dmesg 커맨드를 실행해도 시스템 기동 시의 메시지가 남아 있지 않을 수도 있다.
시스템 기동 시의 메시지는 로그파일 /var/log/messages 나 /var/log/dmesg. /var/log/boot.log에도 저장된다. 이 같은 파일은 텍스트 파일이므로 cat 명령어를 이용하여 열어 볼 수 있다. 하지만 디스트리뷰션에 따라 로그파일에 차이가 존재하므로 파일을 열어 볼 경우 root 권한이 필요하다.시스템의 종료와 재시작
시스템상에 동작하고 있는 여러 가지 프로그램을 적절히 종료한 뒤 시스템을 안전히 정지시키기는 것을 shutdown 이라고 한다. 시스템의 shutdown이나 재기동은 shutdown 커맨드를 이용하여 조작한다.
옵션 설명 -h 셧다운 실시 -r 셧다운 후 시스템을 재기동 한다 -f 다음에 기동할 때 fsck를 스킵한다 ( -r, -h과 함께 조합하여 사용 가능하다 ) -F 다음에 기동할 때 fsck를 반드시 실행한다 ( -h -r 과 함께 조합하여 사용 가능 ) -k 실제는 셧다운 하지 않고, 경고 메시지를 출력한다. -c 현재 실행중의 셧다운을 취소한다. 다음의 메시지는 5분후 시스템을 정지한다.
shutdown -h +5 "Please logout immediately"
실제로 셧다운을 하지 않고, 경고 메시지만 유저에게 전달하고 싶은 경우 -k 옵션을 사용 한다
shutdown -k now 'please logout immediately'
다음의 예는 22시에 시스템을 종료한다.
shutdown -h 22:00
다음의 예는 즉시 시스템을 종료한다
shutdown -r now
shutdown 커맨드가 실행되면 그 이후는 유저의 로그인이 불가능해진다. 또 유저에 통지하는 메시지를 준비하고 있는 경우 셧다운의 때가 다가오면 메시지가 표시된다.
이 외에도 halt, poweroff 라는 커맨드로 시스템을 종료시키거나 reboot 커맨드로 재기동 시키거나 하는 것이 가능하다. Ctrl + Alt + Delete 키에 의한 재기동 하도록 설정된 경우도 있다.
init/telinit 커맨드로 시스템을 정지/재기동 하는 경우 이용 중의 유저에는 일체 통지되지 않는 문제가 있다. shutdown 커맨드는 커맨드를 이용할 때 설정한 메시지가 유저에게 통지 되도록 되어 있다.
systemd를 채용한 시스템에는 shutdown -k 커맨드를 사용하더라도 메시지가 보이지 않는 경우가 있다. wall 커맨드를 사용하여 메시지를 통지해주자.systemd 와 shudown
systemd를 채용한 시스템은 shutdown 커맨드 대신에 systemctl reboot로 재기동을 systemctl poweroff 커맨드로 시스템 종료를 한다. 현시점에는 아직 과거의 shutdown 커맨드도 이용 가능하지만, 조만간 사용이 불가능해질 수도 있다.
반응형'Technique > LPIC' 카테고리의 다른 글
부트로더 설치 (0) 2019.04.18 하드디스크의 레이아웃 설계 (0) 2019.04.18 SysVinit (0) 2019.04.16 기본적인 시스템 하드웨어 (0) 2019.04.16 LPIC와 LinuC는? (0) 2019.04.15