초기화

init
버전 7 Unix:/etc 목록, init 및 rc 표시
버전 7 Unix: /etc/rcBourne 셸 스크립트의 내용

Unix 기반 컴퓨터 운영 체제에서 init(초기화의 줄임말)은 컴퓨터 시스템 부팅 중에 시작되는 첫 번째 프로세스입니다.Init은 시스템이 셧다운될 때까지 계속 실행되는 데몬 프로세스입니다.다른 모든 프로세스의 직간접 상위 프로세스이며 고립된 모든 프로세스를 자동으로 채택합니다.Init은 부팅 프로세스 중에 커널에 의해 시작됩니다.커널이 Init을 시작할 수 없는 경우 커널 패닉이 발생합니다.Init에는 일반적으로 프로세스 ID 1이 할당됩니다.

시스템 III 및 시스템 V와 같은 Unix 시스템에서 init의 설계는 Research Unix 및 BSD 파생상품의 init에 의해 제공되는 기능에서 분리되었습니다.최근까지 대부분의 Linux 디스트리뷰션에서는 시스템 V와 어느 정도 호환되는 기존 init을 사용했지만 Slackware 등의 디스트리뷰션에서는 BSD 스타일의 스타트업 스크립트를 사용하고 Gentoo 의 디스트리뷰션에서는 독자적인 커스터마이즈 버전을 사용하고 있습니다.

그 후 몇 가지 추가 init 구현이 생성되어 기존 버전에서의 설계 제한에 대처하려고 시도하고 있습니다.여기에는 launchd, Service Management Facility, systemd, RunitOpenRC가 포함됩니다.

Unix 스타일 조사/BSD 스타일의

Research Unix init은 다음 위치에 있는 초기화스크립트실행합니다./etc/rc그런 다음 Getty를 실행합니다.[1]/etc/ttys런 레벨은 없습니다.[2]/etc/rcfile은 init에 의해 실행되는 프로그램을 결정합니다.이 시스템의 장점은 수동 편집이 간단하고 간단하다는 것입니다.단, 시스템에 추가된 새로운 소프트웨어에서는 부팅 불가능한 시스템이 발생할 위험이 있는 기존 파일을 변경해야 할 수 있습니다.

BSD init은 4.3 이전입니다.BSD(Research UNIX의 [3][4]초기 버전과 동일), 4.3에서BSD는 X와 같은 윈도우 시스템을 그래픽 단말기에서 실행하는 지원을 추가하였습니다./etc/ttys.[5][6] 편집요건을 삭제한다./etc/rc, BSD의 바리안트는 오랫동안 사이트 고유의 것을 서포트해 왔습니다./etc/rc.local부트 시퀀스의 마지막 부근에 있는 하위 셸에서 실행되는 파일입니다.

NetBSD 1.5에서 완전 모듈러 시스템이 도입되어 FreeBSD 5.0 및 후속 제품에 이식되었습니다.이 시스템은 에서 스크립트를 실행합니다./etc/rc.d디렉토리로 이동합니다.각 스크립트의 파일 이름에서 파생된 System V의 스크립트 순서와 달리 이 시스템은 각 스크립트 [7]내에 배치된 명시적 종속성 태그를 사용합니다.스크립트가 실행되는 순서는 이들 태그에 기재된 요건에 따라 rcorder 유틸리티에 의해 결정됩니다.

SysV 스타일

sysv-rc-conf - 각 런 레벨에서 실행할 SysV 스타일의 init 스크립트를 선택하는 TUI 유틸리티

AT&T의 유닉스 시스템 III는 이전 제품과 비교하여 새로운 스타일의 시스템 스타트업 [8]컨피규레이션을 도입하였으며, 이는 유닉스 시스템 V에 (변경을 가하여) 살아남았고, 따라서 "SysV 스타일 초기화"라고 불립니다.

실행 중인 System V는 항상 런 레벨이라고 불리는 미리 정해진 수의 상태 중 하나에 있습니다.적어도 1개의 런 레벨은 시스템의 정상적인 동작 스테이트입니다.일반적으로 다른 런 레벨은 싱글 사용자 모드(장애 시스템 복구에 사용), 시스템셧다운 및 기타 다양한 상태를 나타냅니다.하나의 런 레벨에서 다른 런 레벨로 전환하면 일반적으로 파일 시스템 마운트, 데몬 시작 또는 중지, X 윈도 시스템 시작 또는 중지, 시스템 종료 등의 실행 레벨별 스크립트 세트가 실행됩니다.

런 레벨

시스템 V의 런 레벨은 시스템의 특정 상태를 나타내며, 각 시스템에서 실행되는 프로세스와 데몬으로 특징지어집니다.일반적으로 7개의 런레벨이 있으며, 이 중 3개의 런레벨은 시스템 운영에 필수적이기 때문에 "표준"으로 간주됩니다.

0. 끄다
1. 싱글 유저 모드(S 또는 s라고도 함)
6. 재부팅

이러한 표준 시스템 외에 Unix 및 Unix 유사 시스템은 런 레벨을 다소 다르게 취급합니다.공통분모인/etc/inittabfile은 설정된 각 런레벨이 특정 시스템에서 수행하는 작업을 정의합니다.

기본 런 레벨

운영 체제 기본 런 레벨
AIX 2
안티X 5
젠투 리눅스 3개[9]
HP-UX 3(스위치/서버/멀티사용자) 또는 4(스위치)
Linux를 처음부터 3
슬랙웨어 리눅스 3
Solaris / 일루미노 3개[10]
UNIX System V 릴리즈 3.x, 4.x 2
UnixWare 7.x 3

오른쪽 표의 Linux 디스트리뷰션에서 런레벨 5가 디폴트일 경우 런레벨 5는 X Window 시스템을 실행하는 멀티사용자 그래픽 환경을 호출합니다.일반적으로 GDM이나 KDM 등의 디스플레이 매니저를 사용합니다.단, Solaris 및 Illlumos 운영체제는 런레벨 5를 셧다운하고 자동으로 전원을 끄도록 예약합니다.

대부분의 시스템에서는 모든 사용자가 다음 중 하나를 사용하여 현재 런레벨을 확인할 수 있습니다.runlevel또는who -r명령어를 [11]입력합니다.root 사용자는 일반적으로 다음을 실행하여 현재 런 레벨을 변경합니다.telinit또는init명령어를 지정합니다./etc/inittabfile은 기본 런레벨을 설정합니다.:initdefault:엔트리를 입력합니다.

Unix 시스템에서는 누락된 서비스만 시작함으로써 런 레벨을 변경할 수 있습니다(각 레벨은 시작/[citation needed]정지된 서비스만 정의하기 때문에).예를 들어 시스템을 런 레벨3에서 4로 변경하면 로컬 X 서버만 시작될 수 있습니다.런 레벨 3으로 돌아가면 다시 정지됩니다.

기타 구현

전통적으로 init의 주요 결점 중 하나는 작업을 순차적으로 시작하고 각 작업이 완료될 때까지 기다린 후 다음 단계로 넘어간다는 것입니다.기동 프로세스가 입출력(I/O)에 의해 차단되면, 기동중에 지연이 길어질 가능성이 있습니다.예를 들어 SSD를 사용하여 I/O 속도를 높이면 지연 시간이 단축될 수 있지만 근본 원인을 해결하지는 못합니다.

기존의 init 데몬을 대체하기 위해 다음과 같은 다양한 노력이 이루어지고 있습니다.

  • GoboLinuxBootScripts
  • busybox-init, 임베디드 운영체제에 적합하며, OpenWrtprocd로 대체되기 전에 사용됨
  • Dinit, 서비스 매니저 및 초기화 시스템.[12]
  • Epoch는 단순성과 서비스 관리에[13] 중점을 둔 단일 스레드 Linux 초기 시스템입니다.
  • Initng, 비동기적으로 프로세스를 시작하도록 설계된 init의 완전한 대체 기능
  • launchd는 Mac OS X v10.4부터 시작되는 Darwin/macOS/iOS/tvOSinit을 대체하는 것입니다(SystemStarter를 실행하여 오래된 스타일의 'rc.local' 및 SystemStarter 프로세스를 실행합니다).
  • OpenRC는 시스템 제공 init을 이용하면서 프로세스 분리, 병렬화 시작 및 서비스 의존성을 제공하는 프로세스 생성기입니다.Alpine Linux, Gentoo 및 그 파생 버전에서 사용되며 Devuan 및 Artix Linux에서 옵션으로 사용 가능합니다.
  • runit, 서비스 병렬 시작과 함께 init을 위한 크로스 플랫폼 전체 대체로, Void[14] Linux에서 기본적으로 사용됩니다.
  • Sun Service Management Facility(SMF)는 Solaris 10부터 init을 완전히 대체/재설계하지만, 원래 System V-style init에 의해 유일한 서비스로 시작되었습니다.
  • Shepherd, 비동기 의존성 기반 초기화를 제공하는 GNU 서비스 및 데몬 매니저. Guile Scheme로 작성되어 일반 시스템[15] 작동 중에 대화식으로 해킹 가능함을 의미합니다.
  • s6, init 시스템을 포함하는 소프트웨어 스위트.[16][17]
  • systemd(소프트웨어 스위트), init 데몬을 포함한 Linux에서의 init의 완전한 치환, 서비스, 서비스 매니저 및 기타 기능의 동시 시작.
  • SystemStarter는 Mac OS X v10.4보다 이전 Mac OS X에서 BSD 스타일의 init에 의해 시작된 프로세스 생성기입니다.
  • Upstart: 프로세스를 비동기적으로 시작하도록 설계된 init의 완전한 대체입니다.Ubuntu에서 시작되어 2014년까지 사용되었습니다.또한 Fedora [18][19]9, Red Hat Enterprise Linux[20] 6, 구글의 Chrome [21]OS에도 사용되었습니다.

2019년 2월 현재, systemd는 대부분의 주요 Linux [22]디스트리뷰션에서 채택되고 있습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ init(8)버전 7 Unix 프로그래머 매뉴얼
  2. ^ ttys(5)버전 7 Unix 프로그래머 매뉴얼
  3. ^ init(8) 4.2BSD 시스템 매니저 매뉴얼
  4. ^ ttys(5) 4.2BSD 파일 포맷 매뉴얼
  5. ^ init(8)4.3BSD 시스템 매니저 매뉴얼
  6. ^ ttys(5)4.3BSD 파일 포맷 매뉴얼
  7. ^ Andrew Smallshaw (7 December 2009). "Unix and Linux startup scripts, Part 2".
  8. ^ "init(8)". minnie.tuhs.org.
  9. ^ "Initscripts". Gentoo Linux Documentation. Gentoo.org. 2014-12-13. Retrieved 2020-12-08.
  10. ^ "Run Levels". Oracle Solaris Administration: Common Tasks. Oracle.
  11. ^ "UNIX man pages : runlevel (8)". Unixhelp.ed.ac.uk. 1997-05-27. Archived from the original on 2014-07-14. Retrieved 2014-07-12.
  12. ^ "GitHub - davmac314/dinit: Service monitoring / "init" system".
  13. ^ "Epoch Init System Homepage".
  14. ^ 무효 Linux 메인 페이지
  15. ^ "The Shepherd - GNU Project". Free Software Foundation, Inc. Retrieved 2016-01-16.
  16. ^ "s6: why another supervision suite".
  17. ^ "s6 init system". Archived from the original on 2021-09-13.
  18. ^ Fedora 14 Accepted Features, 2010-07-13, retrieved 2010-07-13
  19. ^ "Fedora defers systemd to F15". Linux Weekly News. 2010-09-14. Retrieved 2010-09-17.
  20. ^ "Deployment". Red Hat Enterprise Linux 6: Technical Notes. Red Hat. Retrieved 2013-12-31.
  21. ^ Software Architecture: Chromium OS design documents, retrieved 25 January 2014
  22. ^ "Systemd #Adoption" 참조

외부 링크