Linux의 systemd가 몇 년 후에도 여전히 분열적인 이유

0
414
노트북에 녹색 텍스트가있는 Linux 터미널.
fatmawati achmad zaenuri / Shutterstock

systemd는 10 년이 지났지 만 Linux 커뮤니티에서 그것에 대한 감정은 순조로워지지 않았습니다. 지금은 그 어느 때보 다 분열 적입니다. 많은 주요 Linux 배포판에서 사용되지만 하드 코어 반대 의견은 약화되지 않았습니다.

리눅스 부팅 순서

컴퓨터의 전원을 켜면 하드웨어가 부팅 된 다음 (컴퓨터가 사용하는 부팅 섹터 유형에 따라) MBR (마스터 부트 레코드)이 실행되거나 UEFI (Unified Extensible Firmware Interface)가 실행됩니다. 이 두 가지의 마지막 작업은 Linux 커널을 실행하는 것입니다.

커널은 메모리에로드되고 자체적으로 압축이 풀리고 초기화됩니다. 임시 파일 시스템은 일반적으로 다음과 같은 유틸리티에 의해 RAM에 생성됩니다. initramfs 또는 initrd. 이를 통해 필요한 드라이버를 결정하고로드 할 수 있습니다. 이를 통해 사용자 공간 파일 시스템을로드하고 사용자 공간 환경을 구축 할 준비를 할 수 있습니다.

사용자 공간 환경의 생성은 사용자 공간에서 커널이 시작한 첫 번째 프로세스 인 init 프로세스에 의해 처리됩니다. 프로세스 ID (PID)는 1입니다. 다른 모든 프로세스는 init 프로세스의 직접 또는 간접 하위입니다.

전에 systemd, init 프로세스의 주류 기본값은 Unix System V init의 재 작업이었습니다. 다른 선택이 가능했지만 System V init는 대부분의 비 Berkeley Software Distribution (BSD) 파생 배포판의 표준 옵션이었습니다. Linux의 영적 조상 인 System V Unix에서 직접 왔기 때문에 많은 사람들이이를 “공식적인 방법”으로 간주합니다.

init 프로세스는 운영 체제가 의미있는 대화식 방식으로 작동하도록하는 데 필요한 모든 데몬과 서비스를 시작합니다. 이 데몬은 네트워킹 스택과 같은 것을 처리하여 컴퓨터 내부의 다른 하드웨어를 활성화하고 부팅 화면을 제공합니다.

이러한 백그라운드 프로세스의 대부분은 시작된 후에도 계속 실행됩니다. 이벤트 정보를 기록하고, 장치를 삽입하거나 제거 할 때 하드웨어 변경 사항을 감시하고, 사용자 로그인을 관리하는 등의 작업을 수행합니다. 당연히 init 시스템에는 서비스 관리 기능도 포함되어 있습니다.

우리는 사용할 수 있습니다 ps PID 1이있는 프로세스를 확인하려면 f (전체 형식 목록) 및 p (PID) 옵션 :

ps -fp 1

터미널 창에서 ps -fp 1.

PID 1의 프로세스는 다음과 같습니다. systemd. Manjaro Linux에서 동일한 명령을 실행하면 다른 결과가 나타납니다. PID 1이있는 프로세스는 다음과 같이 식별되었습니다. /sbin/init. 해당 파일을 간략히 살펴보면 해당 파일이 systemd:

ps -fp 1
ls -hl /sbin/init

터미널 창에서 ps -fp 1.

사용 ppid (상위 프로세스 ID) 옵션 ps에서 직접 실행 한 프로세스를 확인할 수 있습니다. systemd:

ps -f --ppid 1

ps -f --ppid 터미널 창에서 1.

아래 이미지에서 볼 수 있듯이 꽤 긴 목록입니다.

ps -f --ppid 터미널 창에서 1.

대안

여러 프로젝트에서 전통적인 System V init에 대한 대안을 만들려고했습니다. 주요 문제 중 하나는 System V init를 사용하면 모든 프로세스가 차례로 차례로 시작된다는 것입니다. 부팅 시퀀스의 효율성을 높이기 위해 많은 대체 프로젝트에서 병렬 처리를 사용하여 프로세스를 동시에 및 비동기 적으로 시작합니다.

다음은 이들 중 일부에 대한 정보입니다.

  • 건방진 녀석: Canonical에서 개발했으며 Ubuntu 9.10, Red Hat, Red Hat Enterprise Linux (RHEL) 6, CentOS 6 및 Fedora 9에서 사용되었습니다.
  • Runit : FreeBSD 및 기타 BSD 파생 제품, macOS, Solaris 및 Linux 시스템에서 실행됩니다. Void Linux의 기본 초기화 시스템이기도합니다.
  • s6-linux-init : System V init의이 대체는 Unix 철학을 밀접하게 따르도록 설계되었으며, 이는 종종 “한 가지 일을하고 잘하십시오”라는 소리로 축소됩니다.

기능과 디자인이 다른 여러 가지가 있습니다. 그러나 그들 중 누구도 분노를 만들지 않았습니다. systemd 했다.

체계적인 방법

systemd 2010 년에 출시되어 2011 년에 Fedora에서 사용되었습니다. 이후 많은 배포판에서 채택되었습니다. RedHat의 두 소프트웨어 엔지니어 인 Lennart Poettering과 Kay Sievers가 개발했습니다.

systemd 초기화를 대체하는 것 이상입니다. 오히려 시스템 초기화, 데몬 및 서비스, 로깅 및 저널링 및 Linux의 전용 모듈에서 이미 처리 한 기타 많은 기능을 처리하는 약 70 개의 바이너리 모음입니다. 이들 중 대부분은 시스템 초기화와 관련이 없습니다.

에서 제공하는 일부 데몬 systemd 아르:

  • systemd-udevd : 물리적 장치를 관리합니다.
  • systemd-logind : 사용자 로그인을 관리합니다.
  • systemd-resolved : 로컬 애플리케이션에 네트워크 이름 확인을 제공합니다.
  • 시스템 네트워크: 네트워크 장치를 관리 및 감지하고 네트워크 구성을 관리합니다.
  • systemd-tmp 파일 : 휘발성 및 임시 파일과 디렉토리를 생성, 삭제 및 정리합니다.
  • systemd-localed : 시스템 로케일 설정을 관리합니다.
  • 시스템 가공 : 가상 머신 및 컨테이너를 감지하고 모니터링합니다.
  • systemd-nspawn : 경량 네임 스페이스 컨테이너에서 명령 또는 기타 프로세스를 시작하여 chroot와 유사한 기능을 제공 할 수 있습니다.

그리고 그것은 빙산의 일각에 불과하며 문제의 핵심이기도합니다. systemd 반대자들에 따르면 범위 크립의 바로 그 정의 인 초기화 시스템에 필요한 것을 능가한 지 오래되었습니다.

“너무 커. 너무 많이합니다.”

의 반대 systemd 여기에 포함 된 크고 흥미로운 기능의 조합을 지적합니다. 이러한 모든 기능은 이미 Linux에 존재했으며 아마도 일부 기능은 새로 고침 또는 새로운 접근 방식이 필요했습니다. 그러나이 모든 기능을 init 시스템으로 묶는 것은 구조적으로 혼란 스럽습니다.

systemd 너무 많은 중요한 기능에 대해 단일 실패 지점이라고 불렸지만 이는 정당화되지 않는 것 같습니다. 물론, 창 밖에서 모든 것을 수행하는 큰 소프트웨어 대신 함께 작동하는 작은 도구를 만드는 유닉스 철학을 던졌습니다. 동안 systemd 엄밀히 말하면 모 놀리식이 아니며 (하나의 거대한 바이너리가 아닌 많은 바이너리로 구성됨), 하나의 우산 아래에 많은 이질적인 관리 도구와 명령이 포함되어 있습니다.

모 놀리 식은 아니지만 큽니다. 규모에 대한 아이디어를 얻기 위해 커널 5.6.15 코드베이스에서 텍스트 줄을 세고 systemd GitHub 저장소의 마스터 브랜치.

이것은 상대적으로 조잡한 메트릭이었습니다. 코드 줄뿐만 아니라 텍스트 줄을 계산했습니다. 그래서 여기에는 주석, 문서 및 기타 모든 것이 포함되었습니다. 그러나 이것은 유사한 비교 였고 우리에게 간단한 척도를 제공했습니다.

( find ./ -name '*.*' -print0 | xargs -0 cat ) | wc -l

커널에는 거의 2,800 만 줄 (정확히 27,784,340 줄)의 텍스트가있었습니다. 대조적으로 systemd 1,349,969 개 또는 거의 140 만 개가있었습니다. 우리의 행복하고 운 좋은 지표를 통해 systemd 커널 크기의 약 5 %로 나옵니다.

또 다른 비교로, Arch Linux 배포판을위한 System V init의 최신 구현 라인 수는 1,721 라인으로 나왔습니다.

Poettering은 IEEE (Institute of Electrical and Electronics Engineers) Computer Society 나 POSIX (Portable Operating System Interface) 표준을 전혀 고려하지 않습니다. 사실 그는 개발자들에게 POSIX를 무시하도록 권장했습니다.

“그러므로 Linux 프로그래밍 인터페이스 사본을 구하고 POSIX 호환성에 대한 모든 내용을 무시하고 놀라운 Linux 소프트웨어를 해킹하십시오. 아주 안심입니다!”

다음과 같은 비난이있었습니다. systemd Red Hat에만 도움이되는 Red Hat 프로젝트이지만 더 넓은 Linux 세계로 강제 공급되고 있습니다. 예, Red Hat 내에서 탄생했으며 Red Hat에 의해 관리되고 조정됩니다. 그러나 1,321 명의 기여자 중 일부만 Red Hat에서 작동합니다.

그렇다면 Red Hat의 이점은 무엇입니까?

한때 Red Hat의 CEO였던 IBM의 사장 Jim Whitehurst는 다음과 같이 말했습니다.

“Red Hat은 사용 가능한 많은 옵션을 고려했고 심지어 Red Hat Enterprise Linux 6 용 Canonical의 Upstart를 사용했습니다. 궁극적으로 우리가보고있는 문제를 해결하기 위해 확장 성, 단순성, 확장 성 및 잘 정의 된 인터페이스를 제공하는 최상의 아키텍처이기 때문에 systemd를 선택했습니다. 오늘과 미래를 예견합니다.”

Whitehurst는 또한 임베디드 시스템에서도 이점을 보았다고 말했습니다. Red Hat은 “특히 안정성과 신뢰성이 가장 중요한 관심사 인 통신 및 자동차 산업에서 세계에서 가장 큰 임베디드 공급 업체”와 파트너 관계를 맺고 있습니다.

이것은 기술적으로 건전한 이유처럼 보입니다. 신뢰성에 대한 회사의 요구를 이해할 수 있으며 Red Hat이 자신의 이익을 추구하는 것은 부당하지 않지만 다른 모든 사람들이이를 따라야합니까?

시스템화 된 쿨 에이드를 마시고 있습니까?

일부 반대 systemd 배포판과 사람들이 Red Hat의 리드를 맹목적으로 따르고 채택하고 있다고 말합니다.

그러나“쿨 에이드를 마시다”라는 말처럼 그것은 옳지 않습니다. 1978 년 컬트 지도자 Jim Jones가 그의 추종자들에게 청산 가루를 곁들인 포도 향의 액체를 마시고 자살하도록 강요 한 후 1978 년에 만들어 졌는데,이 문구는 Kool-Aid를 부끄럽게 생각합니다. 그룹은 실제로 Flavor Aid를 마셨지 만 Kool-Aid는 그 이후로 그 붓에 의해 타르 쳐졌습니다.

또한 Linux 배포판은 Red Hat을 맹목적으로 따르지 않습니다. 그들은 채택하고 있습니다 systemd 진지한 심의 후. 이 논쟁은 오랫동안 데비안 메일 링리스트에서 열렸습니다. 그러나 2014 년에 커뮤니티는 systemd 기본 초기화 시스템으로 사용되지만 대안도 지원합니다.

데비안은 RedHat, Fedora 또는 CentOS에서 파생되지 않았기 때문에 중요한 예입니다. Red Hat에서 데비안에 적용된 조종이 없습니다. 그리고 데비안은 PID 1과 마찬가지로 우분투와 그 많은 파생물을 포함하여 많은 자손을 가지고 있습니다.

데비안 커뮤니티의 결정은 광범위합니다. 그들은 또한 격렬하게 토론하고 Condorcet 투표 방법을 사용하는 것에 투표했습니다. 커뮤니티도 그러한 선택을 가볍게하지 않습니다.

2019 년 12 월에 다시 투표하여 systemd 계속해서 대안을 모색합니다. 맹목적으로 따르는 것과는 반대로 이것은 실제로 민주주의와 직장에서의 선택의 자유에 대한 교과서의 예입니다.

선택의 한계

일반적으로 사용할지 여부를 선택할 수 없습니다. systemd 특정 Linux 배포판. 오히려 배포판 자체에서 사용 여부를 선택하고 선호하는 Linux 배포판을 선택할 수 있습니다. 좋아하는 Linux 배포판으로 전환했을 수도 있습니다. systemd. 장르를 바꾸는 좋아하는 뮤지션처럼 이건 어색 할 수 있습니다.

Debian, Fedora, CentOS, Ubuntu, Arch, Solus 및 openSUSE를 사용하고 채택에 반대하는 사람들 systemd, 자신이 선택한 배포판을 사용하지 않고 있다고 느낄 수 있습니다. 아키텍처 선택, 범위 크립 또는 POSIX에 대한 무시에 대해 충분히 강하게 느끼면 해당 배포를 계속 사용하는 것이 불가능하다는 것을 알 수 있습니다.

물론 스펙트럼이 있습니다. 한쪽에는 문제를 이해하지 못하거나 심지어 신경 쓰지 않는 사람들이 있고, 다른쪽에는 열정적 인 반대자들이 있습니다. 중간 어딘가에는 변화를 좋아하지 않지만 배를 뛰어 넘을만큼 신경 쓰지 않는 사람들이 있습니다. 하지만 선호도 나 원칙 때문에 선택한 배급을 유지할 수없는 배급 난민은 어떨까요?

안타깝게도 원하는 init 시스템을 설치하는 것만 큼 쉽지는 않습니다. 모든 사람이이를 수행 할 수있는 기술적 능력이있는 것은 아닙니다. GNOME과 같은 응용 프로그램이나 데스크탑 환경이 systemd.

다른 배포판으로 이동하는 것은 어떻습니까? Devuan과 같은 일부는 비systemd 채택한 배포판 (이 경우 데비안) systemd. Devuan을 사용하는 것은 상위 배포판과 비슷해야하지만 모든 비systemd 포크. 예를 들어 Fedora를 떠나 AntiX, Gentoo 또는 Slackware로 이동하면 매우 다른 경험을하게 될 것입니다.

아무데도 가지 않는다

나는 어떤 것을 좋아한다 systemd 않습니다 (프로세스에 대한 단순하고 표준화 된 제어 메커니즘). 나는 그것이하는 일 (이진 로그)에 대한 근거를 이해하지 못합니다. 나는 또한 그것이하는 일 중 일부를 싫어한다 (홈 폴더 개편-누가 그것을 요구 했는가?).

데비안과 같은 배포판은 현명한 일을하고 있으며 옵션을 열어두기 위해 대안을 조사하고 있습니다. 하나, systemd 장기간에 걸쳐 있습니다.

다른 사람을 위해 Linux 시스템을 관리하는 경우 systemd 뿐만 아니라 System V init을 알고 있습니다. 이렇게하면 어떤 일을 만나든 자신의 임무를 수행 할 수 있습니다.

집에서 Linux를 사용하십니까? 그렇다면 기술 요구 사항을 충족하고 Linux 이데올로기를 보완하는 배포판을 선택하십시오.

관련 : Systemd는 Linux 홈 디렉토리의 작동 방식을 변경합니다