Estoy usando el comando para copiar la imagen del CDROM:
# dd if=/dev/sr0 of=./maverick.iso
Pero es muy lento, alrededor de 350k bytes/seg. Busqué en Google y probé el comando.
# hdparm -vi /dev/sr0
/dev/sr0:
HDIO_DRIVE_CMD(identify) failed: Bad address
IO_support = 1 (32-bit)
readonly = 0 (off)
readahead = 256 (on)
HDIO_GETGEO failed: Inappropriate ioctl for device
Model=DVD-ROM UJDA775, FwRev=DA03, SerialNo=
Config={ Fixed Removeable DTR<=5Mbs DTR>10Mbs nonMagnetic }
RawCHS=0/0/0, TrkSize=0, SectSize=0, ECCbytes=0
BuffType=unknown, BuffSize=unknown, MaxMultSect=0
(maybe): CurCHS=0/0/0, CurSects=0, LBA=yes, LBAsects=0
IORDY=yes, tPIO={min:180,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: sdma0 sdma1 sdma2 mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 *udma2
AdvancedPM=no
Drive conforms to: ATA/ATAPI-5 T13 1321D revision 3: ATA/ATAPI-1,2,3,4,5
* signifies the current active mode
Parece que DMA ya está activado.
Y una prueba del dispositivo da:
# hdparm -t /dev/sr0
/dev/sr0:
Timing buffered disk reads: 2 MB in 6.58 seconds = 311.10 kB/sec
# sudo hdparm -tT /dev/sr0
/dev/sr0:
Timing cached reads: 2 MB in 2.69 seconds = 760.96 kB/sec
Timing buffered disk reads: m 4 MB in 5.19 seconds = 789.09 kB/sec
El dispositivo CD-ROM y el disco deberían estar bien porque puedo copiarlos muy rápido en Windows usando UltraISO
la utilidad.
Entonces supongo que hay algo que no está configurado correctamente en Ubuntu, ¿verdad?
Respuesta1
Estás usando dd incorrectamente.
El tamaño de bloque para dd es de 512 bytes de forma predeterminada, lo cual es aceptable (pero no excelente, hablaremos de eso más adelante) para un disco duro, ya que los sectores del disco duro tienen un tamaño de 512 bytes. Los CD-ROM, sin embargo, tienen un tamaño de sector de entre 2048 y 2352 bytes. El tamaño de bloque predeterminado hace que la unidad realice cuatro o cinco lecturas parciales por sector, lo que la ralentiza enormemente.
Las otras cosas a tener en cuenta son el tiempo de acceso y el búfer de la unidad. Para abreviar la historia, en lugar de leer sector por sector, debería leer fragmentos grandes. No sé cuál es el tamaño del búfer de la unidad, pero 32 megabytes es generalmente un tamaño de bloque decente.
# dd if=/dev/sr0 of=./maverick.iso bs=32M
Respuesta2
Está en UDMA2, por lo que no debería haber nada que configurar. Podría ser más simple que eso: ¿ha intentado usar bs=2M en su comando dd? (Es posible que tenga que probar algunos para encontrar el tamaño óptimo para el CD-ROM; si es demasiado grande, el CD se ralentizará. dd no utiliza E/S superpuestas). Las lecturas más largas deberían ser más rápidas.