Arch 설치 중에 `init 0`으로 인해 "초과 매개변수"가 나타나는 이유는 무엇입니까?

Arch 설치 중에 `init 0`으로 인해 "초과 매개변수"가 나타나는 이유는 무엇입니까?

나는 init 0종료를 호출하는 예전 방식에 익숙합니다. 나쁘다는 것은 알고 있지만 새로운 Arch 설치에서 시도했을 때 다음과 같은 결과를 얻었습니다.

# init 0
Excess Arguments

systemd런레벨이 지원되어야 한다고 생각했기 때문에 이것이 나를 혼란스럽게 합니다 . 매뉴얼 페이지를 보면 다음과 같이 언급되어 있습니다.

SysV와의 호환성을 위해 systemd가 init로 호출되고 PID가 1이 아닌 경우 telinit를 실행하고 수정되지 않은 모든 명령줄 인수를 전달합니다. 이는 일반 로그인 세션에서 호출될 때 init와 telinit가 본질적으로 동일하다는 것을 의미합니다. 자세한 내용은 telinit(8)을 참조하십시오.

제가 잘못된 구문을 사용하고 있는 건가요, 아니면 완전히 오해하고 있는 건가요 systemd?

추가 초기화/시스템 정보

# command -v init
/usr/bin/init

# file /bin/init
/usr/bin/init: symbolic link to ../lib/systemd/systemd

# /lib/systemd/systemd --version
systemd 234
+PAM -AUDIT -SELINUX -IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN default-hierarchy=hybrid
# command -v telinit
/usr/bin/telinit

# file /bin/telinit
/bin/telinit: symbolic link to systemctl

# systemctl --version
systemd 234
+PAM -AUDIT -SELINUX -IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN default-hierarchy=hybrid

일반 시스템 정보

# uname -a
Linux arch 4.12.5-1-ARCH #1 SMP PREEMPT Fri Aug 11 12:40:21 CEST 2017 x86_64 GNU/Linux

# bash --version
GNU bash, version 4.4.12(1)-release (x86_64-unknown-linux-gnu) 

답변1

SysV와의 호환성을 위해 [...]
시스템 234
[...]-SYSVINIT [...]

호환성 옵션 없이 systemd를 빌드하므로 매뉴얼에 설명된 호환성 동작이 발생하지 않습니다.

답변2

귀하의 심볼릭 링크를 통해 제가 알 수 있는 한, 이것이 문제입니다.

귀하의 init링크가 심볼릭 링크 systemd라면 systemd가 인수로 무엇을 얻을 수 있는지 확인해야 합니다.

systemd [OPTIONS...]

Starts up and maintains the system or user services.

  -h --help                      Show this help
     --test                      Determine startup sequence, dump it and exit
     --no-pager                  Do not pipe output into a pager
     --dump-configuration-items  Dump understood unit configuration items
     --unit=UNIT                 Set default unit
     --system                    Run a system instance, even if PID != 1
     --user                      Run a user instance
     --dump-core[=BOOL]          Dump core on crash
     --crash-vt=NR               Change to specified VT on crash
     --crash-reboot[=BOOL]       Reboot on crash
     --crash-shell[=BOOL]        Run shell on crash
     --confirm-spawn[=BOOL]      Ask for confirmation when spawning     processes
     --show-status[=BOOL]        Show status updates on the console during bootup
     --log-target=TARGET         Set log target (console, journal, kmsg, journal-or-kmsg, null)
     --log-level=LEVEL           Set log level (debug, info, notice, warning, err, crit, alert, emerg)
     --log-color[=BOOL]          Highlight important log messages
     --log-location[=BOOL]       Include code location in log messages
     --default-standard-output=  Set default standard output for services
     --default-standard-error=   Set default standard error output for services

문제는 실제로 실제 파일이 없고 init연결된 링크만 있다는 것입니다.systemd

답변3

추가 패키지 "systemd-sysvcompat"가 있으며 그 후에 sysvinit 0는 telinit도 가능합니다. 하지만 이 inittab이 다시 필요하고 Slackware 14.2(systemd가 없음)의 중지/종료/재시작이 설득력이 없습니다.

이것/usr/bin/sysvinit"이전" init과 동일한 크기이며 내부에는 GCC: (GNU) 4.9.2, 및 [email protected](이름을 알고 있습니다! 그는 sysvinit를 썼습니다!)라고 적혀 있습니다. 이것이 sysv-init입니다. 이름을 바꾸면됩니다. 패키지에서는 /usr/bin/init라고 합니다.

아아, 불쌍한 Init! 이렇게 밀려다니는구나!


re:6:once:/sbin/reboot 

이것은 시작할 때 사용하는 inittab입니다 init=/usr/bin/sysvinit. /sbin/reboot는...systemctl에 대한 링크입니다! 글쎄요, 작동하지만 계속 진행하라는 말은 아닙니다... (제가 발명한 것이 아닙니다. 아치리눅스 설치와 똑같다는 것을 알았습니다)

관련 정보