Debian 8.x에서 CDROM을 ISO로 복사하는 방법은 무엇입니까?

Debian 8.x에서 CDROM을 ISO로 복사하는 방법은 무엇입니까?

복사해야 해코도닉스CD에서 ISO로의 의료 데이터. CD 드라이브에 CDROM을 삽입합니다.TSSTcorp DVD+-RW TS-H653H내 거델 프리시전 T1600. CD를 데비안에 넣으면 감지되어 설치됩니다. 복제에서 분화 dd시스템은 체계적으로 실패하지만 readom성공하는 유일한 분화 도구입니다. 그러나 cp그것도 실패했으므로 명령줄에서 CD를 ISO로 복사하는 더 나은 diff 도구가 있어야 합니다. 관련 LinuxJournal 기사여기. 작업 과정

  1. 광학 드라이브 제거

    root@masi:/home/masi# unmount /dev/sr0
    
  2. 복사 명령을 의사코드로 실행

    readom... / cp... / dd... / ...
    

워크플로는 성공했지만 readom일부 오류가 있음

Atoponce에 대한 명령 제안readom

# http://www.commandlinefu.com/commands/view/1396/create-a-cddvd-iso-image-from-disk.
readom dev=/dev/scd0 f=/path/to/image.iso
  • 문서

    Create a CD/DVD ISO image from disk.
    

    많은 사람들이 "dd"를 사용하여 CD/DVD iso 이미지를 만드는 것을 좋아합니다. 이것은 좋지 않습니다. 아주 나쁜. 그 이유는 "dd"에 오류 검사 기능이 내장되어 있지 않기 때문입니다. 따라서 모든 비트를 얻고 있는지 알 수 없습니다. 따라서 작업에 적합한 도구가 아닙니다. 대신 wodim 패키지의 "reaom"(광 미디어 읽기)을 사용해야 합니다. 오류 검사 기능이 내장되어 있습니다. 마찬가지로 새로 생성된 ISO를 굽고 싶다면 "dd"를 멀리하고 다음을 사용하세요: wodim -v -eject /path/to/image.iso

작업 과정

root@masi:/home/masi# umount /dev/sr0

root@masi:/home/masi# readom dev=/dev/sr0 f=/home/masi/Desktop/image.iso
Read  speed:  8467 kB/s (CD  48x, DVD  6x).
Write speed:  8467 kB/s (CD  48x, DVD  6x).
Capacity: 35829 Blocks = 71658 kBytes = 69 MBytes = 73 prMB
Sectorsize: 2048 Bytes
Copy from SCSI (3,0,0) disk to file '/home/masi/Desktop/image.iso'
end:     35829
Errno: 5 (Input/output error), read_g1 scsi sendcmd: no error
CDB:  28 00 00 00 8B C0 00 00 35 00
status: 0x2 (CHECK CONDITION)
Sense Bytes: 70 00 03 00 00 00 00 0A 00 00 00 00 11 00 00 00
Sense Key: 0x3 Medium Error, Segment 0
Sense Code: 0x11 Qual 0x00 (unrecovered read error) Fru 0x0
Sense flags: Blk 0 (not valid) 
cmd finished after 7.038s timeout 40s
readom: Input/output error. Cannot read source disk
readom: Retrying from sector 35776.
.....................................................~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~
readom: Input/output error. Error on sector 35828 not corrected. Total of 1 errors.

Time total: 1259.495sec
Read 71552.00 kB at 56.8 kB/sec.
Max corected retry count was 0 (limited to 128).
The following 1 sector(s) could not be read correctly:
35828

출력: CDROM이 .iso에 올바르게 복사된 것으로 보이지만 오류가 발생한 이유는 확실하지 않습니다. 테스트된 CD: 3.

실패한 cp 워크플로

root@masi:/home/masi# unmount /media/

root@masi:/home/masi# cp /dev/sr0 /home/masi/Desktop/image.iso
cp: error reading ‘/dev/sr0’: Input/output error
cp: failed to extend ‘/home/masi/Desktop/image.iso’: Input/output error

시도가 실패했으므로 dddd를 사용하여 작업을 수행하는 것은 권장되지 않습니다.

dd if=/dev/cdrom of=/home/masi/Desktop/image.isoDebian에서 명령을 사용하면 다음 메시지가 나타납니다.

dd: error reading '/dev/cdrom': Input/output error
143312+0 records in
143312+0 records out
73375744 bytes (73 MB) copied, 37.6356 s, 1.9 MB/s

dd를 사용하면 실패하는 기타 복사 명령

  1. 그리고 bs그리고conv

    # http://crunchbang.org/forums/viewtopic.php?id=23659
    dd if=/dev/scd0 of=whatever.iso bs=2048 conv=sync,notrunc
    
  2. conv오직

    dd if=/dev/scd0 of=whatever.iso conv=sync,notrunc
    

jc___ 분석 제안을 성공적으로 테스트했습니다.

root@masi:/home/masi# mkdir /media/cdMP

root@masi:/home/masi# mount /dev/cdrom /media/cdMP/
mount: /dev/sr0 is write-protected, mounting read-only

root@masi:/home/masi# umount /dev/cdrom

root@masi:/home/masi# mount /dev/cdrom /media/cdMP/
mount: /dev/sr0 is write-protected, mounting read-only

root@masi:/home/masi# readom dev=/dev/sr0 -scanbus
Error trying to open /dev/sr0 exclusively (Device or resource busy)... retrying in 1 second.
Error trying to open /dev/sr0 exclusively (Device or resource busy)... retrying in 1 second.

따라서 루트가 아닌 곳에서 작업하고, CDROM을 사용하게 만드는 것이 없는지 확인하고, CDROM의 파일 브라우저를 명시적으로 활성화하십시오.

masi@masi:~$ readom dev=/dev/sr0 -scanbus
scsibus3:
    3,0,0   300) 'TSSTcorp' 'DVD+-RW TS-H653H' 'D700' Removable CD-ROM
    3,1,0   301) *
    3,2,0   302) *
    3,3,0   303) *
    3,4,0   304) *
    3,5,0   305) *
    3,6,0   306) *
    3,7,0   307) *

ThomasSchmitt의 제안 테스트하기

제거 및 xorriso로 실패했습니다.

masi@masi:~$ umount /dev/sr0 

masi@masi:~$ xorriso -outdev /dev/sr0 -check_media use=outdev sector_map="$HOME"/cdrom_sector_map data_to="$HOME"/cdrom_copy.iso abort_file="$HOME"/cdrom_copy_abort --
xorriso 1.3.2 : RockRidge filesystem manipulator, libburnia project.

xorriso : NOTE : Disc status unsuitable for writing
Drive current: -outdev '/dev/sr0'
Media current: CD-R
Media status : is written , is closed
Media summary: 1 session, 35829 data blocks, 70.0m data,     0 free
xorriso : UPDATE : 32 blocks read in 7 seconds , 0.1xC
xorriso : UPDATE : 352 blocks read in 9 seconds , 2.8xC
xorriso : UPDATE : 1216 blocks read in 10 seconds , 11.5xC
xorriso : UPDATE : 2784 blocks read in 11 seconds , 20.7xC
xorriso : UPDATE : 4416 blocks read in 12 seconds , 21.4xC
xorriso : UPDATE : 6048 blocks read in 13 seconds , 21.6xC
xorriso : UPDATE : 7712 blocks read in 14 seconds , 21.9xC
xorriso : UPDATE : 9376 blocks read in 15 seconds , 22.1xC
xorriso : UPDATE : 11072 blocks read in 16 seconds , 22.3xC
xorriso : UPDATE : 12768 blocks read in 17 seconds , 22.5xC
xorriso : UPDATE : 14496 blocks read in 18 seconds , 22.7xC
xorriso : UPDATE : 16224 blocks read in 19 seconds , 22.9xC
xorriso : UPDATE : 17984 blocks read in 20 seconds , 23.1xC
xorriso : UPDATE : 19744 blocks read in 21 seconds , 23.3xC
xorriso : UPDATE : 21536 blocks read in 22 seconds , 23.5xC
xorriso : UPDATE : 23328 blocks read in 23 seconds , 23.7xC
xorriso : UPDATE : 25152 blocks read in 24 seconds , 23.9xC
xorriso : UPDATE : 26976 blocks read in 25 seconds , 24.1xC
xorriso : UPDATE : 28832 blocks read in 26 seconds , 24.3xC
xorriso : UPDATE : 30688 blocks read in 27 seconds , 24.5xC
xorriso : UPDATE : 32576 blocks read in 28 seconds , 24.8xC
xorriso : UPDATE : 34464 blocks read in 29 seconds , 25.0xC
libburn : SORRY : SCSI error on read_10(35828,1): [3 11 00] Medium error. Unrecovered read error.
xorriso : UPDATE : 35829 blocks read in 37 seconds , 2.4xC
xorriso : UPDATE : 35829 blocks read in 37 seconds = 13.0xC
Media checks :        lba ,       size , quality
Media region :          0 ,      35828 , + good
Media region :      35828 ,          1 , - unreadable
xorriso : NOTE : Tolerated problem event of severity 'SORRY'
xorriso : NOTE : -return_with SORRY 32 triggered by problem severity SORRY

출력 품질 테스트

masi@masi:~$ ls /home/masi/
cdrom_copy.iso    Desktop    Downloads  Pictures  Templates  WolframWorkspaces
cdrom_sector_map  Documents  Music      Public    Videos

masi@masi:~$ su

root@masi:/home/masi# mkdir /mnt/iso

root@masi:/home/masi# mount -o loop /home/masi/cdrom_copy.iso /mnt/iso
mount: /dev/loop0 is write-protected, mounting read-only
root@masi:/home/masi# exit
exit

masi@masi:~$ tar cf - /mnt/iso/ | wc
tar: Removing leading `/' from member names
 303452  886038 72867840

masi@masi:~$ tar cf - /dev/sr0 | wc
tar: Removing leading `/' from member names
      0       3   10240

 masi@masi:~$ umount /dev/sr0 

 masi@masi:~$ tar cf - /dev/sr0 | wc
 tar: Removing leading `/' from member names
       0       3   10240

복사된 ISO 파일에 오류가 있는 것으로 나타나므로 CD의 전체 복사본이어야 합니다. 두 파일 트리를 모두 살펴보고 이를 결정합니다.

masi@masi:~$ su

root@masi:/home/masi# mkdir /mnt/orig_cd

root@masi:/home/masi# mount /dev/sr0 /mnt/orig_cd
mount: /dev/sr0 is write-protected, mounting read-only

root@masi:/home/masi# mount -o loop /home/masi/Desktop/image.iso /mnt/iso
mount: /dev/loop0 is write-protected, mounting read-only

root@masi:/home/masi# diff -q -r /mnt/orig_cd/ /mnt/iso/ | less

출력: 출력에는 정확한 동등성을 나타내는 줄이 없습니다 less. 또한 완전히 다른 것으로 테스트했으므로 두 경우 모두 출력이 예상과 동일합니다.

시스템 특징

  • dmesg | grep cd반품 중이에요

    cdrom: Uniform CD-ROM driver Revision: 3.20
    Volume set (in), Read cd: be 00 00 00 8b f3 00 00 02 00 00 00 
    
  • lsscsi -s

     cd/dvd TSSTcorp DVD+-RW TS-H653H D700 /dev/sr0 - 
    

운영 체제: Debian 8.5
Linux 커널: 3.16.0-4-amd64Debin 8.5의 기본 커널
하드웨어: 고객 Dell PC 2011(Dell Precision T1600);1CY515J
CD 드라이브: Dell PC용 기본 드라이브 -TSSTcorp DVD+-RW TS-H653H
테스트 CD: 완전한 빈
데비안 CD 문서:디스크 이미지
차이점: CD 드라이브 드라이버 문제
관련 항목:readom과 dd가 서로 다른 ISO 이미지를 생성 중입니다.,명령줄에서 CD를 ISO로 보관,"dd"는 CD-ROM과 그 효과를 읽습니다. (Re: 굽기를 확인하는 방법은 무엇입니까?),CD를 하드 디스크에 복사하는 dd 명령 - 입력/출력 오류이러한 I/O 루프 중 일부는...

답변1

저는 개발자 libburn이고 여기에 언급된 동일한 시스템을 1년 동안 사용해 왔습니다. 커널 3.16에는 2.6에서 일부 CD 회귀가 있지만 데이터 복사 사용 사례는 제대로 작동합니다.

여기서는 비트 부패(유지되지 않음), 사용자 오류(잘못된 장치 파일, 마운트된 미디어에서 읽기) 및 쓰기 유형 Track-At-Once로 작성된 CD 미디어에 대한 "미리 읽기 오류"(I/O 오류)를 보고 싶습니다 readom. ). 읽기 어려운 미디어로 인해 I/O 오류가 발생할 수도 있습니다.

상세히:

/dev/scd0바닐라 데비안 8에서는 사용할 수 없습니다. , , ... /dev/sr0와 같은 심볼릭 링크 만 가능하므로 모든 실패를 쉽게 설명할 수 있습니다. 그렇지 않은 경우 해당 주소만 표시되므로 제안 된 실행은 헛된 것입니다 ./dev/cdromdev/dvdscd0wodim -scanbus/dev/scdXwodim

readom문서는 일반적으로 readcd에서 복사되므로 cdrecord 및 readcd 작성자의 고유한 견해를 반영합니다. 그래도 확실히 작동해야 합니다.

데이터 CD, DVD 또는 BD 미디어에서 복사하는 경우 dd 및 cp가 작동합니다. 여기서는 dd 옵션이 거의 사용되지 않습니다 conv=sync,notrunc. conv=sync데이터 소스가 읽기 작업당 bs 바이트 미만을 전달하는 경우 0을 주입하기 때문에 일부 데이터 소스에서는 정말 위험합니다. (이것은 확실히 CD에서는 발생하지 않습니다 bs=2048.)

"Input/output error"이는 프로그램 복사로 인해 발생하는 것이 아니라 커널에서 해당 프로그램으로 보내는 메시지로 인해 발생합니다. 이는 일반적으로 드라이브의 잘못된 표시로 인해 발생합니다.

이 특별한 경우에는 전형적인 "CD 미리 읽기 오류"로 판명되었습니다. 일부 드라이브에서는 페이로드 데이터의 일부로 한두 개의 일회성 트랙 소진 블록을 보고하기 때문에 CD(DVD 또는 BD 아님)의 마지막 블록 한두 개를 읽지 못할 수 있지만, 이는 사실이 아닙니다.

대부분의 경우 dd커널 cp3.16에서는 I/O 오류로 인해 중단되기 전에 모든 페이로드 청크가 전달됩니다. 오래된 커널이나 불행한 상황의 경우 mkisofsISO를 생성할 때 전통적으로 300kB의 패딩이 추가되었습니다. 이 300KB 중 일부가 커널에서 제공되지 않으면 ISO의 파일 내용은 손상되지 않습니다.

CD의 마지막 두 블록 이전에 I/O 오류가 발생하는 경우 읽기 어려운 미디어가 원인일 가능성이 높습니다. 이 경우 dmesg 출력이나 /var/log/messages 유사한 보고서를 살펴보는 것이 좋습니다 .

Aug 29 15:51:12 NN kernel: [9852911.947547] sr 2:0:0:0: [sr0] Unhandled sense code
Aug 29 15:51:12 NN kernel: [9852911.947549] sr 2:0:0:0: [sr0]
Aug 29 15:51:12 NN kernel: [9852911.947550] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
Aug 29 15:51:12 NN kernel: [9852911.947551] sr 2:0:0:0: [sr0]
Aug 29 15:51:12 NN kernel: [9852911.947552] Sense Key : Medium Error [current]
Aug 29 15:51:12 NN kernel: [9852911.947554] Info fld=0x710
Aug 29 15:51:12 NN kernel: [9852911.947554] sr 2:0:0:0: [sr0]
Aug 29 15:51:12 NN kernel: [9852911.947555] Add. Sense: Unrecovered read error
Aug 29 15:51:12 NN kernel: [9852911.947556] sr 2:0:0:0: [sr0] CDB:
Aug 29 15:51:12 NN kernel: [9852911.947557] Read(10): 28 00 00 00 06 f8 00 00 40 00

이는 전형적인 보통 오류입니다. 소프트웨어에는 문제가 없습니다. 처음에는 드라이브 문제도 아닙니다.

"(Device or resource busy)"open(2)Linux 장치에 대해 이식 불가능한 역할 장치 파일을 열려고 하면 오류가 발생합니다 . O_EXCL바라보다여기open()CD 레코더 장치 파일의 특성을 이해합니다 .

mount(8)이 플래그를 사용하여 장치를 엽니다. 올바르게 작동하는 굽기 프로그램은 마운트되거나 구운 드라이브를 사용하려고 할 때 학습하기 위해 이 플래그를 사용해야 합니다.

readom진행 중인 굽기 실행이 중단되지 않도록 하려면 이 기능을 사용하십시오.

따라서 readom프로그램을 굽거나 사용하려면 먼저 미디어를 마운트 해제해야 합니다. dd그리고 복사하기 전에 반드시 제거할 필요는 없습니다 cp.

libburn 기반 데이터 읽기에 대한 질문에 대한 답변:

xorriso의 dd_rescue-ish 명령을 사용해 볼 수 있습니다.

xorriso -outdev /dev/sr0 -check_media use=outdev sector_map="$HOME"/cdrom_sector_map data_to="$HOME"/cdrom_copy.iso abort_file="$HOME"/cdrom_copy_abort --

복사본은 파일로 표시되어야 합니다 ~/cdrom_copy.iso. 읽기 오류가 보고되고 다음 블록을 복사하려고 시도합니다. 이 파일은 ~/cdrom_sector_map실패한 읽기와 성공한 읽기의 패턴을 기록합니다. 또 다른 읽기 실행은 이를 로드한 다음 성공적으로 복사되지 않은 블록만 시도합니다.

성공적인 실행은 다음과 유사한 메시지로 끝나야 합니다.

Media checks :        lba ,       size , quality
Media region :          0 ,     359062 , + good

불량 블록이 남아 있는 실행에는 품질 열에 "-" 문자가 있는 "미디어 영역" 행이 있습니다. "+"는 성공적으로 읽힌 블록 사이의 간격을 나타냅니다. "0"은 아직 시도되지 않은 블록을 나타냅니다. (트랙 사이에 이런 식으로 남아 있을 수 있습니다. CD-ROM에는 트랙이 하나만 있어야 합니다.)

블록이 부족한 CD Track-At-Once의 품질은 "-"입니다. CD의 마지막 두 블록 중 하나에만 이런 일이 발생하면 모든 페이로드 블록이 에 복사되었을 가능성이 높습니다 ~/cdrom_copy.iso.

이 완고한 프로그램의 실행을 중지하려면 다른 셸에서 수행하는 것이 가장 좋습니다.

touch "$HOME"/cdrom_copy_abort

프로세스를 종료하면 섹터 맵이 기록되지 않으며 복사된 블록은 다음 실행 시 다시 읽혀집니다.

완전히 성공했거나 마지막 한두 블록만 누락된 후에는 복사된 ISO에 누락된 블록 주소를 가리키는 파일이 없는지 테스트해야 합니다.

수퍼유저로서(또는 를 통해 sudo):

mkdir /mnt/iso
mount -o loop ...your.users.home.../cdrom_copy.iso /mnt/iso

이 댓글은 보고되어야 하지만 더 이상의 오류 메시지는 없습니다.

mount: /dev/loop0 is write-protected, mounting read-only

tar일반 사용자로서 모든 파일을 읽고 출력을 사용해 보겠습니다 wc.

tar cf - /mnt/iso | wc

I/O 오류는 보고되지 않으며 경고만 보고되고 뒤에 세 개의 숫자가 옵니다.

tar: Removing leading `/' from member names
1343012 7725571 331386880

CD를 마운트할 수 있을 만큼 읽을 수 있으면 cdrom_copy.iso다른 설치 디렉터리를 만들고 마운트하여 CD와 CD의 파일을 비교합니다 /dev/sr0.

mkdir /mnt/orig_cd
mount /dev/sr0 /mnt/orig_cd

그런 다음 두 파일 트리를 비교하십시오. less차이점이 많은 경우 터미널이 넘치지 않도록 출력을 파이프로 연결하십시오.

diff -q -r /mnt/orig_cd /mnt/iso 2>&1 | less

빈 출력은 차이가 없음을 의미합니다. 다른 CD를 마운트해 보면 다음과 같은 메시지가 많이 나타날 것입니다.

Only in /mnt/iso: ...some_name...
...
Only in /mnt/orig_cd: ...some_other_name...

두 트리에서 동일한 상대 경로를 가진 파일의 내용이 다른 경우 유사한 메시지가 표시됩니다.

Files /mnt/cd_orig/...some_file... and /mnt/iso/...some_file... differ

모든 것이 정상이면 파일을 삭제하여 전체 프로세스를 적용해야 하는 다음 CD에서 블록을 읽는 것을 ~/cdrom_sector_map방지할 수 있습니다 .xorriso

관련 정보