Sun Blade 150 not a Sun?

I have recently re-installed Solaris 10 on a Sun Blade 150 followed by a patch set (10_Recommended) dated 2011.12.05.

I have just noticed /bin/sun now returns false, rather than true. See below.

$ uname -a
SunOS myblade1 5.10 Generic_147440-07 sun4u sparc SUNW,Sun-Blade-100
$ /bin/sparc && echo 'I AM a sparc' || echo 'I am NOT a sparc'
I AM a sparc
$ /bin/sun && echo 'I AM a sun' || echo 'I am NOT a sun'
I am NOT a sun
$ /bin/sun4 && echo 'I AM a sun' || echo 'I am NOT a sun'
I am NOT a sun
$ truss /bin/sun
execve("/usr/bin/sun", 0xFFBFF9DC, 0xFFBFF9E4)  argc = 1
sysinfo(SI_MACHINE, "sun4u", 257)               = 6
mmap(0x00000000, 32, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFF3F0000
mmap(0x00000000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFF3A0000
mmap(0x00000000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFF390000
memcntl(0xFF3B0000, 17560, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
mmap(0x00000000, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFF380000
memcntl(0x00010000, 1528, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
resolvepath("/usr/lib/ld.so.1", "/lib/ld.so.1", 1023) = 12
resolvepath("/usr/bin/sun", "/usr/bin/sun", 1023) = 12
stat64("/usr/bin/sun", 0xFFBFF4A8)              = 0
open("/var/ld/ld.config", O_RDONLY)             Err#2 ENOENT
stat64("/lib/libc.so.1", 0xFFBFEC08)            = 0
resolvepath("/lib/libc.so.1", "/lib/libc.so.1", 1023) = 14
open("/lib/libc.so.1", O_RDONLY)                = 3
mmap(0x00010000, 32768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_ALIGN, 3, 0) = 0xFF370000
mmap(0x00010000, 1368064, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF200000
mmap(0xFF200000, 1245365, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF200000
mmap(0xFF342000, 35965, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 1253376) = 0xFF342000
mmap(0xFF34C000, 1616, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_ANON, -1, 0) = 0xFF34C000
munmap(0xFF332000, 65536)                       = 0
munmap(0xFF370000, 32768)                       = 0
close(3)                                        = 0
memcntl(0xFF200000, 145988, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
mmap(0x00010000, 24576, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF370000
getcontext(0xFFBFF318)
getrlimit(RLIMIT_STACK, 0xFFBFF2F8)             = 0
getpid()                                        = 1054 [1053]
setustack(0xFF372A88)
sysinfo(SI_ARCHITECTURE, "sparc", 257)          = 6
sysinfo(SI_MACHINE, "sun4u", 257)               = 6
sysinfo(SI_HW_PROVIDER, "Oracle Corporation", 257) = 19
_exit(255)
$

I have another Sun Blade 150 which has an older installation of Solaris 10 and not recently patched (we intend to do this soon). Running the same commands results in the following:

$ uname -a
SunOS myblade2 5.10 Generic_118833-03 sun4u sparc SUNW,Sun-Blade-100
$ /bin/sparc && echo 'I AM a sparc' || echo 'I am NOT a sparc'
I AM a sparc
$ /bin/sun && echo 'I AM a sun' || echo 'I am NOT a sun'
I AM a sun
$ /bin/sun4 && echo 'I AM a sun' || echo 'I am NOT a sun'
I am NOT a sun
$ truss /bin/sun
execve("/usr/bin/sun", 0xFFBFF7C4, 0xFFBFF7CC)  argc = 1
resolvepath("/usr/lib/ld.so.1", "/lib/ld.so.1", 1023) = 12
resolvepath("/usr/bin/sun", "/usr/bin/sun", 1023) = 12
stat("/usr/bin/sun", 0xFFBFF5A0)                = 0
open("/var/ld/ld.config", O_RDONLY)             Err#2 ENOENT
stat("/lib/libc.so.1", 0xFFBFF0C0)              = 0
resolvepath("/lib/libc.so.1", "/lib/libc.so.1", 1023) = 14
open("/lib/libc.so.1", O_RDONLY)                = 3
mmap(0x00010000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_ALIGN, 3, 0) = 0xFF3A0000
mmap(0x00010000, 991232, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF280000
mmap(0xFF280000, 881621, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF280000
mmap(0xFF368000, 29469, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 884736) = 0xFF368000
mmap(0xFF370000, 2592, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_ANON, -1, 0) = 0xFF370000
munmap(0xFF358000, 65536)                       = 0
memcntl(0xFF280000, 139692, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
close(3)                                        = 0
munmap(0xFF3A0000, 8192)                        = 0
mmap(0x00010000, 24576, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF3A0000
getcontext(0xFFBFF298)
getrlimit(RLIMIT_STACK, 0xFFBFF278)             = 0
getpid()                                        = 17246 [17245]
setustack(0xFF3A2088)
sysinfo(SI_ARCHITECTURE, "sparc", 257)          = 6
sysinfo(SI_MACHINE, "sun4u", 257)               = 6
sysinfo(SI_HW_PROVIDER, "Sun_Microsystems", 257) = 17
_exit(0)
$

I am guessing that it is due to call to sysinfo returning "Oracle Corporation" rather than "Sun_Microsystems" is confusing the program into returning "false" rather than "true".

Has anyone else noticed this, and if so is there a workaround?

Andrew

You are correct in your guess.

The "sun" command along with dozens of similar ones sharing the same binary has been obsoleted since the early nineties. See the machid manual page.