Как убедиться, что некоторые устройства всегда используют один и тот же файл устройства?

Наконец-то мне удалось добавить нового пользователя в виртуальный терминал (Ctrl + Alt + F1), поскольку su

# adduser donald
# su - donald
$ startx

вошел в него, добавил его в список суперпользователей и запустил его как su

sudo chown -hR username:username /home/username/

, где имя пользователя - старое имя пользователя. Это сработало, я думаю, что это сделано.

3
25.07.2016, 14:43
2 ответа

Я заметил, что атрибут devpath является постоянным для моих портов USB. Вы можете добавить новое правило udev и создать определенные символические ссылки на основе портов, к которым затем подключаются устройства. Просто добавьте новый файл в каталог /etc/udev/rules.d , который будет выглядеть так:

#new symlink for my front USB port:
KERNELS=="2-1.8", SUBSYSTEMS=="usb", ATTRS{devpath}=="1.8", SYMLINK+="usb_port1"

и убедитесь, что его имя заканчивается на .rules , например port1.rules . С этого момента вы можете сделать запись fstab , используя / dev / usb_port1 , поскольку любое устройство, подключенное к этому конкретному порту, будет указано под указанной символической ссылкой в ​​ / dev / . То же самое для SD-карты, и вы должны быть урегулированы.

Происходит то, что мы проверяем уникальные свойства конкретного порта (части == ), и как только они совпадают, добавляем ( + = ) новую символическую ссылку на / dev / .

Информацию об атрибутах, которые вы хотите сопоставить, можно получить с помощью udevadm info -a / dev / sdb1 (для устройства sdb1 ). Убедитесь, что вы берете атрибуты только из одного родительского блока устройства, и это должен быть тот, который имеет уникальные записи devpath и KERNELS - попробуйте использовать несколько USB-портов, если они доступны. изменение.

PS: udev также позволит запускать сценарий при подключении устройства - может пригодиться для ваших нужд резервного копирования. Однако я не знаю, будет ли загрузка вашей системы считаться подключением к сети, поэтому вам нужно будет проверить поведение.

3
27.01.2020, 21:18

Я, скорее всего, воспользуюсь ответом Фиксимана, но для полноты картины я написал пример сценария для монтирования устройства, которое меньше по размеру и еще не смонтировано.

#!/bin/bash

output=$(lsblk -b -I 8 -i | grep "^[\`|]-sd.1" | awk '{print substr($1,3), $4, $7}')

cursize=999999999999999

while read dev size mountpath; do
        echo $dev :: $size :: $mountpath
        if [[ $size -lt $cursize && -z $mountpath ]]
        then
                cursize=$size;
                dev2mount=$dev;
        fi
done <<< "$output"

echo to mount: $dev2mount of $cursize size
1
27.01.2020, 21:18

Теги

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