Init
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
Init은 유닉스 계열 운영체제의 핵심 프로세스로, 시스템 부팅 및 초기화 과정을 관리한다. 초기 유닉스 시스템에서는 `/etc/rc` 스크립트를 실행하고, BSD 계열에서는 `/etc/rc.local` 파일을 지원하는 등 단순한 구조를 가졌다. 이후 SysV 스타일 init를 거쳐, 현재는 systemd, Upstart, OpenRC 등 다양한 대안이 등장하여 시스템 부팅 속도 향상과 효율적인 서비스 관리를 제공한다. 특히 systemd는 대부분의 주요 리눅스 배포판에서 채택되어 널리 사용되고 있다.
더 읽어볼만한 페이지
- 유닉스 프로세스 및 작업 관리 관련 소프트웨어 - Ps (유닉스)
`ps` 명령어는 유닉스 계열 운영체제에서 실행 중인 프로세스의 ID, CPU 사용량, 메모리 사용량, 실행 시간, 상태 등 자세한 정보를 표시하며, 파이프를 통해 다른 명령어와 결합하여 활용된다. - 유닉스 프로세스 및 작업 관리 관련 소프트웨어 - Top (소프트웨어)
top은 시스템의 실시간 상태를 보여주는 프로세스 모니터링 소프트웨어 유틸리티로, CPU 사용률, 메모리 사용량, 실행 중인 프로세스 목록 등 다양한 정보를 제공한다.
| Init | |
|---|---|
| 기본 정보 | |
![]() | |
| 국호 | 대한민국 (大韓民國) |
| 로마자 표기 | Daehanminguk |
| 약칭 | 한국 (韓國) |
| 영어 | Republic of Korea (ROK) |
| 위치 | 동아시아 |
![]() | |
| 수도 | 서울 |
| 면적 | 100,363 km² |
| 정치 | |
| 정치 체제 | 대통령 중심제 공화국 |
| 대통령 | 윤석열 |
| 국무총리 | 한덕수 |
| 국회 의장 | 김진표 |
| 여당 | 국민의힘 |
| 야당 | 더불어민주당 |
| 역사 | |
| 건국 | 1948년 8월 15일 |
| 인구 | |
| 2023년 | 51,628,117명 (세계 28위) |
| 경제 | |
| 통화 | 원 (₩, KRW) |
| 명목 GDP | 1조 6,643억 달러 (2022년, 세계 13위) |
| 1인당 명목 GDP | 32,256 달러 (2022년, 세계 31위) |
| 기타 | |
| 국가 코드 | KOR |
| ISO 3166-1 | KR |
| 국가 도메인 | .kr |
| 전화 코드 | +82 |
2. 역사적 배경
init 시스템은 초기 유닉스 시절부터 발전해 왔으며, 크게 리서치 유닉스 스타일, BSD 스타일, System V 스타일로 나뉜다. 각 스타일에 대한 자세한 내용은 하위 섹션을 참고하면 된다.
2. 1. 리서치 유닉스 스타일/BSD 스타일
리서치 유닉스의 init는 `/etc/rc`에 위치한 셸 스크립트를 실행한 다음, `/etc/ttys`가 통제하는 터미널에서 getty를 실행하였다.[2] 실행 수준은 존재하지 않으며, `/etc/rc` 파일이 init에 의한 프로그램 실행을 정의한다. 이 시스템의 장점은 수동 편집이 단순하고 쉽다는 것이다. 그러나 시스템에 추가된 새로운 소프트웨어는 기존 파일에 대한 변경이 필요한데, 이는 시스템의 부팅을 불가능하게 만들 수 있다.BSD init는 4.3BSD 이전에는 리서치 유닉스의 init와 동일했다.[4][5] 4.3BSD에서는 `/etc/ttys`의 제어 하에 있는 그래픽 터미널에서 X와 같은 윈도 시스템을 실행하는 지원이 추가되었다.[6][7] `/etc/rc`를 편집해야 하는 요구 사항을 제거하기 위해, BSD 변형은 부팅 시퀀스의 거의 끝 부분에서 서브 셸로 실행되는 사이트별 `/etc/rc.local` 파일을 오랫동안 지원해 왔다.
NetBSD 1.5에서 완전한 모듈식 시스템이 도입되어 FreeBSD 5.0 및 후속 버전으로 이식되었다. 이 시스템은 `/etc/rc.d` 디렉터리에서 스크립트를 실행한다. 각 스크립트의 파일 이름에서 파생되는 System V의 스크립트 순서와 달리, 이 시스템은 각 스크립트 내에 배치된 명시적 종속성 태그를 사용한다.[8] 스크립트가 실행되는 순서는 이러한 태그에 명시된 요구 사항을 기반으로 하는 ''rcorder'' 유틸리티에 의해 결정된다.
2. 2. SysV 스타일
AT&T의 유닉스 시스템 III은 이전과 비교하여 새로운 스타일의 시스템 시작 구성을 도입했으며, 이는 유닉스 시스템 V로 이어져 "SysV 스타일 init"이라고 불린다.[39]System V는 ''런레벨''이라는 미리 결정된 상태 중 하나로 시스템 상태를 정의한다. 일반적으로 시스템 정상 작동 상태를 나타내는 런레벨 외에도, 싱글 사용자 모드(결함 복구에 사용), 시스템 종료 등 다양한 런레벨이 존재한다. 런레벨 간 전환 시에는 런레벨별 스크립트가 실행되어 파일 시스템 마운트, 데몬 및 X 윈도우 시스템 시작 또는 중지, 시스템 종료 등을 수행한다.
System V init는 `/etc/inittab` 파일의 `:initdefault:` 항목을 확인하여 기본 런레벨을 결정한다. 기본 런레벨이 없으면 콘솔 터미널에 표시가 나타나 사용자가 수동으로 런레벨을 입력해야 한다.
SysV 스타일 init의 장점은 유연하고 확장성이 있다는 것이지만, 단점은 복잡하다는 점이다.

2. 2. 1. 런레벨
System V의 런레벨은 기기의 특정한 상태를 기술하며, 프로세스와 데몬에 의해 결정된다. 일반적으로 0(중단), 1(단일 사용자 모드), 6(재부팅)을 포함하여 8개의 런레벨이 있다.[9] 이 표준들 외에 유닉스 및 유닉스 계열 운영 체제들은 실행 수준을 조금 다르게 처리한다./etc/inittab 파일은 시스템에서의 실행 수준의 설정을 정의한다.[9]System V의 런레벨은 각 런레벨에서 실행되는 프로세스와 데몬을 특징으로 하는 컴퓨터의 특정 상태를 설명한다. 일반적으로 7개의 런레벨이 있으며, 그중 3개의 런레벨은 시스템 운영에 필수적이므로 "표준"으로 간주된다.[9]
- 0: 전원 끄기
- 1: 싱글 유저 모드 (''S'' 또는 ''s''로도 알려져 있음)
- 6: 재부팅
이러한 표준 외에도, 유닉스 및 유닉스 계열 시스템은 런레벨을 다소 다르게 취급한다. 공통 분모인
/etc/inittab 파일은 각 구성된 런레벨이 특정 시스템에서 수행하는 작업을 정의한다.[9]대한민국에서 널리 쓰이는 리눅스 배포판의 경우, 일반적으로 3번은 다중 사용자 텍스트 모드, 5번은 그래픽 모드를 나타낸다. 예를 들어, 런레벨 5는 X 윈도 시스템을 실행하는 멀티유저 그래픽 환경을 호출하며, GDM 또는 KDM과 같은 디스플레이 매니저를 사용한다.[12]
대부분의 시스템에서 모든 사용자는 `runlevel` 또는 `who -r` 명령을 사용하여 현재 런레벨을 확인할 수 있다.[12] root 사용자는 일반적으로 `telinit` 또는 `init` 명령을 실행하여 현재 런레벨을 변경한다.
/etc/inittab 파일은 :initdefault: 항목으로 기본 런레벨을 설정한다.[12]다음은 주요 운영체제의 기본 런레벨을 나타내는 표이다.
| 운영체제 | 기본 런레벨 |
|---|---|
| AIX | 2 |
| CentOS | 3 (콘솔/서버) 또는 5 (그래픽/데스크톱)[31] |
| Debian | 2[32] |
| Gentoo Linux | 3[33] |
| HP-UX | 3 (콘솔/서버/멀티유저) 또는 4 (그래픽) |
| macOS | 3 |
| Mandriva Linux | 3 (콘솔/서버) 또는 5 (그래픽/데스크톱) |
| Red Hat Linux / Fedora Core | 3 (콘솔/서버) 또는 5 (그래픽/데스크톱)[34] |
| Slackware | 3 |
| Solaris | 3[35] |
| SUSE Linux | 3 (콘솔/서버) 또는 5 (그래픽/데스크톱)[36] |
| Ubuntu | 2[32] |
전통적인 init의 주요 단점 중 하나는 작업을 순차적으로 시작하여 각 작업이 로드를 완료할 때까지 기다린 후 다음 작업으로 넘어간다는 점이다. 이는 시동 프로세스가 입출력(I/O)에 막히면 부팅 중에 긴 지연을 발생시킬 수 있다. SSD를 사용하는 등 I/O 속도를 높이면 지연 시간을 단축할 수 있지만, 근본적인 원인을 해결하지는 못한다.
3. init의 대안
이러한 문제점을 해결하고 다른 설계 문제를 해결하기 위해 기존 init 데몬을 대체하기 위한 다양한 노력들이 이루어졌다. 주요 대안은 다음과 같다.기술 설명 운영체제 BootScripts GoboLinux busybox-init 임베디드 운영 체제에 적합 Alpine Linux, SliTaz 5(Rolling), Tiny Core Linux, VMware ESXi, OpenWrt(procd로 대체되기 전) Dinit 서비스 관리자 및 init 시스템.[13] Epoch 단순성과 서비스 관리에 중점을 둔 단일 스레드 Linux init 시스템[14] ginitd init 시스템과 서비스 관리 시스템으로 구성된 소프트웨어 패키지[15] Initng 프로세스를 비동기적으로 시작하도록 설계된 init의 전체 대체 launchd Darwin/macOS/iOS/tvOS의 init을 대체 (Mac OS X v10.4부터) OpenRC 프로세스 격리, 병렬 시작 및 서비스 종속성을 제공 Alpine Linux, Gentoo 및 그 파생 제품, Devuan, Artix Linux runit 서비스를 병렬로 시작하는 크로스 플랫폼 init의 전체 대체[16] Void Linux SMF illumos/Solaris의 init을 처음부터 완전히 대체/재설계 (Solaris 10부터) Shepherd 비동기적이고 종속성 기반의 초기화를 제공하는 GNU 서비스 및 데몬 관리자[17] s6 init 시스템을 포함하는 소프트웨어 제품군[18][19] SystemStarter Mac OS X에서 Mac OS X v10.4 이전에 BSD 스타일 init에 의해 시작된 프로세스 스포너 Upstart 프로세스를 비동기적으로 시작하도록 설계된 init의 전체 대체 Ubuntu (~ 2014년), Fedora 9,[20][21] Red Hat Enterprise Linux 6,[22] ChromeOS[23] eINIT init를 완전히 대체하며, 비동기적인 프로세스 시작 처리가 특징 Mudur Python으로 작성된 init 대체 기술, 비동기적인 프로세스 시작이 가능[38]。 Pardus
2019년을 기준으로, systemd는 대부분의 주요 Linux 배포판에서 채택되었다.[24]
3. 1. 주요 대안 (대한민국에서 인지도 높은 시스템)
대한민국에서 인지도가 높은 init 시스템의 주요 대안으로는 systemd, Upstart, OpenRC 등이 있다.
systemd는 리눅스 운영 체제에서 사용되는 시스템 및 서비스 관리자로, 빠른 부팅 속도와 효율적인 서비스 관리를 제공하여 대부분의 주요 리눅스 배포판에서 채택되었다.[24]
Upstart는 이벤트 기반 init 시스템으로, Ubuntu에서 2014년까지, Fedora 9,[20][21] Red Hat Enterprise Linux 6,[22] ChromeOS에서 사용되었다.[23]
OpenRC는 젠투 리눅스에서 개발되었으며, 프로세스 격리, 병렬 시작, 서비스 종속성 관리 기능을 제공한다.[14] Alpine Linux, Devuan, Artix Linux 등에서 사용된다.
이 외에도 다양한 init 시스템들이 존재하며, 각 시스템은 특징과 장단점을 갖는다.
3. 1. 1. systemd
systemd는 리눅스 운영 체제에서 사용되는 시스템 및 서비스 관리자이다. 기존의 init 시스템을 대체하기 위해 개발되었으며, 대부분의 주요 리눅스 배포판에서 채택되었다.[24]
systemd는 다음과 같은 장점을 제공한다.
다음은 systemd와 함께 init의 대안으로 개발된 몇 가지 기술들이다.
| 기술 | 설명 | 운영체제 |
|---|---|---|
| 부트스크립트 | GoboLinux | |
| busybox-init | 임베디드 운영 체제에 적합 | Alpine Linux, SliTaz 5(Rolling), Tiny Core Linux, VMware ESXi, OpenWrt(procd로 대체되기 전) |
| Dinit | 서비스 관리자 및 init 시스템.[13] | |
| Epoch | 단순성과 서비스 관리에 중점을 둔 단일 스레드 Linux init 시스템[14] | |
| ginitd | init 시스템과 서비스 관리 시스템으로 구성된 소프트웨어 패키지[15] | |
| Initng | 프로세스를 비동기적으로 시작하도록 설계된 init의 전체 대체 | |
| launchd | Darwin/macOS/iOS/tvOS의 init을 대체 (Mac OS X v10.4부터) | |
| OpenRC | 프로세스 격리, 병렬 시작 및 서비스 종속성을 제공 | Alpine Linux, Gentoo 및 그 파생 제품, Devuan, Artix Linux |
| runit | 서비스를 병렬로 시작하는 크로스 플랫폼 init의 전체 대체[16] | Void Linux |
| Sun SMF | illumos/Solaris의 init을 처음부터 완전히 대체/재설계 (Solaris 10부터) | |
| Shepherd | 비동기적이고 종속성 기반의 초기화를 제공하는 GNU 서비스 및 데몬 관리자[17] | |
| s6 | init 시스템을 포함하는 소프트웨어 제품군[18][19] | |
| SystemStarter | Mac OS X에서 Mac OS X v10.4 이전에 BSD 스타일 init에 의해 시작된 프로세스 스포너 | |
| Upstart | 프로세스를 비동기적으로 시작하도록 설계된 init의 전체 대체 | Ubuntu (~ 2014년), Fedora 9,[20][21] Red Hat Enterprise Linux 6,[22] ChromeOS[23] |
| eINIT | init를 완전히 대체하며, 비동기적인 프로세스 시작 처리가 특징 | |
| Mudur | Python으로 작성된 init 대체 기술, 비동기적인 프로세스 시작이 가능[38]。 | Pardus |
3. 1. 2. Upstart
Upstart는 이벤트 기반으로 작동하여 시스템 변화에 유연하게 대응하는 init 시스템이다. Ubuntu에서 시작되어 2014년까지 사용되었으며, Fedora 9,[20][21] Red Hat Enterprise Linux 6,[22] 구글의 ChromeOS에서도 사용되었다.[23] Upstart는 프로세스를 비동기적으로 시작하도록 설계되어 기존 init의 단점을 보완하였다.하지만 2019년을 기준으로 대부분의 주요 Linux 배포판에서 systemd를 채택하면서,[24] Upstart는 현재 일부 시스템에서만 사용되고 있다.
3. 1. 3. OpenRC
OpenRC는 젠투 리눅스에서 개발된 init 시스템으로, 시스템의 기본 init을 활용하면서도 프로세스 격리, 병렬 시작, 서비스 종속성 관리 등의 기능을 제공한다.[14] Alpine Linux, Devuan, Artix Linux 등에서 사용된다.3. 1. 4. 기타 대안
- BootScripts[13]
- busybox-init - 임베디드 운영 체제에 적합하며, Alpine Linux, SliTaz 5(Rolling), Tiny Core Linux, VMware ESXi에서 사용되었고, OpenWrt에서는 procd로 대체되었다.
- DEMONS
- eINIT - 비동기적인 프로세스 시작 처리가 특징이며, 셸 스크립트를 전혀 사용하지 않는 방식을 취할 수도 있다.
- Epoch - 단순성과 서비스 관리에 중점을 둔 단일 스레드 Linux init 시스템[14]
- ginitd - init 시스템과 서비스 관리 시스템으로 구성된 소프트웨어 패키지[15]
- Initng - 비동기적인 프로세스 시작 처리가 특징이다.
- launchd - Darwin/macOS/iOS/tvOS의 init을 대체하며, Mac OS X v10.4부터 시작한다. (오래된 스타일의 'rc.local' 및 SystemStarter 프로세스를 실행하기 위해 SystemStarter를 시작한다)
- Mudur - Pardus라는 Linux 배포판에서 채택한 Python으로 작성된 init 대체 기술로, 비동기적인 프로세스 시작이 가능하다.[38]
- OpenRC - 시스템에서 제공하는 init을 활용하면서 프로세스 격리, 병렬 시작 및 서비스 종속성을 제공하는 프로세스 스포너이며, Gentoo 및 그 파생 제품에서 사용되며 Devuan 및 Artix Linux에서 옵션으로 제공된다.
- runit - 서비스를 병렬로 시작하는 크로스 플랫폼 init의 전체 대체이며, Void Linux에서 기본적으로 사용된다.[16]
- s6 - init 시스템을 포함하는 소프트웨어 제품군.[18][19]
- Shepherd - 비동기적이고 종속성 기반의 초기화를 제공하는 GNU 서비스 및 데몬 관리자로, Guile Scheme로 작성되었으며 정상적인 시스템 작동 중에 대화식으로 해킹할 수 있도록 설계되었다.[17]
- 서비스 관리 기능 (SMF) - illumos/Solaris의 init을 처음부터 완전히 대체/재설계한 것으로 Solaris 10부터 시작하지만, 원래 System V 스타일 init에 의해 유일한 서비스로 시작되었다.
- SystemStarter - Mac OS X에서 Mac OS X v10.4 이전에 BSD 스타일 init에 의해 시작된 프로세스 스포너
- Upstart - 비동기적으로 프로세스를 시작하도록 설계된 init의 전체 대체. Ubuntu에서 시작되었으며 2014년까지 사용되었다. 또한 Fedora 9,[20][21] Red Hat Enterprise Linux 6[22] 및 Google의 ChromeOS에서도 사용되었다.[23]
참조
[1]
웹사이트
Lennart Poettering on systemd's Tumultuous Ascendancy
https://thenewstack.[...]
2024-01-30
[2]
Manpage
init
[3]
Manpage
ttys
[4]
Manpage
init
[5]
Manpage
ttys
[6]
Manpage
init
[7]
Manpage
ttys
[8]
웹사이트
Unix and Linux startup scripts, Part 2
http://aplawrence.co[...]
2011-06-06
[9]
웹사이트
init(8)
http://minnie.tuhs.o[...]
2015-09-12
[10]
웹사이트
Initscripts
https://wiki.gentoo.[...]
Gentoo.org
2020-12-08
[11]
웹사이트
Run Levels
https://docs.oracle.[...]
Oracle
2017-11-14
[12]
웹사이트
UNIX man pages : runlevel (8)
https://web.archive.[...]
Unixhelp.ed.ac.uk
2014-07-12
[13]
웹사이트
GitHub - davmac314/dinit: Service monitoring / "init" system
https://github.com/d[...]
2021-12-12
[14]
웹사이트
Epoch Init System Homepage
http://universe2.us/[...]
2014-07-31
[15]
웹사이트
ginitd: det effektivaste init-systemet
https://ylur.me/gers[...]
2024-12-16
[16]
웹사이트
Void Linux main page
http://voidlinux.org[...]
2020-08-31
[17]
웹사이트
The Shepherd - GNU Project
https://www.gnu.org/[...]
Free Software Foundation, Inc.
2016-01-16
[18]
웹사이트
s6: why another supervision suite
https://www.skarnet.[...]
2021-09-13
[19]
웹사이트
s6 init system
https://web.archive.[...]
[20]
간행물
Fedora 14 Accepted Features
https://fedoraprojec[...]
2010-07-13
[21]
웹사이트
Fedora defers systemd to F15
https://lwn.net/Arti[...]
Linux Weekly News
2010-09-17
[22]
웹사이트
Deployment
https://access.redha[...]
Red Hat
2013-12-31
[23]
간행물
Software Architecture: Chromium OS design documents
https://sites.google[...]
2014-01-25
[24]
문서
See [[Systemd#Adoption]]
[25]
문서
ISO/IEC 23360-1:2006 Linux Standard Base (LSB) core specification 3.1 Part 1: Generic specification
https://www.iso.org/[...]
[26]
문서
Linux Standard Base(LSB) 22.2. Init Script Actions
https://refspecs.lin[...]
[27]
웹사이트
Know Thy Ubuntu
http://help.ubuntu.c[...]
Help.ubuntu.com
2011-06-13
[28]
웹사이트
since we have no /etc/inittab
http://www.linuxques[...]
Linuxquestions.org
2011-06-13
[29]
웹사이트
Upstart Plans to Ease Linux Management — Streamlining the init Processes
http://linuxplanet.c[...]
LinuxPlanet
2011-06-13
[30]
웹사이트
Upstart in Universe
http://www.netsplit.[...]
Netsplit.com
2011-06-13
[31]
웹사이트
SysV Init Runlevels
http://www.centos.or[...]
2012-09-22
[32]
웹사이트
Debian and Ubuntu Linux Run Levels
http://www.debianadm[...]
Debianadmin.com
2011-06-13
[33]
웹사이트
Initscripts
http://www.gentoo.or[...]
Gentoo.org
2011-06-13
[34]
웹사이트
SysV Init Runlevels
https://access.redha[...]
2012-09-22
[35]
웹사이트
Oracle Documentation
http://www.oracle.co[...]
Docs.sun.com
2011-06-13
[36]
웹사이트
SUSE Documentation: The init Process
https://www.suse.com[...]
suse.com
2014-04-25
[37]
웹사이트
Unix and Linux startup scripts, Part 2
http://aplawrence.co[...]
2009-12-07
[38]
웹사이트
Speeding Up Linux: One Step Further With Pardus Pardus
http://www.pardus.or[...]
Pardus.org.tr
null
[39]
웹인용
init(8)
http://minnie.tuhs.o[...]
[40]
웹인용
Initscripts
http://www.gentoo.or[...]
Gentoo.org
2011-03-02
[41]
웹인용
Oracle Documentation
http://docs.sun.com/[...]
Docs.sun.com
2010-09-07
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com
