Не удается смонтировать CD/DVD в Debian testing (“Can’t open blockdev”), но в Windows 10 это работает.

Вопрос или проблема

Я не могу монтировать ни один CD или DVD в своем приводе. НО у меня есть Windows 10 в Dual Boot, и я могу без проблем читать любой CD/DVD в Windows.

На этом изображении “DVD-RW backup” — это метка DVD-RW.
Сообщение на английском языке: Не удалось монтировать DVD-RW backup (или “Не удается монтировать”, или “Невозможно монтировать” и т.д.).

can’t mount

  • ОС: Debian GNU/Linux trixie/sid
  • Ядро: 6.12.12-amd64 x86_64
  • Устройство: ATAPI iHAS122 W

Ошибки:

$ sudo mount /dev/sr0 /mnt
mount: /mnt: fsconfig system call failed: /dev/sr0: Can't open blockdev.
       dmesg(1) may have more information after failed mount system call.

$ sudo mount /dev/sr0/pktcdvd0 /mnt
mount: /mnt: fsconfig system call failed: /dev/sr0/pktcdvd0: Can't lookup blockdev.
       dmesg(1) may have more information after failed mount system call.

Вот вывод некоторых команд:

$ sudo blkid /dev/sr0
/dev/sr0: UUID="67587414000011bf" LABEL="DVD-RW backup" BLOCK_SIZE="2048" TYPE="udf"

$ lsblk
sr0          11:0    1   2,3G  0 rom  
└─pktcdvd0  252:0    1   2,3G  0 disk

$ lsdvd
libdvdread: DVDOpenFileUDF:UDFFindFile /VIDEO_TS/VIDEO_TS.IFO failed
libdvdread: DVDOpenFileUDF:UDFFindFile /VIDEO_TS/VIDEO_TS.BUP failed
Can't open main ifo!

$ sudo dmesg | grep sr0
[    5.239165] sr 1:0:0:0: [sr0] scsi3-mmc drive: 94x/62x writer dvd-ram cd/rw xa/form2 cdda tray
[    5.297610] sr 1:0:0:0: Attached scsi CD-ROM sr0
[   90.583896] block (null): writer mapped to sr0

$ cdrwtool -i -d /dev/sr0
using device /dev/sr0
256KB internal buffer
setting write speed to 12x

DISC INFO:
    erasable : Yes
    border = 3
    Disc status = 2
    number of first track = 1
    number of sessions = 1
    number of tracks = 1
    status of last track = 1
    uru = 1
    did_v = 0
    dbc_v = 0
    disc type = 0
    disc_id = 0
    lead_in = 00:00:00 (0)
    lead_out = 00:00:00 (0)
    OPC entries = 0

TRACK INFO:

Track 1
    track_number = 1
    session_number = 1
    damage = 0
    copy = 0
    track_mode = 4
    Rt = 0
    blank = 0
    packet = 1
    fp = 1
    data_mode = 1
    lra_v = 0
    nwa_v = 0
    track_start = 0
    next_writable = 0
    last_recorded = 0
    free_blocks = 0
    packet_size = 16
    track_size = 1227456 (2454912KB)
can't unlock door

Вот вывод от udevram:

$ udevadm info -n /dev/sr0                                        
P: /devices/pci0000:00/0000:00:02.1/0000:04:00.1/ata2/host1/target1:0:0/1:0:0:0/block/sr0
M: sr0
R: 0
J: b11:0
U: block
T: disk
D: b 11:0
N: sr0
L: -100
S: disk/by-label/DVD-RW\x20backup
S: disk/by-uuid/67587414000011bf
S: disk/by-id/ata-ATAPI_iHAS122_W_3522540_207325501228
S: disk/by-path/pci-0000:04:00.1-ata-2.0
S: disk/by-path/pci-0000:04:00.1-ata-2
S: disk/by-diskseq/8
S: cdrom
Q: 8
E: DEVPATH=/devices/pci0000:00/0000:00:02.1/0000:04:00.1/ata2/host1/target1:0:0/1:0:0:0/block/sr0
E: DEVNAME=/dev/sr0
E: DEVTYPE=disk
E: DISKSEQ=8
E: MAJOR=11
E: MINOR=0
E: SUBSYSTEM=block
E: USEC_INITIALIZED=5297510
E: ID_CDROM=1
E: SYSTEMD_MOUNT_DEVICE_BOUND=1
E: ID_CDROM_CD_R=1
E: ID_CDROM_CD_RW=1
E: ID_CDROM_DVD=1
P: /devices/pci0000:00/0000:00:02.1/0000:04:00.1/ata2/host1/target1:0:0/1:0:0:0/block/sr0
M: sr0
R: 0
J: b11:0
U: block
T: disk
D: b 11:0
N: sr0
L: -100
S: disk/by-label/DVD-RW\x20backup
S: disk/by-uuid/67587414000011bf
S: disk/by-id/ata-ATAPI_iHAS122_W_3522540_207325501228
S: disk/by-path/pci-0000:04:00.1-ata-2.0
S: disk/by-path/pci-0000:04:00.1-ata-2
S: disk/by-diskseq/8
S: cdrom
Q: 8
E: DEVPATH=/devices/pci0000:00/0000:00:02.1/0000:04:00.1/ata2/host1/target1:0:0/1:0:0:0/block/sr0
E: DEVNAME=/dev/sr0
E: DEVTYPE=disk
E: DISKSEQ=8
E: MAJOR=11
E: MINOR=0
E: SUBSYSTEM=block
E: USEC_INITIALIZED=5297510
E: ID_CDROM=1
E: SYSTEMD_MOUNT_DEVICE_BOUND=1
E: ID_CDROM_CD_R=1
E: ID_CDROM_CD_RW=1
E: ID_CDROM_DVD=1
E: ID_CDROM_DVD_R=1
E: ID_CDROM_DVD_RAM=1
E: ID_CDROM_MRW=1
E: ID_CDROM_MRW_W=1
E: ID_CDROM_DVD_PLUS_R_DL=1
E: ID_CDROM_DVD_PLUS_R=1
E: ID_CDROM_DVD_PLUS_RW=1
E: ID_CDROM_DVD_R_DL_JR=1
E: ID_CDROM_DVD_R_DL_SEQ=1
E: ID_CDROM_DVD_RW_SEQ=1
E: ID_CDROM_DVD_RW_RO=1
E: ID_CDROM_CD=1
E: ID_CDROM_RW_REMOVABLE=1
E: ID_CDROM_DVD_RW=1
E: ID_CDROM_DVD_R_DL=1
E: ID_CDROM_MEDIA=1
E: ID_CDROM_MEDIA_DVD_RW_RO=1
E: ID_CDROM_MEDIA_DVD_RW=1
E: ID_CDROM_MEDIA_STATE=complete
E: ID_CDROM_MEDIA_SESSION_COUNT=1
E: ID_CDROM_MEDIA_TRACK_COUNT=1
E: ID_CDROM_MEDIA_TRACK_COUNT_DATA=1
E: ID_ATA=1
E: ID_TYPE=cd
E: ID_BUS=ata
E: ID_MODEL=ATAPI_iHAS122_W
E: ID_MODEL_ENC=ATAPI\x20\x20\x20iHAS122\x20\x20\x20W\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20
E: ID_REVISION=PL06
E: ID_SERIAL=ATAPI_iHAS122_W_3522540_207325501228
E: ID_SERIAL_SHORT=3522540_207325501228
E: ID_ATA_FEATURE_SET_PM=1
E: ID_ATA_FEATURE_SET_PM_ENABLED=1
E: ID_ATA_SATA=1
E: ID_ATA_SATA_SIGNAL_RATE_GEN1=1
E: ID_ATA_PERIPHERAL_DEVICE_TYPE=5
E: ID_PATH=pci-0000:04:00.1-ata-2.0
E: ID_PATH_TAG=pci-0000_04_00_1-ata-2_0
E: ID_PATH_ATA_COMPAT=pci-0000:04:00.1-ata-2
E: ID_FS_VOLUME_ID=DVD-RW\x20backup
E: ID_FS_UUID=67587414000011bf
E: ID_FS_UUID_ENC=67587414000011bf
E: ID_FS_VOLUME_SET_ID=67587414000011BF
E: ID_FS_APPLICATION_ID=genisoimage
E: ID_FS_LABEL=DVD-RW_backup
E: ID_FS_LABEL_ENC=DVD-RW\x20backup
E: ID_FS_LOGICAL_VOLUME_ID=DVD-RW\x20backup
E: ID_FS_VERSION=1.02
E: ID_FS_BLOCKSIZE=2048
E: ID_FS_TYPE=udf
E: ID_FS_USAGE=filesystem
E: ID_FOR_SEAT=block-pci-0000_04_00_1-ata-2_0
E: DEVLINKS=/dev/disk/by-label/DVD-RW\x20backup /dev/disk/by-uuid/67587414000011bf /dev/disk/by-id/ata-ATAPI_iHAS122_W_3522540_207325501228 /dev/disk/by-path/pci-0000:04:00.1-ata-2.0 /dev/disk/by-path/pci-0000:>
E: TAGS=:systemd:uaccess:seat:
E: CURRENT_TAGS=:systemd:uaccess:seat:

РЕДАКЦИЯ от 15 февраля 2025 года

Проблема, похоже, связана с RW дисками. Недавно все начало работать снова: я смог прочитать коммерческий CD с курса немецкого языка, фильм, записанный на DVD-R, аудио CD, купленный в магазине, и так далее. Но когда я вставляю CD или DVD-RW, появляется страшный pktcdvd0.

Я провел тест, я записал ISO на DVD-RW с помощью growisofs. Это сработало, запись прошла без проблем. Однако сразу после записи диск не выбрасывался автоматически, и не удалось прочитать записанный DVD, показывая ту же ошибку, что и раньше. Я не мог прочитать никакие другие носители: аудио CD, курс немецкого и т.д. Команда eject /dev/sr0 не сработала, но кнопка выброса привода всегда работает. Мне пришлось перезагрузить ПК, и тогда я смог прочитать другие носители.

$ sudo cat /sys/kernel/debug/pktcdvd/pktcdvd0/info   
Writer pktcdvd0 mapped to sr0:

Settings:
    packet size:        0kB
    write type:     Packet
    packet type:        Variable
    link loss:      0
    track mode:     0
    block mode:     Unknown

Statistics:
    packets started:    0
    packets ended:      0
    written:        0kB
    read gather:        0kB
    read:           0kB

Misc:
    reference count:    2
    flags:          0x0
    read speed:     0kB/s
    write speed:        0kB/s
    start offset:       0
    mode page offset:   0

Queue state:
    bios queued:        0
    bios pending:       0
    current sector:     0x0
    state:          i:0 ow:0 rw:0 ww:0 rec:0 fin:0
    write congestion marks: off=9000 on=10000

Также, когда вставляется CD/DVD-RW, pktcdvd0 никогда не исчезает (даже после изъятия носителя). Мне нужно перезагрузить ПК, если я хочу снова использовать CD-привод.

В этом примере DVD-RW был уже извлечен:

$ lsblk
sr0          11:0    1   2,3G  0 rom  
└─pktcdvd0  252:0    1   2,3G  0 disk

$ sudo pktsetup -s      
 0 : 252:0 -> 11:0

$ sudo pktsetup -d 252:0                         
pktsetup: Error: Can't tear down packet device '252:0': Device or resource busy

РЕДАКЦИЯ от 16 февраля 2025 года

Обнаружена та же проблема:

У вас где-нибудь смонтирован /dev/pktcdvd/pktcdvd0? Похоже, в приводе есть перезаписываемый DVD-RW носитель, и кто-то или что-то (автоматически?) смонтировал его с использованием интерфейса записи пакетами, который захватил базовое устройство CD/DVD /dev/sr0 и установил на него эксклюзивную блокировку, пока механизм записи пакетами активен. Это также блокирует механизм выброса/извлечения дисков с привода, поскольку вы можете потерять данные, если случайно извлечете диск во время записи системы на него.

Насколько я понимаю, интерфейс записи пакетами — это вроде дополнительной опциональной надстройки, которую можно добавить на обычное CD/DVD устройство, если вам нужно добавлять файлы на файловую систему UDF на CD-RW или DVD-RW носителя.

Пока интерфейс записи пакетами активен, вы должны использовать устройство /dev/pktcdvd/pktcdvd0 для монтирования диска вместо обычного /dev/sr0.

По вашему выводу lsblk я вижу, что устройство pktcdvd0 имеет номера major:minor 252:0, а sr0 имеет 11:0.

Если /dev/pktcdvd/pktcdvd0 в данный момент не смонтирован и привод DVD не активен (например, “закрытие” диска после размонтирования, так как до размонтирования что-то было записано), вы можете отключить уровень записи пакетами и освободить DVD-привод для обычного использования с помощью:

echo 252:0 | sudo tee /sys/class/pktcdvd/remove

(или просто echo 252:0 > /sys/class/pktcdvd/remove, если вы уже работаете под root)

После отключения уровня записи пакетами вы должны иметь возможность извлечь диск с помощью eject /dev/sr0 или с помощью физической кнопки выброса на самом приводе.

Если хотите узнать больше, смотрите документацию исходного кода ядра: https://mjmwired.net/kernel/Documentation/cdrom/packet-writing.rst и https://mjmwired.net/kernel/Documentation/ABI/testing/sysfs-class-pktcdvd

Когда был введен USB 2.0 и USB-подключаемые устройства хранения данных стали повсеместными, думаю, система записи пакетами на CD/DVD использовалась очень ограниченно и постепенно забыта. Думаю, она довольно долго находится на минимальном обслуживании, а интерфейс конфигурации ядра довольно долго содержал это замечание о ней:

CONFIG_CDROM_PKTCDVD

Примечание: Этот драйвер устарел и будет удален из ядра в ближайшем будущем!

Если подсистема pktcdvd собрана как модуль ядра, вы можете отключить ее, добавив файл /etc/modprobe.d/disable-pktcdvd.conf со следующим содержимым:

install pktcdvd /bin/false

и затем выгружая модуль, если он загружен, с помощью sudo modprobe -r pktcdvd. Обратите внимание, что если модуль в настоящее время используется, он не выгрузится, поэтому если он находится в “зависшем” состоянии, возможно, потребуется перезагрузка, чтобы избавиться от него.

.

Ответ или решение

Прежде всего, проблема описанная в вашем вопросе, заключается в том, что не удается монтировать CD/DVD носители на системе Debian testing с кодовым именем "trixie/sid". При этом в Windows 10 такая проблема отсутствует, что свидетельствует о потенциальной несовместимости или конфликте настроек в вашей Linux среде. Попробуем разобраться в проблеме более детально, рассматривая теорию, примеры и пути решения.

Теория:

Ваша проблема связана с попытками монтировать CD/DVD носители из-под драйвера pktcdvd, который используется для пакетной записи на переписываемые носители, такие как CD-RW и DVD-RW. Это, по сути, дополнительный слой, накладываемый на обычное устройство CD/DVD. Поскольку интерфейс пакетной записи берет эксклюзивный контроль над устройством /dev/sr0, он блокирует возможность использовать его стандартными способами до тех пор, пока это подключение активно.

Проблемы могут возникать, если pktcdvd активно монтирует носитель, и какой-либо процесс сохраняет контроль над устройством, что может также заблокировать физический механизм извлечения. Из предоставленных данных становится видно, что монтирование идет через pktcdvd0, которое связано с sr0.

Примеры:

  1. Команды и выводы показателей:

    Исходные команды показывают, что система распознает устройство и дает UUID и Label для диска, но затем выдает ошибки, такие как "Can’t open blockdev" или "Can’t lookup blockdev", что указывает на блокировку устройства.

    $ sudo mount /dev/sr0 /mnt
    mount: /mnt: fsconfig system call failed: /dev/sr0: Can't open blockdev.
  2. Вывод команд lsblk и pktsetup:

    Из вывода lsblk видно, что вашему устройству sr0 соответствует подпроцесс pktcdvd0, который перекрывает стандартный доступ:

    sr0          11:0    1   2,3G  0 rom  
    └─pktcdvd0  252:0    1   2,3G  0 disk

    При попытке удалить pktsetup, система выдает ошибку, что устройство занято:

    sudo pktsetup -d 252:0
    pktsetup: Error: Can't tear down packet device '252:0': Device or resource busy
  3. Дополнительные сообщения от dmesg и pktcdvd интерфейсов:

    Логи dmesg показывают, что устройство распознается в системе, но оно остается заблокированным. Появляется необходимость управлять устройством через пакетную запись.

Практическое применение:

  1. Деактивация интерфейса пакетной записи:

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

    echo 252:0 | sudo tee /sys/class/pktcdvd/remove

    Это позволит освободить pktcdvd0, и затем вы сможете извлечь диск стандартной командой eject /dev/sr0, или просто воспользоваться кнопкой извлечения на устройстве.

  2. Долгосрочное решение проблемы:

    Если вы не планируете использовать пакетную запись, вы можете заблокировать автоматическую загрузку модуля pktcdvd, создавая конфигурационный файл:

    echo "install pktcdvd /bin/false" | sudo tee /etc/modprobe.d/disable-pktcdvd.conf

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

  3. Рассмотрение будущих апгрейдов и обновлений:

    В долгосрочной перспективе стоит учитывать, что интерфейс pktcdvd помечен как устаревший, и возможно его полное удаление из будущих релизов ядра Linux. Учитывайте это при планировании обновлений вашей системы.

Применяя эти решения, вы сможете более эффективно управлять своими CD/DVD носителями в Debian, избегая конфликтов и недоступности устройств. Если после выполнения предложенных шагов проблема сохраняется, рекомендуется проверить целостность и корректность работы модуля ядра и при необходимости обратиться за консультацией к специалистам в области Linux систем.

Оцените материал
Добавить комментарий

Капча загружается...