AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 493771
Accepted
Time4Tea
Time4Tea
Asked: 2019-01-11 09:38:35 +0800 CST2019-01-11 09:38:35 +0800 CST 2019-01-11 09:38:35 +0800 CST

Existe alguma documentação para builtins udev?

  • 772

A página de manual do udev menciona em vários lugares que certas opções de regras podem ser usadas para invocar comandos 'integrados', que aparentemente estão embutidos no próprio programa udev. No entanto, não consegui encontrar nenhuma documentação de referência que explique claramente quais recursos internos do udev estão disponíveis; o que fazem e como são usados.

Já pesquisei na web sem muito sucesso. Alguém sabe se existe uma referência em qualquer lugar que forneça detalhes sobre esses comandos internos?

udev documentation
  • 3 3 respostas
  • 2977 Views

3 respostas

  • Voted
  1. don_crissti
    2019-01-11T11:30:31+08:002019-01-11T11:30:31+08:00

    Se você apenas executar udevadm test-builtinsem argumentos, ele listará os comandos internos junto com uma breve descrição de cada um deles:

    udevadm test-builtin --help
    
    chamando: test-builtin
    udevadm test-built [OPÇÕES] COMMAND DEVPATH
    
    Teste um comando interno.
    
      -h --help Imprime esta mensagem
      -V --version Versão de impressão do programa
    
    Comandos:
      blkid Sistema de arquivos e sondagem de partição
      gerenciamento de volume btrfs btrfs
      banco de dados de hardware hwdb
      input_id Propriedades do dispositivo de entrada
      teclado Código de digitalização do teclado para mapeamento de teclas
      Carregador de módulo do kernel kmod
      Propriedades do dispositivo de rede net_id
      net_setup_link Configurar link de rede
      path_id Compor caminho de dispositivo persistente
      Propriedades do dispositivo USB usb_id
      uaccess Gerenciar ACL do usuário do nó do dispositivo

    Infelizmente, como você notou, o uso de built-ins é explicado apenas brevemente no manual.
    Um exemplo prático pode ser encontrado no arquivo 50-udev-default.rulesdisponível em seu sistema (em /lib/udev/rules.d/) que contém coisas como:

    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}"
    
    • 11
  2. Best Answer
    user34720
    2019-01-11T09:59:03+08:002019-01-11T09:59:03+08:00

    Infelizmente, esta informação está faltando nas páginas de manual e mesmo sabendo como lê-las (veja abaixo) você terá problemas ao tentar encontrar essa informação.

    No entanto, a beleza do código aberto depende de ter o poder de ler as fontes. Se você der uma olhada no udev-builtin.carquivo fonte dentro de systemd/ udevrepository e tiver conhecimento básico da linguagem C , você encontrará o seguinte trecho de código: Uma estrutura que mapeia todos os tipos internos existentes.

    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
    };
    

    Isso structcontém todos os tipos internos e mapeia os arquivos de origem dependendo do tipo. Exemplo:

    • udev-builtin-kmod.c- Um carregador de Módulo Kernel.
    • udev-builtin-keyboard.c- Um manipulador de teclado.
    • udev-builtin-usb_id.c- Um manipulador USB que definirá o tipo de usb e inicializará o dispositivo.

    Relacionado:

    • Como uso páginas man para aprender a usar comandos?
    • 6
  3. xCovelus
    2019-01-11T09:51:21+08:002019-01-11T09:51:21+08:00

    Não tenho certeza, se você não encontrar nada melhor, talvez tente explorar quais builtins estão disponíveis diretamente na fonte: procure por arquivos começando por "udev-builtin"

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

    • 1

relate perguntas

  • Como atribuir links simbólicos a dispositivos seriais do dispositivo usb para serial CP2105?

  • Por que o Udev está carregando dois módulos de kernel para um único dispositivo USB?

  • Altere os dados dos sensores iio por meio de ACCEL_MOUNT_MATRIX personalizado

  • Executando script por meio da regra udev no Chrome OS [fechado]

  • udev, udisks, dbus e comando dd

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve