스타트 업에서 시스템으로 전환 한 이유는 무엇입니까?


28

Ubuntu 15.04와 함께 제공되는 더 큰 변경 사항은 부팅 및 시스템 서비스 시작 관리를위한 기본값으로 upstart에서 systemd로 전환하는 것입니다.

기술이 아닌 사용자에게 이것이 어떻게 그리고 우리에게 전혀 영향을 미치는지 적절히 설명 할 수 있습니까? 왜 중요한가요?

답변:


29

Layman 사용자 의도적으로 변경 사항을 알 수 없습니다. 사용자가 전통적으로 상호 작용하는 것이 아니라 초기화 시스템입니다. Upstart에서 제공하는 기능을 완전히 대체해야하며 몇 가지 추가 작업을 수행해야합니다. 그러나 기술이 아닌 사용자가이를 볼 수 있는 유일한 시간 은 잘못되었을 때입니다.

Upstart를 위해 적극적으로 사용하고 개발 한 사용자, 시스템 관리자 및 개발자는 문제를 해결해야하는 사람들입니다. Ubuntu Wiki 에는 개발자가 초기화 스크립트를 변환하는 데 도움 이 되는 마이그레이션 문서가 있지만 사용자와 sysops는 14.04 (2019까지 지원)를 사용하여 Upstart를 계속 사용할 수 있습니다.

변화의 이유와 근거는 우분투 측이 아니 었습니다. Canonical은 Upstart (프로젝트)에 만족했지만 많은 데비안 사용자는 최신 init 엔진으로 이동하여 부팅시 동시성을 향상시키고 모든 서비스에서 기능을 모니터링하기를 원했습니다.

그것은 다양한 선택 (이론)과 시스템이 결국 이겼다는 것을 의미 했습니다.

Canonical은 가장 쉽고 아마도 데비안과 함께 했습니다. 그들은 프로젝트를 포기하고 업스트림과 싸우지 않습니다. 또한 시스템으로 이동하는 다른 배포판 (Red Hat, Fedora 등) 과도 일치합니다. 더 집중하고 노력의 중복을 줄입니다.

tl; dr 전문가 가 아닌 사람에게는 이것이 전혀 영향을 미치지 않습니다. 우분투의 경우 작업량이 적고 초기화 시스템이 향상되어야합니다.


18

기술이 아닌 사용자에게 이것이 어떻게 그리고 우리에게 전혀 영향을 미치는지 적절히 설명 할 수 있습니까?

이론적으로 이것은 시스템이 실제로 어떻게 작동하는지에 대한 핵심적인 기술에 관여하지 않는 비 기술적 인 최종 사용자에게는 영향을 미치지 않아야합니다. 실제로, 당신이 볼 많은 것들이 있습니다.

불완전한 목록은 다음과 같습니다.

  • 프로그램 시작을 위해 upstart 작업 정의 파일을 사용한 애드온 소프트웨어가있는 경우 작동이 중지됩니다. 시스템화 된 서비스 단위 파일 을 설치해야하며, 작성은 가능하지만 더 일반적으로는 이미 작성한 사람을 닉하게해야 합니다. 예 : https://askubuntu.com/questions/613785
  • 전원 관리와 같은 것에 대해 시스템 개발자의 다양한 설계 가정은 기본적으로 사용자가 익숙해 졌던 것과 상충되는 결과를 낳습니다. 예를 들어, 시스템 개발자는 랩톱의 덮개 스위치에 대한 응답으로 어떤 일이 발생해야하는지에 대한 명확한 아이디어를 가지고 있습니다 .
  • nvidia 독점 디스플레이 드라이버를 사용하는 경우 시스템 설계에 영향을 미치는 다양한 디자인 결정이 있습니다. 예 : https://askubuntu.com/questions/613773
  • Ubuntu 사용자는 현재 몇 년 동안이 내용을 알려주는 매뉴얼 페이지를 가지고 있기 때문에 실제로 시작하지 않을 때는 관련이 없지만이 글을 읽을 수있는 우분투 사용자에게는 언급했습니다 .System 5에서 온 다른 Linux 운영 체제 사용자 init+ rcsystemd는 사실에 의해 물린 경우에만 시스템 5와 호환 rc. upstart와 마찬가지로 대부분의 다른 시스템과 마찬가지로 System 5 init및 해당 구성 파일과의 호환성을 제공하지 않습니다 /etc/inittab.

    따라서 30 년 동안 "글쎄, 이것을 편집 할 수 있습니다 /etc/inittab"라는 조언을받은 사람들이나 그 조언을 따르는 소프트웨어를 사용하는 사람들은 이제 부트 스트랩에서 시작하지 않는 소프트웨어를 가지고 있습니다. 예 : https://unix.stackexchange.com/a/196197/5132

  • 이전 명령에서 와 같이 systemd 명령을 통해 단일 사용자 모드로 전환 할 수 없습니다 . 그외에도이 불렀다는 사실에서 복구 모드 systemd 전문 용어를 복구 모드는 systemd 세계관의 상태 셧 다운으로 간주되지 않습니다. 실행 상태 로 간주됩니다 . 기계의 전원을 끕니다. 시스템 세계에서 단일 사용자 모드에 도달합니다. 추가 읽기 : https://unix.stackexchange.com/a/196471/5132shutdownshutdownshutdown nowsystemctl rescue
  • 또한 마지막 주제 : 당신의 아이디어를 멀리 던져하지 않은 경우 실행 수준을 이미, 지금은 그렇게 할 수있는 시간입니다. 추가 읽기 : https://unix.stackexchange.com/a/196014/5132
  • "지금은 모두 체계화되어 있음"을 "알기"때문에 임의 WWW 탐색에서 찾은 일반적인 시스템 조언을 따르는 데주의를 기울여야합니다. --user옵션을 사용하여 명령 실행에 대해 사람들이 이야기하는 것을 보게 될 것 systemctl입니다. 우분투에는 적용되지 않습니다 (아직). upstart와 systemd는이 영역에서 크게 다르며 Ubuntu 버전 15는 여전히 시스템 별 사용자 인스턴스 대신 세션 instart init를 사용합니다 . 그래서 https://superuser.com/a/860598/38062 예를 들어, 적용되지 않습니다. ☺

6

다른 사람들이 이미 여기에서 언급했듯이 이론 상으로는 이것이 비 기술적 인 최종 사용자에게 영향을 미치지 않아야합니다. 이론 상으로는 이론과 실제 사이에 차이가 없지만 실제로는 있습니다.

설명

여기에 게시 된 내용 중 일부는 설명이 필요하다고 생각합니다.

사용자가 전통적으로 상호 작용하는 것이 아니라 초기화 시스템입니다.

SysV init 및 Upstart의 경우이지만 더 이상 systemd의 경우는 아닙니다. 그것은 수행 을 많이 하는 사용자 전통적으로 상호 작용과 사물의를 :


Upstart에서 제공하는 기능을 완전히 대체하고 몇 가지 추가 작업을 수행해야합니다.

명확히해야 할 두 가지-먼저 Upstart를 완전히 교체하는 방법에 대해

SysV 초기화 스크립트가 없음

사람들이 systemd와 관련된 문제 중 하나는 SysV init 스크립트를 실행하지 않는다는 것입니다. 따라서 Upstart에서 제공하는 기능을 완전히 대체 하지 않는 한 가지 예가 있습니다.

이것은 우리가 30 년 넘게 의지 할 수 있었으며 전통적으로 당신은 (동일한 스크립트의 여러 버전을 작성함으로써) 자신을 반복하지 않고 이식성을 극대화하기 위해 SysV init 스크립트를 작성했습니다.

SysV init 또는 Upstart 스크립트를 사용하던 패키지는 패키지를 작성하기 전에 스크립트를 다시 작성해야하므로 공식 리포지토리의 패키지 만 사용할 때는 문제가되지 않습니다.

SysV init 또는 Upstart 용으로 작성된 init 스크립트가있는 타사 또는 사용자 정의 소프트웨어를 사용하고 systemd가있는 시스템으로 업그레이드하기 전에 init 스크립트를 다시 작성해야하는 사람들에게만 문제가됩니다. upstart 설치 ( 옵션 ) 또는 systemd를 사용하지 않는 시스템으로 마이그레이션).

SysV init 스크립트를 시스템화 된 스크립트로 자동 변환하는 systemd-sysv-generator가 있지만 몇 가지 버그명시 적 비 호환성 목록이 있습니다.

이제 두 번째 설명은 몇 가지 추가 사항에 대한 것입니다.

몇 가지 추가 사항

systemd에 대한 Perspective 에 따르면 systemd가 달성 한 것, 달성 한 것, 그리고 GNOME.asia에서 2014 년 Lennart Poettering이 발표 한 내용 에 따르면 "추가 된 것" 은 다음과 같습니다.

  • 초기화 시스템
  • 저널 로깅
  • 로그인 관리
  • 장치 관리
  • 임시 및 휘발성 파일 관리
  • 이진 형식 등록
  • 백라이트 저장 / 복원
  • rfkill 저장 / 복원
  • 부팅 차트
  • 미리 읽기
  • 암호화 된 저장소 설정
  • EFI / GPT 파티션 발견
  • 가상 머신 / 컨테이너 등록
  • 컨테이너 관리
  • 호스트 이름 관리
  • 로케일 관리
  • 시간 관리
  • 랜덤 시드 관리
  • sysctl 변수 관리
  • 콘솔 관리
  • 내성
  • 자동 발견
  • 플러그 앤 플레이
  • 네트워크 관리
  • 시스템 네트워크
  • DNS 캐시
  • mDNS 응답자
  • LLMNR 응답자
  • DNSSEC 검증
  • 커널의 IPC
  • kdbus
  • sd- 버스
  • NTP와의 시간 동기화
  • systemd-timesyncd
  • 컨테이너와 통합
  • 서비스 샌드 박스
  • 앱 샌드 박스
  • OS 이미지 형식
  • 컨테이너 이미지 형식
  • 앱 이미지 형식
  • 자동 검색 기능이있는 GPT
  • 상태 비 저장 시스템
  • 인스턴스화 가능한 시스템
  • 공장 초기화
  • 노드 초기화 및 업데이트
  • 클라우드와 통합
  • 노드 간 서비스 관리
  • 펌웨어까지 검증 가능한 OS 이미지
  • 부팅 로딩
  • 인터넷의 차세대 OS 구축 배포 간의 무의미한 차이를 통합

"이것은 사용자가 전통적으로 상호 작용하는 것이 아니라 init 시스템입니다." -init 시스템은 해당 목록에서 하나의 항목이라는 점을 지적해야합니다.


마지막으로 마지막으로 언급하고 싶은 것은 :

[T] 비 기술적 인 사용자는 이것이 잘못되었을 때만 볼 수있는 시간입니다.

오, 안도감. :)

변경

스크립트 자체 이외의 최종 사용자에 대한 가장 눈에 띄는 변경은 서비스를 시작 및 중지하고 다음과 같은 명령을 사용하는 것입니다.

더 이상 예상대로 작동하지 않습니다. 예를 들어, nohup세션에서 로그 아웃 한 후 프로세스가 계속 실행되도록하는 POSIX 명령입니다. 그것은 더 이상 작동하지 않습니다 systemd에. 또한 같은 프로그램 screentmux필요 특별한 방법으로 또는 다른 호출 할 수 있습니다 당신은 죽을 것입니다 그들과 함께 실행하는 프로세스 (사망자 공정을받지 동안 것은 보통 처음에 화면이나 TMUX을 실행하는 주된 이유이다).

이것은 버그가 아니며, 디자인 선택이므로 향후 수정되지 않을 것입니다. 이것이 Lennart Poettering 이이 문제에 대해 말한 것입니다.

필자의 관점에서 볼 때 유닉스에서는 기본적으로 임의의 사용자 코드가 제한되지 않은 상태로 유지되는 것이 실제로 이상했다. 지금까지 많은 OS 사용자들 사이에서 논의되어 왔지만, 이것이 반드시 가능해야하지만 확실히 기본값은 아니지만, 스위치를 기본 설정에서 옵션으로 설정하기 위해 스위치를 뒤집는 사람은 아무도 없습니다. 로그 아웃 후 사용자 세션을 정리하지 않는 것은 추악하고 다소 해킹 일뿐만 아니라 보안 문제이기도합니다. systemd 230은 이제 스위치를 뒤집었고, 기본적으로 사용자가 로그 아웃 할 때 모든 것을 올바르게 정리합니다.

자세한 내용은 다음을 참조하십시오.

달리는 screen

  • 건방진 녀석: screen
  • 체계화 : systemd-run --user --scope screen

(참고 : 위의 "스타트 업"동작은 실제로 시스템을 제외한 모든 것입니다. 이것은 스타트 업과 관련이 없습니다.)

작업 foo 시작 :

  • 건방진 녀석: start foo
  • 체계화 : systemctl start foo

foo 직업 중지 :

  • 건방진 녀석: stop foo
  • 체계화 : systemctl stop foo

작업 foo 재시작 :

  • 건방진 녀석: restart foo
  • 체계화 : systemctl restart foo

상태가있는 작업 나열 :

  • 건방진 녀석: initctl list
  • 체계화 : systemctl status

( 이 질문의 범위를 벗어난 자세한 내용 은 Upstart의 장점과 단점은 무엇입니까?에 대한 나의 답변을 참조하십시오 .)

로그

Unix 전통과 달리 systemd의 로그는 사용자 정의 형식으로 이진 파일에 저장되므로 로그 처리에는 큰 차이가 있습니다.

cat /var/log/upstart/foo.log
tail -f /var/log/upstart/foo.log

로그에 액세스하려면 특수 명령을 사용해야합니다.

sudo journalctl -u foo
sudo journalctl -u foo -f

논란

데비안과 우분투에 시스템을 처음 도입 한 것은 다음 기사 중 하나를 쓴 사람에게 알려진 논쟁과 광범위한 반대가 없었습니다.

systemd에 대한 공식 데비안 입장 과 그에 따른 논쟁2014 년 출애굽 선언으로 이어졌고 Ian Jackson의 사임으로 끝났다 .

해커 뉴스에 대한 많은 토론 과 함께 Init Freedom , Without-Systemd.org Systemd-Free.org 이니셔티브가 탄생했습니다.

추가 자료


당신은 내 대답을 다른 맥락으로 끌어 들이고 있습니다. Systemd 초기화 시스템 이상의 것이지만이 질문은 시작 → 시스템 및 그 결정에 관한 것이 었습니다. "시스템화 된 모든 것이 대체하는 것은 무엇입니까?"
Oli
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.