FreeBSD: Постоянные узлы для USB-устройств

Список включил repos

На поле CentOS 6.x у меня есть следующие репозитории:

$ yum repolist|column
Loaded plugins: fastestmirror, priorities, refresh-packagekit
Loading mirror speeds from cached hostfile
 * base: mirrors.usinternet.com
 * epel: mirror.steadfast.net
 * extras: centos.mbni.med.umich.edu
 * updates: centos.mirrors.tds.net
76 packages excluded due to repository priority protections
repo id         repo name                                               status
base            CentOS-6 - Base                                         6,315+66
epel            Extra Packages for Enterprise Linux 6 - x86_64             9,349
extras          CentOS-6 - Extras                                            6+7
updates         CentOS-6 - Updates                                       1,020+3
repolist: 16,690

Который репозиторий действительно упаковывает X, прибывают из?

На CentOS 6.x, когда я использую команду repoquery Я нахожу, что следующие пакеты из этих репозиториев:

$ for i in pcre pcre-devel php php-common php-gd php-cli php-mysql flex bison ; do 
  echo -n $i; repoquery -i --archlist=`uname -m` $i \
            | grep Repo | sed 's/Repository//'; 
done | column -t

Производит следующий вывод:

pcre        :  base
pcre-devel  :  base
php         :  updates
php-common  :  updates
php-gd      :  updates
php-cli     :  updates
php-mysql   :  updates
flex        :  base
bison       :  base

Перечислите весь доступный repos

Вы видите, какие repos доступны для Вашего поля с этой командой:

$ yum repolist all
...
...
C6.3-contrib                   CentOS-6.3 - Contrib                                                      disabled
C6.3-extras                    CentOS-6.3 - Extras                                                       disabled
C6.3-updates                   CentOS-6.3 - Updates                                                      disabled
base                           CentOS-6 - Base                                                           enabled: 6,315+66
c6-media                       CentOS-6 - Media                                                          disabled
centosplus                     CentOS-6 - Plus                                                           disabled
contrib                        CentOS-6 - Contrib                                                        disabled
debug                          CentOS-6 - Debuginfo                                                      disabled
epel                           Extra Packages for Enterprise Linux 6 - x86_64                            enabled:    9,349
epel-debuginfo                 Extra Packages for Enterprise Linux 6 - x86_64 - Debug                    disabled
epel-source                    Extra Packages for Enterprise Linux 6 - x86_64 - Source                   disabled
epel-testing                   Extra Packages for Enterprise Linux 6 - Testing - x86_64                  disabled
epel-testing-debuginfo         Extra Packages for Enterprise Linux 6 - Testing - x86_64 - Debug          disabled
epel-testing-source            Extra Packages for Enterprise Linux 6 - Testing - x86_64 - Source         disabled
extras                         CentOS-6 - Extras                                                         enabled:      6+7
updates                        CentOS-6 - Updates                                                        enabled:  1,020+3
repolist: 16,690

Включение repo

Включить один из отключенных repos:

$ yum-config-manager --enablerepo=<reponame>

Например:

$ yum-config-manager --enablerepo=centosplus

Добавление repo

Если у Вас есть репозитории .repo файл, можно добавить его и включить его как так:

$ yum-config-manager --add-repo http://www.example.com/example.repo
$ yum-config-manager --enablerepo=example
3
01.04.2015, 02:27
1 ответ

Я не думаю, что вы можете заблокировать, но есть довольно простой способ сделать это. Вам нужно добавить кое-что в etc/devd.conf, которое обрабатывает конкретное устройство, когда оно появляется. Вам нужно будет использовать что-то уникальное в устройстве (, например. его серийный номер ). Вот пример последовательного порта USB, который обслуживает мой дверной звонок:

# Set up symlink to doorbell serial port
attach 200 {
        device-name     "uftdi[0-9]";
        match           "vendor"        "0x0403";
        match           "product"       "0x6001";
        match           "sernum"        "A10167K1";
        action          "/root/bin/cuaconfig $device-name doorbell $sernum";
};  

Обратите внимание, что действие заключается в запуске скрипта. Это вычисляет истинный номер последовательного порта окольными способами, а затем добавляет символическую ссылку в /dev. Ваши программы используют это для доступа к устройству. Вот мой скрипт, который, вероятно, больше, чем вам понадобится. Этот переводит имя USB-устройства в имя последовательного порта, потому что я использую последовательный чип USB-порта FTDI. У вас, вероятно, будет что-то намного проще, и, вероятно, вам не понадобится этот перевод.

#!/bin/sh

# configure cuaU? ports - called from devd.conf
# arg 1 - device name, of the form uftdi?
# arg 2 - symlink to create/delete in /dev (any existing one deleted)
# arg 3 - serial number

dev=$1
link=$2
sernum=$3

# get FTDI unit number
ftunit=${dev#uftdi}

# generate full tty name
ttyname="/dev/cua$(sysctl -n dev.uftdi.$ftunit.ttyname)"

# generate full symlink name
symlink="/dev/${link}"

# delete any existing symlink to the port, then create the new one
echo "creating symlink ${symlink} to ${ttyname} on serial ${sernum}" > /dev/console
rm -f ${symlink}
ln -s ${ttyname} ${symlink}`

Получение серийного номера устройства

Может быть достаточно использовать идентификаторы производителей в материале devd.conf. Однако у вас может быть два таких же (, что и у меня, это последовательные USB-порты FT232 ). В этом случае вы можете отличить их по серийному номеру (. Будьте осторожны, некоторые клоны FT232 имеют одинаковый серийный номер!)

Существуют различные способы получения серийного номера. Один из них — установить порт sysutils/usbutils. Он содержит команду lsusb, которая выведет список всех устройств. Вы можете использовать:

lsusb -v -s 0403:6001 | grep serial  

, чтобы получить серийный номер.

4
27.01.2020, 21:19

Теги

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