(Ο Αυτοκράτορας Νέρωνας για το κάψιμο των κλασσικών του CDs [AD64]. Το είχε παρεξηγήσει εντελώς).
Συνήθως η εγγραφή ενός CD κάτω από Linux γίνεται σε 2 βήματα:
mkisofs/mkhybrid
-utilitycdwrite
ή το
cdrecord
Είναι επίσης δυνατό να συνδυάσετε τα 2 βήματα μέσω διασωλήνωσης (pipe) αλλά σας αποθαρρύνουμε από το να το δοκιμάσετε γιατί δεν είναι αξιόπιστο. Δείτε παρακάτω.
[Σημειώστε : το τρέχον σχήμα ονοματολογίας των συσκευών 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).
Αν γράψετε δεδομένα σε λάθος συσκευή, γράφετε πάνω από το αρχικό περιεχόμενό της και πιθανώς βλάπτετε ανεπανόρθωτα το σύστημά σας. Να προσέχετε, σε μένα το ατύχημα έχει συμβεί.
Συνήθως παίρνει περισσότερο από το αναμενόμενο. Θυμηθείτε πως αρχεία που σας λείπουν δεν μπορούν να προστεθούν αφού γραφτεί το CD. :-)
Επίσης, κρατήστε πως κάποιο ποσοστό του ελεύθερου χώρου του CD χρησιμοποιείται για να φυλάξει τις πληροφορίες του συστήματος αρχείων iso9660 (συνήθως λίγα MB).
Ο όρος iso9660 αναφέρεται στο format με το οποίο τα δεδομένα οργανώνονται στο CD. Για να είμαι πιο ακριβής: Είναι το σύστημα αρχείων του CD.
Φυσικά, η εμφάνιση των αρχείων που αποθηκεύονται σε αυτό το format ομογενοποιείται από τον πυρήνα του Linux όπως και για κάθε άλλο σύστημα αρχείων, επίσης. Έτσι, αν προσαρτήσετε ένα CD στο δέντρο των directory, δεν θα μπορείτε να ξεχωρίσετε τα αρχεία του από άλλα αρχεία ... εκτός του γεγονότος πως δεν είναι εγγράψιμα... ακόμα και για τον root. :-)
(Ο μηχανισμός που χρησιμοποιείται για να ομογενοποιήσει την εμφάνιση των αρχείων καλείται εικονικό σύστημα αρχείων (virtual filesystem), και εν συντομία VFS.)
Τα χαρακτηριστικά του συστήματος αρχείων iso9660 δεν είναι τόσο πλούσια σε σύγκριση με αυτά του συστήματος αρχείων extended-2 που κανονικά χρησιμοποιείται από το Linux. Από την άλλη, το CD είναι εγγράψιμο μόνο μια φορά και έτσι μερικά χαρακτηριστικά δεν έχουν νόημα έτσι κι αλλιώς. Οι περιορισμοί του συστήματος αρχείων 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
δε
στέλνεται απευθείας στη συσκευή εγγραφής. Αυτό γίνεται για δύο λόγους:
mkisofs
δεν ξέρει τίποτα για τον έλεγχο των CD-writers (δες
το τμήμα 2.3.)Επειδή ο χρονισμός του CD-writer είναι ένα κρίσιμο σημείο, δεν το τροφοδοτούμε
απευθείας από το mkisofs
(θυμηθείτε πως το Linux δεν είναι ένα λειτουργικό
σύστημα πραγματικού χρόνου (real-time operating system) και οι διεργασίες μπορεί να χρονίζονται άσχημα).
Αντίθετα, συνίσταται να αποθηκεύετε την έξοδο του mkisofs
σε ένα ξεχωριστό αρχείο στο σκληρό δίσκο. Αυτό το αρχείο είναι μια 1:1 εικόνα
του CD και στην ουσία θα γραφτεί στο CD με το εργαλείο cdwrite
σε δεύτερο βήμα.
H 1:1 εικόνα αποθηκεύεται σε ένα τεράστιο αρχείο και έτσι χρειάζεστε άλλο τόσο ελεύθερο χώρο στο δίσκο με αυτόν που το λογισμικό προς αντιγραφή ήδη χρησιμοποιεί. Αυτό είναι ένα μειονέκτημα.
Θα μπορούσατε να δημιουργήσετε μια επιπλέον κατάτμηση (partition) για αυτό και να γράψετε την εικόνα σε εκείνη την κατάτμηση αντί σε ένα αρχείο. Ψηφίζω κατά μιας τέτοιας στρατηγικής γιατί αν γράψετε σε λάθος κατάτμηση (εξαιτίας ενός τυπογραφικού λάθους), μπορεί να χάσετε εντελώς το Linux σύστημά σας. Επιπλέον, είναι μεγαλύτερη σπατάλη χώρου, γιατί το CD-image είναι προσωρινά δεδομένα που μπορούν να διαγραφούν μετά την εγγραφή του CD.
Το 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 θα ήταν κατά πολύ μεγαλύτερο και δυσκολότερο να διαβαστεί.
Το γερμανικό περιοδικό για υπολογιστές "c't" έχει μια λίστα υποδείξεων που αφορούν στα κενά CDs στο τεύχος του Νοεμβρίου 1996:
Δεν έχουν μείνει και πολλά να γίνουν. Πριν σας δείξουμε την τελευταία εντολή, αφήστε με να σας προειδοποιήσω πως τα 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 που γράφετε.
... να θυμάστε πως πάντα μπορείτε να χρησιμοποιείτε τα χαλασμένα CDs σαν σουβέρ. :-)