Eu já vi esse comportamento nas distribuições (provavelmente também nos sistemas operacionais) e nas marcas / modelos de unidades de mídia ótica. Aparece qualquer unidade de CD, DVD e / ou Blu-Ray, se for feita uma tentativa de open()
/dev/sr0
enquanto a bandeja estiver aberta, a bandeja será fechada e até terminar de fechar a chamada para open()
irá bloquear. Quando a bandeja termina de fechar, a unidade entra em um estado de "identificação" no qual tentará determinar que tipo de mídia está nela (se há um CD, DvD, Blu-Ray ou qualquer outra coisa nela e, portanto, qual laser deve usar), que normalmente leva alguns segundos, durante os quais qualquer chamada para open()
no dispositivo (incluindo a chamada que fez com que a bandeja seja fechada em primeiro lugar) falhará com um erro sem mídia.
Coloque de outra forma:
A bandeja do CD é aberta e um disco é colocado pelo usuário.
Será executado algum comando que abrirá / dev / sr0 para leitura ou gravação (por exemplo, mount
, dd
, dvdbackup
etc.)
A bandeja de CD se fechará e o comando será bloqueado até que a bandeja seja totalmente fechada.
Minha teoria sobre o que está acontecendo (isso é apenas uma teoria):
Minha primeira pergunta é: por que isso acontece? Por que o Linux não verifica a bandeira de ocupado? O Windows faz (ou pelo menos parece que sim; em algumas versões um ícone de CD aparece ao lado do cursor durante essa fase de identificação). Minha segunda pergunta é, há alguma maneira de contornar isso? Existe alguma maneira de saber, sem ignorar completamente o kernel, se a unidade de DVD está em fase de identificação ou se realmente não há mídia nela?
Tags optical-media