Tonight I was playing with trying to get ProDVD to see a dvd burner in my Solaris 10 machine tonight. The current version of Solaris 10 (06/06) has a version of cdrecord in it, but here are the notes from the what’s new page:
cdrecord, readCD, and cdda2wav Available
This device management feature is new in the Solaris 10 6/06 release.
Previously, cdrecord was available on a companion CD. In this release, cdrecord is now available in the Solaris OS. cdrecord is a powerful tool for burning CDs. cdrecord supports more burners than cdrw. cdrecord works better with USB and 1394 external burners. cdrecord is, however, limited to DVD images that are less than 2 Gbytes.
For further information, see the cdrecord, readCD, and cdda2wav man pages.
This is cool, but I did not like the last part “….limited to DVD images that are less than 2 Gbytes.” I was wanting to burn some backup DVD’s and making them less than 2 Gbytes seemed like a waste of media. So I downloaded the new version of ProDVD (from Jörg Schilling, who also wrote cdrecord). So I tried doing the following command, and it “barfed” on me:
Cdrecord-ProDVD-Clone 2.01a21 (i386-pc-solaris2.9) Copyright (C) 1995-2003 Jörg Schilling
Unlocked features: ProDVD Clone
Limited features:
This copy of cdrecord is licensed for: private/research/educational_non-commercial_use
Warning: Using USCSI interface.
./cdrecord-ProDVD: No such file or directory. Cannot open ‘/dev/rdsk/c0t0d0s2′. Cannot open SCSI driver.
./cdrecord-ProDVD: For possible targets try ‘cdrecord -scanbus’. Make sure you are root.
./cdrecord-ProDVD: For possible transport specifiers try ‘cdrecord dev=help’
Needless to say this doesn’t look good. What is interesting is if I used the bundled cdrecord from Solaris I get this:
Cdrecord-Clone 2.01 (i386-pc-solaris2.10) Copyright (C) 1995-2004 Jörg Schilling
Warning: Using USCSI interface.
Using libscg version ’schily-0.8′.
scsibus0:
0,0,0 0) ‘MATSHITA’ ‘DVD-RAM SW-9585 ‘ ‘B100′ Removable CD-ROM
0,1,0 1) *
0,2,0 2) *
0,3,0 3) *
0,4,0 4) *
0,5,0 5) *
0,6,0 6) *
0,7,0 7) *
So why does the Sun one work but the other doesn’t? Well, lets use truss to see what is happening:
execve("cdrecord-ProDVD", 0×08047BB4, 0×08047BC0) argc = 2
resolvepath("/usr/lib/ld.so.1", "/lib/ld.so.1", 1023) = 12
getcwd("/home/source", 1007) = 0
resolvepath("/home/source/cdrecord-ProDVD", "/home/source/cdrecord-ProDVD", 1023) = 34
sysconfig(_CONFIG_PAGESIZE) = 4096
xstat(2, "/home/source/cdrecord-ProDVD", 0×080479A8) = 0
open("/var/ld/ld.config", O_RDONLY) Err#2 ENOENT
xstat(2, "/tmp/schily/lib/libsocket.so.1", 0×08047240) Err#2 ENOENT
xstat(2, "/opt/schily/lib/libsocket.so.1", 0×08047240) Err#2 ENOENT
xstat(2, "../libs/i386-sunos5-cc/libsocket.so.1", 0×08047240) Err#2 ENOENT
xstat(2, "/lib/libsocket.so.1", 0×08047240) = 0
resolvepath("/lib/libsocket.so.1", "/lib/libsocket.so.1", 1023) = 19
open("/lib/libsocket.so.1", O_RDONLY) = 3
mmap(0×00010000, 4096, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_ALIGN, 3, 0) = 0xFEFC0000
mmap(0×00010000, 114688, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFEFA0000
mmap(0xFEFA0000, 43330, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFEFA0000
mmap(0xFEFBB000, 2605, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 45056) = 0xFEFBB000
munmap(0xFEFAB000, 65536) = 0
mmap(0×00000000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFEF90000
memcntl(0xFEFA0000, 11632, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
close(3) = 0
xstat(2, "/tmp/schily/lib/libnsl.so.1", 0×08047240) Err#2 ENOENT
xstat(2, "/opt/schily/lib/libnsl.so.1", 0×08047240) Err#2 ENOENT
xstat(2, "../libs/i386-sunos5-cc/libnsl.so.1", 0×08047240) Err#2 ENOENT
xstat(2, "/lib/libnsl.so.1", 0×08047240) = 0
resolvepath("/lib/libnsl.so.1", "/lib/libnsl.so.1", 1023) = 16
open("/lib/libnsl.so.1", O_RDONLY) = 3
mmap(0xFEFC0000, 4096, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFEFC0000
mmap(0×00010000, 577536, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFEF00000
mmap(0xFEF00000, 522597, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFEF00000
mmap(0xFEF80000, 19753, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 524288) = 0xFEF80000
mmap(0xFEF85000, 29920, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANON, -1, 0) = 0xFEF85000
memcntl(0xFEF00000, 57428, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
close(3) = 0
xstat(2, "/tmp/schily/lib/libdl.so.1", 0×08047240) Err#2 ENOENT
xstat(2, "/opt/schily/lib/libdl.so.1", 0×08047240) Err#2 ENOENT
xstat(2, "../libs/i386-sunos5-cc/libdl.so.1", 0×08047240) Err#2 ENOENT
xstat(2, "/lib/libdl.so.1", 0×08047240) = 0
resolvepath("/lib/libdl.so.1", "/lib/libdl.so.1", 1023) = 15
open("/lib/libdl.so.1", O_RDONLY) = 3
mmap(0xFEFC0000, 4096, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFEFC0000
close(3) = 0
xstat(2, "/tmp/schily/lib/libc.so.1", 0×08047240) Err#2 ENOENT
xstat(2, "/opt/schily/lib/libc.so.1", 0×08047240) Err#2 ENOENT
xstat(2, "../libs/i386-sunos5-cc/libc.so.1", 0×08047240) Err#2 ENOENT
xstat(2, "/lib/libc.so.1", 0×08047240) = 0
resolvepath("/lib/libc.so.1", "/lib/libc.so.1", 1023) = 14
open("/lib/libc.so.1", O_RDONLY) = 3
mmap(0×00010000, 4096, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_ALIGN, 3, 0) = 0xFEEF0000
mmap(0×00010000, 851968, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFEE10000
mmap(0xFEE10000, 751253, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFEE10000
mmap(0xFEED8000, 24239, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 753664) = 0xFEED8000
mmap(0xFEEDE000, 5656, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANON, -1, 0) = 0xFEEDE000
munmap(0xFEEC8000, 65536) = 0
memcntl(0xFEE10000, 120300, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
close(3) = 0
mmap(0×00000000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFEE00000
munmap(0xFEEF0000, 4096) = 0
mmap(0×00010000, 24576, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFEEF0000
getcontext(0×08047740)
getrlimit(RLIMIT_STACK, 0×08047738) = 0
getpid() = 4902 [4901]
lwp_private(0, 1, 0xFEEF2000) = 0×000001C3
setustack(0xFEEF2060)
sigfillset(0xFEEDE6E8) = 0
sysi86(SI86FPSTART, 0xFEEDECD8, 0×0000133F, 0×00001F80) = 0×00000001
getuid() = 0 [0]
getrlimit64(RLIMIT_NOFILE, 0×08045690) = 0
open("/etc/default/cdrecord", O_RDONLY) Err#2 ENOENT
open("/etc/default/cdrecord", O_RDONLY) Err#2 ENOENT
open("/etc/default/cdrecord", O_RDONLY) Err#2 ENOENT
ioctl(1, TCGETA, 0×08045424) = 0
fstat64(1, 0×08045390) = 0
Cdrecord-ProDVD-Clone 2.01a21 (i386-pc-solaris2.9) Copyright (C) 1995-2003 Jörg Schilling
write(1, " C d r e c o r d - P r o".., 90) = 90
Unlocked features: ProDVD Clone
write(1, " U n l o c k e d f e a".., 33) = 33
Limited features:
write(1, " L i m i t e d f e a".., 20) = 20
This copy of cdrecord is licensed for: private/research/educational_non-commercial_use
write(1, " T h i s c o p y o f".., 87) = 87
fstat64(2, 0×08045610) = 0
sigaction(SIGALRM, 0×080455F0, 0×08045670) = 0
getpid() = 4902 [4901]
getpid() = 4902 [4901]
time() = 1163908913
alarm(9) = 0
brk(0×080BB9E0) = 0
brk(0×080BD9E0) = 0
brk(0×080BD9E0) = 0
brk(0×080BF9E0) = 0
open("/dev/scg0", O_RDWR) Err#2 ENOENT
open("/dev/scg1", O_RDWR) Err#2 ENOENT
open("/dev/scg2", O_RDWR) Err#2 ENOENT
open("/dev/scg3", O_RDWR) Err#2 ENOENT
open("/dev/scg4", O_RDWR) Err#2 ENOENT
open("/dev/scg5", O_RDWR) Err#2 ENOENT
open("/dev/scg6", O_RDWR) Err#2 ENOENT
open("/dev/scg7", O_RDWR) Err#2 ENOENT
open("/dev/scg8", O_RDWR) Err#2 ENOENT
open("/dev/scg9", O_RDWR) Err#2 ENOENT
open("/dev/scg10", O_RDWR) Err#2 ENOENT
open("/dev/scg11", O_RDWR) Err#2 ENOENT
open("/dev/scg12", O_RDWR) Err#2 ENOENT
open("/dev/scg13", O_RDWR) Err#2 ENOENT
open("/dev/scg14", O_RDWR) Err#2 ENOENT
open("/dev/scg15", O_RDWR) Err#2 ENOENT
Warning: Using USCSI interface.
write(2, " W a r n i n g : U s i".., 32) = 32
open("/dev/rdsk/c0t0d0s2", O_RDONLY|O_NDELAY) Err#16 EBUSY
open("/dev/rdsk/c0t1d0s2", O_RDONLY|O_NDELAY) Err#2 ENOENT
open("/dev/rdsk/c0t2d0s2", O_RDONLY|O_NDELAY) Err#2 ENOENT
open("/dev/rdsk/c0t3d0s2", O_RDONLY|O_NDELAY) Err#2 ENOENT
open("/dev/rdsk/c0t4d0s2", O_RDONLY|O_NDELAY) Err#2 ENOENT
–Output Cut off–
Basicly all I was looking for was the open(”/dev/rdsk/c0t0d0s2…… line. Interesting the Err shows “Err #16 EBUSY”. So what the heck is using the device? (I know there is nothing in the drive.) So I did this:
Now try to run cdrecord again:
Cdrecord-ProDVD-Clone 2.01a21 (i386-pc-solaris2.9) Copyright (C) 1995-2003 J?rg Schilling
Unlocked features: ProDVD Clone
Limited features:
This copy of cdrecord is licensed for: private/research/educational_non-commercial_use
scsidev: ‘0,0,0′
scsibus: 0 target: 0 lun: 0
Warning: Using USCSI interface.
Using libscg version ’schily-0.7′
scsibus0:
0,0,0 0) ‘MATSHITA’ ‘DVD-RAM SW-9585 ‘ ‘B100′ Removable CD-ROM
0,1,0 1) *
0,2,0 2) *
0,3,0 3) *
0,4,0 4) *
0,5,0 5) *
0,6,0 6) *
0,7,0 7) *
And as my High school Chem teacher used to say “eeeeeeeeeeeeee haaaaaaaaaaa”. Now hopefully I can try burning a DVD and see if it will work.
