Ubuntu 24.04 이하 버전에서 init 0, init 6 등 run level을 제어하던 명령어가
Ubuntu 26.04 버전에서는 init 0 ~ 6 명령어를 입력해도 정상 작동하지 않습니다.
# strace init 6
명령어로 확인된 결과값 일부
execve(“/usr/sbin/init”, [“init”, “6”], …) = 0
…
openat(… “/usr/lib/x86_64-linux-gnu/systemd/libsystemd-core-259.so”, …) = 3
…
writev(3, [{iov_base=”Excess arguments.”, …}], 2) = 19
exit_group(1)
-> init 6은 정상적으로 /usr/sbin/init을 실행했고,
내부적으로 systemd 259 라이브러리를 로드했습니다.
그런데 마지막에 6을 런레벨로 처리하지 않고 Excess arguments.라고 출력한 뒤
exit code 1로 종료했습니다.
마지막에 Excess arguments. 후 exit_group(1) [exit code 1] 로 끝납니다
[“Ubuntu 24.04”]
# strace init 6
명령어로 확인된 결과값 일부
execve(“/usr/sbin/init”, [“init”, “6”], …) = 0
…
openat(…, “/usr/lib/x86_64-linux-gnu/systemd/libsystemd-core-255.so”, …) = 3
…
getpid() = 1382492
execve(“/usr/bin/systemctl”, [“init”, “6”], …) = 0
-> init 6이 먼저 /usr/sbin/init으로 실행되고,
systemd 255 라이브러리를 로드한 뒤,
최종적으로 /usr/bin/systemctl을 다시 실행한다는 뜻입니다.
즉 Ubuntu 24.04에서는 init 6이 systemd 호환 처리 경로를 타고 systemctl로 위임됩니다.
그 다음 정상적으로 systemd 환경을 확인하고 아래 기재된 로그와 같이 D-Bus에 연결합니다.
———————————-
faccessat2(AT_FDCWD, “/run/systemd/system/”, F_OK, AT_SYMLINK_NOFOLLOW) = 0
…
connect(3, {sa_family=AF_UNIX, sun_path=”/run/dbus/system_bus_socket”}, 30) = 0
…
getsockopt(3, SOL_SOCKET, SO_PEERCRED, {pid=1, uid=0, gid=0}, [12]) = 0
-> 여기서 /run/systemd/system/ 확인 성공,
/run/dbus/system_bus_socket 연결 성공,
상대 프로세스가 pid=1, uid=0으로 확인됩니다.
즉 PID 1 systemd와 통신 가능한 정상 경로입니다.

이 글은 본인의 실제 경험과 학습을 기반으로 직접 작성하였으며, AI는 참고용으로만 활용하였습니다.





