linuxfromscratch:12.1:145-systemd-255

Linux From Scratch - Version 12.1-systemd
Chapter 8. Installing Basic System Software
이전 위로 / 처음으로 다음
Jinja2-3.1.3 D-Bus-1.14.10

systemd 패키지에는 시스템의 시작, 실행 및 종료를 제어하는 프로그램이 포함되어 있습니다.

  • 빌드 시간: 0.7 SBU
  • 디스크 공간: 247 MB

기본 udev 규칙에서 불필요한 두 그룹인 rendersgx를 제거합니다.

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


  • 설치된 프로그램:
    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 디바이스 정보에 액세스하는 라이브러리입니다.
  • linuxfromscratch/12.1/145-systemd-255.txt
  • 마지막으로 수정됨: 2024/06/18 03:29
  • 저자 baecy