나는 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에 대한 링크입니다! 글쎄요, 작동하지만 계속 진행하라는 말은 아닙니다... (제가 발명한 것이 아닙니다. 아치리눅스 설치와 똑같다는 것을 알았습니다)