Next Previous Contents

3. "Εάν στρέψεις τον εαυτό σου προς τον καπνό, δεν θα σταματήσω να το διασκεδάζω όσο θα καίγεσαι."

(Ο Αυτοκράτορας Νέρωνας για το κάψιμο των κλασσικών του CDs [AD64]. Το είχε παρεξηγήσει εντελώς).

Συνήθως η εγγραφή ενός CD κάτω από Linux γίνεται σε 2 βήματα:

Είναι επίσης δυνατό να συνδυάσετε τα 2 βήματα μέσω διασωλήνωσης (pipe) αλλά σας αποθαρρύνουμε από το να το δοκιμάσετε γιατί δεν είναι αξιόπιστο. Δείτε παρακάτω.

3.1 Καθορίστε σε πια γενική συσκευή scsi (scsi device) είναι προσκολλημένος ο εγγραφέας

[Σημειώστε : το τρέχον σχήμα ονοματολογίας των συσκευών scsi devices στο Linux είναι πολύ μπλεγμένο χωρίς λόγο και όχι και αρκετά αξιόπιστο. Το γεγονός πως το περιγράφω σε μεγάλη λεπτομέρεια, δεν θα πρέπει να εκληφθεί λάθος σαν αποδοχή αυτού του σχήματος. Οι άνθρωποι με ATAPI cd-writer μπορούν να δοκιμάσουν την "cdrecord -scanbus" για να εντοπίσουν την σωστή συσκευή και να παραλείψουν το υπόλοιπο αυτού του τμήματος.]

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

Δώστε την εντολή dmesg. Θα πρέπει να αναφέρει τα μηνύματα του πυρήνα του Linux, συμπεριλαμβανομένων και εκείνων που τυπώθηκαν κατά την εκκίνηση (περιορισμός: μόνο τα τελευταία l200) και να περιέχει κάποιες πληροφορίες για το CD-Writer που είναι συνδεδεμένο στο δίαυλο SCSI.

Απλό παράδειγμα:

  Vendor: YAMAHA  Model: CDR100       Rev: 1.11
  Type:   WORM                        ANSI SCSI revision: 02
Detected scsi CD-ROM sr1 at scsi0, channel 0, id 3, lun 0

Η μηχανή αυτή έχει 4 συσκευές SCSI συνδεδεμένες πάνω της (δεν μπορείτε να το δείτε και έτσι σας το λέω εγώ), με ταυτότητες (SCSI-id) από 0 έως 3. Ο εγγραφέας είναι η 4η φυσικά παρούσα συσκευή SCSI και γι' αυτό είναι συνδεδεμένη στο /dev/sgd (η τέταρτη γενική συσκευή SCSI,όπου η μέτρηση αρχίζει από το γράμμα a). Σε αυτή την περίπτωση, η εντολή:

cdwrite  --eject  --device /dev/sgd

ανοίγει τον υποδοχέα (tray) και είναι ένας έλεγχος για το αν όλα έχουν εγκατασταθεί σωστά. Ένα πιο σύνθετο παράδειγμα:

scsi0 : AdvanSys SCSI 1.5: ISA (240 CDB)
scsi1 : Adaptec 1542
scsi : 2 hosts.

  Vendor: HP      Model: C4324/C4325  Rev: 1.20
  Type:   CD-ROM                      ANSI SCSI revision: 02
Detected scsi CD-ROM sr0 at scsi0, channel 0, id 2, lun 0

  Vendor: IBM     Model: DPES-31080   Rev: S31Q
  Type:   Direct-Access               ANSI SCSI revision: 02
Detected scsi disk sda at scsi1, channel 0, id 0, lun 0

scsi : detected 1 SCSI cdrom 1 SCSI disk total.
SCSI device sda: hdwr sector= 512 bytes.

Σε αυτό το παράδειγμα δυο ελεγκτές SCSI φιλοξενούν από 1 συσκευή SCSI ο καθένας. Τι σπατάλη ((μια που μπορούν να φιλοξενούν μέχρι και 7 συσκευές ο καθένας). Δεν είναι η δικιά μου εγκατάσταση, οπότε σταματήστε να ρωτάτε αν έχω τόσο πολλά λεφτά. ... Τέλος πάντων, στην περίπτωση αυτού του αμελητέου αυτού παραδείγματος, η εγκατάσταση αυτή είναι μια χαρά. :-)

Στο παραπάνω παράδειγμα το CD-Writer έχει ταυτότητα SCSI 2 αλλά είναι συσχετισμένο με την πρώτη γενική συσκευή SCSI /dev/sga γιατί δεν είναι η πρώτη φυσικά παρούσα συσκευή SCSI που το Linux εντόπισε. Ελπίζω πως αυτό δείχνει καθαρά πως η ταυτότητα SCSI μιας συσκευής, δεν έχει να κάνει με την αντίστοιχη γενική συσκευή.

Δυο ερωτήσεις μένουν: τι συμβαίνει αν αντιστοιχίσετε λάθος συσκευή; Αν δε δείξει ούτε την επιλογή "--<MANUFACTURER>" ούτε γράψει δεδομένα σε αυτήν, συνήθως ένα τυπώνεται προειδοποιητικό μήνυμα και δεν συμβαίνει και τίποτα κακό::

bash> cdwrite  --eject  --device /dev/sgb
Unknown CD-Writer; if this model is compatible with any
supported type, please use the appropriate command line
flag.

Manufacturer:  IBM
Model:         DPES-31080
Revision:      S31Q

Σε αυτήν την περίπτωση η συσκευή /dev/sbg είναι ένας σκληρός δίσκος SCSI (της IBM).

Αν γράψετε δεδομένα σε λάθος συσκευή, γράφετε πάνω από το αρχικό περιεχόμενό της και πιθανώς βλάπτετε ανεπανόρθωτα το σύστημά σας. Να προσέχετε, σε μένα το ατύχημα έχει συμβεί.

3.2 Μαζέψτε το λογισμικό

Συνήθως παίρνει περισσότερο από το αναμενόμενο. Θυμηθείτε πως αρχεία που σας λείπουν δεν μπορούν να προστεθούν αφού γραφτεί το CD. :-)

Επίσης, κρατήστε πως κάποιο ποσοστό του ελεύθερου χώρου του CD χρησιμοποιείται για να φυλάξει τις πληροφορίες του συστήματος αρχείων iso9660 (συνήθως λίγα MB).

3.3 Αποθήκευση των δεδομένων στο CD.

Ο όρος iso9660 αναφέρεται στο format με το οποίο τα δεδομένα οργανώνονται στο CD. Για να είμαι πιο ακριβής: Είναι το σύστημα αρχείων του CD.

Φυσικά, η εμφάνιση των αρχείων που αποθηκεύονται σε αυτό το format ομογενοποιείται από τον πυρήνα του Linux όπως και για κάθε άλλο σύστημα αρχείων, επίσης. Έτσι, αν προσαρτήσετε ένα CD στο δέντρο των directory, δεν θα μπορείτε να ξεχωρίσετε τα αρχεία του από άλλα αρχεία ... εκτός του γεγονότος πως δεν είναι εγγράψιμα... ακόμα και για τον root. :-)

(Ο μηχανισμός που χρησιμοποιείται για να ομογενοποιήσει την εμφάνιση των αρχείων καλείται εικονικό σύστημα αρχείων (virtual filesystem), και εν συντομία VFS.)

Τα χαρακτηριστικά του συστήματος αρχείων iso9660 δεν είναι τόσο πλούσια σε σύγκριση με αυτά του συστήματος αρχείων extended-2 που κανονικά χρησιμοποιείται από το Linux. Από την άλλη, το CD είναι εγγράψιμο μόνο μια φορά και έτσι μερικά χαρακτηριστικά δεν έχουν νόημα έτσι κι αλλιώς. Οι περιορισμοί του συστήματος αρχείων iso9660 είναι:

3.4 Δημιουργήστε ένα σύστημα αρχείων iso9660

Πριν μπορέσει να χρησιμοποιηθεί οποιοδήποτε μέσο αποθήκευσης (π.χ. μαλακός δίσκος (floppy disk), σκληρός δίσκος (harddisk) ή CD), πρέπει να αποκτήσει ένα σύστημα αρχείων (σε γλώσσα DOS : να γίνει format). Αυτό το σύστημα αρχείων είναι υπεύθυνο για την οργάνωση και ενσωμάτωση των αρχείων, που πρέπει να αποθηκευθούν στο μέσο.

Λοιπόν, ένα εγγράψιμο CD είναι εγγράψιμο μόνο μια φορά, και έτσι αν γράφαμε ένα άδειο σύστημα αρχείων σε αυτό, δεν θα γινόταν format - αλλά θα παρέμενε εντελώς άδειο για πάντα. :-)

Έτσι, αυτό που χρειαζόμαστε είναι ένα εργαλείο που δημιουργεί το σύστημα αρχείων όσο αντιγράφει τα αρχεία στο CD. Αυτό το εργαλείο λέγεται mkisofs. Μια χρήση του για λόγους επίδειξης μοιάζει με την παρακάτω:

mkisofs  -r   -o cd_image   private_collection/
              `---------'   `-----------------'
                   |               |
     γράψε την έξοδο στο    χρησιμοποίησε σαν είσοδο το directory

Η επιλογή '-r' θέτει τα δικαιώματα όλων των αρχείων στο CD ώστε να είναι αναγνώσιμα από όλους και ενεργοποιεί τις επεκτάσεις Rock Ridge. Αυτό είναι που συνήθως θέλουμε και συνιστούμε την χρήση αυτής της επιλογής μέχρι που πραγματικά να ξέρετε τι κάνετε (υπόδειξη: χωρίς την '-r' το σημείο προσάρτησης (mount-point) παίρνει δικαιώματα ιδιωτικής_συλλογής (private_collection)!).

Αν τρέχετε πυρήνα Linux πριν τον 2.0.31, θα πρέπει να προσθέσετε την επιλογή '-K' για να ξεπεράσετε ένα λάθος του κώδικα του συστήματος αρχείων. Θα χρειαστείτε την διορθωμένη έκδοση του mkisofs. Αυτή η επιλογή είναι ισοδύναμη με την επιλογή '-P' του cdwrite. Δείτε παρακαλώ τη σελίδα βοηθείας του mkisofs για λεπτομέρειες. Οι χρήστες μιας πιο πρόσφατης έκδοσης του Linux δεν χρειάζεται να ανησυχούν για τίποτα από τα παραπάνω.

Το mkisofs θα προσπαθήσει να αντιστοιχίσει όλα τα ονόματα αρχείων στο 8.3-format που χρησιμοποιείται από το DOS για να εξασφαλίσει την μεγαλύτερη δυνατή συμβατότητα. Σε περίπτωση σύγκρουσης ονοματολογίας ((διαφορετικά αρχεία έχουν το ίδιο 8.3-name), χρησιμοποιούνται αριθμοί στα ονόματα αρχείων και πληροφορίες σχετικά με το όνομα τυπώνεται στο STDERR (συνήθως στην οθόνη).

ΜΗΝ ΠΑΝΙΚΟΒΑΛΛΕΣΤΕ:

Κάτω από Linux δε θα δείτε ποτέ αυτά τα 8.3 ονόματα αρχείων, επειδή το Linux κάνει χρήση των επεκτάσεων Rock Ridge που περιέχουν την αρχική πληροφορία των αρχείων (δικαιώματα, όνομα αρχείων, κλπ.).

Τώρα μπορεί να αναρωτιέστε γιατί η έξοδος του mkisofs δε στέλνεται απευθείας στη συσκευή εγγραφής. Αυτό γίνεται για δύο λόγους:

Επειδή ο χρονισμός του CD-writer είναι ένα κρίσιμο σημείο, δεν το τροφοδοτούμε απευθείας από το mkisofs (θυμηθείτε πως το Linux δεν είναι ένα λειτουργικό σύστημα πραγματικού χρόνου (real-time operating system) και οι διεργασίες μπορεί να χρονίζονται άσχημα). Αντίθετα, συνίσταται να αποθηκεύετε την έξοδο του mkisofs σε ένα ξεχωριστό αρχείο στο σκληρό δίσκο. Αυτό το αρχείο είναι μια 1:1 εικόνα του CD και στην ουσία θα γραφτεί στο CD με το εργαλείο cdwrite σε δεύτερο βήμα.

H 1:1 εικόνα αποθηκεύεται σε ένα τεράστιο αρχείο και έτσι χρειάζεστε άλλο τόσο ελεύθερο χώρο στο δίσκο με αυτόν που το λογισμικό προς αντιγραφή ήδη χρησιμοποιεί. Αυτό είναι ένα μειονέκτημα.

Θα μπορούσατε να δημιουργήσετε μια επιπλέον κατάτμηση (partition) για αυτό και να γράψετε την εικόνα σε εκείνη την κατάτμηση αντί σε ένα αρχείο. Ψηφίζω κατά μιας τέτοιας στρατηγικής γιατί αν γράψετε σε λάθος κατάτμηση (εξαιτίας ενός τυπογραφικού λάθους), μπορεί να χάσετε εντελώς το Linux σύστημά σας. Επιπλέον, είναι μεγαλύτερη σπατάλη χώρου, γιατί το CD-image είναι προσωρινά δεδομένα που μπορούν να διαγραφούν μετά την εγγραφή του CD.

3.5 Ελέγξτε το CD-image

Το Linux έχει την δυνατότητα να προσαρτά αρχεία σαν να ήταν κατατμήσεις δίσκων. Αυτό το χαρακτηριστικό είναι χρήσιμο για να ελέγξετε την ορθότητα της δομής του καταλόγου της εικόνας του CD (CD-image). Για να προσαρτήσετε το αρχείο cd_image που δημιουργήθηκε παραπάνω στον κατάλογο /cdrom, δώστε την εντολή

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

Τώρα μπορείτε να επιθεωρήσετε τα αρχεία στο /cdrom - εμφανίζονται ακριβώς όπως αν θα ήταν πάνω σε ένα πραγματικό CD. Για να αποδεσμεύσετε το CD-image, απλά πείτε umount /cdrom. Προειδοποίηση: Αν δεν χρησιμοποιήσατε την επιλογή '-K' στο mkisofs τότε τo τελευταία αρχείο στο /cdrom μπορεί να μην είναι πλήρως αναγνώσιμο.

Σημείωση:

Μερικές αρχαίες εκδόσεις του mount δεν είναι ικανές να αντιμετωπίσουν τις loopback-devices. Αν έχετε μια τέτοια παλιά έκδοση του mount είναι μια υπόδειξη για να αναβαθμίσετε το Linux σύστημά σας.

Πολλοί άνθρωποι ήδη πρότειναν να βάλουν πληροφορίες για το πως να πάρετε τις νεότερες εφαρμογές mount σε αυτό το mini-HOWTO. Πάντα αρνούμαι. Αν η διανομή Linux σας έρχεται με ένα αρχαίο mount: αναφέρετέ το σαν πρόβλημα (bug). Αν η διανομή Linux σας δεν είναι εύκολα αναβαθμίσιμη : αναφέρετέ το σαν πρόβλημα (bug).

Αν ενσωματώσω όλες τις πληροφορίες που απαιτούνται για να ξεπεραστούν τα προβλήματα (bugs) των κακοσχεδιασμένων διανομών Linux, αυτό το mini-HOWTO θα ήταν κατά πολύ μεγαλύτερο και δυσκολότερο να διαβαστεί.

3.6 Σχόλια για τα κενά δισκάκια CD-Recordable

Το γερμανικό περιοδικό για υπολογιστές "c't" έχει μια λίστα υποδείξεων που αφορούν στα κενά CDs στο τεύχος του Νοεμβρίου 1996:

3.7 Εγγραφή του CD-image σε ένα CD

Δεν έχουν μείνει και πολλά να γίνουν. Πριν σας δείξουμε την τελευταία εντολή, αφήστε με να σας προειδοποιήσω πως τα CD-writers θέλουν να τροφοδοτούνται με μια σταθερή ροή δεδομένων επειδή έχουν μικρούς buffers δεδομένων. Έτσι, η διαδικασία της εγγραφής της εικόνας του CD στο CD δεν πρέπει να διακοπεί, σε τέτοια περίπτωση το αποτέλεσμα θα είναι ένα διαβρωμένο (χαλασμένο) CD.

Για να είσαστε σίγουρος πως τίποτα δεν θα διακόψει την διαδικασία, πετάξτε έξω όλους τους χρήστες του συστήματος και βγάλτε το καλώδιο του ethernet ... Διαβάστε το Bastard operator fromhell για να μάθετε τον σωστό τρόπο, για να κάνετε κάτι τέτοιο. ;-)

Αν είσαστε πνευματικά έτοιμοι, φορέστε μια άσπρη ρόμπα, πολλαπλασιάστε την ταυτότητα SCSI-id του CD-writer με τον αριθμό αναθεώρησης του SCSI, ανάψτε όσα πιο πολλά κεριά γίνεται, απαγγείλετε δύο στροφές από το ASR-FAQ και τελικά γράψτε:

cdwrite  --device /dev/sgd  cd_image
or
cdrecord -v speed=2 dev=4,0 cd_image

ανάλογα με το πιο λογισμικό θέλετε να χρησιμοποιήσετε. Φυσικά θα αντικαταστήσετε τη συσκευή SCSI του παραδείγματος με την συσκευή που ο εγγραφέας σας είναι συνδεδεμένος. Παρακαλώ σημειώστε πως κανένας εγγραφέας δεν μπορεί να επαναθέσει το laser του και να συνεχίσει από εκείνο το σημείο του CD, αν ενοχληθεί. Γι' αυτό, κάθε ισχυρή δόνηση ή και σοκ θα καταστρέψει παντελώς το CD που γράφετε.

3.8 Αν κάτι πάει στραβά...

... να θυμάστε πως πάντα μπορείτε να χρησιμοποιείτε τα χαλασμένα CDs σαν σουβέρ. :-)


Next Previous Contents