메뉴 닫기

Ubuntu 26.04 init

Ubuntu 24.04 이하 버전에서 init 0, init 6 등 run level을 제어하던 명령어가

Ubuntu 26.04 버전에서는 init 0 ~ 6 명령어를 입력해도 정상 작동하지 않습니다.

.
[이유]
systemd upstream의 v258에서 “System V style system state control”제거가 진행되었기 때문에
Ubuntu 26.04(systemd 259)에서 SysV 방식의 init <runlevel> 제어는 작동하지 않습니다.
.
————————————————————————————————————————
.
[“Ubuntu 26.04”]

# 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는 참고용으로만 활용하였습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다