mkisofs 와 cdrecord 를 이용한 레코딩

문재식의 이미지

1. 리눅스 레코딩 개요

본 문서의 최신판은 http://redhat.okwecan.com/bbs/read.php?table=linux&no=85&page=1 에서 볼 수 있습니다.

커맨드 라인에서 CD를 굽는 일은 상당히 힘들고 귀찮은 작업이지만 리눅스에서는 조금만 생각해 보면 그리 어려운 작업은 아니다. 많은 리눅스 소프트웨어가 ISO 파일로 제공이 되고 있는데, 여러분들도 CD 레코딩을 할 줄 알다면 레드햇과 같은 배포본 ISO 파일을 다운받아 CD 로 레코딩 한 후 리눅스 설치 작업을 쉽게 할 수 있다.

CD-writing 프로그램은 리눅스와 윈도우즈에서 모두 이용할 수 있지만 리눅스 버전이 훨씬 강력한 기능을 제공하고 있다. 본 강좌에서는 mkisofs 로 ISO 파일을 생성하고, cdrecord 로 레코딩을 하는 방법을 설명하도록 한다. 여러분의 리눅스에 최신의 버전이 설치되어 있는지 확인해 보도록 한다. 최소한 둘 모두 1.10 보다는 최신이어야 한다.

[root@linux root]# mkisofs --version
mkisofs 2.0 (i686-pc-linux-gnu)

[root@linux root]# cdrecord --version
Cdrecord 2.0 (i686-pc-linux-gnu) Copyright (C) 1995-2002 J rq Schilling

만약 bash: mkisofs: command not found 와 같이 나온다면 필요한 패키지가 설치되지 않았으므로 먼저 mkisofs 패키지와 cdrecord 패키지를 설치하도록 한다.

2. CD-RW 인식시키기

CD-RW 가 리눅스 설치전 부착되어 있다면 큰 문제는 없지만 리눅스 설치후 CD-RW를 장착하였다면 레코딩이 가능하도록 인식시켜주어야 한다. CD-RW 로 IDE/ATAPI 방식 또는 SCSI 방식의 장치를 사용할 수 있는데 IDE/ATAPI
라면 좀 복잡한 설정을 해주어야 한다. 대부분의 사용자들이 IDE/ATAPI 방식일 거라 생각된다.

리눅스에서는 SCSI 에뮬레이션 서브시스템(SCSI emulation subsystem) 을 사용하므로 IDE/ATAPI 방식의 CD-RW 를 사용하기 위해서는 ide-scsi 가상 장치 드라이버를 사용해야만 한다.

여러분의 시스템에서 CD-RW 를 사용할 수 있는지 확인해 보도록 하자. 아래의 명령을 실행하였을 때 CD-RW 드라이브가 보이는지 확인한다. 만약 있다면 3번으로 바로 건너뛴다.
[root@linux root]# cdrecord -scanbus
1) 장치 및 ide-scsi 모듈 확인

자, 그럼 지금부터 작업을 하도록 한다. 우선 자신의 CD-ROM 과 CD-RW 과 시스템에서 사용하는 드라이브를 확
인하도록 한다.

[root@linux root]# dmesg | grep '^hd.:'
...
hdc: RICOH DVD/CDRW MP9200, ATAPI CD/DVD-ROM drive
hdd: SAMSUNG CD-ROM SC-152N, ATAPI CD/DVD-ROM drive
...

그리고 SCSI 에뮬레이션을 사용하도록 커널에서 지원가능하여야 한다. 레드햇 배포본을 사용한다면 대부분 모듈의 형태로 제공될 것이다.
[root@linux root]# modprobe -lt scsi | grep ide
/lib/modules/{kernel-version}/kernel/drivers/scsi/ide-scsi.o

만약 위와 같이 나오지 않았다면 커널 컴파일의 과정이 필요할 지 모른다. 커널 컴파일은 본 강좌의 내용이 아니므로 다른 문서를 참고하도록 한다.

2) ide-scsi 드라이버 사용

ide-scsi 드라이버를 시스템에서 사용하기 위해서는 /etc/modules.conf 와 /boot/grub/grub.conf ( 또는
/etc/lilo.conf ) 두 개의 파일을 수정하여야 한다. 만약 여러분의 시스템에 CD-ROM 이 /dev/hdc 이고, CD-RW 가 /dev/hdd 라고 한다면 /etc/modules.conf 파일에 다음 라인을 추가하도록 한다.
options ide-cd ignore=\"hdc hdd\"
기본적으로 IDE 서브시스템은 모든 ATA 장치를 자신의 것으로 사용하려 하는데 위의 설정은 CD-ROM 과 CD-RW 를 SCSI 서브시스템으로 사용하기 위해 ide-cd 를 무시하라는 내용이다.

이제 부트로더 설정파일을 편집한다. GRUB 사용자는 /boot/grub/grub.conf 파일에서 kernel 라인의 맨 끝에 다음과 같이 추가한다.
hdc=ide-scsi hdd=ide-scsi
LILO 사용자는 /etc/lilo.conf 의 맨 끝에 다음 두 줄을 추가한다.

append="hdc=ide-scsi"
append="hdd=ide-scsi"

이제 리부팅을 실시한 후 lsmod 명령을 실행해 보고 ide-scsi 모듈이 올라왔나 확인해 보자. 만약 올라오지 않았다면, 지금까지의 작업을 잘 확인해 보도록 하자.
[root@linux root]# lsmod | grep ide-scsi
ide-scsi 12208 0
scsi_mod 107544 4 [sd_mod sr_mod sg ide-scsi]

3. 데이터 레코딩

1) ISO 파일 만들기

레코딩을 원하는 파일과 디렉토리가 있다면, 먼저 mkisofs 를 이용해 ISO 파일을 생성하고 cdrecord 를 이용해
레코딩을 할 수 있다.
[root@linux root]# mkisofs -o test.iso -J -V TESTISO /mnt/movie/ani/

    -o : 생성될 ISO 이미지 파일 이름 -J : 윈도우즈 호환 Joliet Filesystem 으로 64자의 파일이름을 허용
    -V : Volume ID 생성

이제 생성된 ISO 파일을 확인해보기 위해 임시폴더 /mnt/test 를 생성하고 다음 명령을 실행하도록 한다.

[root@linux root]# mkdir /mnt/test
[root@linux root]# mount -t iso9660 -o ro,loop test.iso /mnt/test

/mnt/test 디렉토리로 이동하여 파일과 디렉토리가 있는지 확인하고 읽기 가능성도 체크하도록 한다.
만약 /mnt/movie/ani/ 에 있는 내용과 다르다면 정상적으로 ISO 파일이 생성되지 않은 것이다.

정상적으로 ISO 가 만들어 졌다면 cdrecord 을 이용해 레코딩을 실시한다.

2) 데이터 레코딩

레코딩을 하기 전에 여러분의 CD-RW 의 SCSI address 를 알고 있어야 한다. cdrecord -scanbus 명령을 이용하여 확인한다.

[root@linux root]# cdrecord -scanbus
Cdrecord 2.0 (i686-pc-linux-gnu) Copyright (C) 1995-2002 Jrg Schilling
Linux sg driver version: 3.1.24
Using libscg version 'schily-0.7'
scsibus0:
        0,0,0     0) 'RICOH   ' 'DVD/CDRW MP9200 ' '1.10' Removable CD-ROM
        0,1,0     1) 'SAMSUNG ' 'CD-ROM SC-152N  ' 'C002' Removable CD-ROM
        0,2,0     2) *
        0,3,0     3) *
        0,4,0     4) *
        0,5,0     5) *
        0,6,0     6) *
        0,7,0     7) *

각 항목에 대한 처음 세자리 수는 SCSI bus, device ID 그리고 LUN(Logical Unit Number) 이며, CD-RW 의 경우 0,0,0 의 주소를 가지는데 맨 앞의 '0'을 생략하고 간단하게 0,0 으로 사용할 수 있다. 여러분이 사용하는 CD-RW
의 address 를 확인하고 꼭 기억하기 바란다.
[root@linux root]# cdrecord -v -eject speed=8 dev=0,0 test.iso
    -v : 레코딩 정보를 상세 출력 -eject : 레코딩 후 디스크 배출
    speed : 레코딩 배속
    dev : cdrecord -scanbus 결과 나온 device number(0,0,0) 처음 0 은 생략가능
    test.iso 는 레코딩할 이미지의 이름

위에서 speed 옵션을 지정하지 않으면 최대 속도로 레코딩을 시도하지만 에러율, 버퍼언더런 등이 발생할 확률이 높아 그리 안정적인 방법이라고는 볼 수 없다.

시스템에서 /dev/hdc 로 인식되던 CD-RW 는 /dev/scd0 으로, /dev/hdd 로 인식되던 CD-ROM 은 /dev/scd1 로 인식된다. 필요하다면 /etc/fstab 파일을 수정해야 한다.
[root@linux root]# mount -t iso9660 -o ro /dev/scd1 /mnt/cdrom
디스크 복사를 하고자 한다면 아래와 같이 하면 되지만 좀더 안정적인 레코딩을 하고자 한다면 언저 소스 디시크를 하드 드라이브로 복사한 후 하드 드라이브에 있는 데이터를 레코딩 하도록 한다.
[root@linux root]# cdrecord -v dev=0,0,0 speed=4 -isosize /dev/scd1
아래 명령에서는 -dummy 옵션을 추가하였다. 이 옵션을 사용하게 되면 실제 레코딩을 하지 않고 정상적으로 레코딩이 되는지 여부를 확인할 수 있도록 한다.
[root@linux root]# cdrecord -v -eject -dummy speed=8 dev=0,0 test.iso
4. 마무리

이것으로 mkisofs 와 cdrecord 를 이용한 레코딩을 간략하게 살펴 보았다. mkisofs 와 cdrecord 명령에 대한 좀더 상세한 내용은 본 강좌에서는 다루지 않는다. 리눅스에서 레코딩 가능한 GUI 인터페이스 툴이 gtoaser 등 몇가
지가 있으므로 명령어 방식에 익숙하지 않은 유저분들은 그래픽 툴을 찾아보기 바란다.

본 강좌의 주 목적은 CD-RW 를 인식시킨 후 기본적인 레코딩을 하는 것이다. 부족한 내용이 있다면 향후 업그레이드를 통해 보강하도록 하겠다.

참고자료
http://www-106.ibm.com/developerworks/linux/library/l-cdburn.html

[/][/]
Forums: 
batmi의 이미지

음..제가 알고싶어 하는 부분은 꼭꼭~!! 찝어서 설명해주셨네요...
감사합니다.
문재식님 덕분에 많은 시간을 절약했네요.^____________^;;

.
마음을 가꾸는 방법은??

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.