Bug 54501 - Нельзя сделать диск removable с помощью правил udev
Summary: Нельзя сделать диск removable с помощью правил udev
Status: NEW
Alias: None
Product: Sisyphus
Classification: Development
Component: udev (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Alexey Shabalin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-05-27 18:31 MSK by Artem Varaksa
Modified: 2025-05-28 10:52 MSK (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Artem Varaksa 2025-05-27 18:31:50 MSK
Шаги
====

1. Подключить внешний NVME диск, например:

>  Device-1: 2-4:3 info: ASUSTek ROG STRIX Arion
>    type: mass storage driver: usb-storage interfaces: 1
>    rev: 2.1 speed: 480 Mb/s (57.2 MiB/s) lanes: 1
>    mode: 2.0 chip-ID: 0b05:1932 class-ID: 0806
>    serial: <filter>

Диск изначально не removable (см. https://bugzilla.altlinux.org/54500)

2. Попробовать сделать диск removable по аналогии с https://wiki.archlinux.org/title/Udev#Some_devices,_that_should_be_treated_as_removable,_are_not :

2.1. # udevadm info /dev/sdb | grep ID_SERIAL
2.2. # cat > /etc/udev/rules.d/99-removable.rules << EOF
ENV{ID_SERIAL}=="serial_number", ENV{UDISKS_AUTO}="1", ENV{UDISKS_SYSTEM}="0"
EOF
2.3. Выполнить # udevadm control --reload и отключить/подключить устройство, перезагрузиться.

Фактический результат
=====================

В # udevadm info /dev/sdb теперь присутствуют строки:

> E: UDISKS_AUTO=1
> E: UDISKS_SYSTEM=0

Однако в # lsblk RM=0:

> NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
> ...
> sdc      8:32   0 238,5G  0 disk
> ├─sdc1   8:33   0   511M  0 part
> ├─sdc2   8:34   0   3,7G  0 part
> ├─sdc3   8:35   0  23,8G  0 part
> └─sdc4   8:36   0 210,4G  0 part

И:

# cat /sys/block/sdc/removable
> 0

Ожидаемый результат
===================

Диск определяется как removable.

Воспроизводимость
=================

Воспроизводится на виртуальных машинах (через SPICE USB):

[sisyphus] ALT Server 11.0 beta20250213 x86_64
udev-257.5-alt3.x86_64
libudev1-257.5-alt3.x86_64
udev-rules-sgutils-1.48-alt2.noarch
udev-rules-hotplug-cpu-1.0-alt1.noarch
kernel-image-6.12-6.12.30-alt2.x86_64

[p11] ALT Server 11.0 beta20250213 x86_64
libudev1-255.18-alt1.x86_64
udev-255.18-alt1.x86_64
udev-rules-hotplug-cpu-1.0-alt1.noarch
udev-rules-sgutils-1.48-alt2.noarch
kernel-image-6.12-6.12.27-alt1.x86_64

И на реальной машине [p11] ALT Workstation 11.0 x86_64.
Comment 1 Alexey Shabalin 2025-05-27 20:38:05 MSK
Мне кажется будет достаточно дописать в конце rules
, ATTR{removable}="1"
Comment 2 Artem Varaksa 2025-05-28 10:52:12 MSK
Попробовал в p11 (ВМ + реальная) и sisyphus (ВМ) со строкой вида:

> ENV{ID_SERIAL_SHORT}=="...", ENV{UDISKS_AUTO}="1", ENV{UDISKS_SYSTEM}="0", ATTR{removable}="1"

К сожалению, не помогает, # lsblk и # cat /sys/block/.../removable всё равно говорят, что не removable.

В отличие от UDISKS_AUTO и UDISKS_SYSTEM, removable не вижу чтобы как-либо отражался в выводе # udevadm info /dev/...:

> P: /devices/pci0000:00/0000:00:08.1/0000:03:00.4/usb3/3-1/3-1:1.0/host2/target2:0:0/2:0:0:0/block/sda
> M: sda
> U: block
> T: disk
> D: b 8:0
> N: sda
> L: 0
> S: disk/by-path/pci-0000:03:00.4-usb-0:1:1.0-scsi-0:0:0:0
> S: disk/by-diskseq/33
> S: disk/by-id/usb-ROG_ESD-S1C_<SERIAL>-0:0
> S: disk/by-path/pci-0000:03:00.4-usbv2-0:1:1.0-scsi-0:0:0:0
> Q: 33
> E: DEVPATH=/devices/pci0000:00/0000:00:08.1/0000:03:00.4/usb3/3-1/3-1:1.0/host2/target2:0:0/2:0:0:0/block/sda
> E: DEVNAME=/dev/sda
> E: DEVTYPE=disk
> E: DISKSEQ=33
> E: MAJOR=8
> E: MINOR=0
> E: SUBSYSTEM=block
> E: USEC_INITIALIZED=1519811695
> E: ID_BUS=usb
> E: ID_MODEL=ESD-S1C
> E: ID_MODEL_ENC=ESD-S1C\x20\x20\x20\x20\x20\x20\x20\x20\x20
> E: ID_MODEL_ID=1932
> E: ID_SERIAL=ROG_ESD-S1C_<SERIAL>-0:0
> E: ID_SERIAL_SHORT=<SERIAL>
> E: ID_VENDOR=ROG
> E: ID_VENDOR_ENC=ROG\x20\x20\x20\x20\x20
> E: ID_VENDOR_ID=0b05
> E: ID_REVISION=0
> E: ID_TYPE=disk
> E: ID_INSTANCE=0:0
> E: ID_USB_MODEL=ESD-S1C
> E: ID_USB_MODEL_ENC=ESD-S1C\x20\x20\x20\x20\x20\x20\x20\x20\x20
> E: ID_USB_MODEL_ID=1932
> E: ID_USB_SERIAL=ROG_ESD-S1C_<SERIAL>-0:0
> E: ID_USB_SERIAL_SHORT=<SERIAL>
> E: ID_USB_VENDOR=ROG
> E: ID_USB_VENDOR_ENC=ROG\x20\x20\x20\x20\x20
> E: ID_USB_VENDOR_ID=0b05
> E: ID_USB_REVISION=0
> E: ID_USB_TYPE=disk
> E: ID_USB_INSTANCE=0:0
> E: ID_USB_INTERFACES=:080650:080662:
> E: ID_USB_INTERFACE_NUM=00
> E: ID_USB_DRIVER=usb-storage
> E: ID_PATH_WITH_USB_REVISION=pci-0000:03:00.4-usbv2-0:1:1.0-scsi-0:0:0:0
> E: ID_PATH=pci-0000:03:00.4-usb-0:1:1.0-scsi-0:0:0:0
> E: ID_PATH_TAG=pci-0000_03_00_4-usb-0_1_1_0-scsi-0_0_0_0
> E: ID_PART_TABLE_UUID=260763ea-456d-844b-ae19-15e7aaceb3ce
> E: ID_PART_TABLE_TYPE=gpt
> E: LVM_SYSTEMD=0
> E: UDISKS_AUTO=1
> E: UDISKS_SYSTEM=0
> E: DEVLINKS=/dev/disk/by-path/pci-0000:03:00.4-usb-0:1:1.0-scsi-0:0:0:0 /dev/disk/by-diskseq/33 > /dev/disk/by-id/usb-ROG_ESD-S1C_<SERIAL>-0:0 /dev/disk/by-path/pci-0000:03:00.4-usbv2-0:1:1.0-scsi-0:0:0:0
> E: TAGS=:systemd:
> E: CURRENT_TAGS=:systemd: