Вопрос или проблема
Я не могу монтировать никакой 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
вашего устройства pktcdvd0
– 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
Замечание: Этот драйвер устарел и будет удален из ядра в ближайшем будущем!
.
Ответ или решение
Вопрос о невозможности монтирования 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 интерфейс и освободить ресурсы для обычного использования привода. Согласно выведенной информации и предложенному решению, выполняйте шаги:
-
Проверьте, действительно ли ваш диск уже не используется драйвером Packet Writing. Убедитесь, что система не находится в процессе записи или не ожидает завершения какой-либо операции.
-
Отключите Packet Writing, выполнив следующую команду:
echo 252:0 | sudo tee /sys/class/pktcdvd/remove
Это отключит связанный с ним
pktcdvd0
и высвободит устройство; после чего оно будет доступно для стандартных операций с/dev/sr0
. -
Проверьте доступность устройства:
sudo mount /dev/sr0 /mnt
Если ошибка не проявилась, значит был обновлён доступ к диску.
Отдельно упомяну, что модуль Packet Writing устарел и подлежит удалению в ближайших версиях ядра, поэтому такой подход следует использовать лишь как временную меру. Долгосрочным решением станет обновление подходов к монтированию и ручное управление устройствами записи, где это необходимо.
В заключение, необходимо понимать специфику работы системы и контролировать автоматизацию процессов, таких как автоматическое подключение модулей, поддерживать актуальные версии ядра и вручную управлять необходимыми вам функциями при записи данных на оптический носитель.