웹사이트 검색

'init' 및 'systemd' 뒤에 숨겨진 이야기: Linux에서 'init'를 'systemd'로 대체해야 했던 이유


저는 어디에서 무슨 일이 일어나고 있는지 최신 정보를 얻기 위해 다양한 Linux 배포판 및 응용 프로그램과 관련된 여러 메일링 리스트에 가입했습니다. 새로운 버그는 무엇입니까? 출시된 패치는 무엇입니까? 다음 릴리스에서는 어떤 내용이 예상되나요? 그리고 다른 많은 것들. 요즘 메일링 리스트는 "Linux Divide에서 당신의 편을 선택하세요"로 가득 차 있는데, 주로 데비안 메일링 리스트와 다른 몇 가지 메일링 리스트에 있습니다.

"Linux Divide에서 자신의 편을 선택하세요"란 무엇입니까?

init 데몬은 일부 Linux 배포판에서 systemd 데몬으로 대체될 예정이며, 많은 배포판에서는 이미 이를 구현했습니다. 이는 기존 Unix/Linux Guard와 New Linux Guard(프로그래머 및 시스템 관리자) 사이에 큰 격차를 만들거나 만들 것입니다.

이 기사에서는 모든 쿼리에 대해 하나씩 논의하고 해결할 것입니다.

  1. 초기화가 무엇인가요?
  2. 시스템화란 무엇인가?
  3. 왜 init를 교체해야 합니까?
  4. systemd가 소유할 기능은 무엇입니까?

초기화란 무엇입니까?

Linux에서 init는 초기화의 약어입니다. init는 컴퓨터가 시작되자마자 시작되어 컴퓨터가 종료될 때까지 계속 실행되는 데몬 프로세스입니다. 실제로 init는 컴퓨터가 부팅될 때 시작되는 첫 번째 프로세스로, 직접 또는 간접적으로 실행 중인 다른 모든 프로세스의 상위 프로세스가 되므로 일반적으로 "pid=1"가 할당됩니다.

init 데몬이 시작되지 않으면 프로세스가 시작되지 않으며 시스템은 "커널 패닉"이라는 단계에 도달합니다. init는 가장 일반적으로 System V init라고 합니다. System V는 설계된 최초의 상용 UNIX 운영 체제이며 오늘날 대부분의 Linux 배포판에서 init 사용법은 BSD 스타일을 사용하는 Slackware와 사용자 정의 init를 사용하는 Gentoo와 같은 몇 가지 예외를 제외하면 System V OS와 동일합니다. .

init를 좀 더 완벽한 것으로 대체해야 할 필요성은 오랫동안 느껴져 왔으며 때때로 몇 가지 대안이 개발되었으며 그 중 일부는 배포판의 기본 init 대체가 되었습니다. 그 중 일부는 다음과 같습니다.

  1. Upstart – Ubuntu GNU/Linux에서 구현되고 비동기적으로 프로세스를 시작하도록 설계된 초기화 대체 데몬입니다.
  2. Epoch – 단일 스레드 프로세스를 시작하도록 설계된 단순성과 서비스 관리를 중심으로 구축된 초기화 교체 데몬입니다.
  3. Mudar – Python으로 작성되고 Pardus GNU/Linux에서 구현되며 비동기적으로 프로세스를 시작하도록 설계된 초기화 대체 데몬입니다.
  4. systemd – 병렬로 프로세스를 시작하도록 설계된 초기화 대체 데몬으로, Fedora, OpenSuSE, Arch, RHEL, CentOS 등 다양한 표준 배포판에서 구현됩니다.

시스템화란 무엇인가?

systemd는 UNIX 규칙에 따라 데몬 끝에 'd'를 추가하는 이름의 시스템 관리 데몬입니다. 그래서 쉽게 알아볼 수 있습니다. 처음에는 GNU General Public License에 따라 출시되었지만 현재는 GNU Lesser General Public License에 따라 릴리스됩니다. init와 마찬가지로 systemd는 직접 또는 간접적으로 다른 모든 프로세스의 상위 프로세스이며 부팅 시 시작되는 첫 번째 프로세스이므로 일반적으로 "pid=1"가 할당됩니다.

systemd는 데몬과 관련된 모든 패키지, 유틸리티 및 라이브러리를 나타낼 수 있습니다. init의 단점을 극복하기 위해 설계되었습니다. 이는 프로세스를 병렬로 시작하여 부팅 시간과 계산 오버헤드를 줄이도록 설계된 백그라운드 프로세스입니다. init에 비해 다른 기능도 많이 있습니다.

왜 init를 교체해야 했나요?

init 프로세스는 순차적으로 시작됩니다. 즉, 마지막 작업 시작이 성공하고 메모리에 로드된 후에만 하나의 작업이 시작됩니다. 이로 인해 부팅 시간이 지연되고 길어지는 경우가 많았습니다. 그러나 systemd는 속도를 위해 설계된 것이 아니라 작업을 깔끔하게 완료하여 UN에서 필요한 모든 지연을 방지하도록 설계되었습니다.

시스템의 특징
  1. 깨끗하고 미래 지향적이며 효율적인 디자인.
  2. 부팅 과정이 더 간단해졌습니다.
  3. 부팅 시 동시 및 병렬 처리.
  4. 더 나은 API.
  5. 단순 단위 구문.
  6. 선택적 구성 요소를 제거하는 기능.
  7. 메모리 사용량이 적습니다.
  8. 종속성을 표현하는 기술이 향상되었습니다.
  9. 쉘 스크립트가 아닌 구성 파일에 초기화 지침이 작성되었습니다.
  10. Unix 도메인 소켓을 사용하십시오.
  11. 시스템 달력 타이머를 사용한 작업 일정 관리.
  12. 저널링을 사용한 이벤트 로깅.
  13. systemd 및 syslog를 사용하여 시스템 이벤트를 기록하도록 선택합니다.
  14. 로그는 바이너리 파일에 저장됩니다.
  15. systemd 상태는 나중에 호출되도록 보존될 수 있습니다.
  16. PID가 아닌 커널의 cgroup을 사용하여 프로세스를 추적합니다.
  17. 사용자 로그인은 systemd-logind에 의해 관리됩니다.
  18. 상호 운용성을 위해 Gnome과의 통합이 향상되었습니다.
병목 현상 시스템
  1. 모든 것이 한 곳에서 이루어집니다.
  2. POSIX 표준이 아닙니다.

시스템 및 배포판 통합

Linux Distribution

통합

Fedora

예, systemd를 채택한 최초의 배포판입니다.

Arch

RedHat

CentOS

Debian

예, Debian 8 코드명 Jessie는 기본적으로 systemd를 갖습니다.

Gentoo

예, 하지만 사용자 정의 초기화를 사용하여 다운로드, 설치 및 구성해야 합니다.

OpenSUSE

Slack

아니요(지금까지 슬랙웨어에서는 채택되지 않았지만 Patric Volkerding은 채택 여부에 대해 아무런 언급도 하지 않았습니다)

Ubuntu

예, Upstream을 설치하고 구성해야 합니다.

논쟁

Linux 커널의 수석 설계자인 Linus Torvalds는 사용자와 버그 보고서에 대한 systemd의 핵심 개발자의 태도가 좋지 않은 것 같다고 느꼈습니다. 또한 시스템화된 철학은 이상하고 시스템 프로세스를 제어하는 낯선 방법이라는 보고도 있었습니다. Patric Volkerding 및 기타 유명한 Linux 사용자 및 개발자뿐만 아니라 온라인 포럼을 통해 때때로 동일한 내용이 기록되었습니다.

시스템 대 초기화

Features init systemd
DBus Dependency – Mandatory No Yes
Device based Activation No Yes
Device dependency configuration with udev No Yes
Timer based Activation Cron/at Proprietary
Quota Management No Yes
Automatic Service Dependency Handling No Yes
Kills users Process at logout No Yes
Swap Management No Yes
SELinux integration No Yes
Support for Encrypted HDD No Yes
Static kernle module loading No Yes
GUI No Yes
List all the child processes No Yes
Sysv compatible Yes Yes
Interactive booting No Yes
Portable to non x86 Yes No
Adopted on Several Distro Several Distro
Parallel service startup No Yes
Resource limit per service No Yes
Easy extensible startup script Yes No
Separate Code and Configuration File Yes No
Automatic dependency calculation No Yes
Verbose debug Yes No
Version N/A V44+
Size 560 KB N/A
Number of Files 75 files 900 files + glib + DBus
Lines of code – LOC 15000 (Approx) 224000 (Approx) (inc Codes, comments and white space) 125000 (Approx) (acctual code)

결론

pid=1로 실행되는 모든 것은 중단되어서는 안 되고, 엉망이 되어서도 안 되며, 사용자가 효과적이고 효율적으로 제어해야 합니다. 많은 사용자는 init를 systemd로 교체하는 것은 Linux의 부작용으로 매번 바퀴를 재발명하는 것에 지나지 않는다고 믿습니다. 그러나 이것이 Linux의 다양한 특성입니다. 리눅스가 그만큼 강력하기 때문이다. 변화는 좋은 것이며 정당한 이유가 있다면 그 변화에 감사해야 합니다.

지금은 여기까지입니다. 저는 여러분이 읽고 싶어할 또 다른 흥미로운 기사를 가지고 다시 찾아오겠습니다. 그때까지 계속 지켜봐주시고 Tecmint에 연결해 주세요. 아래 의견에 귀중한 피드백을 제공해 주시기 바랍니다.