GN⁺: 임베디드 리눅스에서 systemd가 문제가 되는 이유
(kevinboone.me)- systemd는 시스템 관리와 관련된 통합 애플리케이션 세트로, 전통적인 init 프로세스를 대체하며 사용자 세션 관리, 장치 관리, 로깅, 타이밍 등 다양한 기능을 포함함
- 대부분의 Linux 사용자는 systemd의 장단점에 관심이 없으나, 일부는 강력히 반대하거나 지지
- 주류 Linux 배포판은 systemd를 채택했으며, 이는 주로 일반적인 데스크톱 환경에서의 이점 때문임
임베디드 Linux에서의 문제
- 임베디드 시스템에서는 systemd의 장점이 오히려 단점이 될 수 있음
- Raspberry Pi 3B에서의 메모리 사용량을 예로 들면, systemd가 SystemV init보다 더 많은 자원을 사용함
- systemd-journald와 같은 systemd의 로깅 데몬도 자원을 많이 사용함
- 임베디드 환경에서는 더 작은 대안이 필요하며, systemd는 이러한 환경에 최적화되지 않음
systemd의 복잡성과 부팅 시간
- systemd는 부팅 시간을 줄일 수 있지만, 임베디드 시스템에서는 오히려 부팅 시간이 증가할 수 있음.
- systemd의 복잡성과 기능은 일반적인 환경에서는 필요하지만, 임베디드 환경에서는 불필요한 경우가 많음.
대안의 부재
- systemd가 대체하는 많은 서비스는 임베디드 환경에서 더 작고 빠른 대안이 존재하지만, 일부는 더 이상 대안이 없음
- 예를 들어, udev 데몬은 systemd 프로젝트에 통합되었으며, 독립적인 대안이 거의 없음
systemd의 확산과 대안의 감소
- systemd는 많은 기능을 포함하고 있으며, 배포판 관리자에게는 편리함.
- systemd가 점점 더 많은 기능을 흡수하면서, 대안을 유지할 동기가 줄어들고 있음.
- 이는 임베디드 환경에서 systemd가 적합하지 않은 경우 문제를 야기할 수 있음.
결론
- systemd는 임베디드 환경에서 전통적인 대안보다 덜 효과적일 수 있음.
- 주류 Linux 배포판에서 systemd를 사용하지 않는 것을 찾기 어려워지고 있음.
- systemd의 확산으로 인해 Linux가 systemd 없이 상상하기 어려운 미래로 나아가고 있음.
- 대안을 개발하거나 유지할 준비가 필요하며, systemd를 사용하지 않는 배포판을 계속 지원해야 함
busybox 의 init는 임베디드 기기를 위한 systemd의 훌륭한 대체재 입니다.
그리고 임베디드기기 같이 제약된 시스템이면, 굳이 udev를 사용할게 아니라, 고정된 device node를 root 파일시스템에 포함하면 됩니다.
제 경우가 예외중에 예외이긴 합니다만 갤탭에 우분투 올리고 거따 vscode올려 쓰는 저로서는 systemd때문에 눈물날때가 종종 있드라구요..
Hacker News 의견
-
systemd는 많은 문제를 해결하며, 커뮤니티도 매우 응답성이 좋고 도움이 됨
- 가끔 이상한 문제가 있지만 항상 해결책이 존재함
- 메모리 사용은 중요하지 않으며, 대부분의 임베디드 Linux 장치는 1GB 이상의 RAM을 가짐
- 작은 장치에서는 Zypher나 FreeRTOS를 사용함
-
OpenEmbedded/Yocto, Devuan, Gentoo는 여러 init 시스템을 제공함
-
Rustysd는 systemd의 동작을 일부 복제하는 서비스 관리자임
- core 기능을 제공하며, 다양한 플랫폼에 systemd와 유사한 서비스 관리자를 제공할 수 있음
-
systemd를 선호하는 사람들은 주로 배포 관리자임
- systemd는 다양한 시스템 유틸리티를 하나의 큰 빌드로 제공함
-
Unix 철학은 작은 도구들이 문제를 해결하는 것임
- systemd는 초기에는 작았으나, 현재는 웹 기반으로 비디오 회의도 가능함
-
runit는 애플리케이션과 서비스를 감독하는 데 훌륭함
- BusyBox에 내장되어 있으며 매우 가벼움
- 설정이 매우 간단하며, 로깅 기능도 포함됨
- Unix 철학을 거의 완벽하게 구현함
-
udev 없이 임베디드 시스템을 실행할 수 있음
- 고정된 주변 장치와 커널 모듈을 사용하는 경우 가능함
-
RPi는 산업용 제어 보드의 폼 팩터를 데스크탑으로 변환함
- 많은 소프트웨어가 이 세그먼트를 염두에 두고 작성되지 않음
-
Chimera Linux는 서비스 관리와 로그인/좌석 관리에서 흥미로운 방향으로 나아가고 있음
- systemd의 gnulibc와 gcc 확장 사용이 문제임
-
systemd의 설치 크기가 임베디드 Linux에서 가장 큰 문제임
- 64M RAM과 128M NAND 플래시를 가진 장치에서는 5M의 systemd가 비효율적임
-
systemd는 250MB의 RAM을 사용하여 임베디드 Linux에서 문제가 됨
- mainstream 배포판을 고려하지 않는 시스템에서는 큰 문제가 아님
-
SysVInit는 외부 유틸리티에 의존하여 프로세스를 시작하고 중지함
- 최소한의 경우에도 init 스크립트를 실행하기 위해 셀이 필요함