Ich verwende den Befehl zum Kopieren des CD-ROM-Images:
# dd if=/dev/sr0 of=./maverick.iso
Aber es ist sehr langsam, bei etwa 350k bytes/sec. Ich habe bei Google gesucht und den Befehl ausprobiert
# 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
Scheint, als wäre DMA bereits aktiviert.
Und ein Gerätetest ergibt:
# 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
Mit dem CD-ROM-Gerät und der CD sollte alles in Ordnung sein, da ich sie mithilfe UltraISO
des Dienstprogramms in Windows sehr schnell kopieren kann.
Ich nehme also an, dass in Ubuntu etwas nicht richtig konfiguriert ist, oder?
Antwort1
Sie verwenden dd falsch.
Die Blockgröße für dd beträgt standardmäßig 512 Bytes, was für eine Festplatte akzeptabel (aber nicht großartig, dazu später mehr) ist, da Festplattensektoren 512 Bytes groß sind. CD-ROMs haben jedoch eine Sektorgröße zwischen 2048 und 2352 Bytes. Die Standardblockgröße führt dazu, dass das Laufwerk vier oder fünf Teillesevorgänge pro Sektor durchführt, was es enorm verlangsamt.
Die anderen Faktoren, die berücksichtigt werden müssen, sind der Zugriffszeitpunkt und der Laufwerkspuffer. Um es kurz zu machen: Anstatt Sektor für Sektor zu lesen, sollten Sie große Blöcke lesen. Ich weiß nicht, wie groß die Puffergröße des Laufwerks ist, aber 32 Megabyte sind im Allgemeinen eine anständige Blockgröße.
# dd if=/dev/sr0 of=./maverick.iso bs=32M
Antwort2
Es läuft auf UDMA2, daher sollte nichts konfiguriert werden müssen. Es könnte einfacher sein: Haben Sie versucht, bs=2M in Ihrem dd-Befehl zu verwenden? (Möglicherweise müssen Sie ein paar ausprobieren, um die optimale Größe für die CD-ROM zu finden. Wenn sie zu groß wird, wird die CD langsamer. dd verwendet keine überlappenden E/A.) Längere Lesevorgänge sollten schneller werden.