Ядро распознает USB-устройство, но затем я не могу найти его в/sys или/dev

Вашей командой является немного Rube Goldberg-esque. Возьмите список файлов *.mkv. Перечислите те файлы (потенциально заменяющий некоторые непечатаемые символы приблизительным представлением). Проанализируйте список (с некоторыми правилами парсинга, которые не вполне соответствуют способу, которым список сгенерирован). Передайте проанализированные элементы человека du команда (который был бы способен к взятию нескольких аргументов).

ls команда не разворачивает подстановочные знаки, это - оболочка, которая делает. Не анализируйте вывод ls, это никогда не практически необходимо и часто повреждает что-то.

Формат ввода xargs команда не соответствует тому, что производит любая другая команда. Да, это причудливо. С -I, xargs игнорирует добавление отступа, которое является, почему имена файлов с начальными пробелами искажаются. Не использовать xargs кроме с -0 опция или когда Вы знаете свой вход, не содержит символы, которые перепутали бы его.

Просто запишите

du -h *.mkv | awk '{print $1}'

3
31.12.2013, 17:55
1 ответ

Необходимо будет, вероятно, добавить правило UDEV обнаружить это присутствие устройств. После того как устройство обнаруживается, UDEV может создать соответствие /dev/sdb1 соглашаться с ним.

Эти документы от OpenSUSE должны запустить Вас в создании этого правила.

Относительно Вашего вопроса:

"..., но разве я не должен мочь найти родительский узел в/sys для этого? И я ничего не могу найти..."

Я ожидал бы это, если ядро успешно обнаружило /dev/sdb1, который это имеет, так как Вы вкладываете те сообщения Ваш dmesg журнал, затем у Вас были бы соответствующие записи под /sys.

Я занялся бы расследованиями /sys более тщательно, там вероятно дескриптор устройства, скрывающийся там, который соответствует /dev/sdb1. Можно идти вокруг дерева с помощью этой команды: udevadm info -a -p /sys/class/... необходимо будет прибавить соответствующее устройство вместо точек (...).

Пример

$ udevadm info -a -p /sys/class/ata_device/dev1.0 

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/pci0000:00/0000:00:1f.2/ata1/link1/dev1.0/ata_device/dev1.0':
    KERNEL=="dev1.0"
    SUBSYSTEM=="ata_device"
    DRIVER==""
    ATTR{gscr}==""
    ATTR{class}=="ata"
    ATTR{ering}=="[4294667.658000000]Unknown"
    ATTR{spdn_cnt}=="0"
    ATTR{pio_mode}=="XFER_UDMA_7, XFER_UDMA_6, XFER_UDMA_5, XFER_UDMA_4, XFER_MW_DMA_4, XFER_PIO_6, XFER_PIO_5, XFER_PIO_4, XFER_PIO_3, XFER_PIO_2, XFER_PIO_1, XFER_PIO_0"
    ATTR{dma_mode}=="XFER_UDMA_7, XFER_UDMA_6, XFER_UDMA_5, XFER_UDMA_4, XFER_UDMA_3, XFER_UDMA_2, XFER_UDMA_1, XFER_UDMA_0, XFER_MW_DMA_4, XFER_MW_DMA_3, XFER_MW_DMA_2, XFER_SW_DMA_2, XFER_PIO_6, XFER_PIO_5, XFER_PIO_4, XFER_PIO_3, XFER_PIO_2"
    ATTR{xfer_mode}=="XFER_UDMA_7, XFER_UDMA_6, XFER_UDMA_5, XFER_UDMA_4, XFER_UDMA_3, XFER_UDMA_2, XFER_UDMA_1, XFER_UDMA_0, XFER_MW_DMA_4, XFER_MW_DMA_3, XFER_MW_DMA_2, XFER_SW_DMA_2, XFER_PIO_6, XFER_PIO_5, XFER_PIO_4, XFER_PIO_3, XFER_PIO_2"

  looking at parent device '/devices/pci0000:00/0000:00:1f.2/ata1/link1/dev1.0':
    KERNELS=="dev1.0"
    SUBSYSTEMS==""
    DRIVERS==""

  looking at parent device '/devices/pci0000:00/0000:00:1f.2/ata1/link1':
    KERNELS=="link1"
    SUBSYSTEMS==""
    DRIVERS==""

  looking at parent device '/devices/pci0000:00/0000:00:1f.2/ata1':
    KERNELS=="ata1"
    SUBSYSTEMS==""
    DRIVERS==""

  looking at parent device '/devices/pci0000:00/0000:00:1f.2':
    KERNELS=="0000:00:1f.2"
    SUBSYSTEMS=="pci"
    DRIVERS=="ahci"
    ATTRS{irq}=="40"
    ATTRS{subsystem_vendor}=="0x17aa"
    ATTRS{broken_parity_status}=="0"
    ATTRS{class}=="0x010601"
    ATTRS{consistent_dma_mask_bits}=="64"
    ATTRS{dma_mask_bits}=="64"
    ATTRS{local_cpus}=="00000000,00000000,00000000,0000000f"
    ATTRS{device}=="0x3b2f"
    ATTRS{msi_bus}==""
    ATTRS{local_cpulist}=="0-3"
    ATTRS{vendor}=="0x8086"
    ATTRS{subsystem_device}=="0x2168"
    ATTRS{numa_node}=="-1"
    ATTRS{d3cold_allowed}=="1"

  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""
0
27.01.2020, 21:44
  • 1
    Распределением является Ubuntu 13.04 (как указано в вопросе). Я полагал, что должен записать правило udev, но как я могу сделать это, если я не могу найти устройство в/sys? Это - действительно вопрос... Я знаю, что существует много ресурсов и руководства правилами udev, но они все не зависят от способности сначала найти проклятую вещь в дереве ядра? –  Stabledog 31.12.2013, 22:12
  • 2
    @Stabledog - Да к точке. Я ожидал бы это, если ядро успешно обнаружило /dev/sdb1 затем у Вас были бы соответствующие записи под /sys. Я занялся бы расследованиями /sys более тщательно, там вероятно дескриптор устройства, скрывающийся там, который соответствует /dev/sdb1. Можно идти вокруг дерева с помощью этой команды: информация о udevadm-a-p/sys/class/...' необходимо будет прибавить соответствующее устройство вместо точек (...). –  slm♦ 31.12.2013, 23:41
  • 3
    Хорошо, это помогло мне ориентироваться. Я нашел устройство под/sys/bus/usb/devices/2-1.2, которое соответствует моему телефону, и 'udevadm информация-a-p...' относился к тому пути, действительно разгрузил набор информации о стиле udev-свойства Поэтому теперь, я надеюсь смочь следовать стандартным руководствам!:) Спасибо. –  Stabledog 01.01.2014, 01:52

Теги

Похожие вопросы