Here's a pretty cool tool for developers, similar to the DTrace GUI from XCode in OS X 10.5 Leopard (Instruments):
It's part of Sun Studio 12.
It's still in development, but it can be pretty useful.
Wednesday, June 25, 2008
D-Light DTrace script for Sun Studio 12 in Solaris
Posted by
cmihai
at
12:13 AM
0
comments
Labels: Debugging, Software Development, Solaris
Tuesday, June 24, 2008
Using AWK to convert UNIX passwords from HP-UX to Solaris
Converting password hashes from HP-UX 11.11 to Solaris is pretty simple if you are using UNIX crypt passwords (if HP-UX isn't a Trusted System. If it is, it will use bigcrypt passwords, > 8 characters, converting them to Solaris UNIX crypt could be problematic).
Here's the gest of it:
On the HP-UX System, we create a test user:
# useradd testNow we convert the passwd file to generate passwd entries for Solaris:
# passwd test
test
- # awk ' BEGIN { FS = ":" } { print $1":x:" $3 ":" $4 "::/export/home/" $1 ":/usr/bin/sh" }' /etc/passwd
- test:x:107:20::/export/home/test:/usr/bin/sh
And we create the shadow file entries, including the password hash:
Just add them using /usr/ucb/vipw to the password file, edit the shadow file for consistency and test. Be sure to backup the files and to test using a few users at first.
- # awk ' BEGIN { FS = ":" } { print $1":"$2"::::::" }' /etc/passwd
- test:lsDWJo7M.iAhY::::::
Mix with some shell scripting and mkdir's and you're set :-). Next time, use LDAP :P.
- $ su test
- Password:
- $ id
- uid=127(test) gid=120
- $ whoami
- test
- $ echo $HOME
- /export/home/test
- $ echo $SHELL
- /usr/bin/sh
Posted by
cmihai
at
10:49 PM
1 comments
Monday, June 23, 2008
Tru64 UNIX AdvFS open sourced
HP Tru64 UNIX's filesystem has been open sourced under a GPLv2 license.
http://advfs.sourceforge.net/
Press release here.
Documentation here.
What is it with UNIX giants making filesystems open source?
Posted by
cmihai
at
8:28 PM
1 comments
Labels: Open Source, Tru64
Sunday, June 22, 2008
Making NetBSD 4.0 and OpenBSD 4.3 install in VirtualBox
Installing NetBSD 4.0 in VirtualBox fails with:
Failed to write to file. /usr/bin/dig (or whatever) (Bad address).
To make it work disable ACPI, enable VT-x and set the IDE controller type to PIIX4.
VT-x makes all the difference for NetBSD also. Without VT-x, unpacking install sets is very slow (200kb/s). With VT-x, I get 6.42 MB/s.
Plus, it won't fail writing to files.
The same thing happens with OpenBSD, and can be fixed by using VT-x.
Posted by
cmihai
at
7:07 PM
0
comments
Labels: BSD, Virtualization
Fixing Java WebConsole ZFS Administration on Solaris Express Community Edition build 90, 91
Application Error
com.iplanet.jato.NavigationException: Exception encountered during forward
Root cause = [java.lang.IllegalArgumentException: No enum const class com.sun.zfs.common.model.AclInheritProperty$AclInherit.restricted]
Notes for application developers:
- To prevent users from seeing this error message, override the
onUncaughtException()method in the module servlet and take action specific to the application - To see a stack trace from this error, see the source for this page
Generated Sun Jun 22 14:22:44 EEST 2008
If this happens to you, you need to set acl inherit to passthrough:
# zfs set aclinherit=passthrough rpool
Now WebConsole ZFS Admin will work.
You also need to make sure the webconsole serivce is enabled before you can use it:
# svcs -a | grep webconsole
disabled 15:32:25 svc:/system/webconsole:console
# svcadm enable webconsole
# svcs -xv webconsole
svc:/system/webconsole:console (java web console)
State: online since Sun Jun 22 15:34:40 2008
See: man -M /usr/share/man -s 1M smcwebserver
See: /var/svc/log/system-webconsole:console.log
Impact: None.

When you're done using it, you should probably disable the service, as Java will eat up 100MB of memory :-). Besides, you don't really need a GUI for ZFS admin. It's just nice to show to your friends.
# svcadm disable webconsole
You should also make sure to disable webconsole in your Zones, as it serves no purpose what so ever (and it will bloat your zones by about 100MB memory usage).
Posted by
cmihai
at
2:25 PM
0
comments
Labels: OpenSolaris, Solaris
Friday, June 20, 2008
Compiling 64 bit OpenSSL and OpenSSH on Solaris with Sun Studio 12; SSH ASCII fingerprints
For building OpenSSL.
% ./config
Replace -xarch=amd64 with -m64 in the Makefile.
% gmake
# gmake install
Now build OpenSSH:
export CFLAGS=-m64
export LDFLAGS=-m64
% ./configure --with-ssl-dir=/usr/local/ssl
% make
% su
# make package
The following packages are available:
1 OpenSSH OpenSSH Portable for Solaris
(i386) OpenSSH_5.0p1
Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: Transferring
# pkgadd -d OpenSSH-OpenSSH_5.0p1-Solaris-i386.pkg
If you're using OpenSSH portable from CVS you can also enjoy the ASCII art fingerprint funtion:
ibmsolaris% ./ssh -F /etc/ssh/ssh_config 192.168.21.168
Host key fingerprint is ...
+--[ RSA]----------+
| |
| = . |
| . = F |
| + * + |
| S * . |
| o + . |
| . = o . . |
| o + . o |
| . .oo . |
+----------------------+
Just add CheckHostIP fingerprint to ssh_config.
To compile OpenSSH from CVS:
% export CVSROOT=anoncvs@anoncvs.mindrot.org:/cvs
% export CVS_RSH=/usr/bin/ssh
% cvs get openssh
# ln -s /usr/bin/automake-1.10 /usr/bin/automake
% make
% su
# make package
Posted by
cmihai
at
7:13 PM
0
comments
Labels: Open Source, OpenSolaris, Solaris
Solaris ZFS to ZFS LiveUpgrade
Regular UFS to UFS LiveUpgrade used to take a while to create the boot environment, etc. Complicated :-).
As of Solaris Express Community Edition 90, you can use LiveUpgrade with ZFS. You can also LU a UFS system to ZFS.
One of the benefits of ZFS root is the ZFS clone command (lucreate -n happens in a second):
# lucreate -n sxce91
Checking GRUB menu...
Analyzing system configuration.
No name for current boot environment.
INFORMATION: The current boot environment is not named - assigning name
Current boot environment is named
Creating initial configuration for primary boot environment
The device
PBE configuration successful: PBE name
Comparing source boot environment
system(s) you specified for the new boot environment. Determining which
file systems should be in the new boot environment.
Updating boot environment description database on all BEs.
Updating system configuration files.
Creating configuration for boot environment
Source boot environment is
Creating boot environment
Cloning file systems from boot environment
Creating snapshot for
Creating clone for
Setting canmount=noauto for
Creating snapshot for
Creating clone for
No entry for BE
Population of boot environment
Creation of boot environment
Mount the DVD image loopback:
# mkdir /mnt/iso
# lofiadm -a /export/home/cmihai/Desktop/SunDownloads/sol-nv-b91-x86-dvd.iso
/dev/lofi/1
# mount -F hsfs /dev/lofi/1 /mnt/iso
Liveupgrade:
# luupgrade -u -n sxce91 -s /mnt/iso/
No entry for BE
Copying failsafe kernel from media.
Uncompressing miniroot
Uncompressing miniroot archive (Part2)
13371 blocks
Creating miniroot device
miniroot filesystem is
Mounting miniroot at
Mounting miniroot Part 2 at
Validating the contents of the media
The media is a standard Solaris media.
The media contains an operating system upgrade image.
The media contains
Constructing upgrade profile to use.
Locating the operating system upgrade program.
Checking for existence of previously scheduled Live Upgrade requests.
Creating upgrade profile for BE
Checking for GRUB menu on ABE
Saving GRUB menu on ABE
Checking for x86 boot partition on ABE.
Determining packages to install or upgrade for BE
Performing the operating system upgrade of the BE
CAUTION: Interrupting this process may leave the boot environment unstable
or unbootable.
Upgrading Solaris: 100% completed
Installation of the packages from this media is complete.
Restoring GRUB menu on ABE
Adding operating system patches to the BE
The operating system patch installation is complete.
ABE boot partition backing deleted.
Configuring failsafe for system.
Failsafe configuration is complete.
INFORMATION: The file on boot
environment
INFORMATION: The file on boot
environment
INFORMATION: Review the files listed above. Remember that all of the files
are located on boot environment
environment
required or if additional media of the software distribution must be
installed.
The Solaris upgrade of the boot environment
Installing failsafe
Failsafe install is complete.
# luactivate sxce91
System has findroot enabled GRUB
Generating boot-sign, partition and slice information for PBE
Saving existing file in top level dataset for BE
Generating boot-sign for ABE
Saving existing file in top level dataset for BE
Generating partition and slice information for ABE
Boot menu exists.
Generating direct boot menu entries for PBE.
Generating xVM menu entries for PBE.
Generating direct boot menu entries for ABE.
Generating xVM menu entries for ABE.
GRUB menu has no default setting
No more bootadm entries. Deletion of bootadm entries is complete.
GRUB menu default setting is unchanged
Done eliding bootadm entries.
**********************************************************************
The target boot environment has been activated. It will be used when you
reboot. NOTE: You MUST NOT USE the reboot, halt, or uadmin commands. You
MUST USE either the init or the shutdown command when you reboot. If you
do not use either init or shutdown, the system will not boot using the
target BE.
**********************************************************************
In case of a failure while booting to the target BE, the following process
needs to be followed to fallback to the currently working boot environment:
1. Boot from Solaris failsafe or boot in single user mode from the Solaris
Install CD or Network.
2. Mount the Parent boot environment root slice to some directory (like
/mnt). You can use the following command to mount:
mount -Fzfs /dev/dsk/c1t0d0s0 /mnt
3. Run
environment root slice, as shown below:
/mnt/sbin/luactivate
4. luactivate, activates the previous working boot environment and
indicates the result.
5. Exit Single User mode and reboot the machine.
**********************************************************************
Modifying boot archive service
Activation of boot environment
# init 6
Posted by
cmihai
at
9:45 AM
8
comments
Labels: OpenSolaris, Solaris
Wednesday, June 18, 2008
Sun Solaris DTrace - counting page-ins
Need more details than:
% kstat -n vm | grep pgin
anonpgin 727
execpgin 0
fspgin 1012885
pgin 999385
pgpgin 1013612
anonpgin 1347
execpgin 0
fspgin 187550
pgin 46875
pgpgin 188897
22:41 <> hello, is there a way to see what processes could be causing a page-in excess?
22:43 <> dtrace pgin
As always, DTrace to the rescue :-).
cthulhu# dtrace -n pgin'{@[pid, execname] = count();}'
dtrace: description 'pgin' matched 1 probe
^C
27462 gnome-keyring-da 1
27495 wnck-applet 1
430 dbus-daemon 2
27446 gnome-session 2
27483 nautilus 4
27319 Xorg 11
Posted by
cmihai
at
10:49 PM
0
comments
Labels: OpenSolaris, Software Development, Solaris
Installing CentOS 5.1 in textmode
Need the old textmode installer? No time to kickstart?
Type
linux mem=192M noprobe
at the GRUB install prompt ;-). A system needs > 128MB RAM to install with Anaconda, but will default to the textmode installer if it has < 256MB RAM.
Posted by
cmihai
at
1:33 AM
1 comments
Labels: Linux, Open Source
Making VirtualBox work in headless mode on Solaris
If you've ran VirtualBox 1.6.2 on Solaris or OpenSolaris (SXCE anyway) you'll see something interesting happen when you run VBoxHeadless (let's say in GNU screen) and kill X :-). It will die.
cthulhu% ./VBoxHeadless -s CentOS51
VirtualBox Headless Interface 1.6.2
(C) 2008 Sun Microsystems, Inc.
All rights reserved
Listening on port 3389
X connection to :0.0 broken (explicit kill or server shutdown).
Which is kind of silly for something called "headless"...
Here's the fix:
env DISPLAY=buggerthis /opt/VirtualBox/VBoxHeadless -s SomeMachine
Now you can kill X happily.
It basically dies when :0.0 dies. Make it look for another DISPLAY, and it's fine.
Posted by
cmihai
at
1:09 AM
0
comments
Labels: OpenSolaris, Solaris, Virtualization

