초기화
initUnix 기반 컴퓨터 운영 체제에서 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, Runit 및 OpenRC가 포함됩니다.
Unix 스타일 조사/BSD 스타일의
Research Unix init은 다음 위치에 있는 초기화 셸 스크립트를 실행합니다./etc/rc
그런 다음 Getty를 실행합니다.[1]/etc/ttys
런 레벨은 없습니다.[2]/etc/rc
file은 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 스타일
AT&T의 유닉스 시스템 III는 이전 제품과 비교하여 새로운 스타일의 시스템 스타트업 [8]컨피규레이션을 도입하였으며, 이는 유닉스 시스템 V에 (변경을 가하여) 살아남았고, 따라서 "SysV 스타일 초기화"라고 불립니다.
실행 중인 System V는 항상 런 레벨이라고 불리는 미리 정해진 수의 상태 중 하나에 있습니다.적어도 1개의 런 레벨은 시스템의 정상적인 동작 스테이트입니다.일반적으로 다른 런 레벨은 싱글 사용자 모드(장애 시스템 복구에 사용), 시스템셧다운 및 기타 다양한 상태를 나타냅니다.하나의 런 레벨에서 다른 런 레벨로 전환하면 일반적으로 파일 시스템 마운트, 데몬 시작 또는 중지, X 윈도 시스템 시작 또는 중지, 시스템 종료 등의 실행 레벨별 스크립트 세트가 실행됩니다.
런 레벨
시스템 V의 런 레벨은 시스템의 특정 상태를 나타내며, 각 시스템에서 실행되는 프로세스와 데몬으로 특징지어집니다.일반적으로 7개의 런레벨이 있으며, 이 중 3개의 런레벨은 시스템 운영에 필수적이기 때문에 "표준"으로 간주됩니다.
이러한 표준 시스템 외에 Unix 및 Unix 유사 시스템은 런 레벨을 다소 다르게 취급합니다.공통분모인/etc/inittab
file은 설정된 각 런레벨이 특정 시스템에서 수행하는 작업을 정의합니다.
기본 런 레벨
운영 체제 | 기본 런 레벨 |
---|---|
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/inittab
file은 기본 런레벨을 설정합니다.:initdefault:
엔트리를 입력합니다.
Unix 시스템에서는 누락된 서비스만 시작함으로써 런 레벨을 변경할 수 있습니다(각 레벨은 시작/[citation needed]정지된 서비스만 정의하기 때문에).예를 들어 시스템을 런 레벨3에서 4로 변경하면 로컬 X 서버만 시작될 수 있습니다.런 레벨 3으로 돌아가면 다시 정지됩니다.
기타 구현
전통적으로 init의 주요 결점 중 하나는 작업을 순차적으로 시작하고 각 작업이 완료될 때까지 기다린 후 다음 단계로 넘어간다는 것입니다.기동 프로세스가 입출력(I/O)에 의해 차단되면, 기동중에 지연이 길어질 가능성이 있습니다.예를 들어 SSD를 사용하여 I/O 속도를 높이면 지연 시간이 단축될 수 있지만 근본 원인을 해결하지는 못합니다.
기존의 init 데몬을 대체하기 위해 다음과 같은 다양한 노력이 이루어지고 있습니다.
- GoboLinux의 BootScripts
- busybox-init, 임베디드 운영체제에 적합하며, OpenWrt가 procd로 대체되기 전에 사용됨
- Dinit, 서비스 매니저 및 초기화 시스템.[12]
- Epoch는 단순성과 서비스 관리에[13] 중점을 둔 단일 스레드 Linux 초기 시스템입니다.
- Initng, 비동기적으로 프로세스를 시작하도록 설계된 init의 완전한 대체 기능
- launchd는 Mac OS X v10.4부터 시작되는 Darwin/macOS/iOS/tvOS의 init을 대체하는 것입니다(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월[update] 현재, systemd는 대부분의 주요 Linux [22]디스트리뷰션에서 채택되고 있습니다.
「 」를 참조해 주세요.
- 운영 체제 서비스 관리
- Session Manager 서브시스템: Windows NT와 동등합니다.
레퍼런스
- ^ 버전 7 Unix 프로그래머 매뉴얼 –
- ^ 버전 7 Unix 프로그래머 매뉴얼 –
- ^ – 4.2BSD 시스템 매니저 매뉴얼
- ^ – 4.2BSD 파일 포맷 매뉴얼
- ^ 4.3BSD 시스템 매니저 매뉴얼 –
- ^ 4.3BSD 파일 포맷 매뉴얼 –
- ^ Andrew Smallshaw (7 December 2009). "Unix and Linux startup scripts, Part 2".
- ^ "init(8)". minnie.tuhs.org.
- ^ "Initscripts". Gentoo Linux Documentation. Gentoo.org. 2014-12-13. Retrieved 2020-12-08.
- ^ "Run Levels". Oracle Solaris Administration: Common Tasks. Oracle.
- ^ "UNIX man pages : runlevel (8)". Unixhelp.ed.ac.uk. 1997-05-27. Archived from the original on 2014-07-14. Retrieved 2014-07-12.
- ^ "GitHub - davmac314/dinit: Service monitoring / "init" system".
- ^ "Epoch Init System Homepage".
- ^ 무효 Linux 메인 페이지
- ^ "The Shepherd - GNU Project". Free Software Foundation, Inc. Retrieved 2016-01-16.
- ^ "s6: why another supervision suite".
- ^ "s6 init system". Archived from the original on 2021-09-13.
- ^ Fedora 14 Accepted Features, 2010-07-13, retrieved 2010-07-13
- ^ "Fedora defers systemd to F15". Linux Weekly News. 2010-09-14. Retrieved 2010-09-17.
- ^ "Deployment". Red Hat Enterprise Linux 6: Technical Notes. Red Hat. Retrieved 2013-12-31.
- ^ Software Architecture: Chromium OS design documents, retrieved 25 January 2014
- ^ "Systemd #Adoption" 참조
외부 링크
- FreeBSD init man 페이지
- Unix 초기 스킴을 정리한 문서(2007)
- Solaris Service Management Facility - 웨이백머신 퀵스타트 가이드 (2005년 12월 31일 아카이브)
- 현대 초기 시스템의 역사(1992-2015)