Как разбить раздел на два без форматирования?

В моем случае у меня было 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 и прочее

0
03.09.2021, 22:47
1 ответ

Можно? Конечно.

Стоит ли?НЕТ

Если вам необходимо извлечь и изолировать дополнительное хранилище из 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
2
04.09.2021, 13:52

Теги

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