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

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

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

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

не удается смонтировать

  • ОС: 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:

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

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

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

Судя по вашему выводу lsblk, номера устройств major:minor вашего устройства pktcdvd0252:0, а sr011: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

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

.

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

Вопрос о невозможности монтирования CD/DVD на Debian testing связано с возникновением ошибки "Can’t open blockdev". Данная проблема не наблюдается при работе с Windows 10, что усложняет анализ причины. Изучим возможные теоретические и практические аспекты этой проблемы.

Теория

Прежде всего, важно осознать, что операционные системы Windows и Linux имеют разные подходы к работе с устройствами ввода-вывода, включая CD/DVD-приводы. В Linux, управление устройствами осуществляется через файловую систему /dev, где каждый физический или виртуальный диск имеет своё представление. В вашем случае, /dev/sr0 представляет собой SCSI CD-ROM, который, как указывает вывод udevadm info, недавно был инициализирован.

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

Вывод lsblk показывает наличие устройства /dev/sr0, а также его отражение как /dev/pktcdvd0, что свидетельствует о возможном задействовании Packet Writing интерфейса. На это также указывает система ошибкок fsconfig system call failed, где диск находится под управлением другого модуля и заблокирован для обычных операций.

Пример

Рассмотрим пример сценария, который может быть причиной проблемы. Вы загрузили Debian, вставили записываемый DVD-RW диск, и ангелом хранителем оказалась автоматическая система, которая решила, что вы хотите использовать функцию записи, инкрементного дозаписывания, и активировала модуль Packet Writing. Поэтому, когда вы пытаетесь вручную смонтировать диск через mount, система отвечает отказом из-за невозможности открыть или найти блоковое устройство, так как оно уже заблокировано и используется Packet Writing.

Применение

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

  1. Проверьте, действительно ли ваш диск уже не используется драйвером Packet Writing. Убедитесь, что система не находится в процессе записи или не ожидает завершения какой-либо операции.

  2. Отключите Packet Writing, выполнив следующую команду:

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

    Это отключит связанный с ним pktcdvd0 и высвободит устройство; после чего оно будет доступно для стандартных операций с /dev/sr0.

  3. Проверьте доступность устройства:

    sudo mount /dev/sr0 /mnt

    Если ошибка не проявилась, значит был обновлён доступ к диску.

Отдельно упомяну, что модуль Packet Writing устарел и подлежит удалению в ближайших версиях ядра, поэтому такой подход следует использовать лишь как временную меру. Долгосрочным решением станет обновление подходов к монтированию и ручное управление устройствами записи, где это необходимо.

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

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

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