Назначенные ядром имена всегда назначаются в порядке обнаружения устройств, и вы не можете их изменить. (Во всяком случае, больше - эта функция была удалена из-за различных условий гонки, вызванных правилами "постоянного имени".)
Но вы можете сказать 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
И так далее. Просто запустите 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 :
$ 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" приведет к плохим вещам.)