<colbgcolor=#f6f5f4><colcolor=#000> systemd | |
| |
개발 | Lennart Poettering 외 |
개발 언어 | C언어 |
홈페이지 | |
소스 코드 |
[clearfix]
1. 개요
systemd는 Linux 시스템을 구성하는 기본 요소들의 묶음을 제공하는 소프트웨어 스위트이다.Canonical이 주도했던 Upstart와 마찬가지로, 기존의 고전적인 init 시스템을 대체하기 위해 개발되었다. 시스템 부팅 시 가장 먼저 시작되어, PID 1로 동작하는 시스템 및 서비스 관리자를 제공한다. 적극적인 병렬화와 소켓 및 D-Bus를 활용한 서비스 관리가 특징이다.
오늘날 대부분의 Linux 배포판은 SysVinit과 같은 다른 init 시스템 대신 systemd를 사용한다.
2. 역사
Red Hat에서 일하던 Lennart Poettering와 그 동료 개발자들은 2010년 전통적인 System V init을 대체하기 위해 systemd를 개발했다. 2010년 4월에 Poettering의 블로그에서 "Rethinking PID 1"라는 제목의 글과 함께 처음으로 공개되었다.[1]2011년 5월, Fedora에서 가장 먼저 채택하여 Upstart를 대체했다.[2]
2012년 10월, Arch Linux에서 기존 SysVinit에서 systemd로, 기본 init 시스템을 이주했다.[3]
2014년 2월, Debian은 2013년 10월부터의 오랜 논쟁을 끝내고, 투표를 통해 새로운 기본 init 시스템으로 Upstart 대신 systemd를 선택했다.[4] 데비안 기반의 Ubuntu 또한 같은 init 시스템으로 이주하기로 결정했다.[5]
3. 특징
- .service 설정 파일 사용
ini 파일을 닮은 구조로, 설정이 강력하며 아주 다양한 옵션을 집어넣을 수 있다. rd.d 의 골치아픈 설정보다 훨씬 이해하기 쉽다.
- 의존성 옵션 지정 가능
특정 서비스가 시작되고 난 뒤에 다른 서비스를 띄우거나, 인터넷에 연결되면 서비스를 띄우거나 등등 다양한 옵션을 설정할 수 있다.
- 다양한 부가기능
cron을 대신할 수 있는 .timer, 한번 실행한 뒤(일반적으로 부팅 후 단 한번만 수행하면 되는 작업 등) 종료되는 Type=oneshot 등을 설정할 수 있다. 이것의 존재로 인해 아예 Arch linux에서는 cron이 기본으로 딸려 나오지 않고, 내장된 반복 작업들은 모두 systemd로 처리된다. 종종 포럼에 가서 보면 왜 systemd timer를 쓰지 cron을 설치하냐는 글도 볼 수 있을 정도...
- systemd 시리즈의 기타 도구
systmd 외에도 systemd-timesyncd, systemd-resolved 등 유닉스 환경에서 쓸 수 있는 도구들을 추가로 설치할 수 있다. 이들은 과거 다른 소프트웨어 개발진들이 만들어 내어 사용되던 것이지만, 일관적인 설정 파일 양식으로 사용할 수 있게 된 것이다. 단, 이는 하나의 프로그램은 하나의 기능만 수행한다는 유닉스 사상과 어긋난다는 비판도 많이 받고 있다. 그러나 설정이 강력하고 편리하다는 것은 부정할 수가 없다.
4. 관련 문서
[1] https://0pointer.de/blog/projects/systemd.html[2] https://fedoraproject.org/wiki/F15_one_page_release_notes[3] https://archlinux.org/news/systemd-is-now-the-default-on-new-installations[4] https://lwn.net/Articles/572805[5] https://web.archive.org/web/20140908011326/http://www.markshuttleworth.com/archives/1316