ISO-FS (CDROM-Dateisystem) erzeugen: mkisofs -o outputfile.iso -R path ... Schreibt Pfade path ... nach outputfile.iso. outputfile.iso kann anschließend z.B. loopback-gemounted werden (Dateisystemspez. "iso9660"). Weglassen von "-o outputfile.iso" => File geht nach stdout "-R" bewirkt, dass dem ISO-FS Metadaten nach dem Rock-Ridge-Standard hinuzgefuegt werden. Dies ermöglicht: - lange Dateinamen (ISO9660 unterstützt nur 8.3) - uid,gid,Rechtebits - Symlinks Mit "-R" werden uid,gid, Rechtebits 1:1 von den Quellfiles übernommen. Mit "-r" statt "-R" werden die Dateien word-readable und mit uid, gid = 0,0 gespeichert (und noch einige andere Kleinigkeiten, siehe man mkisofs) Directories werden ins Root-Verz. des ISO-FS geschrieben, z.B.: mkisofs -o outputfile.iso -R /home/olaf/test/ => /home/olaf/test/ wird zum Root-Verz. des ISO-FS deshalb VARIATION: mkisofs -o outputfile.iso -R -graft-points test/=/home/olaf/test/ ... => Verz. /home/olaf/test/ wird nach /test ins ISO-FS kopiert zus. interessante Optionen (nicht getestet, siehe "man mkisofs"): -A -- CD-Titel -b Image Bootfähig machen, bezeichnet ein 1.2- 1.44- oder 2.88-MB-Floppyimage (z.B. eine lilo-Bootfloppy) -C last_sess_start,next_sess_start Fuer Multi-Session-CDs (siehe Manpage) =========== cdrecord Schreiben eines ISO-Images auf eine CDRW cdrecord -v -speed=6 dev=0,1,0 -data image.iso Oder (Multi-Session, s.u.) cdrecord -v -speed=6 -multi dev=0,1,0 -data image.iso 0,1,0 ist die SCSI-ID des Brenners (s. /proc/scsi), -v = verbose, -speed=6 stellte 6fach-Brenngeschwindigkeit ein, -data (im Ggs. zu "-audio") sagt, dass ein Datentrack geschrieben werden soll, image.iso ist das zu schreibende Image. Die SCSI-ID kann alternativ auch in der Umgebungsvariable $CDR_DEVICE stehen. Ein *nix-artiger Gerätetreiberstandard für CD-Brenner scheint nicht zu existieren; man muss dauernd direkt im Userspace mit diesen komischen SCSI-IDs herumhantieren. Und Brennprogramme (z.B. cdrecord) müssen mit UID 0 laufen. cdrecord baut folgerichtig alle Securitychecks, die normalerweise der Kernel macht, im Userspace nach (Test, ob die Real-UID des cdrecord-Prozesses die Erlaubnis hat, die iso-Files zu lesen). Generell: Eine CD enthält einen oder mehrere "Tracks". Dies können Daten- oder Audio-Tracks sein. Bei handelsüblichen Audio-CDs ist jeder Titel ein Audio-Track. Anzeigen des "Inhaltsverzeichnisses" (Auflistung der Tracks) einer CD: cdrecord -toc dev=0,1,0 ungetestet: Schreiben von Audio-Tracks cdrecord speed= dev=0,1,0 -audio file1.wav file2.wav ... (cdrecord erkennt die WAV-Files als solche (16bit/44.1kHz/stereo erforderlich) und extrahiert die reinen Audiodaten. Rohe Audio-Datenfiles ohne Header können auch übergeben werden, s. Manpage. Jede Datei wird zu einem Audio-Track) ungetestet: Pipen von mkisofs nach cdrecord (keine Erzeugung einer isofs-Datei): mkisofs -R /master/tree | cdrecord -v fs=6m speed=2 dev=0,1,0 -data - fs=6m setzt die FIFO-Schreibqueue von 4 auf 6MB hoch, um Timing-Probleme zu verhindern. Bei viel Load oder langsamer Maschine sollte man den Weg über ein explizites iso-File wählen. Blanken (Loeschen aller Tracks) einer CD-RW: cdrecord blank=fast speed=4 dev=0,1,0 Multi-Session-CDs brennen: Option "-multi" fuer cdrecord brennt die Tracks so, dass später weitere Tracks angehängt werden können. Eigentlich sollte man wohl immmer "-multi" verwenden, da damit keine Nachteile verbunden zu sein scheinen (die CDs sind trotzdem noch für CDROM/DVD-Laufwerke lesbar). TODO: Audio-CDs und Standalone-CD-Player testen. Z.B.: cdrecord -v -multi speed=6 dev=0,1,0 -data track1.iso Datentracks (ISO-Filesysteme), die in der 2ten,dritten,... Session gebrannt werden, müssen mit der mkisofs-Option "-C " erstellt werden. wird durch Aufruf von cdrecord -msinfo dev=0,1,0 gewonnen. Es werden zwei Zahlen (irgendwelche Sektornummern, siehe Manpage) ausgegeben, die mkisofs in das erzeugte Filesystems mit einpflegt. mkisofs benötigt zusätzlich das in der vorherigen Session geschriebene ISO-FS, um das neue FS damit zusammenzuführen ("mergen") zu können. Z.B.: mkisofs -o track2.iso -R -C `cdrecord -msinfo dev=0,1,0` -M track1.iso -graft-points cvsroot/=/home/olaf/cvsroot test/=/home/olaf/test cdrecord -v -multi speed=6 dev=0,1,0 -data track2.iso Die Filesysteme track1.iso und track2.iso stehen jetzt "gemerged" auf der CD. Man kann bei -M auch direkt das Brennerdevice angeben (es wird dann der zuletzt geschriebene Track ausgelesen): mkisofs -o track3.iso -R -C `cdrecord -msinfo dev=0,1,0` -M 0,1,0 -graft-points wstk/=/home/olaf/wstk-2.4 cdrecord -v -multi speed=6 dev=0,1,0 -data track3.iso Die Filesysteme track1.iso, track2.iso und track3.iso stehen jetzt "gemerged" auf der CD. Nützliche Option (ungetestet): -dummy Doku: The CD-Recorder will go through all steps of the recording process, but the laser is turned off during this procedure D.h. alle Probleme (incl. Timing, zu hohe Schreibgeschw., etc.) sollten auch hier auftreten, aber der Rohling wird nicht angerührt. =========== Tools: isoinfo -- Anschauen von ISO-Images/-Devices z.B.: isoinfo -J -l -i /dev/cdrw Inhalt von in /dev/cdrw eingelegter Joilet-CD listen isoinfo -R -l -i file.iso Inhalt von in file.iso befindlichem RockRidge-ISO-FS listen =========== TODO: cdrdao cdrdao disk-info --driver generic-mmc --device 0,1,0 ^^^^^^^^^^^^^^ --device bus,id,lun -- s. /proc/scsi CD kopieren (1:1, alle Tracks) von /dev/dvd.sg nach /dev/cdrw.sg (SCSI-Notation "x,x,x" von oben ist alternativ auch angebbar): cdrdao copy --source-device /dev/dvd.sg --device /dev/cdrw.sg --driver generic-mmc-raw --source-driver generic-mmc-raw --speed 6 (erzeugt zunächst Imagedatei im aktuellen Verzeichnis, brennt dieses dann auf die Ziel-CD. Option "--on-the-fly" piped direkt, ohne Imagedatei)