имена, назначенные ядру, всегда назначаются в порядке обнаружения устройств, и вы не можете их изменить. (Не больше, во всяком случае – эта функция была удалена из-за различных условий гонки, вызванных правилами "постоянного имени".)
но ты можешь сказать udev создать ссылки С любыми именами вы выбираете. На самом деле, на современных системах нужно уже есть/dev/serial имени как пути к устройству , и его уникальный идентификатор; например:
/dev/serial/by-path/pci-0000:00:1a.0-usb-0:1.2:1.0
→ ttyUSB0
/dev/serial/by-id/usb-Motorola_Inc._Motorola_Phone__C350_-if00
→ ttyACM0
/dev/disk/by-id/ata-ST9640320AS_5WX1ZH91-part1
→ sda1
/dev/disk/by-partlabel/Arch
→ sda3
/dev/input/by-id/usb-PIXART_USB_OPTICAL_MOUSE-mouse
→ mouse1
и так далее. Просто run tree /dev
или ls -lR /dev
найти устройство.
вы также можете запустить udevadm info /dev/ttyUSB0
и все символические ссылки для этого устройство будет указано как S: ...
строки.
если этого недостаточно, вы можете написать свои собственные правила udev. Первый запуск udevadm info /dev/ttyUSB0
и выберите любое идентифицирующее свойство (например,ID_PATH
для порта USB). Рекомендуется также всегда включать подсистему.
затем откройте (или создайте) файл в /etc/udev/rules.d/
(название, например, serial-symlinks.rules
), и поставьте там правило udev.
например, если вывод для ttyUSB0
is:
$ udevadm info /dev/ttyUSB0
. . .
E: ID_PATH=pci-0000:00:1d.0-usb-0:1.2:1.0
. . .
E: SUBSYSTEM=tty
. . .
...можно написать такое правило:
SUBSYSTEM=="tty", ENV{ID_PATH}=="pci-0000:00:1d.0-usb-0:1.2:1.0", SYMLINK+="tty-xbee"
...и udev всегда будет симлинк /dev/tty-xbee
к любому устройству tty, подключенному к порту USB #2.
(Примечание: не использовать те же имена для символических ссылок, что и в ядре для узлов устройств. Использование SYMLINK+="ttyUSB0"
будет причиной плохих вещей.)