English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Linux 시스템 시작 과정

Linux이 시작될 때 많은 시작 정보를 볼 수 있습니다.

Linux 시스템의 시작 과정은 많은 사람들이 생각하는 것처럼 복잡하지 않으며, 과정은 다음과 같이 분할될 수 있습니다5단계:

  • 커널 부팅。

  • init 실행

  • 시스템 초기화。

  • 터미널을 설정합니다。

  • 사용자가 시스템에 로그인합니다

init 프로그램의 유형:

  • SysV: init, CentOS 5그전에, 설정 파일: /etc/inittab。

  • Upstart: init, CentOS 6, 설정 파일: /etc/inittab, /etc/init/*.conf。

  • Systemd: systemd, CentOS 7, 설정 파일: /usr/lib/systemd/system、 /etc/systemd/system。

커널 부팅

컴퓨터가 전원을 켜면, 먼저 BIOS가 시작 자체 검사를 수행하고, BIOS에서 설정된 시작 장치(보통 하드 드라이브)로 시작합니다.

운영 체제가 하드웨어를 점유한 후, 먼저 /boot 디렉토리에 있는 커널 파일

init 실행

init 프로세스는 시스템의 모든 프로세스의 시작점이며, 이를 시스템의 모든 프로세스의 선조라고 볼 수 있습니다. 이 프로세스가 없으면 시스템의 어떤 프로세스도 시작되지 않습니다.

init 프로그램은 먼저 설정 파일을 읽어야 합니다 /etc/inittab。

실행 수준

많은 프로그램이 시작할 때 실행되어야 합니다. Windows에서는 "서비스"(service)라고 하지만, Linux에서는 "다이몬드"(daemon)라고 합니다.

init 프로세스의 주요 임무 중 하나는 이러한 시작 프로그램을 실행하는 것입니다.

그러나, 다른 상황에 따라 다른 프로그램을 시작해야 하는 경우가 있습니다. 예를 들어, 서버로 사용할 때 Apache를 시작해야 하지만, 데스크톱으로 사용할 때는 필요하지 않습니다.

Linux은 다른 상황에 따라 다른 시작 프로그램을 할당할 수 있으며, 이를 "실행 수준"(runlevel)이라고 합니다. 즉, 시작할 때 "실행 수준"에 따라 실행할 프로그램을 결정합니다.

Linux 시스템에는7개 실행 수준(runlevel):

  • 실행 수준 0:시스템 정지 상태, 시스템 기본 실행 수준은 0으로 설정할 수 없습니다. 그렇지 않으면 정상적으로 시작할 수 없습니다

  • 실행 수준1:단일 사용자 작업 상태, root 권한, 시스템 유지보수용, 원격 로그인 금지

  • 실행 수준2:다중 사용자 상태(ΝFS가 없음)

  • 실행 수준3:전적으로 다중 사용자 상태(ΝFS가 있음), 로그인 후 컨솔 명령 줄 모드로 진입합니다

  • 실행 수준4:시스템이 사용되지 않으며, 보존됩니다

  • 실행 수준5:X11컨솔, 로그인 후 그래픽 GUI 모드로 진입합니다

  • 실행 수준6:시스템이 정상적으로 종료되고 재시작되었으며, 기본 실행 수준은 설정할 수 없습니다6,그렇지 않으면 정상적으로 시작할 수 없습니다

시스템 초기화

init 설정 파일에 다음 줄이 있습니다: si::sysinit:/etc/rc.d/rc.sysinit/etc/rc.d/rc.sysinit을 호출하고 실행합니다. rc.sysinit은 bash shell 스크립트로, 주로 시스템 초기화 작업을 수행하며, rc.sysinit은 모든 실행 레벨에서 먼저 실행해야 할 중요한 스크립트입니다.

주로 다음 작업을 수행합니다: 스왑 파티션을 활성화하고, 디스크를 확인하고, 하드웨어 모듈을 로드하고, 우선순위가 필요한 다른 작업을 수행합니다.

l5:5:wait:/etc/rc.d/rc 5

이 줄은5로 실행합니다/etc/rc.d/rc/etc/rc.d/rc는 Shell 스크립트로, 다음 파라미터를 받습니다5파라미터로 실행합니다/etc/rc.d/rc5.d/디렉토리에 있는 모든 rc 시작 스크립트입니다./etc/rc.d/rc5.d/디렉토리에 있는 이러한 시작 스크립트는 실제 rc 시작 스크립트가 아니라, 실제 rc 시작 스크립트는/etc/rc.d/init.d/디렉토리에 있습니다.

이러한 rc 시작 스크립트는 유사한 사용법을 가지며, 일반적으로 start, stop, restart, status 등의 파라미터를 받을 수 있습니다.

/etc/rc.d/rc5.d/rc 시작 스크립트는 일반적으로 K 또는 S로 시작하는 파일 연결입니다. S로 시작하는 시작 스크립트는 start 파라미터로 실행됩니다.

그리고 해당 스크립트가 K로 시작하는 연결이 있고 이미 실행 중인 경우(연결로)/var/lock/subsys/하위 파일이 표지로 사용되면, 이러한 이미 시작된 보호 프로세스를 먼저 stop 파라미터로 중지한 후 다시 실행합니다.

이렇게 하면 init가 실행 레벨을 변경할 때 모든 관련 보호 프로세스가 재시작될 것을 보장합니다.

각 실행 레벨에서 어떤 보호 프로세스가 실행될지는 사용자가 chkconfig 또는 setup의 "System Services"에서 직접 설정할 수 있습니다.

터미널을 만듭니다

rc 실행이 완료되면, init로 돌아갑니다. 이때 기본 시스템 환경이 설정되었으며, 여러 보호 프로세스도 시작되었습니다.

init가 다음으로6개의 터미널을 정의하여 사용자가 시스템에 로그인할 수 있도록 합니다. inittab에서 다음6행은6개의 터미널:

1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

위에서 볼 수 있듯이2、3、4、5의 실행 레벨에서는 모두 respawn 방식으로 mingetty 프로그램을 실행합니다. mingetty 프로그램은 터미널을 열고 모드를 설정할 수 있습니다.

그리고 이 텍스트 로그인 인터페이스가 표시되며, 이 인터페이스는 우리가 자주 볼 수 있는 로그인 인터페이스입니다. 이 로그인 인터페이스에서 사용자가 입력한 사용자 이름은 login 프로그램에 전달되어 사용자의 신분을 확인하는 데 사용됩니다.

사용자가 시스템에 로그인 합니다

일반적으로 사용자의 로그인 방식은 세 가지가 있습니다:

  • (1명령행 로그인

  • (2ssh 로그인

  • (3) 그래픽 인터페이스 로그인

운영 등급이5그래픽 방식 사용자에게는, 그들의 로그인은 그래픽화된 로그인 인터페이스를 통해 이루어집니다. 로그인이 성공하면 KDE, Gnome 등의 창 관리자로 직접 진입할 수 있습니다.

이 문서는 주로 텍스트 방식 로그인에 대해 설명합니다: mingetty의 로그인 인터페이스를 볼 때, 사용자 이름과 비밀번호를 입력하여 시스템에 로그인할 수 있습니다.

Linux의 계정 인증 프로그램은 login입니다. login은 mingetty가 전달한 사용자 이름을 사용자 이름 매개변수로 받습니다.

그런 다음 login은 사용자 이름을 분석합니다: 사용자 이름이 root가 아니며, /etc/nologin 파일이 있으면, login은 nologin 파일의 내용을 출력한 후 종료합니다.

이는 일반적으로 시스템 유지보수 중에 비 root 사용자 로그인을 방지하는 데 사용됩니다. 만약/etc/securetty에 등록된 터미널만이 root 사용자 로그인을 허용합니다. 이 파일이 존재하지 않으면 root 사용자는 어떤 터미널에서든 로그인할 수 있습니다.

/etc/usertty 파일을 사용하여 사용자에 대한 추가 접근 제한을 설정합니다. 이 파일이 존재하지 않으면 다른 제한이 없습니다.

사용자 이름을 분석한 후, login은 /etc/passwd 및 /etc/shadow을 사용하여 비밀번호를 확인하고 계정의 다른 정보를 설정합니다. 예를 들어: 메인 디렉토리는 무엇인가요, 어떤 shell을 사용할 것인가요. 메인 디렉토리를 지정하지 않으면 기본적으로 루트 디렉토리가 됩니다; shell을 지정하지 않으면 기본적으로 /bin/bash.

그래픽 모드와 텍스트 모드의 전환 방법

Linux는 여섯 개의 명령 프롬프트 터미널을 제공하여 로그인하도록 합니다.

기본적으로 우리가 로그인한 것은 첫 번째 창, 즉 tty입니다.1,이 여섯 가지 창은 tty입니다.1,tty2 … tty6Ctrl + Alt + F1 ~ F6 를 사용하여 전환할 수 있습니다.

그래픽 인터페이스를 설치한 경우, 기본적으로 그래픽 인터페이스로 진입합니다. 이 경우 Ctrl을 누릅니다. + Alt + F1 ~ F6을 사용하여 하나의 명령 프롬프트 인터페이스에 진입합니다.

명령 프롬프트 인터페이스에 진입한 후 그래픽 인터페이스로 돌아가려면 Ctrl을 누릅니다. + Alt + F7 그러면 돌아옵니다.

vmware 가상 머신을 사용하는 경우, 명령 프롬프트 전환의 단축키는 Alt입니다. + Space + F1~F6. 그래픽 인터페이스에서는 Alt를 누릅니다. + Shift + Ctrl + F1~F6 명령 프롬프트로 이동합니다.

Linux 끄기

Linux 분야에서 대부분 서버에 사용되며, 끄기 작업을 많이 접하지 않습니다. 서버에서 서비스를 실행하는 것은 끝없이 계속되며, 특별한 경우에만 불가피하게 끄기 작업을 수행합니다.

정확한 끄기 절차는 sync > shutdown > reboot > halt입니다.

끄기 명령어는 shutdown입니다. man shutdown을 사용하여 도움말 문서를 확인할 수 있습니다.

예를 들어, 다음과 같은 명령어로 종료할 수 있습니다:

sync을 통해 데이터를 메모리에서 하드디스크로 동기화합니다.
shutdown 종료 명령어를 사용하면, man shutdown을 통해 도움말 문서를 볼 수 있습니다. 예를 들어, 다음과 같은 명령어로 종료할 수 있습니다:
shutdown –h 10 ‘This server will shutdown after 10 mins’ 명령어는 컴퓨터가10분 후에 종료되며, 로그인한 사용자의 현재 스크린에 표시됩니다.
shutdown –h now 즉시 종료됩니다.
shutdown –h 20:25 시스템은 오늘20:25종료
shutdown –h +10 10분 후에 종료됩니다.
shutdown –r now 시스템이 즉시 재부팅됩니다.
shutdown –r +10 시스템이 10분 후에 재부팅됩니다.
reboot는 재부팅을 의미하며 shutdown –r now과 동일합니다.
halt 시스템을 종료합니다. shutdown –h now 또는 poweroff과 동일합니다.

결론을 요약하자면, 시스템을 재부팅하거나 종료하려면 먼저 sync 명령어를 통해 메모리 데이터를 디스크에 쓰는 것입니다.

시스템 종료 명령어가 있습니다. shutdown –h now halt poweroff 하고 init 0 , 시스템 재부팅 명령어가 있습니다. shutdown –r now reboot init 6

참고 문서: