Linux From Scratch - Version 12.1-systemd | ||
---|---|---|
Chapter 8. Installing Basic System Software | ||
이전 | 위로 / 처음으로 | 다음 |
Jinja2-3.1.3 | D-Bus-1.14.10 |
8.75. Systemd-255
systemd 패키지에는 시스템의 시작, 실행 및 종료를 제어하는 프로그램이 포함되어 있습니다.
- 빌드 시간: 0.7 SBU
- 디스크 공간: 247 MB
8.75.1. systemd 설치
기본 udev 규칙에서 불필요한 두 그룹인 render와 sgx를 제거합니다.
sed -i -e 's/GROUP="render"/GROUP="video"/' \
-e 's/GROUP="sgx", //' rules.d/50-udev-default.rules.in
이제 systemd-resolved의 DNSSEC 확인 보안 취약성과 인스턴스화된 systemd 장치에서 systemd-analyze verify을 실행하는 버그를 수정합니다.
patch -Np1 -i ../systemd-255-upstream_fixes-1.patch
systemd 컴파일을 준비합니다.
mkdir -p build
cd build
meson setup \
--prefix=/usr \
--buildtype=release \
-Ddefault-dnssec=no \
-Dfirstboot=false \
-Dinstall-tests=false \
-Dldconfig=false \
-Dsysusers=false \
-Drpmmacrosdir=no \
-Dhomed=disabled \
-Duserdb=false \
-Dman=disabled \
-Dmode=release \
-Dpamconfdir=no \
-Ddev-kvm-mode=0660 \
-Dnobody-group=nogroup \
-Dsysupdate=disabled \
-Dukify=disabled \
-Ddocdir=/usr/share/doc/systemd-255 \
..
meson 옵션의 의미
- –buildtype=release
최적화되지 않은 바이너리를 생성하는 기본 빌드 유형(“디버그”)을 재정의합니다. - -default-dnssec=no
실험적인 DNSSEC 지원을 해제합니다. - -Dfirstboot=false
시스템을 처음 시작시 시스템을 설정하는 systemd 서비스를 설치하지 않도록 합니다. 모든 작업이 수동으로 수행되므로 LFS에서는 유용하지 않습니다. - -Dinstall-tests=false
컴파일된 테스트의 설치를 방지합니다. - -Dldconfig=false
부팅 시 ldconfig를 실행하는 systemd 유닛의 설치를 방지합니다. 이는 LFS와 같은 소스 배포에는 유용하지 않으며 부팅 시간이 길어집니다. 부팅 시 ldconfig를 실행하려면 이 옵션을 제거합니다. - -Dsysusers=false
/etc/group
및/etc/passwd
파일 설정을 담당하는 systemd 서비스가 설치되지 않도록 합니다. 두 파일은 모두 이전 장에서 생성되었습니다. 사용자 계정은 수동으로 생성되므로 이 데몬은 LFS 시스템에서는 유용하지 않습니다. - -Drpmmacrosdir=no
LFS가 RPM을 지원하지 않으므로 systemd와 함께 사용할 RPM 매크로 설치를 비활성화합니다. - -Dhomed=disabled 및 -Duserdb=false
LFS의 범위에 맞지 않는 종속성을 가진 두 개의 데몬을 제거합니다. - -Dman=disabled
추가 종속성을 피하기 위해 매뉴얼 페이지 생성을 비활성화 합니다. systemd에 미리 생성된 man 페이지를 tarball에서 설치합니다. - -Dmode=release
업스트림에서 실험적인 것으로 간주하는 일부 기능을 비활성화 합니다. - -Dpamconfdir=no
LFS에서 작동하지 않는 PAM 구성 파일을 설치하지 않도록 합니다. - -Ddev-kvm-mode=0660
기본 udev 규칙은 모든 사용자가/dev/kvm
에 액세스할 수 있도록 허용합니다. 편집자는 이를 위험하다고 생각합니다. 이 옵션은 이를 재정의합니다. - -Dnobody-group=nogroup
패키지에 GID 65534의 그룹 이름을 nogroup으로 지정합니다. - -Dsysupdate=disabled
systemd-sysupdate 도구를 설치하지 않습니다. 이 도구는 바이너리 배포판을 자동으로 업그레이드하기 위해 설계되었으므로 소스에서 빌드된 기본 Linux 시스템에는 쓸모가 없습니다. 또한 활성화되어 있지만 제대로 구성되지 않은 경우 부팅 시 오류를 보고합니다. - -Dukify=비활성화
systemd-ukify 스크립트를 설치를 비활성화 합니다. 이 스크립트를 실행하려면 LFS나 BLFS에서 제공하지 않는 파이썬 모듈이 필요합니다.
패키지를 컴파일합니다.
ninja
패키지를 설치합니다:
ninja install
매뉴얼 페이지를 설치합니다:
tar -xf ../../systemd-man-pages-255.tar.xz \
--no-same-owner --strip-components=1 \
-C /usr/share/man
systemd-journald에 필요한 /etc/machine-id
파일을 생성한다:
systemd-machine-id-setup
시스템에 대한 기본 설정을 합니다.
systemctl preset-all
8.75.2. Systemd 패키지 구성
- 설치된 프로그램:
busctl, coredumpctl, halt(systemctl에 링크), hostnamectl, init, journalctl, 커널-설치, localectl, loginctl, machinectl, mount. ddi(systemd-dissect에 링크), networkctl, oomctl, portablectl, poweroff(systemctl에 링크), reboot(systemctl에 링크), resolvconf(resolvectl에 링크), resolvectl, runlevel(systemctl에 링크), shutdown(systemctl에 링크), systemctl, systemd-ac-power, systemd-analyze, systemd-ask-password, systemd-cat, systemd-cgls, systemd-cgtop, systemd-confext(systemd-sysext에 링크), systemd-creds, systemd-delta, systemd-detect-virt, systemd-dissect, systemd-escape, systemd-hwdb, systemd-id128, systemd-inhibit, systemd-machine-id-setup, systemd-mount, systemd-notify, systemd-nspawn, systemd-path, systemd-repart, systemd-resolve(resolvectl에 링크), systemd-run, systemd-socket-activate, systemd-stdio-bridge, systemd-sysext, systemd-tmpfiles, systemd-tty-ask-password-agent, systemd-umount (systemd-mount에 링크), telinit (systemctl에 링크), timedatectl 및 udevadm. - 설치된 라이브러리:
libnss_myhostname.so.2, libnss_mymachines.so.2, libnss_resolve.so.2, libnss_systemd.so.2, libsystemd.so, libsystemd-shared-255.so(/usr/lib/systemd) 및 libudev.so - 설치된 디렉터리:
/etc/binfmt.d, /etc/init.d, /etc/kernel, /etc/modules-load.d, /etc/sysctl.d, /etc/systemd, /etc/tmpfiles.d, /etc/udev, /etc/xdg/systemd, /usr/lib/systemd, /usr/lib/udev, /usr/include/systemd, /usr/lib/binfmt. d, /usr/lib/environment.d, /usr/lib/kernel, /usr/lib/modules-load.d, /usr/lib/sysctl.d, /usr/lib/systemd, /usr/lib/tmpfiles.d, /usr/share/doc/systemd-255, /usr/share/factory, /usr/share/systemd, /var/lib/systemd 그리고 /var/log/journal.
간략한 설명
- busctl
D-Bus 버스를 인트로스펙트하고 모니터링하는 데 사용됩니다. - coredumpctl
systemd 저널에서 코어 덤프를 검색하는 데 사용됩니다. - halt
실행 레벨이 0인 경우를 제외하고, 커널에 시스템 중단을 지시하는 -h 옵션으로 일반적으로 셧다운을 호출하며, 시스템이 중단되고 있음을/var/log/wtmp
파일에 기록합니다. - hostnamectl
시스템 호스트명 및 관련 설정을 쿼리하고 변경하는 데 사용됩니다. - init
커널이 하드웨어를 초기화한 후 처음 시작하는 프로세스로, 부팅 프로세스를 인계받아 구성 파일에 지정된 프로세스를 시작합니다; 이 경우 systemd를 시작합니다. - journalctl
systemd 저널의 내용을 쿼리하는 데 사용됩니다. - kernel-install
kernel과 initramfs 이미지를 /boot에 추가하고 제거하는 데 사용됩니다; LFS에서는 이 작업을 수동으로 수행합니다. - localectl
시스템 로케일 및 키보드 레이아웃 설정을 쿼리하고 변경하는 데 사용됩니다. - loginctl
시스템d 로그인 관리자의 상태를 조사하고 제어하는 데 사용됩니다. - machinectl
systemd 가상 머신 및 컨테이너 등록 관리자의 상태를 조회하고 제어하는 데 사용된다. - networkctl
systemd-networkd로 구성된 네트워크 링크의 상태를 조회하고 구성하는 데 사용된다. - oomctl
systemd 메모리 부족 데몬을 제어한다. - portablectl
로컬 시스템에서 휴대용 서비스를 연결하거나 분리하는 데 사용됩니다. - poweroff
커널이 시스템을 중지하고 컴퓨터를 끄도록 지시합니다 (halt 참조). - reboot
커널에 시스템을 재부팅하도록 지시합니다 (halt 참조). - resolvconf
DNS 서버 및 도메인 구성을 systemd-resolved로 등록합니다. - resolvectl
네트워크 이름 확인 관리자에게 제어 명령을 보내거나 도메인 이름, IPv4 및 IPv6 주소, DNS 레코드 및 서비스를 확인합니다. - runlevel
run/utmp
의 마지막 실행 수준 레코드에 기록된 대로 이전 실행 수준과 현재 실행 수준을 출력합니다. - shutdown
시스템을 안전하게 종료하여 모든 프로세스에 신호를 보내고 로그인한 모든 사용자에게 알립니다. - systemctl
systemd 시스템 및 서비스 관리자의 상태를 점검하고 제어하는 데 사용됩니다. - systemd-ac-power
시스템이 외부 전원에 연결되어 있는지 여부를 보고합니다. - systemd-analyze
시스템 시작 성능을 분석하고 문제가 있는 systemd 장치를 식별하는 데 사용됩니다. - systemd-ask-password
Linux 명령줄에 지정된 메시지를 사용하여 사용자로부터 시스템 암호 또는 암호 구문을 쿼리하는 데 사용됩니다. - systemd-cat
프로세스의 STDOUT 및 STDERR 출력을 systemd 저널과 연결하는 데 사용됩니다. - systemd-cgls
선택한 리눅스 제어 그룹 계층 구조의 내용을 트리로 재귀적으로 표시합니다. - systemd-cgtop
로컬 리눅스 제어 그룹 계층 구조의 최상위 제어 그룹을 CPU, 메모리 및 디스크 I/O 로드 순서대로 표시합니다. - systemd-creds
자격 증명을 표시하고 처리합니다 - systemd-delta
/etc
에서/usr
의 기본값을 재정의하는 구성 파일을 식별하고 비교하는 데 사용됩니다. - systemd-detect-virt
시스템이 가상 환경에서 실행되고 있는지 여부를 감지하고 그에 따라 udev를 조정합니다. - systemd-dissect
OS 디스크 이미지를 검사하는 데 사용됩니다. - systemd-escape
systemd 유닛 이름에 포함할 문자열을 이스케이프하는 데 사용됩니다. - systemd-hwdb
하드웨어 데이터베이스(hwdb)를 관리하는 데 사용됩니다. - systemd-id128
id128(UUID) 문자열을 생성하고 출력합니다. - systemd-inhibit
종료, 절전 또는 유휴 억제 잠금이 적용된 프로그램을 실행하는 데 사용되며, 프로세스가 완료될 때까지 시스템 종료와 같은 동작을 방지합니다. - systemd-machine-id-setup
시스템 설치 도구에서 설치 시/etc/machine-id
에 저장된 시스템 ID를 임의로 생성된 ID로 초기화하는 데 사용됩니다. - systemd-mount
디스크를 일시적으로 마운트하거나 자동 마운트하는 데 사용됩니다. - systemd-notify
데몬 스크립트가 초기화 시스템에 상태 변경 사항을 알리기 위해 사용합니다. - systemd-nspawn
경량 네임스페이스 컨테이너에서 명령 또는 전체 OS를 실행하는 데 사용됩니다. - systemd-path
시스템 및 사용자 경로를 쿼리하는 데 사용됩니다. - systemd-repart
systemd가 OS 이미지(예: 컨테이너)와 함께 사용될 때 파티션 테이블을 성장시키고 파티션을 추가하는 데 사용됩니다. - systemd-resolve
도메인 이름, IPV4 및 IPv6 주소, DNS 리소스 레코드 및 서비스를 확인하는 데 사용됩니다. - systemd-run
임시 .service 또는 .scope 단위를 생성 및 시작하고 그 안에서 지정된 명령을 실행하는 데 사용되며, systemd 단위의 유효성을 검사하는 데 유용합니다. - systemd-socket-activate
소켓 장치에서 수신 대기하고 소켓에 성공적으로 연결되면 프로세스를 시작하는 데 사용됩니다. - systemd-sysext
시스템 확장 이미지를 활성화합니다 - systemd-tmpfiles
tmpfiles.d
디렉터리에 지정된 구성 파일 형식과 위치에 따라 휘발성 및 임시 파일과 디렉터리를 생성, 삭제 및 정리합니다. - systemd-umount
마운트 지점을 마운트 해제합니다. - systemd-tty-ask-password-agent
보류 중인 systemd 암호 요청을 나열 또는 처리하는 데 사용됩니다. - telinit
init에 변경할 실행 수준을 알려줍니다. - timedatectl
시스템 시계와 그 설정을 쿼리하고 변경하는 데 사용됩니다. - udevadm
udevd 데몬을 제어하고, udev 하드웨어 데이터베이스에서 정보를 제공하고, 이벤트를 모니터링하고, 이벤트가 완료될 때까지 기다리며, udev 구성을 테스트하고, 특정 장치에 대한 이벤트를 트리거하는 일반적인 udev 관리 도구입니다. - libsystemd
메인 시스템드 유틸리티 라이브러리입니다. - libudev
Udev 디바이스 정보에 액세스하는 라이브러리입니다.