+++
title = 'CD Recording'
date = '2000-11-01T00:00:00Z'
description = ''
author = 'Νίκος Αποστολάκης(mailto:nickapos@agriroot.aua.gr)'
issue = ['Magaz 28']
issue_weight = 3
+++

----------------------------------------------------------------------------------------------------------------------------------------------------------------

*Βήματα και μεθόδοι που ακολουθούμε για να γράψουμε ένα cd απο το Linux.*

----------------------------------------------------------------------------------------------------------------------------------------------------------------

**1. DISCLAIMER**
--------------------------------------------

**2. Ρυθμίσεις του πυρήνα του Linux για να γράψουμε ένα cd.**
----------------------------------------------------------------------------------------

-   [2.1 Η θεωρία](#ss2.1)
-   [2.2 Τα modules](#ss2.2)
-   [2.3 Ειδικές περιπτώσεις όσον αφορά το module loading and unloading.](#ss2.3)

**3. Δημιουργία και έλεγχος του iso-image.**
-----------------------------------------------------------------------

-   [3.1 Δημιουργία του iso-image.](#ss3.1)
-   [3.2 Έλεγχος του iso-image.](#ss3.2)

**4. Το κάψιμο του cd.**
---------------------------------------------------

-   [4.1 Η εντολή](#ss4.1)
-   [4.2 Επεξήγηση παραμέτρων](#ss4.2)

**5. Ειδικές ρυθμίσεις για την εγγραφή multisession cd.**
------------------------------------------------------------------------------------

-   [5.1 Γενικά](#ss5.1)
-   [5.2 Έλεγχος του προηγούμενου session και δημιουργία του image.](#ss5.2)
-   [5.3 Εγγραφή του session](#ss5.3)

**6. Βιβλιογραφία**
----------------------------------------------


### [1. DISCLAIMER]{#s1}

Δεν φέρω καμία ευθύνη για τυχόν ζημίες που θα προκληθούν στο μηχάνημα σας απο την εφαρμογή των παρακάτω. Εάν αποφασίσετε να ακολουθήσετε τα παρακάτω το κάνετε
με δική σας ευθύνη.


### [2. Ρυθμίσεις του πυρήνα του Linux για να γράψουμε ένα cd.]{#s2}

### [2.1 Η θεωρία]{#ss2.1}

Κατ\' αρχάς για να επιτύχουμε την εγγραφή του cd στο Linux πρέπει να ενεργοποιήσουμε την υποστήριξη για SCSI που έχει το Linux. Εάν το cdwriter που έχουμε δεν
είναι SCSI ακόμη και τότε θα πρέπει να ενεργοποιήσουμε το λεγόμενο SCSI emulation.

Η δική μου περίπτωση είναι η δεύτερη.

### [2.2 Τα modules]{#ss2.2}

Εδώ θα ήθελα να αναφέρω ότι όσον αφορά το configuration του πυρήνα προτιμώ να βάζω μέσα στον πυρήνα τα απολύτως απαραίτητα και να φτιάχνω τα υπόλοιπα σαν
modules.

Θεωρούμε ότι έχετε ρυθμίσει τον πυρήνα ώστε να μπορείτε να χρησιμοποιείτε το cdrom και να διαβάζετε iso-9660 filesystems.

Για να ενεργοποιήσουμε το SCSI emulation πρέπει να απαντήσουμε Y ή M στην επιλογή scsi emulation support, στο SCSI generic support επίσης Y ή M και το ίδιο και
στο SCSI cdrom support. Αφότου ενεργοποιήσουμε το SCSI emulation μπορούμε πια να αναφερόμαστε στις IDE συσκευές μας σα να ήταν SCSI.

### [2.3 Ειδικές περιπτώσεις όσον αφορά το module loading and unloading.]{#ss2.3}

#### Eνδιαφέρουσες περιπτώσεις.

Κατά την ρύθμιση του πυρήνα μπορούν να προκύψουν κάποιες ενδιαφέρουσες περιπτώσεις.

-   Η πρώτη περίπτωση είναι να έχετε επιλέξει το **SCSI emulation** ώστε να γίνει compile μέσα στον πυρήνα (όχι σαν module). Σε αυτή την περίπτωση αν έχετε
    επιλέξει την υποστήριξη για **IDE cd-rom drives** ώστε να γίνει compile μέσα στον πυρήνα τότε δεν θα μπορείτε να χρησιμοποιήσετε το cdwriter για την
    εγγραφή cd. Αυτό συμβαίνει γιατί όπως αναφέρεται στο documentation του πυρήνα όταν έχετε επιλέξει υποστήριξη για **IDE cd-rom** και **SCSI emulation** τότε
    αυτόματα χρησιμοποιείται το default δηλαδή εδώ το IDE cd-rom. Το ίδιο αποτέλεσμα και για τους ίδιους λόγους θα έχετε και όταν επιλέξετε το **IDE cd-rom
    drive support** σαν build-in στον πυρήνα και το **SCSI emulation** σαν module.
-   Η δεύτερη περίπτωση είναι να έχετε επιλέξει και στις δύο επιλογές **Module**. Τότε θε πρέπει να παίζετε με τις εντολές **lsmod** , **rmmod** , **insmod** ή
    **modprobe** προκειμένου να μπορέσετε να κάνετε load τα modules που χρειάζονται για το **SCSI emulation** και unload τα modules που χρησιμοποιούνται απο το
    IDE cd-rom.
-   Η τρίτη περίπτωση είναι να έχετε επιλέξει μόνο το SCSI emulation είτε build-in στον πυρήνα είτε σαν module και να έχετε επιλέξει **Module** στο **IDE cd-rom
    support**. Σε αυτή την περίπτωση θα βλέπετε όλα τα cd-rom drives σας σαν SCSI και θα μπορείτε να χρησιμοποιείτε το cdwriter άμεσα.

#### Αποτελέσματα

Εάν όλα είναι εντάξει τότε η εντολή **cdrecord -scanbus** μας δείχνει τις SCSI συσκευές που υπάρχουν στο σύστημα. Εγώ προσωπικά έχω δοκιμάσει και τα δύο
τελευταία configurations για σχετικά μεγάλα χρονικά διαστήματα με εξίσου καλά αποτελέσματα όσον αφορά την εγγραφή των cd\'s.

Όταν είχα το configuration μόνο για **SCSI emulation** είχα κάποια προβλήματα στο **audio-ripping** αλλά δεν έχω διαπιστώσει αν γι\'αυτο ήταν υπεύθυνο το
configuration ή το drive μου που είναι αρκετά παλιό και σχετικά προβληματικό.


### [3. Δημιουργία και έλεγχος του iso-image.]{#s3}

### [3.1 Δημιουργία του iso-image.]{#ss3.1}

#### Η εντολή

Φτιάχνουμε το **iso-image** με το **mkisofs**. Η εντολή που δίνουμε είναι η παρακάτω:

----------------------------------------------------------------------------------------------------------------------------------------------------------------

    mkisofs -r --o iso-image firstdir/

----------------------------------------------------------------------------------------------------------------------------------------------------------------

#### Επεξήγηση παραμέτρων

-   Η παράμετρος **-r** χρησιμοποιείται για να προσθέσει τα **Rockridge extensions** στο iso-image.
-   Η παράμετρος **-o** χρησιμοποιείται για να δηλώσει ο χρήστης το όνομα του αρχείου που θα αποθηκευτεί η έξοδος του **mkisofs** δηλαδή το **iso-image**.
-   Το **firstdir/** αποτελεί το directory εισόδου του **mkisofs** δηλαδή το directory απο το οποίο το **mkisofs** θα ξεκινήσει να διαβάζει ώστε να δημιουργήσει
    το iso-image. Το directory αυτο δεν θα φαίνεται όταν γραφεί το cd και θα αντικατασταθεί απο το root directory του cd.

### [3.2 Έλεγχος του iso-image.]{#ss3.2}

#### Η εντολή

Για να ελέγξουμε εάν το **iso-image** που δημιουργήσαμε είναι αυτο που επιθυμούμε, δεν έχει λάθη κ.τ.λ. χρησιμοποιούμε τα λεγόμενα **loopback devices**. Έτσι η
εντολή που δίνουμε είναι η παρακάτω :

----------------------------------------------------------------------------------------------------------------------------------------------------------------

    mount -t iso9660 -o ro,loop=/dev/loop0 iso-image /cdrom

----------------------------------------------------------------------------------------------------------------------------------------------------------------

#### Επεξήγηση παραμέτρων

-   Η παράμετρος **-t** δηλώνει τον τύπο του filesystem που θέλουμε να προσαρτήσουμε.
-   Η παράμετρος **-o** δηλώνει με τι επιλογές θέλουμε να προσαρτήσουμε το iso-image και σε ποιό loopback device.
-   Τέλος προσδιορίζουμε σε ποιό directory θέλουμε να προσαρτήσουμε το **iso-image**.

Αφού προσαρτήσουμε το **iso-image** μπορούμε να πάμε στο directory που επιλέξαμε να γίνει η προσάρτηση και να ελέγξουμε αν όλα είναι εντάξει.


### [4. Το κάψιμο του cd.]{#s4}

### [4.1 Η εντολή]{#ss4.1}

Η εντολή που χρησιμοποιούμε είναι η παρακάτω:

----------------------------------------------------------------------------------------------------------------------------------------------------------------

    cdrecord -v -multi -eject speed=2 dev=0,0 iso-image

----------------------------------------------------------------------------------------------------------------------------------------------------------------

### [4.2 Επεξήγηση παραμέτρων]{#ss4.2}

-   Η παράμετρος -v χρησιμοποιείται ώστε το **cdrecord** να τυπώνει αναλυτικά το στάδιο στο οποίο βρίσκεται το γράψιμο του cd.
-   Η επιλογή **speed=2** δηλώνει την ταχύτητα της εγγραφής.
-   Η επιλογή **dev=0,0** δηλώνει την συσκευή μέσω της οποίας θα γίνει η εγγραφή (στο pc μου αυτή είναι η dev=0,0) σε άλλα μηχανήματα θα είναι διαφορετική.
-   Η επιλογή **-multi** χρησιμοποιείται για την δημιουργία **multisession cd**.
-   Η επιλογή **-eject** χρησιμοποιείται για να γίνει eject μόλις τελειώσει η εγγραφή.


### [5. Ειδικές ρυθμίσεις για την εγγραφή multisession cd.]{#s5}

### [5.1 Γενικά]{#ss5.1}

Παρακάτω περιγράφεται η διαδικασία για την δημιουργία ενός **multisession cd**. Για την εγγραφή του πρώτου session αρκεί η παραπάνω διαδικασία με την επιλογή
**-multi** κατά την εγγραφή του cd.

### [5.2 Έλεγχος του προηγούμενου session και δημιουργία του image.]{#ss5.2}

#### Έλεγχος του προηγούμενου session.

Αρχικά πρέπει να πάρουμε πληροφορίες για το sector που έχει σταματήσει το προηγούμενο session. Η εντολή που χρησιμοποιούμε είναι η παρακάτω:

----------------------------------------------------------------------------------------------------------------------------------------------------------------

    cdrecord -msinfo dev=0,0.

----------------------------------------------------------------------------------------------------------------------------------------------------------------

Το output της εντολή αυτής είναι δύο αριθμοί της μορφής **xx,yy**.

Εννοείται βέβαια ότι για να πάρουμε αυτές τις πληροφορίες θα πρέπει το cd στο οποίο θα προστεθεί το νέο session να είναι μέσα στο drive.

#### Δημιουργία του image

Για να φτιάξουμε το iso-image χρησιμοποιούμε και πάλι το mkisofs και η εντολή που δίνουμε είναι η παρακάτω

----------------------------------------------------------------------------------------------------------------------------------------------------------------

    mkisofs -o cd-image -R --C xx,yy -M /dev/cdwriter firstdir/

----------------------------------------------------------------------------------------------------------------------------------------------------------------

Η επεξήγηση των παραμέτρων της εντολής ακολουθεί παρακάτω:

-   Η παράμετρος **-o** καθορίζει το όνομα του αρχείου στο οποίο θα γραφεί το iso image.
-   Η παράμετρος **-R** προσθέτει στο **iso image** τα **Rockridge extensions**.
-   Η παράμετρος **-C xx,yy** προσδιορίζει δύο αριθμούς. Ο πρώτος αντιστοιχεί στο πρώτο sector number του τελευταίου session του cd στο οποίο θα προστεθεί το
    image που θα φτιάξουμε και ο δεύτερος στο πρώτο sector number του νέου session. Οι αριθμοί **xx,yy** δίνονται ακριβώς με την σειρά που βγαίνουν απο το
    **cdrecord -msinfo dev=0,0**.
-   Η παράμετρος **-M /dev/cdwriter** προσδιορίζει την συσκευή απο την οποία θα διαβαστούν πληροφορίες για το **iso image** στο τέλος του οποίου θα προστεθεί το
    **iso image** που εμείς θα δημιουργήσουμε. Στην περίπτωση μας η συσκευή αυτή είναι το cdwriter που στο pc μου είναι η συσκευή **/dev/sr0**.
-   Η παράμετρος **firstdir/** έχει περιγραφεί παραπάνω.

#### Έλεγχος του iso image

Η γενική ιδέα του ελέγχου του **iso image** είναι η ίδια όπως και παραπάνω όμως υπάρχει μια μικρή (σχετικά) διαφορά. Έτσι για να μπορέσουμε να ελέγξουμε το
**iso image** θα πρέπει να φτιάξουμε ένα άλλο **iso image** με την παρακάτω εντολή:

----------------------------------------------------------------------------------------------------------------------------------------------------------------

    mkisofs -o iso-image1 -R --C xx,0 -M /dev/cdwriter firstdir/.

----------------------------------------------------------------------------------------------------------------------------------------------------------------

Η εντολή αυτή είναι η ίδια με την προηγούμενη απλά εδώ το **iso image** θα είναι φτιαγμένο έτσι ώστε το πρώτο του sector number να είναι μηδέν.

Τώρα μπορούμε να το κάνουμε mount κατά τα γνωστά με τις **loopback devices**.

### [5.3 Εγγραφή του session]{#ss5.3}

Η εγγραφή του session γίνεται κατα τα γνωστά με την εντολή :

----------------------------------------------------------------------------------------------------------------------------------------------------------------

    cdrecord -v -multi -eject speed=2 dev=0,0 iso-image

----------------------------------------------------------------------------------------------------------------------------------------------------------------


### [6. Βιβλιογραφία]{#s6}

-   Το σχετικό howto.
-   Τα manuals των εντολών mkisofs, cdrecord, lsmod , rmmod , insmod, modprobe.
-   Το documentation του πυρήνα.
-   Το Internet.

