udev 내장에 대한 문서가 있습니까?

udev 내장에 대한 문서가 있습니까?

udev의 매뉴얼 페이지에는 특정 규칙 옵션을 사용하여 udev 프로그램 자체에 내장된 "내장" 명령을 호출할 수 있다는 내용이 여러 곳에서 언급되어 있습니다. 그러나 udev 내장 함수의 기능과 사용 방법을 명확하게 설명하는 참조 문서를 찾지 못했습니다.

나는 성공하지 못한 채 온라인으로 검색했습니다. 이러한 내장 명령에 대한 자세한 정보를 제공하는 참조 자료가 있는지 아는 사람이 있습니까?

답변1

방금 실행하면 udevadm test-builtin --help각 명령에 대한 간단한 설명과 함께 내장 명령이 나열됩니다.

udevadm test-builtin --help
udevadm test-builtin [옵션] 명령 DEVPATH

내장 명령을 테스트합니다.

  -h --help 이 메시지 인쇄
  -V --version 프로그램 버전을 인쇄합니다.

주문하다:
  blkid 파일 시스템 및 파티션 감지
  btrfs btrfs 볼륨 관리
  hwdb 하드웨어 데이터베이스
  input_id 입력 장치 속성
  키보드 키보드 스캔 코드와 키 매핑
  kmod 커널 모듈 로더
  net_id 네트워크 장치 속성
  net_setup_link 네트워크 링크 구성
  path_id는 영구 장치 경로를 형성합니다.
  usb_id USB 장치 속성
  uaccess 관리 장치 노드 사용자 ACL

안타깝게도 아시다시피 내장 기능의 사용은 매뉴얼에서 간략하게만 설명됩니다.
실제 예는 시스템에서 사용할 수 있는 파일(아래)에서 찾을 수 있으며 , 여기에는 다음 내용이 포함되어 있습니다.50-udev-default.rules/lib/udev/rules.d/

SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", IMPORT{builtin}="usb_id", IMPORT{builtin}="hwdb --subsystem=usb"
SUBSYSTEM=="input", ENV{ID_INPUT}=="", IMPORT{builtin}="input_id"
ENV{MODALIAS}!="", IMPORT{builtin}="hwdb --subsystem=$env{SUBSYSTEM}"

답변2

불행하게도 이 정보는 매뉴얼 페이지에 빠져 있으며, 읽는 방법을 알고 있더라도(아래 참조) 이 정보를 찾는 데 어려움을 겪을 것입니다.

그러나 오픈 소스의 장점은 소스 코드를 읽을 수 있다는 것입니다. 당신이 보면udev-builtin.csystemd/source 파일은 저장소 내에 udev있으며 기본C 언어 지식, 다음 코드 조각을 찾을 수 있습니다. 기존의 모든 내장 유형을 매핑하는 구조.

static const struct udev_builtin *builtins[_UDEV_BUILTIN_MAX] = {
#if HAVE_BLKID
        [UDEV_BUILTIN_BLKID] = &udev_builtin_blkid,
#endif
        [UDEV_BUILTIN_BTRFS] = &udev_builtin_btrfs,
        [UDEV_BUILTIN_HWDB] = &udev_builtin_hwdb,
        [UDEV_BUILTIN_INPUT_ID] = &udev_builtin_input_id,
        [UDEV_BUILTIN_KEYBOARD] = &udev_builtin_keyboard,
#if HAVE_KMOD
        [UDEV_BUILTIN_KMOD] = &udev_builtin_kmod,
#endif
        [UDEV_BUILTIN_NET_ID] = &udev_builtin_net_id,
        [UDEV_BUILTIN_NET_LINK] = &udev_builtin_net_setup_link,
        [UDEV_BUILTIN_PATH_ID] = &udev_builtin_path_id,
        [UDEV_BUILTIN_USB_ID] = &udev_builtin_usb_id,
#if HAVE_ACL
        [UDEV_BUILTIN_UACCESS] = &udev_builtin_uaccess,
#endif
};

여기에는 struct모든 내장 유형이 포함되어 있으며 해당 유형에 따라 소스 파일을 매핑합니다. 예:

관련된:

답변3

확실하지 않습니다. 더 나은 것을 찾지 못했다면 소스 코드에서 직접 사용할 수 있는 내장 기능을 탐색해 보십시오. "udev-builtin"으로 시작하는 파일을 찾으십시오.

https://github.com/systemd/systemd/tree/master/src/udev

관련 정보