At one point I had set up my two Sun Blade 1000s to work together for distributed compiling with Sun Studio's dmake. Doing this took a little bit of work since dmake relies on rlogin, which is disabled by default in newer versions of Solaris. This is what I did.
dmake.conf
doesn't usually exist after a fresh install of Sun Studio and must
be created in /etc/opt/SPROdmake
on each compile server. Since my systems each
had dual processors, my dmake.conf
files all only had one line and looked like
this:
max_jobs: 2
Each user who will be compiling also needs a .dmakerc
file in his or her home
directory which establishes which compile server groups should be used. In my
case, I had two compile servers, black and white which both had Sun Studio
installed in /opt/SUNWspro/bin
. This is what my .dmakerc
looked like:
group "blades" {
host black { jobs = 2, path="/opt/SUNWspro/bin" }
host white { jobs = 2, path="/opt/SUNWspro/bin" }
}
Provided the two servers, black and white, are in good communication (have
synced up /etc/host
files, /etc/passwd
, /etc/shadow
, NFS-mounted source
directories that can be seen on all compile servers (such as would be the case
on a properly set up NIS network), this will let dmake launch jobs on both black
and white at their maximum capacity (2 jobs). Also, I had Sun Studio installed
in identical locations on each machine, but these locations apparently do not
need to be the same.
One last catching point for me was getting rsh to work. At present, dmake
requires that you be able to rsh commands to all servers specified in .dmakerc
;
I do not like this as I prefer ssh, and in fact it is possible to inject
a symlink for /usr/bin/rsh
to /usr/bin/ssh
in dmake's path.
To set up rsh, first set up /etc/hosts.equiv. Mine contained:
localhost
white
black
This has to be the same on all compile servers (in my case, black and white).
The next step is to make sure the necessary services are working. Check and make sure rlogin and shell are running:
# svcs -a | grep rlogin online 17:02:14 svc:/network/login:rlogin # svcs -a | grep shell disabled 16:25:54 svc:/network/shell:default disabled 16:25:54 svc:/network/shell:kshell
It took me a while to realize that network/shell was required to use rsh (rather than rlogin, which is what rsh calls if you do not specify a command). To enable it,
# svcadm enable network/shell:default
Then dmake should work.