В моем случае у меня было 4 одинаковых камеры на USB-концентраторе. Нет серийных номеров. Что еще хуже, некоторые модели камер отображались как video0..video3 при загрузке, а другие отображались как video0..video6 (два на камеру ). Я делал снимки с помощью fswebcam. В случае камер, занимающих два видеономера, будет работать только один. Таким образом, моя коллекция из (идентичных )камер была либо видео 0 -1 -2 -3, либо видео 0 -2 -4 -6
Для определения рабочих номеров видео запустите цикл fswebcam -q -d /dev/videoX tpic.jpg -где [X] равно 0 -8 и записали, какие значения X работают.
Затем для каждого сработавшего запускаем udevadm info --attribute walk --name=/dev/videoX > файл
Из этого обширного вывода в файле (, как указано выше ), извлеките (KERNEL== )[номер видео] и (KERNELS== )[адрес порта USB-концентратора] поля.Соответствие между ЯДРОМ и ЯДРОМ не всегда сохраняется после перезагрузки -камера, которая была видео0, может стать видео2 и т.д. и т.п.
Итак, из извлеченной информации составьте список вроде
KERNEL=="video0",SUBSYSTEM=="video4linux",KERNELS=="1 -1.1.3 :0" KERNEL=="video1",SUBSYSTEM=="video4linux",KERNELS=="1 -1.1.1 :0"
и т. д.
Наконец, отсортируйте список по полю ЯДРА, чтобы номер ЯДРА (адрес USB-концентратора )всегда был в одном и том же месте в списке
Затем добавьте SYMLINK в конце каждой строки в отсортированном списке
KERNEL=="video1",SUBSYSTEM=="video4linux",KERNELS=="1 -1.1.1 :0",SYMLINK+="cam1" KERNEL=="video0",SUBSYSTEM=="video4linux",KERNELS=="1 -1.1.3 :0",SYMLINK+="cam2"
и т. д.
Это привязывает номер камеры (cam1 -cam4 или как вы хотите их называть )к порту концентратора USB и переносит номер видео.
Я написал некоторый Python, чтобы сделать все это -много вызовов os.system bash.
Как только у меня было что-то, что работало, я потерял интерес... Если есть более простой способ, было бы неплохо узнать. Вероятно, вы могли бы сделать это с помощью bash, используя grep и прочее
Можно? Конечно.
Стоит ли?НЕТ
Если вам необходимо извлечь и изолировать дополнительное хранилище из sda
без риска потери данных из-за сжатия основного диска, что никогда не рекомендуется, то более безопасным подходом будет использование fallocate
для создания кольцевого устройства.
fallocate
отлично подходит для создания swap
в системах, но его также можно использовать с большим эффектом, когда разбиение на разделы невозможно.
Сначала создайте точку монтирования для кольцевого накопителя.
mkdir /NewDrive
Теперь можно приступить к созданию контурного устройства.
fallocate -l 5G NewStorage
Приведенная выше команда создаст файл NewStorage
размером чуть менее 5 ГБ. Вы можете подтвердить это с помощьюls -h
Теперь, когда хранилище изолировано, а не разбито на разделы, вам нужно будет создать с ним файловую систему.
mkfs.ext4 NewStorage
Будет создана файловая система ext4
. Теперь вы можете смонтировать его в каталог, созданный ранее.
mount NewStorage /NewDrive
Теперь ваша команда lsblk
должна возвращать что-то вроде этого
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 298.1G 0 disk
sda1 8:1 0 298.1G 0 part /
loop0 7:0 0 5G 0 loop /NewDrive
И это без риска потери данных или необходимости сжатия.
Чтобы увидеть все активные шлейфовые устройства, используемые в вашей системе, вы можете использоватьlosetup
losetup
NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE
/dev/loop0 0 0 1 0 /path/TO/NewDrive