Linux'ta CD Yazımı



A. Murat EREN <meren@comu.edu.tr>, Necdet YÜCEL <nyucel@comu.edu.tr>



25/02/2003, Çanakkale
ver 0.1


Bu kısa dökümanda, Linux bir makine üzerindeki CD-Writer cihaz ile, Veri ve Müzik CD'lerinin kolaylıkla hazırlanabilmesi için çeşitli kaynaklardan ve deneyimlerden derlenmiş bilgiler anlatılmıştır.

1 GİRİŞ

Bu döküman, sisteminizin, sahip olduğunuz CD yazıcı cihaz ile sorunsuz çalışabilecek durumda olduğu varsayılarak hazırlanmıştır. Sisteminiz ve siz, Linux üstünde CD yazıcı cihazınız ile ilk kez haşır-neşir olacaksanız, http://wt.xpilot.org/cgi-bin/winni/lsc-orig.pl adresinde Unix benzeri işletim sistemlerinde çalıştığı ya da çalışmadığı rapor edilmiş olan CD yazıcı cihazların listesine göz atarak cihazınızın çalışıp çalışmayacağından emin olabilirsiniz. CD yazıcıların Linux'a tanıtılması ve yaşanabilecek sorunların çözüm yolları bu dökümanda şimdilik yer almayacaktır. Talep geldiği taktirde, dökümanın daha içerikli yeni versiyonlarının duyurulması düşünülmektedir. Yine de yukarıdaki adreslere mail atarak bize ulaşabilir ve sorularınızı yöneltebilirsiniz.

http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schilling/private/cdrecord.html adresinde CD yazımı konusu ile ilgili geniş dökümanlara linkler yer almaktadır.

2 GEREKLİ YAZILIMLAR

Normal bir veri CD'si hazırlamak için cdrecord, mkisofs yazılımlarının, Müzik CD'si hazırlamak için ise sox, mpg321 ve cdrecord yazılımlarının sisteminizde hazır bulunması gerekmektedir. Bu yazılımlardan ihtiyacınız olacak olanlarının sisteminizde var olup olmadığını şimdi kontrol ediniz, eğer yok iseler aşağıdaki adreslerden faydalanarak yazılımların son sürümlerini temin edebilirsiniz:

cdrecord: ftp://ftp.berlios.de/pub/cdrecord/
un mkisofs:
ftp://ftp.berlios.de/pub/cdrecord/mkisofs/
sox:
http://sox.sourceforge.net/
mpg321:
http://sourceforge.net/project/showfiles.php?group_id=36274

3 BAŞLANGIÇ

Bilgisayarınıza takılı olan CD yazıcınıza onun SCSI Bus numarası ile erişeceğimiz için, öncelikle bu numarayı öğrenmemiz gerekmektedir. cdrecord -scanbus komutunu makinenizde -root hakları ile- çalıştırdığınızda, aşağıdaki gibi bir çıktı ile karşılaşmalısınız:



[root@isildur iso]# cdrecord -scanbus
Cdrecord 1.10 (i686-pc-linux-gnu) Copyright (C) 1995-2001 Jörg Schilling
Linux sg driver version: 3.1.22
Using libscg version 'schily-0.5'
scsibus0:
        0,0,0     0) *
        0,1,0     1) *
        0,2,0     2) *
        0,3,0     3) *
        0,4,0     4) 'PLEXTOR ' 'CD-R   PX-W1210S' '1.04' Removable CD-ROM
        0,5,0     5) *
        0,6,0     6) 'QUANTUM ' 'QM39100TD-SW    ' 'N1B0' Disk
        0,7,0     7) *


    Bu çıktıda 0 numarali SCSI bus üzerindeki 4 numaralı PLEXTOR isimli cihazın bizim CD yazıcı olarak kullanabileceğimiz bir yazıcı olduğu açıkça görülebilmektedir. Çıktıda cihazımıza karşılık gelen 0,4,0 numarasını unutmayacağız. Eğer CD yazıcınız yukarda vermiş olduğumuz adreste çalıştığı rapor edilmiş olan CD yazıcı cihazlar arasında varsa, kernel sürümünüz yeterince yüksek ise, yazıcınızın -herhangi bir yolla- kesinlikle çalışır vaziyette bilgisayarınıza takılı olduğundan eminseniz ve yine de cdrecord -scanbus çıktısında görünmüyorsa, cihazınızı linuxa tanıtmak için yapmanız gereken bir kaç basit işlem vardır. Bunun için CD-Writing-HOWTO'dan faydalanabilirsiniz. Talep gelirse, bu dökümanın ilerleyen versiyonlarında bu konudan da bahsetmeyi düşünüyoruz fakat şimdilik kendi başınasınız :(

    4 DİKKAT

     Muhtemelen biçok kişinin bildiği gibi, CD yazıcı yazma işlemini gerçekleştirirken disk ya da diğer bir kaynaktan kesintisiz gelen veriyi kullanır. CD yazdığınız esnada bilgisayarınızda yaptığınız işlemlerin veri akışını kesintiye uğratmaması gerekmektedir. Kısa bir süreliğine dahi veri akışı kesilirse, CD yazma işlemi kesilir, CD'niz ve vaktiniz de boşa harcanmış olur. İnternette gezmek ya da müzik dinlemek için kullandığınız ve disk üzerinde fazla işlem yapmayan programlardan ziyade, dosya kopyalamak ya da silmek CD yazma süreci için büyük tehlike arz etmektedir. Diskinizden 250, 300 Mb'lık bir dosya siler ya da çok hızlı bir kaynaktan (mesela kendi diskinizin bir başka parçasından ya da yerel ağınızdaki ftp sunucsundan) diskinize büyük bir dosya kopyalarsanız, muhtemelen CD yazıcıya yazacağı veri yeterli hızda temin edilemeyecek ve CD'niz yanacaktır. CD yazmak gibi narin bir işlem esnasında koşulları fazla zorlamamak, başarı için yeterli olacaktır. Ayrıca, CD'ye yazma işlemini gerçekleştiren lazerin, kendini yeniden konumlandırıp yazma işlemine kaldığı yerden devam edemeyeceğinden dolayı sarsıntı ve fiziksel şokların yaşanması muhtemel platformalar üzerinde yazma işlemi başarısız olabilir.

    5 VERİ CD'LERİNİN YAZILMASI

     CD'ye yazmaya karar verdiğimiz dosyaları, CD dosya sistemine dönüştürmeli ve bu şekilde CD'ye yazmalıyız. Bunun için ilk önce yazmayı düşündüğümüz dosyaları kendi dosya sistemimiz üzerinde bir klasöre toplamalı, ve daha sonrada mkisofs isimli yazılım yardımı ile bu klasörü CD dosya sistemine dönüştürmeliyiz. Bir klasör CD dosya sistemine şu şekilde dönüştürülebilir:


]# mkisofs -r -o iso_dosyasi.iso cdye_yazilacak_dosyalar/

     Bu komut, bulunduğumuz dizinde bulunan cdye_yazilacak_dosyalar/ isimli klasörü, yine bulunduğumuz dizine iso_dosyasi.iso ismi ile dönüştürecektir. Aşağıdaki ekran çıktısı, tez/ isimli klasörün tez.iso dosyasına dönüştürülmesini göstermektedir:



[root@isildur iso]# mkisofs -r -o tez.iso tez/
Using APPEN00.HTM;1 for tez/Applied_Cryptography/appendix-b.html (appendix-a.html)
Using LECTU000.PS;1 for tez/lecture_notes/lecture17.ps (lecture16.ps)
Using LECTU001.PS;1 for tez/lecture_notes/lecture16.ps (lecture15.ps)
Using LECTU002.PS;1 for tez/lecture_notes/lecture15.ps (lecture14.ps)
Using LECTU003.PS;1 for tez/lecture_notes/lecture14.ps (lecture13.ps)
Using LECTU004.PS;1 for tez/lecture_notes/lecture13.ps (lecture12.ps)
Using LECTU005.PS;1 for tez/lecture_notes/lecture12.ps (lecture11.ps)
Using LECTU006.PS;1 for tez/lecture_notes/lecture11.ps (lecture10.ps)
Using LECTU007.PS;1 for tez/lecture_notes/lecture10.ps (lecture1.ps)
Using 2001_00.PDF;1 for tez/pointcheval/2001_asiacryptC.pdf (2001_asiacryptA.pdf)
13.10% done, estimate finish Wed Feb 26 15:20:25 2003
26.21% done, estimate finish Wed Feb 26 15:20:21 2003
39.34% done, estimate finish Wed Feb 26 15:20:23 2003
52.43% done, estimate finish Wed Feb 26 15:20:23 2003
65.55% done, estimate finish Wed Feb 26 15:20:27 2003
78.65% done, estimate finish Wed Feb 26 15:20:26 2003
91.75% done, estimate finish Wed Feb 26 15:20:26 2003
Total translation table size: 0
Total rockridge attributes bytes: 44970
Total directory bytes: 108544
Path table size(bytes): 618
Max brk space used 617e4
38160 extents written (74 Mb)




     Ayrıca, yazmak istediğimiz dosyalar diskimizde değil bir başka CD üzerinde bulunuyor olabilirler, ya da bir CD'yi bire-bir kopyalamak istiyor olabiliriz (İlgilenmeyenler okumaya bir kaç satır aşağıdaki ***'dan devam edebilirler). Bu durumda izlenebilecek iki metod vardır. İlki, CD'den CD'ye direk kopyalama, diğeri de kopyalanacak CD'yi iso olarak diskimize kaydettikten sonra disk üzerinden CD'ye yazmak. İkisinin sonucu arasında hiçbir fark olmayacak, fakat ikinci metodu takip ettiğimiz taktirde CD'mizi yakma olasılığımız daha az olacaktır. Çünkü, CD'den CD'ye direk kopyalama esnasında CD okuyucunun normal okuması esnasında bir kaç sefer deneyip okuyabileceği bir kısım, CD yazıcıya olan veri akışını sekteye uğratacak ve yazma işlemi başarısızlık ile sonlanacaktır. Yine de kendinize güveniyor olabilir ve illa ki CD'den CD'ye direk kopyalama yapmak isteyebilirsiniz. Örneğin CD yazıcınızın SCSI bus adresi 0,4,0 ve CD okuyucu olarak kullanacağınız cihaz /dev/cdrom iken aşağıdaki komut ile CD-to-CD kopyalama yapabilirsiniz. Bu noktada yazma hızını (yani komuttaki speed parametresini) düşük tutmanız risklerin azalması açısından iyi bir yaklaşım olacaktır:


]# cdrecord -v dev=0,4,0 speed=2 -isosize /dev/cdrom



     İlk metoda göre kopyalama yapmak isteyenlerin, yani CD-to-CD kopyalama yerine iso dosyasını önce disklerinde oluşturup daha sonra CD yazma işlemine geçmek isteyenlerin ihtiyacı olan komut şöyledir (kopyalamak istediğiniz CD'nin /dev/cdrom cihazında olduğunu varsayarsak):


]# dd if=/dev/cdrom of=iso_dosyasi.iso



    *** Artık iso dosyamız hazırdır, ve iso dosyamızın boyutunun CD'mizin kapasitesinden küçük olduğunu teyyid ettikten sonra CD'ye yazma işlemine başlamamız için önümüzde hiçbir engel yoktur. Fakat yine de, daha sonradan ortaya çıkabilecek tatsızlıkları engellemek için, iso dosyasının içini kontrol etmek isteyebiliriz; şu anda aklımıza gelmeyen ancak gözümüzle gördüğümüzde hatırlayabileceğimiz eksiklik ya da hataların var olmadığından emin olmak için. Bunun için iso dosyamızı, sanki bir CD-ROM'muş gibi diskimizde bir yere mount edip içinde gezebiliriz:


[root@isildur iso]# mount -t iso9660 -o ro,loop=/dev/loop0 tez.iso /mnt/cdrom


    komutu yeterli olacaktır. Bir problem olmadığından emin olduktan sonra da iso dosya sistemini


[root@isildur iso]# umount /mnt/cdrom



    komutu yardımı ile çözebiliriz. Boş CD'mizi CD yazıcısının içerisine koyduktan sonra yazma işlemine başlayabiliriz. Yazma işlemi aşağıdaki komut yardımı ile gerçekleştirilecektir:


]# cdrecord dev=scanbus_id_si -eject speed=yazma_hizi iso_dosyasi.iso



    Burada belki de üzerinde konuşmamız gereken tek parametre 'dev' parametresidir. Bu parametre, yazma işleminde kullanacağımız cihazın hangi cihazımız olduğunu bildirdiğimiz parametredir ve değerinin ne olacağına cdrecord -scanbus çıktısına göre karar verdiğimizi de hatırlatalım. Aşağıdaki ekran çıktısı, az önce hazırladığımız tez.iso isimli dosyayı yazdığımızda meydana gelen çıktıdır:



[root@isildur iso]# cdrecord dev=0,4,0 -eject speed=12 tez.iso
Cdrecord 1.10 (i686-pc-linux-gnu) Copyright (C) 1995-2001 Jörg Schilling
scsidev: '0,4,0'
scsibus: 0 target: 4 lun: 0
Linux sg driver version: 3.1.22
Using libscg version 'schily-0.5'
Device type : Removable CD-ROM
Version : 2
Response Format: 2
Capabilities : SYNC LINKED
Vendor_info : 'PLEXTOR '
Identifikation : 'CD-R PX-W1210S'
Revision : '1.04'
Device seems to be: Generic mmc CD-RW.
Using generic SCSI-3/mmc CD-R driver (mmc_cdr).
Driver flags : SWABAUDIO
Starting to write CD/DVD at speed 12 in write mode for single session.
Last chance to quit, starting real write in 0 seconds. Operation starts.
Track 01: Total bytes read/written: 83839360/83839360 (58320 sectors).


    6 MÜZİK CD'LERİNİN HAZIRLANMASI

     Müzik CD'si derken, müzik setlerinde ve CD-Walkman'lerde okunabilecek müzik CD'lerini kastettiğimizi hatırlatmakta fayda var. Dökümanın (kısa dökümanımızın) başında da ifade ettiğimiz gibi, Müzik CD'si hazırlarken cdrecord'a ek olarak sox ve mpg321 yazılımlarının da sistemimizde bulunması gerekmektedir.

    Müzik CD'si hazırlarken, istediğimiz şey muhtemelen diskimizde mp3 formatında bulunan müzik dosyalarından müzik setlerinde dinlenebilecek bir Müzik CD'si oluşturmaktır. Bu işlem, öncelikle mp3 dosyalarımızı wav formatına çevirmemiz, sonrasında CD'ye yazmamızı gerektiren iki aşamalı bir süreçtir. İlk önce, mp3 dosyalarımızı bir klasör içerisinde topladığınızı varsayıyoruz. Bu klasör içerisindeki mp3 dosyalarını sox ve mpg321 programlarının bir koordinasyonu ile wav formatına şöyle bir komut ile çevirebiliyoruz:


]# mpg123 -s mysong.mp3 | sox -t raw -r 44100 -s -w -c 2 - mysong.wav



     Bunu kendi bilgisayarımızda bir mp3 için yaptığımızda şöyle bir çıktı ile karşılaşıyoruz:



[root@isildur jazz]# ls
jaco_pastorius-slang.mp3
[root@isildur jazz]# mpg123 -s jaco_pastorius-slang.mp3 | sox -t raw -r 44100 -s -w -c 2 - jaco.wav
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2, and 3.
Version 0.59q (2002/03/23). Written and copyrights by Joe Drew.
Uses code from various people. See 'README' for more!
THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK!

Playing MPEG stream from jaco_pastorius-slang.mp3 ...
MPEG 1.0 layer III, 128 kbit/s, 44100 Hz stereo

[8:01] Decoding of jaco_pastorius-slang.mp3 finished.
[root@isildur jazz]# ls
jaco_pastorius-slang.mp3  jaco.wav
[root@isildur jazz]#




    Görüldüğü gibi mp3 dosyamızı wav formatına başarı ile çevirdik. Burada bir tane mp3 dosyasını üzerinde çalıştık fakat, istediğiniz kadar mp3'ü bu yolla -toplamları CD boyutunu aşmadığı sürece- wav dosyasına çevirebilirsiniz. Bu wav dosyalarını CDDA formatına dönüştürüp CD'ye yazmak için de yardımımıza cdrecord koşuyor. Burası enteresan bir nokta: aşağıdaki komutu CD'de yer kaldığı sürece istediğiniz kadar tekrarlayabilir ve şarkılarınızı istediğiniz sırada yazdırarak Müzik CD'nizi oluşturabilirsiniz:


]# cdrecord -pad -v dev=0,4,0 -dao speed=12 sarki_adi.wav



     Yine bir çıktı ile -kısa- dökümanımızı noktalayalım. Aşağıdaki çıktı, bir Müzik CD'sinin yazımından alınmıştır. Şarkıları tek tek el ile yazmaktansa, *.wav diyerek klasör içerisindeki tüm wav dosyalarını CD'ye yazdırabilirsiniz elbette. Fakat bu şeklilde şarkılar sizin istediğiniz sırada değil alfabetik sırada CD'ye yazılacaklarından, şarkı isimlerini istediğiniz sıraya göre numaralandırmalısınız:



[root@isildur jazz]# ls
01miles.wav      03coltrane.wav   05terje.wav      07joe.wav        09kessel.wav     11tony.wav
02mingus.wav     04terje.wav      06evreniz.wav    08lespaul.wav    10ella.wav
[root@isildur jazz]# cdrecord -pad -v dev=0,4,0 -dao speed=12 *.wav
Cdrecord 1.10 (i686-pc-linux-gnu) Copyright (C) 1995-2001 Jörg Schilling
TOC Type: 0 = CD-DA
scsidev: '0,4,0'
scsibus: 0 target: 4 lun: 0
Linux sg driver version: 3.1.22
Using libscg version 'schily-0.5'
atapi: 0
Device type    : Removable CD-ROM
Version        : 2
Response Format: 2
Capabilities   : SYNC LINKED
Vendor_info    : 'PLEXTOR '
Identifikation : 'CD-R   PX-W1210S'
Revision       : '1.04'
Device seems to be: Generic mmc CD-RW.
Using generic SCSI-3/mmc CD-R driver (mmc_cdr).
Driver flags   : SWABAUDIO
Drive buf size : 2394336 = 2338 KB
FIFO size      : 4194304 = 4096 KB
Track 01: audio  56 MB (05:37.58)
Track 02: audio  48 MB (04:50.14)
Track 03: audio  45 MB (04:31.83)
Track 04: audio  49 MB (04:54.87)
Track 05: audio  62 MB (06:12.29)
Track 06: audio  57 MB (05:39.70)
Track 07: audio  34 MB (03:22.81)
Track 08: audio  27 MB (02:40.52)
Track 09: audio  34 MB (03:27.46)
Track 10: audio  32 MB (03:13.25)
Track 11: audio  42 MB (04:14.53)
Total size:     492 MB (48:45.10) = 219383 sectors
Lout start:     492 MB (48:47/08) = 219383 sectors
Current Secsize: 2048
ATIP info from disk:
  Indicated writing power: 6
  Is not unrestricted
  Is not erasable
  Disk sub type: Medium Type A, low Beta category (A-) (2)
  ATIP start of lead in:  -11634 (97:26/66)
  ATIP start of lead out: 359849 (79:59/74)
Disk type:    Short strategy type (Phthalocyanine or similar)
Manuf. index: 3
Manufacturer: CMC Magnetics Corporation
Blocks total: 359849 Blocks current: 359849 Blocks remaining: 140466
Starting to write CD/DVD at speed 12 in write mode for single session.
Last chance to quit, starting real write in 0 seconds. Operation starts.
Waiting for reader process to fill input buffer ... input buffer ready.
Performing OPC...
Sending CUE sheet...
Writing pregap for track 1 at -150
Starting new track at sector: 0
Track 01:  56 of  56 MB written (fifo  98%).
Track 01: Total bytes read/written: 59549184/59550288 (25319 sectors).
Starting new track at sector: 25319
Track 02:  48 of  48 MB written (fifo 100%).
Track 02: Total bytes read/written: 51181056/51181872 (21761 sectors).
Starting new track at sector: 47080
Track 03:  45 of  45 MB written (fifo 100%).
Track 03: Total bytes read/written: 47950848/47952576 (20388 sectors).
Starting new track at sector: 67468
Track 04:  49 of  49 MB written (fifo 100%).
Track 04: Total bytes read/written: 52015104/52016832 (22116 sectors).
Starting new track at sector: 89584
Track 05:  62 of  62 MB written (fifo  98%).
Track 05: Total bytes read/written: 65673216/65674896 (27923 sectors).
Starting new track at sector: 117507
Track 06:  57 of  57 MB written (fifo  98%).
Track 06: Total bytes read/written: 59923968/59924256 (25478 sectors).
Starting new track at sector: 142985
Track 07:  34 of  34 MB written (fifo 100%).
Track 07: Total bytes read/written: 35776512/35778624 (15212 sectors).
Starting new track at sector: 158197
Track 08:  27 of  27 MB written (fifo 100%).
Track 08: Total bytes read/written: 28316160/28318080 (12040 sectors).
Starting new track at sector: 170237
Track 09:  34 of  34 MB written (fifo  98%).
Track 09: Total bytes read/written: 36596736/36597120 (15560 sectors).
Starting new track at sector: 185797
Track 10:  32 of  32 MB written (fifo 100%).
Track 10: Total bytes read/written: 34089984/34092240 (14495 sectors).
Starting new track at sector: 200292
Track 11:  42 of  42 MB written (fifo 100%).
Track 11: Total bytes read/written: 44900352/44902032 (19091 sectors).
Writing  time:  270.911s
Fixating...
Fixating time:    5.080s
cdrecord: fifo had 8131 puts and 8131 gets.
cdrecord: fifo was 0 times empty and 5363 times full, min fill was 93%.




    7 KAYNAKLAR

     Bu dökümanda kullanılan yazılımların herbirinin birçok parametresi bulunmaktadır. Sadece minimum ihtiyaçlar göz önünde bulunduğu taktirde kullanılması gereken parametreler dışında bir parametre kullanılmamıştır. Kullanılabilecek parametreler hakkında daha ayrıntılı bilgi için yazılımların man dosyalarına göz atınız.

    Bu dökümanın en son versiyonuna http://docs.comu.edu.tr/homemade/cdrecord.html adresinden ulaşabilirsiniz.

    cdrecord (Jörg Schilling <schilling@fokus.fhg.de>)
http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schilling/private/cdrecord.html

    CD-Writing-HOWTO (Winfried Trümper <winni@xpilot.org>)
http://wt.xpilot.org/publications/linux/howtos/cd-writing/html/

    8 YASAL AÇIKLAMALAR



    Bu belgeyi, Free Software Foundation tarafından yayınlanmış bulunan GNU Özgür Belgeleme Lisansının 1.1 ya da daha sonraki sürümünün koşullarına bağlı kalarak kopyalayabilir, dağıtabilir ve/veya değiştirebilirsiniz. Bu Lisansın bir kopyasını http://www.gnu.org/copyleft/fdl.html adresinde bulabilirsiniz.

    Linux, Linus Torvalds adına kayıtlı bir ticarî isimdir.

    Feragatname:
    Bu belgedeki bilgilerin kullanımından doğacak sorumluluklar, ve olası zararlardan belge yazarları sorumlu tutulamaz. Bu belgedeki bilgileri uygulama sorumluluğu uygulayana aittir.

    Tüm telif hakları aksi özellikle belirtilmediği sürece sahiplerine aittir. Belge içinde geçen herhangi bir terim bir ticarî isim ya da kuruma itibar kazandırma olarak algılanmamalıdır. Bir ürün ya da markanın kullanılmış olması ona onay verildiği anlamında görülmemelidir.