Search the FAQ Archives

3 - A - B - C - D - E - F - G - H - I - J - K - L - M
N - O - P - Q - R - S - T - U - V - W - X - Y - Z - Internet FAQ Archives

Solaris x86 FAQ 2/2

[ Usenet FAQs | Web FAQs | Documents | RFC Index | Counties ]
Archive-name: Solaris2/x86/FAQ
Posting-Frequency: quarterly
Last-modified: 2005/03/17
Version: 2.28
Copyright: Copyright 1997-2005 Dan Anderson. All rights reserved.
Maintainer: Dan Anderson <>, San Diego, California, USA

See reader questions & answers on this topic! - Help others by sharing your knowledge

(6.28) Does Solaris x86 support multiple processors?

Yes. Solaris x86 automatically detects multiple processors. The limit
is at least 8 according to the HCL and by observation. The theoretical
kernel limit (_ncp) is 21. Due to bus conflicts, there's diminishing
returns as you increase the number of procs. psrinfo(1M) will print
the status of your processors, mpstat(1M) will report the CPU usages,
and psradm(1M) can be used to take processors offline.

Some people have had problems with Solaris "seeing" the extra
processors, with at least one type of motherboard (Compaq?). They had
success with going into the BIOS utility and setting OS type to
"other" for "Solaris". With most motherboards no special BIOS settings
are required. Likewise, Solaris x86 also supports Intel's
Hyperthreading (multiple logical processors). This is because most or
all of the additional support required is in the motherboard and not

[Thanks to John Groenveld, Juergen Keil, Bob Palowoda, Bruce Alder,
and Michael VanLoon]

(6.29) How do I uncompress a .gz file?

With "gzip -d" (or gunzip, which is gzip linked to gzip). Solaris 8
has gzip. Solaris 7 or earlier does not come with gzip (it doesn't
have zip either--only unzip). Gzip is available as a pre-compiled
package from (use "pkgadd -d
packageFileName" to install) and also as a tar file (to extract, type
"uncompress gzip*Z; tar xvf gzip*.tar") at

(6.30) Why doesn't /usr/bin/cc work?

Because it's just a front-end "stub" for the unbundled C compiler sold
by Sun (SunPro C). You can also get the free GNU C compiler, gcc, in
pkg add format from various locations, including the Solaris Software
Companion CD and If you install gcc,
I recommend that you rename or compress /usr/bin/cc and softlink (ln
-s) /usr/local/bin/gcc (or /opt/sfw/bin/gcc or wherever it is) to
/usr/bin/cc. By default, Solaris comes with support tools (such as
make and libraries) in /usr/ccs/bin, /usr/ccs/lib and usr/include. If
not, add the appropriate packages. For more information, see the
"Software Development" section in Casper Dik's Solaris 2 FAQ.

(6.31) How do you get PGP 2.6.2 to compile on Solaris/x86?

PGP, or Pretty-good Privacy, is strong-encryption software for
encrypting, decrypting, and digitally-signing files and data. I would
steer clear of PGP 5 as it has compatibility problems.

First, check to see if your version of PGP 2.6.2 has a bug. In file
src/crypto.c, function make_signature_certificate(), the line: "byte .


To compile, change file makefile, at around line 116, as follows:
$(CPP) $(ASMDEF) 80386.S > _80386.s   to
$(CPP) $(ASMDEF) 80386.S | grep -v '^# ' > _80386.s
(Don't forget the leading tab character, cntl-i). Next, type: cd
rsaref/install/unix; make; cd ../../../src; make solx86gcc (if you're
using the Sun WorkShop/Sun ONE compilers, change "gcc" to "cc" and
remove "-traditional-cpp" in file makefile).

I recommend you consider using GPG instead of PGP. GPG, Gnu Privacy
Guard, is actively being maintained and is compatible with PGP. See

As a reminder, the US Government considers PGP, GPG, and other
strong-encryption software a "munition" and prohibits the export of
PGP software to countries other than the US and Canada without an
export license. Certain other governments (e.g., France or Russia)
even prohibit possession of encryption software.

To use PGP, I hightly recommend Garfinkel's book, PGP: Pretty
Good Privacy

[Makefile patch from Joe Shamblin]

(6.32) How do you connect Solaris to my cable modem?

See also the next question on RoadRunner.

At least for the the East Brunswick, NJ, servers, I had the easiest
time with DHCP (not the static setup):
/etc/hosts:    localhost    CCxxxxx-A  # where CCxxxxx-A is your hostname
    24.x.x.x      CCxxxxx-A    loghost   # where 24.x.x.x is your assigned I

    hosts:        files dns


/etc/dhcp.elx0 (empty file)

/etc/hostname.elxl0 (empty file)
    NOTE: replace "elxl0" with your NIC device name

No /etc/defaultdomain, /etc/defaultrouter, or /etc/netmasks files are
used. This info is handled by DHCP. Reboot and you're hooked up.
Here's my (partially disguised) netstat -rn and ifconfig -a outputs:
$ netstat -rn
Routing Table:
  Destination           Gateway           Flags  Ref   Use   Interface
-------------------- -------------------- ----- ----- ------ ---------
24.x.x.0               24.x.x.x            U      3      2     elxl0            24.x.x.x              U      3      0     elxl0
default              24.x.x.1              UG     0      44               UH     0     236      lo0

$ ifconfig -a
lo0: flags=849<UP,LOOPBACK,RUNNING,MULTICAST> mtu 8232
     inet netmask ff000000
elxl0: flags=4843<UP,BROADCAST,RUNNING,MULTICAST,DHCP> mtu 1500
     inet 24.x.x.x netmask ffffff00 broadcast 24.x.x.255

[Thanks to Alan Lucero.]

(6.33) How do you setup Solaris to use RoadRunner's cable modem

RoadRunner uses General Instrument's SURFboard or other cable modem
hooked up to a coax cable on one side and a straight-through Ethernet
cable on the other side. The real throughput is about 6-MB/sec. on
downlinks and 768KB/sec. on uplinks. The cable modem looks like a
router to your computer.

RoadRunner configures home systems with Dynamic Host Configuration
Protocol (DHCP), which provides the IP address, default route, and
name servers. RoadRunner only supports Windows and Macs, but it works
fine with Solaris (they just won't help you setup or diagnose Solaris
DHCP). You need Solaris 2.6 or higher for DHCP. To set it up for
Solaris, follow these steps, as root:
 1. "touch /etc/dhcp.iprb0" (replace the ".iprb0" with whatever the
    ethernet interface for your system might be, as shown by "ifconfig
 2. "cp /dev/null /etc/hostname.iprb0". You need to make *SURE* that
    this file is EMPTY - otherwise, DHCP configuration won't work.
 3. Make sure that /etc/inet/hosts only has one line in it, the one
    containing " localhost". Any other lines will be ignored,
    and any additional necessary lines will be added by the DHCP
    client at boot time.
 4. "touch /etc/notrouter" - this creates a file to tell Solaris that
    your system will not be performing routing or packet-forwarding
    duties (if that's the case in your situation). If it already
    exists, good. Leave it be. 8-)
 5. "cp /dev/null /etc/defaultrouter" - since the DHCP client software
    will automatically put the needed entries in this file, we just
    need to make sure that it exists as an empty file. If it already
    exists, rename it and create the empty file in its place.
 6. "cp /dev/null /etc/resolv.conf" - again, the necessary entries
    will be added by the DHCP client. If you already have this file,
    rename it and create an empty file in its place.
 7. Copy /etc/nsswitch.dns to /etc/nsswitch.conf to enable your
    machine to resolve addresses using DNS, the Domain Name System
    (instead of NIS). Or edit the file /etc/nsswitch.conf, and look at
    the "hosts:" line. By default, it reads "files"; change it to read
    "hosts: files dns".
Once you've performed these steps, your machine is ready to get its
networking information via DHCP. The easiest way to do this is to
reboot your machine. You will see status messages during boot about
the DHCP client, this is normal. Once the machine is booted type the
"ifconfig -a" command. You will see output similar to this:
     $ ifconfig -a
     lo0: flags=849 mtu 8232
     inet netmask ff000000
     iprb0: flags=4843 mtu 1500
     inet netmask ffffff00 broadcast
     ether 8:0:20:1b:1:72

The entry we're concerned about is iprb0 (lo0 is the dummy loopback
interface); just make sure that its configured via DHCP, and that an
IP address and broadcast address was assigned. You can also check the
/etc/resolv.conf and /etc/defaultrouter files to make sure they were
configured by the DHCP client.

Type "nslookup" to test that /etc/nsswitch.conf and
/etc/resolv.conf are setup correctly for DNS lookups. If not, they may
need to be hand-edited with values provided by your ISP. These files
are documented in nsswitch.conf(4) and resolv.conf(4). The resolv.conf
needs to have "domain" and "nameserver" lines.

Type "netstat -rn" to see if there's a "default" destination
configured in /etc/defaultrouter and type "ping" to
verify routing is OK. Use "traceroute" to diagnose
routing problems.

Type "hostname" to see if it says "unknown." If so, DHCP did not
provide a hostname. One workaround is to edit /etc/init.d/network and
replace all occurrences of "unknown" with your real hostname.

This information is adapted from Bill Bradford. Some (older)
RoadRunner setups may still require a RoadRunner login program. This
is explained in that link.

RoadRunner information is at and help is at The Unofficial RR FAQ is at

For generic cable modem information, see the e-zine article "xDSL and
cable modems" referenced in the previous question on @Home service.
The article covers instructions on enabling Solaris with a cable ISP.

(6.34) How do I force the speed and/or duplex of my network interfaces
(ndd(1M) doesn't work)?

No x86 driver can be interfaced via ndd(1M). The only way to set
speed/duplex is via the NIC's driver.conf(4). iprb(7D) on Solaris 8
suggests that you can specify speed/duplex for multiple instances via
ForceSpeedDuplex option. For other drivers, you'll need to specify
each instance per driver.conf(4). Finally, for most people,
auto-negotiating works as expected. Having to hard-code values may
indicate cabling or switch problems.

(6.35) Why can't I create a home directory under /home?

For Solaris, /home is not an on-disk file system, it is a file system
under the control of the automounter, and only the automounter can
create directories/files in it.

If you don't want the automounter to manage /home, then remove the
"/home" entry from /etc/auto_master (and issue the command "automount
-v" to force the file to be reread, or reboot).

However, the typical setup for Solaris is to locate user's home
directories in /export/home.

/home is intended to be where all users' home directories appear
regardless of which machine they are really located on--by virtue of
the automounter and auto_home map. This makes your home directory
always appear in the same place regardless of which machine you login
to, and regardless of which server the sysadmin decides to move your
home directory.

If you are not part of a network with workstations and servers, this
may look strange. If you want to, as a demonstration, you can set up a
standalone workstation to operate this way, as follows. (I'm assuming
you still have the default setup of /home under the control of the

Create a user with a home directory in /export/home, say,
/export/home/andrew, so that the directory is correctly created with
.profile, .login, etc in it.

Put the following line in /etc/auto_home:

  andrew cucumber:/export/home/andrew
(substitute your user name for 'andrew' and your hostname for
'cucumber'). If there is an "+auto_home" entry in there, comment it
out. Make the automounter reread the files: "automount -v".

You should now be able to "ls /home/andrew" and see the files there
which are in /export/home/andrew.

If you issue the command "/usr/sbin/mount -p", you will see that
/export/home/andrew has been mounted on /home/andrew (by the
automounter). Normally this would be an NFS mount to a remote server,
but in this case the system has spotted that is it attempting to NFS
mount itself and uses the loop-back filesystem instead (lofs) which
avoids the NFS overhead when the filesystem is on the same machine.

Finally, to complete the use of /home, you should change Andrew's
entry in the /etc/passwd file such that the home directory is

In a networked environment, you also need to add /export/home to the
/etc/dfs/dfstab file so that it is available for other clients to
mount. Also, the /etc/passwd file and /etc/auto_master file (and much
more besides) would be obtained using naming services from a single
networked copy, so you would only need to set this up once whatever
the size of your network, not once per workstation.

[Thanks to Andrew Gabriel]

(6.36) Is Veritas file system available for Solaris x86?

Only through NCR Corporation.
[Thanks to Bob Palowoda]

(6.37) How to I use Zip and Jazz Drives for Solaris x86?

Iomega's Zip and Jazz Drives are supported by the Solaris 8 volume
manager. For example, with a ATAPI Zip100 or Zip250 drive, run
"volcheck" and it gets mounted as /rmdisk/zip0 If that doesn't work,
see if you can mount it manually (if DOS formatted). For example:
# Master on second ATAPI controller:
/usr/sbin/mount -F pcfs /dev/dsk/c1t0d0p0:c /mnt
# Slave on first ATAPI controller:
/usr/sbin/mount -F pcfs /dev/dsk/c0t0d0p0:d /mnt

For Solaris 7 and older, Iomega has instructions on how to install and
use them at The
hardware installation is the same as for MS DOS/Windows systems. Once
installed, use the "mount" command to access the drives. See the
question below on mounting DOS filesystems.

Note that external drives with the parallel port connection are not
supported. This requires a specialized driver.

[Thanks to Chase for the s8 update]

(6.38) How to I use Linux NIC drivers for Solaris x86?

Sun has released (9/2000) a free network driver porting kit to port
Linux PCI-based network drivers to Solaris x86. The kit includes, as
examples, ported Linux drivers for the Intel EEPro100 and the Digital
"Tulip" 2104x/2114x chip (a reliable chip used by the Netgear
FA-310-TX, SMC EtherPower, Kingston EtherX, D-Link DFE, and other
lower-cost cards) For legal reasons (the Linux driver authors
complained about use of these drivers in a commercial
Product--Solaris), this kit was pulled and is no longer available.

(6.39) How to I add color to "ls" or "vi"?

For "ls" you need the GNU "fileutils" version of ls. Obtain the binary
from or compile it yourself from
source from I only use "ls" out of all the
utilities in the package and install it in /usr/local/bin/ls. I then
use this alias: alias ls='/usr/local/bin/ls --color=auto' (remove the
"=" for *csh shells).

For vi, I use vim (or gvim for X Windows). It is also available from or directly from You may need to add "syntax on" in your
$HOME/.vimrc file to enable syntax coloring.

If color output still doesn't appear, for either of these, make sure
your terminal emulator supports color (e.g., dtterm, xterm, and
gnome-terminal) and that your $TERM is set correctly. To verify you
can display color, copy, paste, and execute this line in your shell
prompt (you should see the letters "blue" highlighted in blue):
/bin/echo '\033[0m\033[01;34mblue\033[0m'

You can also get color from the tcsh builtin ls, if you use the tcsh
shell (included in Solaris 8 and later), by simply doing:
alias ls ls-F ; set color=ls-F
See the tcsh man page for details.

(6.40) How to I move the disk containing Solaris from the ATAPI
primary master controller to the secondary controller or slave
connector (or both)?

  * Move the disk with Solaris to the new location (secondary master
    controller or primary or secondary slave controller).
  * Boot from the "1 of 2" Solaris installation CDROM with "b -s"
    (without the quotes) instead of "1" or "2" when asked for the
    installation type
  * mount the root boot partition at /mnt
  * Reconfigure the device tree for Solaris 7 or earlier:
drvconfig -r /mnt/devices
devlinks -r /mnt
disks -r /mnt
  * Verify that the links /mnt/dev/dsk/c1d0s* to ../../devices/*
  * Type "rm /etc/path_to_install"   (or remove all lines but comments
    in this file)
  * Edit file /mnt/boot/solaris/bootenv.rc. For example if you're
    moving from the primary master to secondary master, change "ide@0"
    to "ide@1":
    setprop bootpath '/pci@0,0/pci-ide@4,1/ide@0/cmdk@0,0:a' to
    setprop bootpath '/pci@0,0/pci-ide@4,1/ide@1/cmdk@0,0:a'
    These paths are similar for SCSI. If an x86 boot partition was
    used, then /boot is in the list and it should be mounted first.
  * Remove the CDROM and type /usr/sbin/reboot
  * If you removed /etc/path_to_install then, at the "Booting Solaris"
    prompt, type "b -a"
  * After reboot, if all went well, the /dev.old/ and /devices.old/
    directories can be removed (be careful).
Once Solaris is on the secondary master, you must enable booting to
it. Here's three methods:
  * Change the BIOS settings to boot to D: (the secondary master)
  * Boot from the DCA diskette on A: and choose the secondary master
  * If you have Linux LILO on the primary master, you can add an entry
    to /etc/lilo.conf similar to the following (and type /sbin/lilo on
    Linux to re-read the new lilo.conf file):
# Solaris 2.7 in secondary master booted by Linux Red Hat 6.1
# /boot/chain.b simply starts the boot sector on the specified partition.
# /dev/hdc1 is the first partition on the third (hdc) disk.
other = /dev/hdc1
loader = /boot/chain.b
label = solaris
[Thanks to Michael Wang, Alexander Yu, and Laurent Blume]

(6.41) I've installed Solaris using Sun's brain dead disk slice
defaults. How do I modify my slices?

You don't. It's too late now, but you should have read the
recommendations on disk partitions and sizes in section 4 of this
FAQ. Solaris (unless you're running under Veritas) doesn't support
modifying slices without destroying data on the entire slice. Your
options are (in order of ease):
  * Reinstall and choose your own custom layout.
  * Create softlinks or local mounts to filesystems with more free
    space and move the files. E.g. for /opt:
    "mv opt/export/home" and
    "mount localhost:/export/home/opt /opt" or "ln -s /export/home/opt
  * Backup, boot install media, and run format, newfs, & restore
[Thanks to John D. Groenveld]

(6.42) How do I mirror root with Disksuite when /boot is a separate
fdisk partition?

You don't. Disksuite only supports mirroring ufs filesystems, so in
order to mirror /boot, it should be part of the root (/) slice inside
Sun's fdisk partition. Sun's default install will create a separate
10MB "x86 Boot" fdisk partition which is mounted as pcfs. If you
already have Disksuite running the solution is as follows:

Start with all the mirrors in place except for the :boot partition and
had identical layouts on both disks.
 1. Back up all my important stuff.
 2. Use metadb to delete the state db's on the Disk 1 and Disk 2 ( I
    have Disk 3 and Disk 4 for the time being).
 3. Get a tar backup of /boot directory and save it in / (root)
 4. metadetach and metaclear all the Submirror's from the Disksuite
    db's on disk 2.
 5. Recreate Disk 2 Partition table (using fdisk) to be 100% Solaris
    and rebuild Solaris Partition(Slice) table (using prtvtoc/fmthard)
 6. Re-mirror Disk 2 So it's almost identical to how it was at the
    beginning, except the x86 partition table is now one big Solaris
    partition. I.e., starting at the very beginning of the disk. This
    is very important, otherwise the bootblock installation won't
 7. Untar the boot directory tar file so now i've /boot ufs mirror
    under the / mount.
 8. Do step 4 on Disk 1.
 9. Do step 5 on Disk 1.

    ambiguous on this, but the Sunsolve doc says it must be run on
    slice 2 [it's obvious if you think about it]).

    the / fs.

[Thanks to "Nick" via John D. Groenveld]

(6.43) Is ISDN supported for Solaris x86?

ISDN is hard to setup and slow compared to cable-modem service or even
DSL. However, ISDN is popular and available in Europe. Some old
SPARCstations had ISDN support built in. However, there are no
Sun-supplied drivers other than for these machines. There are
third-party drivers for Solaris x86 from:
  * Brooktrout Technology,, for it's
    T1/E1 WAN Controller
  *, Teles for its ISDN cards.
  * Digi has ISDN drivers for its DataFire Sync 570i.
I'm sure other drivers exist. Before buying ISDN hardware, check if
they have a driver for Solaris first.

(6.44) Is there a substitute available for PRNG /dev/random for
Solaris x86?

Yes. /dev/random and /dev/random are pseudo-random number generators
(PRNG). /dev/random will wait if the entropy pool of random bits is
empty until more bits are available. /dev/urandom will not wait and
may repeat bits. PRNGs are used to implement encryption software, such
as GPG, OpenSSL, and OpenSSH. The /dev/*random pseudo-devices are
available with Solaris 9, or, for Solaris 8, with patch 112439-01 for
Intel Solaris. This patch is free and is part of the recommended patch

Free PRNG substitutes include egd and prngd. Enthropy Gathering Daemon
(egd), a /dev/random replacement, outputs randomness to a socket at
~/.gnupg/entropy. Pseudo Random Number Generator Daemon (prngd), a
/dev/urandom replacement, outputs randomness to a socket at
/var/run/egd-pool. Source and binary packages for these are available

(6.45) What are some good, easy-to-use printing solutions for Solaris?

A writeup by Carl Ehorn, below, provides a good summary.

I don't know if anyone has the same problems I did, but I recently
went looking for a good printing solution that didn't require that I
roll my own using Ghostscript and a bunch of scripts. I've done that
before, and it gets old fairly quickly.

I have a HP Deskjet 1220C, which is a color wide-carriage printer with
fairly high resolution capabilities. It can print at 600x600 DPI color
in normal modes, and can support up to 2400x2400 DPI color with HP
software. However, that software only works on Win machines, and I
don't really need that high a resolution in Solaris, as I do my
graphics processing on Win machines anyway.

My printer is hanging on an ethernet print-server box, which allows it
to be shared by any machine on the network. This works very well, and
has always worked in text modes from Solaris. But I was looking for a
Postscript solution, so that I could print PDF files, Postscript
files, and take advantage of some of the advanced formatting
capabilities that Postscript provides. It's also nice to be able to
print from a browser.

So I took a look at what's available on the web. Of course, there is
Ghostscript, Gimp-print, and other similar packages, but they require
a fair amount of work to make a seamless print solution (at least on
Solaris). So I also looked at Vividata's P-Shop, CUPS, and ESP Print
Pro. These last three are fairly low-cost solutions for a single
server, and I felt that the prices they charge would be acceptable to
me, considering the time and effort they would save.

Vividata I tried the Vividata package, and while it works fine, it did
not support any of the higher resolution modes the printer was capable
of. I should point out that Vividata is the only package I found that
had Color profile management available as an option. I didn't try
this, but it would be important if you were doing pre-press graphics
work. Vividata had a generic driver for my printer, but had not
updated it in some years, and does not seem to be interested in
providing further development for the more recent printers that have
been made. They seem to feel that if a generic PCL driver works,
that's good enough. Vividata provides Postscript Level 2 support.

CUPS I then tried the CUPS package, which is free on the web. There is
a lot of support for this system from the internet community,
including driver generators from the Gimp project. The Gimp drivers
have been reported to provide very high quality output compared to the
standard drivers, but require that you build and install a lot of
dependent packages in order to make use of these better drivers.
Again, this was looking like a lot of work to get a good package
working, and I wanted to avoid that.

The standard CUPS package had very disappointing output, and a generic
install using the recommended driver resulted in solid black pages.
Using an older, lower quality driver, I was able to obtain 300 DPI
8-bit output. While this is OK, it's not good. 8-bit color results in
a very noticeable dither in both color and grayscale output, and while
the 300 DPI text output was fine, I found that some PDF files did not
print text very well. There were artifacts, and some aliasing in the
outlines of letters. Enabling debug output from the driver resulted in
some very confusing data. It appeared that the PS-2-raster conversion
was done at 100 DPI, then the raster to PCL was scaled up to 300 DPI.
While the support staff for CUPS says that's impossible, it sure looks
that way from the debug output, and would also explain the poor text
quality from some applications.

CUPS is supported by the newsgroups and some of the same folks who
make ESP Print Pro. It supports Postscript Level 3 output.

ESP Print Pro Last of all, I tried the ESP Print Pro package. This is
an enhanced product based on CUPS, but has considerably more
printer-specific drivers available, including one for my printer. It
installs just like CUPS, and also like CUPS, is a replacement for the
LP print system that comes with Solaris and other UNIX variants. While
I had some misgivings about replacing the LP system, both CUPS and ESP
Print Pro installed easily, and with no problems.

I'm pleased to say the ESP Print Pro worked the best of all these
packages for me. I was able to set the defaults to 600x600 DPI, using
CMYK color modes, and got a very noticeable increase in the print
quality. Text is crisp as any 600 DPI laser, and I printed a 24-bit
color scan of a photograph that resulted in a very nice print. On
plain paper, the colors are not true, but are perfectly acceptable for
a draft print. Note that Windows also is unable to print accurate
colors on plain paper. This is not a fault of the software, but a
limit in the printer technology. Printing to coated photo paper would
probably provide a much more accurate print, but I did not bother to
test the ESP package in this mode, as I do photo work on Windows.
HP-supplied drivers work very well in Windows, and has full support
for the 2400 DPI mode.

With ESP Print Pro at 600 DPI, and using the CMKY color model, the
supplied Postscript test page printed well, and all signs of dithering
were gone, in both color and grayscale areas of the page. Note that
CUPS uses the same test page, so these can be compared directly to see
the differences between the packages.

I found that the native Imagetool program supplied with Solaris
crashed when trying to print my 24-bit TIFF test image, but when I
loaded the image into StarOffice's drawing program, it printed
perfectly, scaled exactly as it should have been. StarOffice sees the
new printing system with no problems, and will print to the default
printer without any required setup. While I have not done much testing
with StarOffice, I'd be surprised if it had trouble, since the TIFF
image printed correctly. As the TIFF image was a 70MB file, this
certainly is one of the more stressful ways to test, and I encountered
no problems at all.

Both CUPS and ESP Print Pro provide printer and class management using
graphic interfaces. CUPS uses Netscape, or any GUI browser, and all
administration tasks can be done from the browser, except for editing
the daemon config files. ESP uses a supplied program that presents a
GUI interface in a compact, simple to understand way, and is also easy
to use. Like CUPS (which it is based on), it does require manual
editing of the daemon config files. Any text editor will work fine for
either package.

Both CUPS and ESP Print Pro provide replacements for 'lpstat' and
associated programs, which would very much like the old ones, but tie
into the new driver system. Vividata's P-Shop uses the standard lp
system, and does not replace the existing native programs. Vividata is
the only package that I found that supports printing through SCSI
interfaces, so if you have a SCSI printer, you should certainly look
at their product first. They also support SCSI scanners, which neither
CUPS or ESP Print Pro provide.

Vividata, CUPS, and ESP Print Pro all provide "try & buy" downloads
from the web, so you can check out any package you are interested in
for a trial period at no cost. Vividata allowed me to download and
install their package twice, which was nice of them. They also provide
students will the package for free, but don't provide support on the
free version. CUPS is also free for download, and support has been
handed off to the community through a number of newsgroups. ESP
provides support for a fee, which can get expensive in a corporate
environment, but is probably in line with any other commercial package
that provides similar features.

Each of these packages has it's strong points, but for me the ESP
package seems to be the best match with my needs. Your mileage may
vary, based on your needs, the interface your printer uses, and the
drivers available for your specific printer.

I hope this information will save you time and trouble, and if you
have not already installed some kind of printing solution, will
encourage you to take advantage of these products. There seems to be
something for every budget, and the free packages available, while not
perfect, will at least get your printer functioning under Solaris.

(6.46) What is the Solaris 9 Data Encryption Supplement?

It contains kernel modules to support more flavoers of encryption for
IPsec and Kerberos. Currently, this is AES and Blowfish for IPSec and
GSS-API for Kerberos. A writeup by Carl Ehorn, below, provides a good
summary. This is available for both SPARC and Intel. It can be
exported anywhere except Burma, Cuba, Iran, Libya, North Korea, Sudan,
and Syria, plus all the parties listed on the "Denied Parties List."

(6.47) How do you mount a Solaris ISO image (with UFS filesystems) in

It's much easier to just burn the ISO image on a CDROM burner. But if
you don't want to go through that trouble or don't have a burner, try

To access the first filesystem on the ISO image, you can just mount
the ISO image file (specify the ISO filename instead of a device in
the mount command). For subsequent filesystems on the ISO image, use
the /usr/sbin/lofiadm(1M) command. This is explained in Philip Brown's
note at:   Note
that you can only mount SPARC UFS images on SPARC hardware, and Intel
UFS images on Intel hardware UFS filesystems, unfortunately, are not
architecture (byte sex) indepdendent :-(. To mount DVD, add "set
hsfs:nhsnode=7256 to /etc/system to workaround a filesystem driver

[Thanks to Philip Brown]

(6.48) Is noexec_user_stack supported in Solaris x86?

No. You can set it but it won't do anything on Intel. On SPARC, it
prevents execution of code that was placed on the stack. This is a
popular technique used to gain unauthorized root access to systems,
locally or remotely, by executing arbitrary code as root. This is
possible with poorly-written programs that have missing overflow
checks. To enable stack protection, add the following to /etc/system
and reboot:
set noexec_user_stack = 1
set noexec_user_stack_log = 1

Unfortunately it's ignored on the Intel Architecture, because it
doesn't have the concept of pages having execute permissions. (SPARC
and AMD's Opteron do, so it's possible that a future release of
Solaris x86 may support it when running on certain AMD CPU's, but not
on Intel ones.) This feature has been the default beginning with
Solaris 9.

[Thanks to Alan Coopersmith]

(6.49) How to change the audio beep frequency?

If you have a working sound card or supported USB audio output device,
add option -audiobell to Xsun. Copy /usr/dt/config/Xservers to
/etc/dt/config/Xservers and edit the last line. Use xset b or dtaudio
-beep to configure it. Without a supported sound card or for the
console, pu, for example, the following lines in some /etc/rc2.d/
startup script:

f=400 # beep frequency in Hz
echo "beep_params+4?W0t$f;.+c?W0t$f" | mdb -kwm

[Thanks to Markus Gyger]

(6.50) Is Adobe Acrobat Reader available for Solaris x86?

Yes. It's at
5.tar.gz As newer versions come available this the location may
change. For example, when 5.x is available change 4.x to 5.x.

An alternative PDF reader for S86 is XPDF. This is available on the
Solaris Companion CD and at

[Thanks to Bruce Riddle for for prodding Adobe to release the reader
for x86]

Copyright  1997 - 2005 Dan Anderson. All rights reserved.


(7.1) What can I do if Solaris won't boot?

You need to boot from your install CD. Insert the Solaris Software CD
in your CDROM drive. If your CDROM drive/bios isn't bootable, first
insert the "Device Configuration Assistant" (DCA) diskette. At the
"Boot Solaris" menu, choose "CD."

At the "Type of Installation: Interactive or Jumpstart" menu, type "b

Or, after the video configuration, network, time and date you'll
notice one of the menu's has a button: [Exit] Select Exit and, when it
asks you again "do you want to exit?," just say yes.

Once you're at the UNIX root prompt #, you can mount the boot drive
with "mount /dev/dsk/c0t0d0s0 /mnt"" and view anything wrong with the
boot drive (omit the "t0" for ATAPI).

[Modified from Bob Palowoda's Solaris 2.4 x86 FAQ]

(7.2) How do I restore the Solaris boot block without reinstalling?

This may happen when installing a boot manager that comes with another
operating system (such as LILO from Linux) or an after-market multi-OS
boot manager. These sometimes trample's active partition, which in our
case is Solaris. Also, moving the Solaris partition with a partition
manager program such as Partition Magic requires reinstalling the
Solaris boot block. Before taking these steps, first verify the
Solaris partition is active. If it isn't, just make the Solaris
partition active and reboot. Otherwise follow the steps below.

previous question, 7.1.

is /dev/rdsk/c?t?d?p? where ? is the controller #, target ID, and disk
#, and partition #. Omit "t?" for ATAPI E.g., /dev/rdsk/c0d0p0

This is VERY important; if it's wrong, you you may hose another
partition: prtvtoc /dev/rdsk/c0t0d0p0 (omit "t0" for ATAPI, always use
p0, which means the "entire drive"). The prtvtoc prints out the map
for the Solaris partition on the hard drive, if found. The partitions
shown on the output are actually "slices" within the Solaris

/sbin/fdisk -b /usr/lib/fs/ufs/mboot (raw disk dev)

E.g., for SCSI it might be:
/sbin/fdisk -b /usr/lib/fs/ufs/mboot /dev/rdsk/c0t0d0p0

(omit "t0" for ATAPI)

The Solaris Multiple Device Boot Menu should appear after rebooting.
If not, you can always to an upgrade (re-)install.

Note: This procedure does NOT make your Solaris partition active again
(sometimes needed after installing another operating system, such as
Windows, on the same disk), it just writes to your bootblock IN your
Solaris partition. To learn more about the Solaris boot process, read
the boot(1M) man page.

(7.3) What can I do during the Solaris/x86 booting sequence?

Step #1: Boot loader

If you have multiple partitions, the boot loader in the Solaris
partition will come up and ask you which partition you want to boot.
This partition must be the active partition, or at least be marked
active by a third-party boot manager before this boot loader receives
control (not all boot managers have this feature). If you don't answer
in so many seconds, it boots Solaris.

This boot manager is pretty basic. It has no customization. You can't
change the default boot partition to one other than Solaris, you can't
change the timeout value, and you can't change the partition
descriptions. But it gets the job done.

Step #2: Device Configuration Assistant (DCA)

This will ask you to press ESC if you want to change stuff. This is to
make up for the fact that x86 machines don't have a nice OpenBOOT chip
to sort out REAL "Plug and Play".

Basically, in Solaris x86, the Device Assistant seems to set up
certain things in /boot/solaris. This is so the "real" OS has some
common format to examine for devices, instead of having lots of nasty
x86 hardware specific stuff. That way, Sun can keep the main OS
somewhat hardware independent, and keep it very close to the Sparc

The "Assistant" can actually been of assistance. If you select
"partial scan", then "Device tasks", and then "View/Edit Devices", it
will tell you what Solaris THINKS your devices are, and where they are
at. Quite useful, when Solaris gets completely lost, and you're
wondering if it's your fault, or what.

Otherwise, it can give you a warm fuzzy feeling, if you select "Full
Scan", and you see all your devices properly recognized.

Step #3: OS Boot

Well, actually, the "Boot Assistant". The interface is similar, but
not identical, to SPARC Solaris' OpenBoot 'boot' command. The main
differences I notice are:

  * It's "b -r", not "boot -r", if you want to force reconfiguration.
    Why would you want to do that? Well sometimes, if your devices
    have changed a LITTLE, you might want to do this. You can also
    invoke it with a "touch /reconfigure" as root before rebooting.
  * You don't have nice device aliases like you do with Sparc
    hardware. That being said, if you do nothing, it should autoboot
    into the actual OS in a few seconds. Or you can type something
    quickly within 5 seconds, and force a "reconfiguration boot", as
    mentioned earlier.
  * The "Driver Assistant" or whatever, really looks for major
    changes, like adding or removing a card. However, if, say, you add
    another disk drive, you'll probably want to just do "b -r". Note
    that the Device Assistant will itself trigger a "b -r", after it
    has autodetected hardware changes.
Step #4: The Main OS: Solaris

You made it (I hope)!. Hopefully, you should now see a line with
"SunOS5.8" or similar in it, and a little twirly text character
spinner starting. You are now really in the classic Solaris
environment. From here on in, your experience is almost identical to
your brethren who work with SPARC Sun equipment.

To learn more about the the Solaris boot process, read the boot(1M)
man page.

[Thanks to Phil at]

(7.4) How do I logon as root if the password doesn't work anymore?

Regaining control of a Solaris x86 system where the root password has
been lost can be accomplished by the following steps. Note that any
savvy user can do this with the proper CD-ROM and diskette. Therefore,
of course, physical security of a system is important for machines
containing sensitive data.
 1. Insert installation boot diskette and installation CD-ROM for
    Solaris x86.
 2. Boot system from the installation floppy and select the CD-ROM as
    the boot device.
 3. Type "b -s" (instead of typing 1 or 2 from the menu) and it'll
    drop you straight to a root shell, #, (and you'll be in
    single-user mode).
 4. At the root prompt, #, key in the following commands, which will
    create a directory called hdrive under the /tmp directory and then
    mount the root hard drive partition under this temporary
   mkdir  /tmp/hdrive
   mount  /dev/dsk/c0t0d0s0  /tmp/hdrive #SCSI; for ATAPI, omit "t0"
 5. To use the vi editor, the TERM variable must be defined. Key in
    the following commands.
   export TERM
 6. Start vi (or some other editor) and load /tmp/hdrive/etc/shadow
   vi /tmp/hdrive/etc/shadow
 7. Change the first line of the shadow file that has the root entry
 8. Write and quit the vi editor with the "!" override command:
 9. Halt the system, remove the floppy installation diskette, and
    reboot the system:

    from the Console Login: as root with no password. Just hit enter
    for the password.

    root password and secure the system.
[Thanks to Lynn R. Francis, Texas State Technical College]

(7.5) My licensed software fails because the host ID is 0. What's

Intel processor machines don't have an IDPROM, so Sun generates a
serial number, hostid command or sysinfo()'s SI_HW_SERIAL,
pseudo-randomly during installation. The number is stored in
/kernel/misc/sysinit, whose only function, it appears, is to provide
the serial number. If serialization information is tampered or sysinit
fails to load, the host ID will be 0. If you reinstall Solaris,
sysinit will be regenerated and your host ID will change. So be
careful about reinstalling Solaris if you have licensed software that
depends on your host ID. Backup your sysinit file.

To preserve the same ID (and therefore licenses), copy file
/kernel/misc/sysinit to the replacement system. I understand the Sun
Workshop/Sun ONE compiler manual says this is allowed twice per
calendar year (please verify this yourself).

For more information, see the Sun NVRAM/hostid FAQ, available at and
elsewhere. This also has tools to fake hostids.

(7.6) How can I fix Netscape Communicator to render fonts correctly on

This problem occurs with Solaris 2.6 and Netscape Communicator 4.0x,
and has since been fixed. Apply patch 106248, which I'm told fixes
this problem. A workaround is to add the following two lines to your
~/.xinitrc file:

    xset +fp /usr/openwin/lib/X11/fonts/75dpi/
    xset fp rehash

Another workaround, if you don't have these fonts, is to go into
Netscape Preferences and change the font faces.

[Thank's to Alan Orndorff, Jeffrey Cook, and John Riddoch]

(7.7) Why doesn't Netscape run as root?

This is a bug in Netscape. Due to a Netscape 4.x bug (it thrashes the
$HOME environment variable) the X11 library cannot find root's
.Xauthority file in the root dir unless your current directory is /.

Large, complex programs (especially those taking input from & to the
Internet) should not be run as root. Experienced users and
Administrators run as root only for essential sysadmin tasks.

If you must run as root, try one of these tricks:
  * Make sure you run Netscape with a current directory of / (so that
    the relative pathname '.Xauthority' works)
  * Or start Netscape with HOME="/." (so that Netscape doesn't thrash
    the $HOME variable)
  * Or start Netscape with an environment variable
[Thanks to Juergen Keil via John Groenveld]

(7.8) I moved my PCI host adapter to another slot and the system won't

Don't move the adapter. It isn't a supported feature in Solaris and
isn't easy to recover from. If you have any choice in the matter, move
the controller back to it original slot.

The PCI device number is part of the device's basic ID, including its
child disks. If you change slots, you've effectively removed that
controller and its disks, and added an unrelated controller and disks.
You need to fix up all of the references to the old disks to point to
the new disks.

I've never come up with any strategy better than "boot, observe
failure, fix failure, reboot" for recovering from this kind of change.
For simple cases (single controller, in particular) it can be helpful
to clear /dev/dsk/* and /dev/rdsk/* and run "disks", but that is
perilous too.

Incidentally, changing motherboards is likely to trip exactly this
problem, because motherboards generally number their slots

To conclude, it's difficult and dangerous, and the general guidelines
involves fixing:

 1. /etc/vfstab or /dev or both
 2. /devices to match one another
 3. possibly removing lines from /etc/path_to_inst in order to make
    the right /devices nodes show up
The ultimate goal is to get back the same controller numbers as

[Sun FAQ 2576-02 at

(7.9) Why is Solaris always booting into the Device Configuration
Assistant (DCA)?

This is usually caused by one of the following:
  * You installed Solaris onto a disk other than the primary boot
  * You didn't remove your DCA boot diskette or if you didn't remove
    your installation CD-ROM if it's in a bootable CD-ROM drive.
  * File /boot/solaris/bootenv.rc is corrupt or truncated, usually
    after a hard reboot or reset. This file is setup and used by DCA.
    It should contain several lines.
To change or set your default boot device, See Sun FAQ 2271-02 at
http://access1.Sun.COM/cgi-bin/rinfo2html?227102.faq for
instructions. To summarize:
  * From the "Boot Solaris" screen, press F4 (Boot Tasks).
  * On the "Boot Tasks" screen, press Enter to place an "X" in front
    of "View/Edit Autoboot Settings."
  * In the "View/Edit Autoboot Settings" screen, note that the Default
    Boot Device will not be set to any valid device. Place an "X" in
    front of Set Default Boot Device and press F2 (Continue).
  * On the Set Default Boot Device screen, place an X in front of the
    correct disk and press F2 (Continue).
  * Arrow up to the Accept Settings and press Enter to mark with an
    "X". Press F2 (Continue) to return to the Boot Tasks screen.
  * Press F3 (Back). It will load appropriate drivers after which you
    will be at the Boot Solaris screen. Press F2 (Continue) to
    continue booting.

(7.10) What is the equivalent of STOP-A for Solaris x86?

>I don't think so, because Stop-A allow you to go into open boot prom
of >the SUN and on a x86 it's a different thing (BIOS) Unlike Solaris
on Sparc (where STOP-A gets you the OpenBoot prompt), there is no PROM
firmware to drop into on x86. You can boot your system under kadb and
then use a similar keystroke to drop into kadb and obtain debugging
information. To boot under kadb, type eeprom boot-file=kadb and then:
  * Prior to Solaris 8, type CTRL-ALT-d to jump into kadb
  * On Solaris 8 or later, type F1-a to jump into kadb
  * At the Solaris x86 Boot Assistant prompt type "b kadb"
You can then type, for example:
to force your system to panic and generate a crash dump (the
equivalent of "sync" at the ok prompt on SPARC).

The Device Configuration Assistant (DCA) portion of the Intel boot
process can be interrupted by hitting escape (when prompted). This (I
feel) is the Intel version of the Boot Prom Monitor. Of course, all
the commands cannot be equated apples to apples because of the
hardware differences!

If your console is a terminal, you can type "shift-break" or
"ctrl-break" or "ctrl-\" (ctrl-backslash) or "<enter>" followed by "~"
and "ctrl-break" on Solaris Sparc, but this, too, is not available for
Solaris x86.

With Solaris 8 SPARC (but not Intel), there's a new feature to allow
keyboard sequences to generate a break (bug 4147705). The 3-character
sequence is <RETURN>, ~ (tilde), ^b. Each character must be entered
between 0.5 to 2 seconds. This is enabled with the "kbd -a alternate"

Similarly a soft reset is <RETURN>, ~ (tilde), cntl-shift-R, XIR is
<RETURN>, ~ (tilde), cntl-shift-X, and Power Cycle is <RETURN>, ~
(tilde), cntl-shift-P, I believe these commands are also available
only on SPARC.

[Thanks to Ramit Luthra and Mike Shapiro]

(7.11) How can I reboot Solaris x86 without it asking me to to "press
a key" before rebooting?

This works for me, become root and type: "shutdown -i6 -g0 -y". Or:
"init 6 This is most useful when the system is remote with no console
keyboard access.

[Thanks to Charles J. Fisher]

(7.12) Help! I'm stuck in the "Boot Assistant" and can't boot. What do
I do?

If you get a message similar to: Run Error: File not found. could not
run s You probably typed "reboot -- -s" or "reboot -- -r" or similar.
This works for Solaris SPARC, but not for Solaris on Intel--it's
disastrous. It changes your "boot-file" eeprom variable to "-s", which
errors out and puts you in an endless loop in B oot Assistant.

To undo this, type the following at the Boot Assistant prompt: "b
kernel/unix" This boots with file /platform/i86/kernel/unix. If this
doesn't help, your filesystem may be hosed. In that case, you have to
reinstall. But make sure this is the case first.

(7.13) Help! I get error 2 or error 8 while applying patches. What do
I do?

Don't do anything. Error 2 means you already have the same or newer
code. Error 8 means you can't patch some optional packages that
haven't been installed, even if you did "everything plus OEM" during
the original installation. Other errors, usually from lack of disk
space, are explained in the patchadd(1M) man page.

[Thanks to Paul Karagianis]

(7.14) How do I prevent kdmconfig from running on boot up when I know
my keyboard, display, and mouse configuration has not changed?

Mike of Sun has this response (9/2002):

I recognized this as a bug that was fixed a while back, for one
instance with older ATI cards. I mentioned it to the video developer
that fixed the ATI bug and he mentioned that there is a workaround if
you see this:

This problem occurs with certain hardware (keyboards, mice, video
devices). During booting, a checksum is calculated based on some info
obtained for each device. The checksum is compared to a checksum
recorded in the OWconfig file. If the checksums don't match, kdmconfig
thinks the device may have changed, and asks the user to check it.

On systems that exhibit this problem, the device info that is
checksummed seems to change from boot to boot even though no hardware
has changed. I've seen this happen with some old ATI video cards and
some keyboards.

The easy workaround for the problem is to run kdmconfig and test and
accept the desired configuration by clicking on the "Yes" button of
the test display. Then edit the last line of the OWconfig file in
/etc/openwin/server/etc. Change the "1" to "2", so that is says:
TestedByUser="2"; This will cause kdmconfig to ignore checksum

If you are upgrading from Solaris 8 or older to Solaris 9, check the
ddxHandler line. It should say "", not
"". Otherwise, X Windows won't start (no graphics).

[Thanks to Mike Riley]

(7.15) I get this error message: "can't get local host's domain name"
or "The local host's domain name hasn't been set." What do I do?

This is a NIS message. The easiest way to fix it is to type the
following as root:
domainname; domainname >/etc/defaultdomain
(replace with your NIS domain name, which is usually the same
as the DNS domain name).

(7.16) My system doesn't boot due to superblock problems with the root
filesystem. What do I do?

Normally, you reboot in single user mode and run /usr/bin/fsck as root
and everything is OK. If you get a message about errors/problems on
/dev/dsk/c0d0s0, are told to run fsck manually in single user mode,
and get this message:
then you may be able to recover from this if the disk isn't entirely
corrupted. The superblock stores important information about the file
system. Because it is so important it is duplicated in several places.
Hopefully one of the backup superblocks isn't corrupted. To see
duplicate locations of superblock, use newfs -Nv. For example, if your
root slice is at /dev/dsk/c0d0s0, run this command:

# newfs -Nv /dev/dsk/c0d0s0 You must specify -Nv so you don't clobber
your root slice with a new filesystem. Your output should look like
# newfs -Nv /dev/dsk/c0d0s0
mkfs -F ufs -o N /dev/rdsk/c0d0s0 614880 63 16 8192 1024 16 10 60 2048 t
0 -1 8
7 n
/dev/rdsk/c0d0s0:       614880 sectors in 610 cylinders of 16 tracks, 63
     300.2MB in 39 cyl groups (16 c/g, 7.88MB/g, 3776 i/g)
super-block backups (for fsck -F ufs -o b=#) at:
 32, 16224, 32416, 48608, 64800, 80992, 97184, 113376, 129568, 145760,
 468576, 484768, 500960, 516128, 532320, 548512, 564704, 580896, 597088,

Note the numbers following "super-block backups." Use one of the
numbers in fsck (e.g., 32) and use it with the fsck -F -o b= option:
# fsck -F ufs -o b=32

"yes" and press return. You should get a FILE SYSTEM WAS MODIFIED
message. Reboot your system. If system complains about shutdown not
being found do a halt -q. Now, hopefully, your system will boot up
with out any problems.

[Thanks to Kevin Smith.]

Copyright  1997 - 2005 Dan Anderson. All rights reserved.

(8.0) X Windows

(8.1) + How do I find a Solaris video driver for my graphics card?

First look in the HCL for your release of Solaris to see if your
graphics card is supported. If it's not listed, look for a driver from
these sources:
  * Java Desktop System (JDS) for Solaris x86 comes with Xorg
    Xserver software that replaces the default Solaris XSun software.
    Xorg is based on XFree86. Xorg supports more video adapters and
    supports them better than XSun. Use /usr/X11R6/bin/xorgconfigure
    to configure Xorg, with file /etc/X11/xorg.conf
  * http://developers.Sun.COM/ may have newer drivers for your
  * Some video drivers are bundled (hidden) with Recommended Update
    Patches. For example, NVideo video driver, which supports
    everything from TNT's to GeF4's, is in the Solaris 8 Recommended
  * Consider 3rd party drivers from XiGraphics,, especially recommended if you have a laptop.
  * As an alternative, you can also use the XFree86 Video Drivers
    Porting Kit, which is actually easier to use than you may think.
    See the question below on the video drivers and porting kit.
  * Finally, if all else fails, see the question below on installing
    XFree86 on Solaris. Personally, it's a lot easier to use a card
    supported by Xsun than to install XFree86.
During installation, if you have a unsupported video card, be sure to
bypass kdmconfig with the F4 key. Also, install with the "1 of 2" CD
instead of the Webstart CD.

[Thanks to Paul Karagianis for NVida info]

(8.2)How can I use a XFree86 video driver with XSun?

You can download the Solaris XFree86 Video Drivers and Porting Kit
from Sun at
video/video-index.html The porting kit allows you to use XFree86 video
drivers for Sun's standard XSun server for Solaris x86. The porting
kit is not supported by Sun.

How easy is it to use the porting kit? I haven't had the need to use
it, but here's a quote from Johanna Doran's email to me:

I just want to offer another EASIER alternative solution for getting
XFree86 to work with Solaris: the Sun Video Drivers and Porting Kit. I
was a complete newbie when I went and installed Solaris on my Intel
box, only to find my monitor was not supported. I made SEVERAL
unsuccessful attempts to install the XFree86 drivers. Finally I ran
into someone who worked at Sun who said to try the porting kit. Got it
on the FIRST try. You download, un-zip the files, install two patches
and two packages, go to kdmconfig and voila! all the XFree drivers
appear. If none of the drivers are for your card, select the VESA
option and it works for MOST common monitors. If I had seen this
Porting Kit before and knew how EASY it was to install, I wouldn't
have gone through having to re-install Solaris. I mean EASY.

Additional drivers that were built using the porting kit and binaries
are available from:

(8.3) How do I install XFree86 on Solaris?

Why would you want to? Usually because the standard XSun server
doesn't support your graphics board or doesn't support the color depth
or resolution you wish to have or you may want OpenGL support
(available only with the Sparc version of XSun). If board support is
the only problem, please see the question above on video drivers.

Here's some notes for installing XFree86 on Solaris x86.

As a final hint, get and read the HOWTOs and books that were written
for XFree86 on Linux.

If you added virtual terminals (mentioned elsewhere in this FAQ and
only possible with Solaris 2.4 to 7), you must leave one VT open
(usually VT07); otherwise XFree86 will not run.

To install and configure XFree86:
  * Download binaries for Solaris (Intel platform) from
  * Check your platform and OS: sh -check
  * Install XFree86 with: sh
  * After the installation is complete, create your own XF86Config
    file: XFree86 -configure
  * Remove or rename your old X server: cd /usr/openwin/bin; mv X
  * Link to your new X server: ln -s /usr/X11R6/bin/X
  * Copy the default dt configuration: mkdir -p /etc/dt/config; cp
    /usr/dt/config/Xservers /etc/dt/config
  * Edit /etc/dt/config/Xservers to cause dtlogin to start XFree86
    instead of Xsun next time it loads. CDE will still run with
 # :0 Local local_uid@console root /usr/openwin/bin/Xsun :0 -nobanner
 unix:0 Local local_uid@console root /usr/X11R6/bin/X :0 -depth 16
    For 24-bit displays, "-depth 16" should be changed to "-depth 24".
    For 8-bit displays, omit "-depth 16". Use "unix:0" to cause
    dtlogin to set the DISPLAY variable to local sessions instead of
    ":0.0" and CDE will be able to connect to the local X server. For
    older XFree 3.x, use "-bpp" instead of "-depth" (which is used for
  * Edit / and change /dev/mouse to /dev/kdmouse and
    "auto" to "PS/2" (if appropriate): under section "Pointer" (or
 Section "InputDevice" # Older versions of XFree86 use "Pointer"
 Identifier "Mouse1"
 Driver     "mouse"
 Option     "Protocol" "PS/2"         # "auto" for PNP mice
 Option     "Device"   "/dev/kdmouse" # or "/dev/mouse"
    For USB mice, use something similar to the following:
Section "InputDevice"
Identifier "Mouse1"
Driver     "mouse"
Option     "Protocol"  "VUID"         # For USB mice
Option     "Device"    "/dev/mouse"
  * To test the server , run XFree86 -xf86config
  * If it works: cd /etc/X11; mv XF86Config XF86Config.old; cp XF86Config
  * After X server configuration is done, /usr/sbin/reboot. This
    verifies startup works OK.
Optional step. Once the above is working, you may add fonts from the
/usr/openwin/lib/X11/fonts/ directory to the default font path for
XFree86 server. Edit /etc/XF86Config file and add this to section
 FontPath "/usr/openwin/lib/X11/fonts/F3bitmaps/"
 FontPath "/usr/openwin/lib/X11/fonts/Type1/"
 FontPath "/usr/openwin/lib/X11/fonts/Speedo/"
 FontPath "/usr/openwin/lib/X11/fonts/misc/"
 FontPath "/usr/openwin/lib/X11/fonts/75dpi/"
 FontPath "/usr/openwin/lib/X11/fonts/100dpi/"

Aliases for CDE fonts are in the F3bitmaps directory, so you'll need
at least this line. [Warning: I have a report that adding the Openwin
fonts to the XFree86 server, as recommended here, could cause dtlogin
to fail.]

For those that use S3 Virge cards, it seems that SVGA server (the
default server for Virge cards) has problems with some chipsets. Try
using an old S3V server instead. Also, the problem with returning from
graphics to text mode seems to be present on all three servers I tried
(Xsun, SVGA and S3V).

[Thanks to Aleksandar Milivojevic, Jimmy Chang, Philip Brown, and
Joerg Niethammer]

(8.4) How do I configure 64K colors for CDE?

Solaris' kdmconfig offers only a choice of 256 or 16M colors for your
graphics board. To configure Xsun to use 16-bit color, configure using
kdmconfig for the desired resolution in 256 color mode. Note the board
line from file /etc/openwin/server/etc/OWconfig. Look in the
referenced file in directory
/usr/openwin/share/etc/devdata/SUNWaccel/boards to see if there is
support for 16-bit color mode for your card.

If your board is listed, edit file /etc/openwin/server/etc/OWconfig
and change defdepth="8" to defdepth="16" in it. Also, values for
MaxPClk for some cards are way too low in 16-bit and 24-bit modes in
file /usr/openwin/share/etc/devdata/SUNWaccel/boards. But if you want
to change this, you are doing it on your own risk. Some applications
hang on 16-bit colors.

The CDE logo that is displayed after one logs in is a bit-mapped
grayscale image(?!), but everything else should work just fine.

[Thanks to Aleksandar Milivojevic, by way of John Groenveld]

(8.5) How do I Add KDE, FVWM, GNOME, KDE or other non-CDE Window
Mangers to the dtlogin screen?

KDE The easiest way to add substitute KDE for CDE is to add an "exec
/path/to/kde" statement in your $HOME/.dtprofile file.

To add a KDE selection to the dtlogin screen (in addition to the usual
command-line, OpenWindows, or CDE choices), follow one or both of
these links:
  * written by Michael
  * written by Geoff Lane
The instructions are for FVWM, but apply to any window manager, such
as KDE, AfterStep, WindowMaker, or Enlightenment. Be aware that these
new WMs usually take a bigger memory footprint.

(8.6) Where can I get GNOME or KDE packages for Solaris/x86?

GNOME is available with Solaris 9, or the Companion CD for Solaris 8.
KDE is available with the Solaris 9 or 8 Companion CD. They are also
available on the web for download.

For information about GNOME on Solaris or for a free download, see For information on GNOME, see

For general KDE information, see When
installing KDE, make sure to install the QT library first, which is
required by KDE.

Which is better? "Religious" wars could be fought over this question.
KDE has a more familiar M$ windows-like interface, and I used to use
it. I use GNOME now since it's most easily available on both Solaris
and Linux. KDE is more mature than GNOME and more tightly integrated,
but some say GNOME is catching up. GNOME and Mozilla both use the GTK
library. The QT library, required by KDE, used to have stricter
licensing restrictions, but now it's licensed under GPL (not LGPL).
KDE is endorsed and supported by IBM, Caldera, and SuSE. GNOME is
endorsed and supported by Sun (and RedHat and HP). I recommend
installing and trying out both GNOME and KDE for a test drive. You can
have both installed at the same time and select which one to use with
dtlogin. You can also run KDE apps under GNOME and vice versa.

Sun picked GNOME over KDE because of Qt licensing issues, CORBRA in
GNOME, and because GNOME uses C and KDE uses C++ (the latter causes
name mangling problems which prevents using different C++ compilers).

(8.7) After upgrading to Solaris 9 or installing GNOME, GNOME does not
appear in the dtlogin menu. How can I fix this?

check what your LANG is set to (AFTER logging in to CDE). If it's not
"C", you need to copy the GNOME dtlogin resource files to your current
locale. Type this command, as root (1 line):
cp /usr/dt/config/C/Xresources.d/Xresource.Sun-gnome-2.0*
(where $LANG is you current locale) For example:
cp /usr/dt/config/C/Xresources.d/Xresource.Sun-gnome-2.0*

If you have trouble AFTER logging into a GNOME session, check these:
  * If you define $LD_LIBRARY_PATH, make sure /usr/lib and
    /usr/sfw/lib are at the beginning. E.g.,
  * Rename your ~/.xinitrc file to something else (e.g.,
  * Erase your GNOME configuration files: /usr/bin/gnome-cleanup
  * For more tips, see the GNOME 2.0 Desktop for the Solaris O. E.
    Troubleshooting Guide at

(8.8) Are TrueType fonts supported in Solaris?

Yes, Xsun supports them. Use the Font Administrator GUI,
/usr/dt/bin/sdtfontadm, to add them to the server's list of fonts. See

[Thanks to Tran Tran]

(8.9) How do I make XFree86 version 3.x- or XiG Xaccel 5.0.3- work
with Solaris 8?

You can't. X servers for previous versions of Solaris rely on /dev/vt*
virtual terminals, which have been of end-of-life-ed in Solaris 8 (see
an earlier question). You'll get an error message similar to:
xf86OpenConsole: Cannot determine current VT. You must upgrade to
XFree86 version 4.x or better which is currently (7/2000) available
only in source. XiG released 5.0.4 as a binary patch for its
commercial X server. See and

[Thanks to John Groenveld]

(8.10) How do I disable CDE auto-start upon booting multi-user?

Boot single-user and run dtconfig(1). That is, at the booting Solaris
prompt, type "b -s" After entering your root password, mount /usr and
run "/usr/dt/bin/dtconfig -d"

[Thanks to John Groenveld]

(8.11) How do I su(1) to another user and run an X application?

You need to set your $DISPLAY and allow others to use your console. If
you don't, you get a message like "Can't open display". By default,
only the user who logged in on console can connect to the display.

To allow another user to connect there are two ways - one easy and one
secure (unfortunately, you can't have both):

Easy: As user logged in on console run "xhost +LOCAL:" (This gives
permission to connect to the display to anyone logged in on the
machine - this includes being able to open windows, read your
keystrokes, send keystrokes, etc. Obviously not a good idea if you
have other users on the system you don't trust completely.) As any
other user logged in on the box, run "setenv DISPLAY :0" or
"DISPLAY=:0; export DISPLAY", depending on your shell type. This all
assumes you're connecting from the same host, for a remote host,
change to "xhost +other-hostname" and "setenv DISPLAY

Safe: As user logged in on console run "xauth list" Look for the line
for your hostname followed by ":0" and copy it. As the user you want
to grant access to run "xauth" and at the xauth> prompt type "add "
and paste the line you copied. Now "setenv DISPLAY hostname:0", making
sure you match the way it was listed in the line you copied and

Easier variation of safe method for special cases: If the other user
you want to access your screen is root, and your home directory is
either local or on an NFS filesystem exported with root permissions,
just have root do this:
setenv XAUTHORITY /home/myuserid/.Xauthority ; setenv DISPLAY :0
(replace "/home/myuserid" with your actual home directory).

[Thanks to Alan Coopersmith]

(8.12) Does Solaris x86 support multiple heads?

No. A commercial X server from Xi graphics,
supports multiple heads.

Dual-headed monitors will be built-in Solaris 8's Xsun (Xinerama,
X11R6.4), but that works on Sparc only, not Intel.

XFree86 does not currently support multiple heads, though the feature
is on the wish list for XFree86-4.

[Thanks to John Groenveld, Alan Coopersmith]

(8.13) How do I get my 2-button mouse to emulate 3 buttons?

In Solaris 8, "kdmconfig" will autodetect a two-button PS/2 mouse, so
you may never look in the "change pointing device" section. You need
to go in there, and change it from "PS/2 Mouse (2 Button)" to "PS/2
Mouse (2 Button+100ms 3 Button Emulation)"

[Thanks to Philip Brown]

(8.14)How do I get admintool(1M) and some other Solaris GUI's to run
with XFree86?

Some applications are configured to use Sun's proprietary F3 fonts.
The work-around is to run Sun font server, xfs(1), and to prefix
XFree86's FontPath with it.

Copyright  1997 - 2005 Dan Anderson. All rights reserved.


(9.1) Can I install Solaris x86 on a system that already has MS
Windows 9x/ME/NT/2K/XP/2003 (among other systems)?

When you run the 2.6 install program, it will ask you which partition
you wish to use. On disk1, all you need to do is to create another
partition on your existing disk. You can use Solaris boot manager to
boot Solaris x86, and MS Windows 9x/ME/NT/2K/XP/2003 (among other

To shrink an existing MS-DOS/MS Windows partition, if you need to make
room, use something like Partition Magic.

Problems have been reported inter-working with OS/2, however.
Reportedly, the order in which you install things is very important.
Solaris doesn't "share" computers and partitions really well. If you
have problems, you may need to install Solaris first, on a partition
towards the end, reinstall the boot manager and add the partition.

Other options for booting is to use System Commander (see question
below), IBM's Boot Manager (bundled with Partition Magic or OS/2),
FreeBSD's OS-BS (see question below), System Selector, or
OS-BootSelect (open source), instead of the Solaris' Boot Manager.

Mariusz Zynel has a detailed information on booting Solaris with other
operating systems at

[Thanks to Barry Katz, Brandon Hume, Joseph A. Faracchio, Joelle
Nebbe, Eugeny Kuzakov, and Sean M. Kelley]

(9.2) How can I use MS Windows' NT/2K Loader to boot Solaris/x86?

The general idea is that you copy the first sector of your native root
Solaris/x86 partition into a file in the DOS/MS Windows NT/2K
partition. Assuming you name that file something like c:\bootsect.sun
(inspired by c:\bootsect.dos) you can edit file c:\boot.ini (after
saving boot.ini to boot.old): to come up with something like this:

[boot loader]
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows NT"

The "multi(0)" means that it's an ATAPI drive and so for the ATAPI
drives, the "disk(0)" is ignored. The "rdisk(1)partition(1)" means
Solaris is on the first partition of the second drive on the first IDE

This procedure assumes that DOS and NT have been installed onto the
first ATAPI disk and Solaris/x86 or whatever have been onto the second
disk (use scsi(0) and place the SCSI ID in disk(x) for SCSI drives).
Note that in order to use the Windows NT boot loader, the NT partition
must be the active boot partition. Solaris/x86 must also be the active
boot partition, so must reside on another disk (This may be another
reason to use a commercial product, System Commander--see question

In Solaris, mount a DOS-formatted floppy (if you've converted C: to
NTFS, which isn't readable from Solaris/x86) or a HD FAT partition
(see question below), under, say, /mnt. Type:

dd if=/dev/rdsk/c0d0p0 of=/mnt/bootsect.sun bs=512 count=1
# (Note: The above is for ATAPI; use /dev/rdsk/c0t0d0p0 for SCSI.)

If the Solaris partition is on a separate drive (as in this example),
you need to modify file bootsect.sun to tell it the boot drive. The
instructions below are for Solaris 7 or earlier The bootsect.sun code
assumes the drive ID is preloaded into the x86 DL register before the
bootsect.sun is executed. This is done by the BIOS, but not the NT
loader. The easiest way to fix this is to modify the bootsect.sun code
with a binary file editor. The first instruction is a jump over the
next 4 bytes, the ASCII version ID ("P2.0" in this case). Use a binary
editor to overwrite this with a "MOV DL,0x81" instruction and some
NOPs. I.e., I changed the first six bytes in my bootsect.sun from "eb
04 50 32 2e 30" to "b2 81 90 90 90 90" (in hex) and saved it in file
bootsect.sun. Another person's bootsector began with eb 79 . . . and
he changed the first 4 bytes to b2 81 eb 77 to get it to work. Some
useful drive IDs are: 0x00 for the floppy drive, 0x80 for the 1st hard
drive, and 0x81 for the 2nd hard drive.

Reboot into NT. Copy the bootsect.sun file from the floppy to C:\, if
you haven't done so yet. Modify the DOS/NT attributes (permissions) on
boot.ini with:

attrib -s -r c:\boot.ini

Edit to add the appropriate entries from the example boot.ini above,
and restore the system and read-only file attributes:
attrib +s +r c:\boot.ini

An alternative to the Solaris "dd" command above is to use the
"postcard-ware" program BootPart 2.2 from E.g., the following
displays the partitions, then creates a boot sector file bootsect.sun
and adds "Solaris" to the NT loader menu. Edit bootsect.sun as above.

C:> bootpart.exe
C:> bootpart.exe 1 bootsect.sun Solaris

[Thanks to Krejcarek Brian Grant, Louis Lam, Matt Gillen, and Indego

(9.3) How can I use the Solaris boot manager to boot Windows NT?

 1. Create 3 PRIMARY partitions on the disk in the following order
      1. DOS FAT
      2. DOS FAT (to become NTFS)
      3. empty (to become Solaris)
 2. install DOS (or MS Windows 9x/ME/NT/2K/XP/2003) on Partition 1
 3. Then install NT on partition 2, converting to NTFS while
 4. Finally, install Solaris 2.6 on partition 3 using Solaris
Solaris boot manager will be the master boot controller, but then
choose partition 1 to boot NT (yes that is right, not 2). Then the NT
boot manager will come to life, allowing you to select either DOS
(partition 1) or NT (partition 2). Note that Solaris must be the
active partition when its booting.

[Thanks to Claude Dumas]

(9.4) How can I use System Commander to boot Solaris/x86 and other

To use System Commander to dual boot both Win NT and Solaris, make
these two configuration changes to System Commander:

all other partitions from NT and Solaris (so they can't see each
other's partitions).

 1. From main System Commander menu pick ALT-S.
 2. select "Global Settings" but *DO NOT* press enter.
 3. press "ALT-F9" which brings up an internal configuration menu.
 4. Change the "Clear Items" menu choice from "MEMORY" to "NO" or
 5. press ESC to return to main menu.

(9.5) Can I install Linux and Solaris on the same drive?

Yes, with certain precautions. Be especially careful with RedHat Linux
6.1 (see below) Unfortunately, both Solaris/x86 and Linux swap
partitions use the same ID, 0x82. So if you install Solaris on a drive
with a Linux swap partition already on it, it will install on the
Linux swap partition. You have two choices:

swap partition if you have enough memory).

latter, the install program will probably ask if you want to format
what it thinks is your Linux swap partition (and is actually your
Solaris partition) as a swap file. Be sure to not do this!

Red Hat Linux 6.1 (October 1999)

Red Hat Linux 6.1's installer automatically uses all Linux swap
partitions on all drives. Since Solaris/x86 uses the same ID, the
installer overwrites it too! This is not a problem with older versions
of RedHat Linux (as long as Linux and Solaris were on separate

Personally I don't use the installer to upgrade (I just install
individual RPMs).

Here's the summary from Red Hat 6.1 Gotchas:

Problem: Installation of Red Hat Linux 6.1 can overwrite Solaris. If
you have Solaris x86 on your machine, you will have problems with Red
Hat Linux 6.1

Fix: Solaris partitions use the same type as Linux swap partitions.
The installer will use all found swap partitions.

Currently, there are several possible work-arounds to this problem. If
Solaris is on a separate drive from the drive you wish to install Red
Hat Linux 6.1 on, please disconnect this drive.

The other workaround is to change the "Partition type" of the Solaris
partition. Before you install Red Hat Linux to another type, install
Red Hat Linux, and then change the type back to another type. This can
be accomplished by going using expert mode and choosing fdisk over
disk druid.

# fdisk /dev/hda

Command (m for help): p

Disk /dev/hda: 255 heads, 63 sectors, 784 cylinders
Units = cylinders of 16065 * 512 bytes

Device Boot    Start       End    Blocks   Id  System
/dev/hda1   *         1       345   2771181   83  Linux
/dev/hda2           346       784   3526267+   5  Extended
/dev/hda5           346       751   3261163+  83  Linux
/dev/hda6           752       784    265041   82  Linux swap

Command (m for help): t
Partition number (1-6): 6
Hex code (type L to list codes): 08
Command (m for help): w

After the install you can change the partition type to back 0x82 so
that Solaris will boot.

This "gotcha" was removed from the RedHat 6.2 list, so hopefully the
problem doesn't occur with newer versions of RedHat Linux. For more
information, see the Linux HOWTOs and LILO User Guide. For information
on installing Solaris/x86 on your second hard drive, see below.

(9.6) How can I use GRUB to boot Solaris/x86?

Here's an example for GRUB's, a GNU bootloader popular with Linux. To
use, add something like this to file /boot/grub/grub.conf:
title Solaris 9
     rootnoverify (hd0,1)
     chainloader +1

Numbers are relative to zero for GRUB. That means "hd0, 1" is the
first hard disk's second partition. "makeactive" tells GRUB to make
the Solaris partition active before booting, as Solaris won't boot if
it's partition isn't the active partition.

For more information on this and other boot loaders, see

[Thanks to Mariusz Zynel]

(9.7) How can I use LILO to boot Solaris/x86 on the primary slave

Basically, the Linux LILO boot loader is used to fool Solaris into
thinking the slave is the master and vice versa by remapping the BIOS
drive numbers (with the map-drive and to lines) Here's an example
entry in a /etc/lilo.conf file:
# /etc/lilo.conf


(use /dev/hdc instead of /dev/hdb if your second drive is the
secondary ATAPI master instead of the primary ATAPI slave drive). For
more information, see the Linux HOWTOs and LILO User Guide.

[Thanks to David Uhring and Loran Marjanski]

(9.8) How can I use OS-BS or System Selector to boot Solaris/x86?

Grab OS-BS [a free boot manager distributed with FreeBSD] from: Or (newer)

Assuming you've already got Linux installed and enough free space for
Solaris, go ahead and install the latter. Solaris then becomes the
Active partition. Follow that installation with OS-BS and configure to
"set startup id", which changes the Active partition on-the-fly.

OS-BS comes in a newer, commercial version, that I use, called System
Selector in the US, De'marreur in France, and Boot Manager elsewhere.

System Selector needs a small FAT or FAT32 partition to install on.
You also need to either boot a version of DOS or Windows to read the
install files on the CD-ROM drive. Note that this partition doesn't
need to be bootable or active--it is only used to hold files used by
System Selector. System Selector replaces the previous boot block in
the MFT and boots directly from the drive's MFT.

When System Selector's installation menu comes up, you won't see
Solaris listed among the selections under the "System" tab, as you
most other systems that may be on your system, such as Windows or
Linux. Instead, go to the "Partitions" tab and select the partition
marked "Linux Swap." This is actually the Solaris Partition (both
Solaris and Linux Swap partitions share the same code, 83 hex). Select
it and under the "Properties" tab make sure you check "Assign active
ID to this system [partition] before booting."

Update: An open-source solution, GAG, provides a graphical boot
menu which works with Solaris x86 and other Intel-based operating

(9.9) How can I boot both Solaris/x86 and Win NT on the same disk?

Here's one way of doing it. Solaris/x86 requires it's partition to be
active and uses it's own boot manager with it hard-coded to boot to
Solaris on timeouts. If you want to use NT's boot manager or default
to another operating system, it usually requires installing both
operating systems on separate disks or using a third-party product,
such as System Commander, that makes the partition "Active" on the fly
This solution, described here by Andrew Mickish, is to make a boot

Although the Solaris x86 installation manual makes it sound like all
you have to do is partition your disks to get multiple operating
systems to work, I found that this was not the case. To get a dual
boot of Solaris and NT on the same hard drive, without using the
Solaris default boot manager, you have to use a floppy boot disk to
help start one of the OSes. Here is how I got NT and Solaris working
on the same disk.

The following fdisk partitioning causes Solaris to boot from the hard
drive, yet allows you to boot to NT if you insert a floppy disk with
the NT boot loader:

 | Solaris          [Active, for Solaris]           |
 | C: PRI-DOS (FAT) [Active, for NT]                |
 | D: EXT-DOS (FAT)                                 |

Partitioning: The Solaris partition should be created during the
Solaris installation, using Solaris's FDISK. The remaining partitions
should be created during installation of NT.

Active partition: You must set the Solaris partition to be ACTIVE in
order to make it boot to Solaris. NT does not have to be active to
boot. Use a DOS boot disk with FDISK to quickly change which partition
is active.

Boot disk: After setting the NT partition to be active, you still need
the NT boot loader on a floppy disk in order to direct the PC to the
second partition. (Usually the boot loader is on the primary partition
of the hard drive, but that partition is Solaris and unreadable to
NT.) Your floppy directs the boot process to the right partition by
using a BOOT.INI file that says where the NT kernel can be found:

[boot loader]
[operating systems]
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Windows NT Workstation Version 4.00"

multi(0)disk(0)rdisk(0)partition(2)\WINNT="Windows NT Workstation Version 4.00
[VGA mode]" /basevideo /sos

Note: The numbering of partitions is one-based, so the C: partition in
the diagram above is in partition #2.

Please send comments and suggestions to

[Thanks to Andrew Mickish]

(9.10) How do I mount a DOS partition from the hard drive?

mount -F pcfs /dev/dsk/c0t0d0p0:1 /mnt # SCSI
mount -F pcfs /dev/dsk/c0d0p0:1   /mnt # ATAPI

Where c0 is the controller number.
   t0 is the target (SCSI ID number) (omit for ATAPI)
   d0 is always 0 for SCSI, the drive # for ATAPI
   p0 is the partition (p0 is the entire disk, or p1 - p4)
   /mnt is the mount point
   :1 is the logical drive (c - z or 1 - 24)

You can use the normal UNIX commands to copy files, 'cp', etc., after
that to move the data. DOS filenames are in the old 8.3 format (lower
case) for Solaris 2.5.1, in long filename format (lower case) for
Solaris 2.6, and in long filename format (mixed case, with optional
lower case only) for Solaris 7 and higher. DOS 8.3 names are in UPPER
case unless you use the "-o foldcase" option, which folds all UPPER
case and mixed case names to lower case (see man mount_pcfs(1M) for

Note: The "mount -F pcfs . . ." command won't mount a FAT16 partition
if it was fdisk-ed and format-ted with MS Windows 9x/ME/NT/2K/XP/2003
(at least for Solaris 2.6 and earlier. Any reports with Solaris 7/8?).
Use DOS 6.x. HPFS (OS/2), FAT64 (Win NT), or NTFS (Win NT/2K/XP/2003)
partitions are not mountable under Solaris at all. FAT32 (Win
9x/ME/2K/XP/2003) are mountable with Solaris 7. There's some reports
of not being able to mount FAT32 partitions if it's not the first

To mount the partitions automatically, put something like this in

#device           device         mount    FS    fsck  mount
#to mount         to fsck        point    type  pass  at boot
/dev/dsk/c0d0p0:1 -              /c       pcfs  -     yes       -
/dev/dsk/c0d1p0:1 -              /d       pcfs  -     yes       -

This mounts the DOS partitions (assuming it's the first partition) on
/c and /d, respectively, on startup. For more info, see "man pcfs"

[From Bob Palowoda's Solaris 2.4 x86 FAQ]

Note: p0 refers to the first primary partition and p1, p2, . . .
refers to the logical DOS partitions found in the extended DOS
partition. Solaris/x86 does NOT support DOS directly in the 2nd, 3rd,
or 4th primary partition of a disk. See BugID 1170107. Furthermore,
Solaris/x86 does NOT support more than one Solaris fdisk partition on
a physical disk nor more than 8 Solaris "slices" on a Solaris fdisk

[Thanks to Randy J. Parker, Norma Adamson, Rob Duarte, and Danny

(9.11) Does PartitionMagic and BootMagic understand Solaris

Yes and no. BootMagic can be setup to boot Solaris partitions, since
it dynamically marks the partition as active. The setup, however,
doesn't automatically recognize these partitions as Solaris (but as
Linux Swap partitions).

PowerQuest's PartitionMagic can copy and move Solaris Partitions, with
a low-level sector-by-sector copy. It cannot enlarge or shrink the
Solaris Partition, which actually contain multiple "slices" of various
Solaris ufs file systems. Furthermore, after a partition copy, the
boot block needs to be restored. See the question elsewhere in this
FAQ "How do I restore the Solaris boot block without reinstalling?"

Grant Chivers provides these instructions to install Solaris on a
Windows/Linux system with the PowerQuest Partition Editor:
  * Before installing Solaris use Ptedit, that comes with PowerQuest's
    Partition Magic, to write out a copy of all the data about the
    existing partitions because a Solaris install will change all
  * If there are Linux partitions (type 83) I change them to "Hidden
    ext2 partitions" (type 93), then reverse this after Solaris
    installation completed.
  * If installing Solaris to free disk space, I suggest you first
    create a partition (any type, such as OS/2) on the free disk space
    to get the hard disk data settings that will be used for the
    Solaris partition. Then delete the partition to regain free disk
    space (or use the Solaris fdisk when it prompts during install).
  * Install Solaris. Ensure that Solaris fdisk chooses the correct
    partition to format.
  * Reboot to Solaris again to finish setup, etc.
  * Reboot to DOS and run Ptedit again and adjust to previous
    configuration with the new Solaris partition being type 82.
  * Change the Linux partition back to 83 if it was changed
  * Exit System commander and use DOS fdisk to check that the original
    active partition is regained.
  * Configure your bootloader.
  * I use V-Com's System Commander as a boot menu (lilo or Ntloader
    could be used instead but they require a little more
  * Reboot and it all should work.
  * Similarly, if installing Linux with an existing Solaris partition,
    change the partition type to another type (e.g., OS/2), install
    Linux and then change the Solaris partition back to type 83.

(9.12) How do I access a DOS-format diskette from Solaris?

Using volume management, type "volcheck". This forces Solaris to poll
the diskette drive (and other drives). The diskette drive isn't polled
automatically (unlike the CD-ROM), as it would quickly wear it out.
You should see something like this typing "mount":

/floppy/unnamed_floppy on /vol/dev/diskette0/unnamed_floppy read/write
on Wed Jan 20 09:05:44 1999

To unmount using volume management, type "eject". After a message, you
can manually eject the floppy safely.

You can also mount the diskette in a similar way to hard drive
partitions without using volume management (the old way):

mount -F pcfs /dev/diskette /mnt

Don't forget to turn of the volume management before you try to do
this from the command line or you'll get a "device busy" message.
"/etc/init.d/volmgt stop" will stop the volume manager. To restart the
volume manager, "/etc/init.d/volmgt start".

[From Bob Palowoda's Solaris 2.4 x86 FAQ and Casper Dik's Solaris 2

The GNU mtools package allows access of DOS diskettes without being
root. The diskette isn't mounted, but instead special commands with
the prefix m, such as mcopy, mdir, mdel, etc. are available.

(9.13) Does Solaris mount and recognize MS Windows 9x/ME/2K/XP/2003
partitions with long file names (VFAT)?

Solaris 2.6 and above uses the "long" (VFAT) file names, but earlier
versions of Solaris use the "short" (DOS/FAT/8.3) file name (for
example, "progra~1"). Solaris 2.6 recognizes the case (e.g. "Program
Files/"), which may be optionally folded to lower case ("program
files") with the foldcase mount option. Earlier "Solari" folds DOS
file names to lower case only. VFAT refers to the file naming
convention and is completely separate from FAT16/FAT32 (see a earlier
question for that).

[Thanks to Nelson Chan]

(9.14) How can I make my Solaris files easily available to MS Windows
9x/ME/NT/2K/XP/2003 on a network?

Solaris PC NetLink provides "a complete set of Windows NT Network
Services," which includes SAMBA-type NT naming, file, print,
directory, and security services for Windows 3.11/95/98/NT clients. It
is based on Microsoft NT 4 code licensed via AT&T ("Advanced Server
for Unix"). It used to be available for Solaris/x86, but is now
available only for Sun Enterprise servers.

In any case I prefer SAMBA, a robust, open source package that
provides SMB services (aka MS Windows networking) from UNIX. This
allows LAN-Manager-type browsing and "Connect Network Drive," and
provides access to UNIX print servers. SAMBA can act as a file, print,
browser master, and WINS servers, but not as a domain controller
(that's in the works). SAMBA also serves files faster than NetLink (or
Windows, for that matter). However, NetLink implements SMB better than
SAMBA, since it uses Microsoft-licensed code, while SAMBA must
reverse-engineer the code. SAMBA is provided with Solaris 9 and later.
For the SAMBA FAQ, sources, binaries, and other information, see the
SAMBA web page at:

Sun has a commercial product, Solstice LM Manager, that works (poorly)
with MS LAN Manager/SMB and links in with NIS/DNS.

(9.15) How can I make my Solaris files easily available to an Apple
Macintosh on a network?

Upgrade to MacOS X, which has native support for NFS and Microsoft

Or use CAP, an excellent open source AppleTalk server software for
UNIX. The Columbia AppleTalk Package (CAP) implements the AppleTalk
protocol stack on UNIX The main applications provide an AppleShare 2.1
compatible server (aufs), a LaserWriter Spooler (lwsrv) and a program
to print to LaserWriters (papif). For more information, see:

(9.16) Can I use SunPCi on Solaris/x86?

No. SunPCi is an add-on card and software for Solaris on SPARC only.
SunPC emulates a PC with the card and Caldera's "DR-DOS" allowing
Windows 3.1/9x to be installed on top of it. The card has a 300 MHz
K6-2 AMD processor and RAM. It emulates hard and floppy drives, serial
ports, SuperVGA, mouse, keyboard, etc. Generally, SunPCi or it's older
cousin, SunPC, emulates the PC environment OK, although it performs
more slowly than a straight PC (your mileage may vary). Software that
requires a parallel port hardware key (dongle) won't work.

(9.17) Will Linux programs run on Solaris 2/x86?

The Lxrun program, originally written for SCO, is now available on
Solaris/x86. The Lxrun emulator allows one to execute Linux binaries,
both in ELF and a.out Linux formats. Linux ext2 read-only filesystem
support from Solaris (mount/unmount) is included with ext2fs.tar.gz.

To install, first install package SFWlxrun from the Solaris Software
Companion CD. Setup or mount a ext2fs filesystem, say at /linux (as
explained in a question below on ext2fs).

To use, run programs or shells prefixed with lxrun. For example:
$ uname -a
SunOS 5.8 Generic_108529-06 i86pc i386 i86pc
$ lxrun /linux/bin/rpm -q redhat-release
$ lxrun /linux/bin/uname -a
SunOS 5.8 Generic_108529-06 i86pc unknown

To avoid prefixing linux filenames with "/linux/" (or wherever your
ext2fs is mounted), and setup a PATHMAP file (to map Linux filenames
to Solaris names). For Sun's SFWlxrun version of lxrun, type this, as
root, to set it up:
(cd /opt/sfw/lib; cp -p PATHMAP-style2 PATHMAP)
For other builds of lxrun, PATHMAP may be at /usr/local/lxrun/PATHMAP.
The file location can also be changed with environment variable

For more information see the following links:
  * The Solaris Lxrun Technical Overview (FAQ) is at:
  * And another Sun article is at:
  * The Lxrun home page is at

(9.18) How can I get the DOS and UNIX clock to agree on Solaris/x86?

After installation, run the command /usr/sbin/rtc -z $TZ, where $TZ is
your timezone. The default root crontab runs /usr/sbin/rtc -c daily.
That way your clock will give the proper time whether you boot Solaris
or MS-DOS/MS Windows.

If you're running Windows NT and find the clock "overadjusted" twice a
year (that is, it gains or loses an extra hour), you should comment
out (with a "#") the "rtc" line in file /var/spool/cron/crontabs/root.

[Adapted from Casper Dik's Solaris 2 FAQ]

(9.19) Is Solaris x86 able to execute Solaris SPARC applications?

There's no way to run a SPARC binary on an x86 machine unless you
wrote an emulator for the SPARC CPU and ran it.

[Thanks to Doug McIntyre]

(9.20) Will my old applications from SVR3 or SCO run on Solaris 2/x86?

Solaris x86 has an emulation mode that should run the majority of
well-behaved SVR3 (including SCO UNIX), and SCO Xenix binaries. Most
SVR3 stuff appears to work under Solaris 2.4.

Applications from any other vendor's standards-conforming 386/486 SVR4
should also run. The main standard being iBCS (Intel Binary
Compatibility Standard).

However, some vendors have made incompatible changes to their SVR4
release and programs linked on those versions may not work. Future
versions of Solaris 2.x for Intel will address some/most of those
incompatibilities. UNIXWare is one of the offenders.

[From Casper Dik's Solaris 2 FAQ]

Linux binaries will run with the assistance of lxrun (see the lxrun
question above).

(9.21) Will my application from Solaris/SPARC work on Solaris/x86? I
have the source.

Yes and no. Generally applications that don't make assumptions about
computer architecture will work. That is, code shouldn't depend on
structure or union alignments, or in what order a number appears in a
word ("big endian" SPARC or "little endian" Intel). Don't use
functions labeled SPARC or x86 only in the man pages. In other words,
"well-behaved" C (or other language) programs should recompile fine.

(9.22) Can I access Solaris/x86 partitions from Linux?

Yes. Read-only access is available. You need to have Linux 2.1.x or
greater. To see if your Linux kernel recognizes Solaris partitions,
type the following on Linux: dmesg | grep solaris

You should get something like this:
 hda: hda1 hda2 <solaris: [s0] hda5 [s1] hda6 [s2] hda7 [s3] hda8
 [s5] hda9 [s6] hda10 [s7] hda11 >

This says that Solaris lives in the 2nd partition (hda2), slices 0 to


To mount a partition, type something like this:
mount -r -t ufs -o ro,ufstype=sunx86 /dev/hda5 /mnt

This will mount the root slice (s0) on /mnt read-only.

Warning: Softlinks that are relative to root (e.g., /usr/local
pointing to /local) will point to the wrong place. To avoid this
problem, change these links in Solaris to relative soft-links (e.g.,
/usr/local to ../local).

This can be automated with /etc/fstab. If you don't want the
partitions mounted at boot, add ",noauto" after "defaults,ro" (no
space). If you want non-root users to be able to mount partitions, add
",user" (careful!):

# /etc/fstab
# . . .
#Device     Mount                FS                        Fsck Mount at
#to mount   point                type Options              pass boot # Slice
/dev/hda5   /solaris             ufs  defaults,ro,ufstype=sun 0 0    # s0
/dev/hda8   /solaris/var         ufs  defaults,ro,ufstype=sun 0 0    # s6
/dev/hda9   /solaris/opt         ufs  defaults,ro,ufstype=sun 0 0    # s3
/dev/hda10  /solaris/usr         ufs  defaults,ro,ufstype=sun 0 0    # s5
/dev/hda11  /solaris/export/home ufs  defaults,ro,ufstype=sun 0 0    # s7
# Note: slice s2, by convention, indicates the whole disk

If, when you type "dmesg" above, you don't see Solaris partitions
recognized, you might have to rebuild your Linux kernel. Be sure to
specify "y" in /usr/src/linux/.config when you type "make config":

Linux 2.2 has experimental write support to Solaris partitions. If you
get this message when mounting in read-write mode: "...
ufs_read_super: fs needs fsck" then UFS function ufs_read_super
somehow decided the fs isn't clean, and therefore set the RDONLY bit.
Type something like this to re-mount in read/write mode (replace
"hda5" with your file system):
mount -o remount,rw /dev/hda5

There's another linux kernel configuration question,
CONFIG_SMD_DISKLABEL, that applies only to Sparc Solaris disks, which
are in yet another format. The answer to that question doesn't matter
for Solaris/x86 filesystems.

(9.23) Can I access Linux (ext2fs) partitions from Solaris?

Yes. The Lxrun program (see the question elsewhere above on Lxrun)
includes software for Linux ext2 read-only filesystem support from
Solaris (mount/unmount) is in file ext2fs.tar.gz.
 1. Obtain the ext2fs.tar.gz file for your version of Solaris. Note
    that this software is not supported and may contain bugs. Use at
    your own risk.
       + Solaris 10 ("Solaris Express" pre-release, 7/2004):
       + Solaris 9: ext2fs.solaris9.tar.gz,
       + Solaris 8: ext2fs.solaris8.tar.gz,
       + Solaris 7: ext2fs.solaris7.tar.gz
 2. Untar file "gzcat ext2fs*.tar.gz | tar xvf -", and either rebuild
    from source or use the prebuilt binaries (easiest).
 3. Become root and install the files under directory ext2fs/i386. by
    running "./getext2fs" as root from the source directory downloaded
 4. Install the man pages:
cp ext2fs.7fs /usr/share/man/man7fs
cp mount_ext2fs.1m /usr/share/man/man1m
 5. Make your mount point. For example: "mkdir /linux"
 6. Find your Linux partition and try and mount it. For SCSI, mount it
    similar to this:
/usr/sbin/mount -r -F ext2fs /dev/dsk/c0t0d0p1 /linux
    For ATAPI, mount it similar to this (no "t0"):
/usr/sbin/mount -r -F ext2fs /dev/dsk/c0d0p1 /linux
    "c0d0p1" indicates fdisk partition 1 (2nd partition) on disk 0 of
    ATAPI controller 0. See the question above on mounting DOS
    filesystems and the question below on decoding /dev/dsk/c* device
 7. If you installed the ext2fs correctly and specified the correct
    partition, you should see something like this from mount, modinfo,
    and ls. (My linux partition is on the 2nd disk, 3rd partition.)
# mount | grep /linux
/linux on /dev/dsk/c0d1p2 read only/setuid/dev=1980052 on Sat Mar 31 14:57 2001
# modinfo | grep ext2fs
186 fe9688f1   5e98  19   1  ext2fs (Linux Second Extended Filesystem)
# ls /linux
bin         etc         lib         proc        sbin        tmp
boot        home        lost+found  root        var         usr
dev         include     mnt
 8. Once you found and mounted the correct linux partition, add and
    add an entry to /etc/vfstab similar to one of the following. For
    SCSI, it might look like this:
    /dev/dsk/c0t0d0p1 - /linux ext2fs - no ro
    For ATAPI, it might look like this (no "t0"):
    /dev/dsk/c0d0p1 - /linux ext2fs - no ro
    (Use "yes" instead of "no" if you want it mounted automatically at
 9. Repeat for other linux filesystems, if desired.
Once you mount a ext2fs filesystem, you can execute Linux programs
using lxrun (see the question on lxrun, above).

For further information, see the ext2fs(7fs) and mount_ext2fs(1m) man
pages you installed above.

[Thanks to Pete Shanahan for the Solaris 10 port, Paul Floyd for the
Solaris 9 port, and Mike Sullivan for the Solaris 8 port. Neither I
nor they take any responsibility for errors with this software.]

(9.24) What are some books on Windows NT/Solaris integration?

The best book is, IMHO: David Gunter, Steven Burnett, and Lola Gunter,
Windows NT and UNIX Integration Guide (Osborne McGraw-Hill,
1997), ISBN 0-07882395-1,

Also see the question above on SAMBA.

(9.25) How can I view MS Word files in Solaris?

Multiple applications support viewing MS Word files. None are perfect,
as MS Word file format is a trade secret and changes constantly.

StarOffice, produced by a German subsidiary of Sun, supports MS Word,
basic PowerPoint, Excel files, and other formats. StarOffice 7 is
available for US $79.95 at computer stores and
http://www.Sun.COM/staroffice/   StarOffice is my preferred word
processor because it's available on multiple platforms, including
Solaris x86, because it has a familiar MS Office-type interface.
Educational (.EDU-affiliated) individuals can obtain StarOffice and a
number of other software packages via the EduSoft program for free.
See "Individuals" at

OpenOffice, an open-source spin-off from StarOffice, is free. It
doesn't contain some components of StarOffice (such as some fonts and
image libraries), but is perfectly acceptable for casual use. Solaris
x86 binaries are available, as are SPARC, Windows, and Linux.
Experimental "developer" Apple Mac OSx binaries are available.

AbiWord is also available for Solaris x86. AbiWord only does word
processing, but I understand it has all the basic functionality. I
have no personal experience with it however. It's available in source
form only, so you have to build it yourself (download the gcc
compiler). Good luck! If anyone has had success or experience with
AbiWord on Solaris x86, email me at <>.

Corel WordPerfect 8, although getting a little "long in the tooth"
(outdated), it is still available. WordPerfect for UNIX supports
WordPerfect, Word (old and new), HTML, RTF, FrameMaker, Applix, and
several other document formats. Price varies and it's not cheap.
There's no Sparc Intel binary available, but some people run Linux
Intel binary on Solaris using lxrun software (see elsewhere in this
fax). See

The VistaSource's Anyware Office suite can read Word files, among
other formats, as above, and comes with a spreadsheet and other
applications. I still prefer WordPerfect for word processing, but
Applix Office offers a broader array of applications. Applix Office is
also getting "long in the tooth." See

You can also try wv (free), which converts Word 8 (Office 97), but not
older, Word files to HTML. WordView is available in source form
(mostly Perl and some C) from

For the above software, more complicated Word format files cannot be
converted, especially those saved with "Quick Save" enabled. Be aware
that these office suites seem to require systems with 128MB of memory
or more to perform reasonably (in my experience).

Finally, you CAN'T use Sun's PC File Viewer. It's available (and free)
only for the SPARC-resident Solaris 2.6 PC File Viewer is Sun's
relabeled version of Inso Corp.'s (
QuickView Plus. See

(9.26) Where can I get Netscape, Mozilla, Firefox, or other web
browsers for Solaris x86?

Netscape comes with Solaris 8 and 9. For Solaris 7 or earlier or for
the "domestic" version with 128-bit (high) encryption, you can
download it from
rted/sunos551_x86/ This address changes slightly for each language and
version. Or try

Netscape is available in pkgadd/webstart formats from Sun (including
128-bit encryption) from http://www.Sun.COM/solaris/netscape/
This seems to be better integrated with Solaris (especially Java),
although they are usually a point release or two behind. There's also
a FAQ here.

Mozilla. Mozilla is like Netscape 7 (which is based on Mozilla), but
more cutting-edge (and slightly more buggy), but I prefer it. Mozilla
Firefox is like Mozilla, but with only the web browser. The email
client is split off to Thunderbird. Mozilla and Firefox allows you to
disable pop-up ads, and has tabs and other modern features. Mozilla is
missing a spell checker. Solaris x86 binaries are from Sun at and For troubleshooting tips with
Solaris Mozilla, see

(9.27) How do I setup Xprint for Mozilla?

Most recent builds of Mozilla for Solaris require a Xprint server to
be running before you can print from Mozilla. This is true if you get
a message saying no Xprint servers were found when you try to print.
To enable Xprint, I added these lines in my .profile shell
initialization file:
MYXPRINTDISPLAY=1956 # Random unused port--change if not working.
/usr/openwin/bin/Xprt :$MYXPRINTDISPLAY & # Exits if already running on display
XPSERVERLIST="localhost:$MYXPRINTDISPLAY" # Let Mozilla know the display #

Also, change default-printer-resolution from 300 to 600 (or higher) in
file /usr/openwin/server/etc/XpConfig/C/print/attributes/document if
the printer output is too small.

(9.28) Can I mount other ufs disks, say from BSDi/FreeBSD, and vice

Maybe. First, although Solaris, BSDi, FreeBSD, and NetBSD share a
common-heritage file system, the Berkeley-style ufs, Solaris has made
extensions. The 32-bit UID field has been modified in Solaris to be a
pointer to a parallel "Shadow inode" with Solaris ACL information.
Also, the superblock has an additional inode field in Solaris and 2
fields have different byte swappings.

Reportedly, you can mount, say, zip disks from FreeBSD, on Solaris by
doing a fsck on them before mounting. Fsck makes these fields Solaris-
compatible. Your mileage may vary and you should test this (in both
directions) before trying this on live data.

(9.29) How can I use a disk partition on Solaris 2.x which was
previously dedicated to MS Windows 9x/ME/NT/2K/XP/2003 (or other OS)
as dual boot?

On Solaris 2.x, use fdisk to find your disk partition table. For
example, on an ATAPI drive,
# fdisk /dev/rdsk/c0d0p0
would show something like the following:
Total disk size is 524 cylinders
Cylinder size is 16065 (512 byte) blocks
Partition   Status    Type          Start   End   Length    %
=========   ======    ============  =====   ===   ======   ===
1                     Solaris           0   260     261     50
2           Active    Solaris         261   522     262     50

Where "Partition 1" was used for Windows 95. It was deleted and
recreated with "Solaris" type.

Make a ufs filesystem on the partition. (You can not subdivide this
fdisk partition into Solaris slices). For example,
# mkfs -F ufs /dev/rdsk/c0d0p1 4192965
where number 4192965 = 261 * 16065 is the total number of blocks on
this partition, calculated as the cylinder length on this partition
(261 from the above partition table) times the cylinder size (16065
blocks as shown in the header of the partition table.)

Mount the filesystem as usual. For example:
# mount /dev/dsk/c0d0p1 /export/home

[Thanks to Michael Wang. Reference: Sun Microsystems INFODOC ID:

(9.30) How can I convert a DOS/Windows text file to a Unix text file?

Use these Solaris commands:
dos2unix <dosformatfile> <unixformatfile>
unix2dos <unixformatfile> <dosformatfile>
The former removes the ^M and ^Z characters and the latter adds them.
See man dos2unix and man unix2dos for details.

(9.31) Can VMware be used with Solaris x86?

Yes. VMware is commercial software to allow one to boot and use
multiple operating systems at the same time, such as Linux and Windows

provides graphical (VGA/SVGA) and X display capabilities. For
networking, VMware provides for a "virtual disk" for the client O/S.
It also can provide access to the floppy, CD-ROM, a virtual NIC and a
virtual sound blaster 16. Note, the CD-ROM is a "virtual" ATAPI
CD-ROM. Networking can be either host-based (private IP space and
TCP/IP + SMB between the host O/S and the client O/S), or bridged
(client uses an address on the actual network, host's NIC is bound to
two or more IP addresses).

Update 9/2004: Peter Galvin has written an article "Solaris 10 x86 on
VMware" in the October 2004 issue of Sys Admin,

VMware doesn't have documentation on installing Solaris x86, but you
can use these notes instead:

Please read the other HOWTOs on the VMware site, before installing Solaris x86. My install of
version 7 on the dual PII 300 took about 1 hour. I have tested Solaris
x86 version 7 (11/99 release) with VMware 2.0.1 with a Linux host. The
host is a dual PII/300 with 128 MB of RAM. Solaris under VMware seems
stable (it has been up for days). The host was setup with Linux
(RedHat 6.2, patches, and 2.2.16). VMware was installed and bridged
networking was enabled. Bridged networking allows the virtual machine
to appear as a host on the local LAN. The CDROM, Floppy and virtual
NIC were enabled.
 1. Create a virtual disk for Solaris using VMware. I used 1GB on a
    free partition. When creating a virtual machine, VMware will ask
    you to select the guest OS type. Since Solaris is not currently a
    selection, use Windows 98. That has seemed to work best for most
 2. Insert the Solaris x86 boot floppy and boot CD-ROM in the host
    computer. Start vmware and "power on" the virtual machine. The
    virtual machine should boot from the floppy and run the Solaris
    hardware detection program.
 3. Follow the normal Solaris install instructions. Let Solaris find
    the floppy, CDROM, and virtual NIC. Partition your virtual disk (I
    let Solaris do it for me). Install Solaris normally.
 4. I am using my virtual Solaris as a test NISPLUS server so I
    enabled NISPLUS and set the server to point to this machine.
    Following install, I setup NISPLUS on the virtual Solaris and all
    seems functional.
 5. Setup X as VGA. It appears to work fine. However, I typically use
    my virtual Solaris in text mode and export xterms to my base O/S
    (Linux). Someone suggested that you try a Linux or other XF86
    server but I have not tried this. The vmware server for Linux may
    work. If anyone does this could they please mail me instructions
    on what they did?
 6. Setup files in /etc including /etc/hosts, etc. For example I
    changed /etc/netmasks:
Problems and issues noted:
 1. Sometimes the Solaris install is very unhappy with the
    VirtualFloppy drive. Just disable it for your Solaris config if it
    gives you grief. One of the symptoms of this may be a VMware panic
    dialog box during the install.
 2. I recommend you either a) Setup Solaris with an FTP Server ASAP or
    b) Insure you have an FTP server on the same network. This is the
    quickest way to get files in and out of a virtual machine --
    especially until you get DNS working properly.
 3. Solaris x86 currently does not use the HLT instruction in the idle
    loop (a post indicated this will change in the future). This
    causes the virtual machine to try to use 100% of your CPU (or on
    an SMP machine, 100% of a single CPU as VMware only emulates an UP
    machine). This makes a virtual Solaris only really usable as a
    server on an SMP machine.
 4. A "volcheck" followed by a "mount" resulted in a strange
    "unimplemented" error from VMware. However, the CDROM appeared to
    be properly mounted.
 5. There are no VMware tools for Solaris x86. There is no VMware X
 6. Since there are no VMware tools for Solaris, the best
    resolution/color combo you can get out of the box is 640x400, 16
    colors. However, you can use remote access programs (VNC is highly
    recommended) to set up a console "server" that you can connect to
    with a remote "client". I have used VNC to access my Solaris VM at
    any resolution and a color depth of 32. Accessing the Virtual
    Machine via VNC not only looks better because of the color and
    resolution, it is faster than using Solaris the native way it
    comes out of the box.
Earl Fernandez has posted an alternate solution using a third-party
video driver by His solution is
posted at I
have a report (and I believe) that his "Cavaets" #2 and #3 are false.

Andrew Wansink mentions that QEMU, a free VMWare clone, is available
for Solaris x86 at You will
need to download the source and apply the patch from:
l You will also need the network drivers from: The only real trouble he
had was getting the network driver installed, Run
/usr/local/qemu/bin/qemu -hda solaris.img -fda DU.img and hit ESC
before the boot starts. The Solaris DCA then pulls in the drivers from
the floppy image.

Xen is an open source virtual machine emulator from Cambridge. It is
faster than VMWare, and free, but requires modifications of the guest
operating system. Solaris x86 does not support it, but may in the
future. According to a CNET article on 2/18/2005, Sun's John Fowler
said "We think the open-source virtual hypervisor is the way to go."
Future hardware modifications by Intel ("Vanderpool Technology" or VT)
and AMD may permit Solaris to run with no modifications. See

[Thanks to W. Wade Hampton, Earl Fernandez, Patrick Allmond, and Ian

(9.32) Is Solaris on Intel really "Slowaris"--slower than other
Intel-based operating systems?

By default, the other free OS's aren't SMP very capable out of the
box--Solaris is. So, one single CPU system, Solaris has a fair amount
on un-necessary overhead--which slows it down a bit.

Because the other OSes don't have this capability, or at least don't
use it to full advantage, they have a bit of a performance advantage
on a single CPU machine. This advantage disappears when you start
adding processors.

So, I think Slowaris is a little bit too far, but it is at a bit of a
performance disadvantage. But on an 2GHz processor, who cares?! Odds
are you'll just be idling very quickly!

Update: a benchmark test by Tony Bourke ran Solaris x86 9 against
Linux 2.4 (RedHat 9). He concluded Solaris x86 and Linux performed the
same, except with web operations, where Linux was about twice as fast.
Both systems had the latest updates. See

[Thanks to Rich Teer]

(9.33) How can I remove (uninstall) Solaris from my hard drive?

If you have another Operating System installed, boot into the other
operating system (usually Windows or Linux). Select the current
(non-Solaris) partition as the "Active" partition. Reboot. If the
computer boots into the other operating system without the Solaris
boot menu, you can safely delete the Solaris partition.

If you have no other Operating System installed, simply install
another operating system over Solaris on the hard drive. Select
"Entire disk" or similar during the installation.

(9.34) I can install Linux on a system with Solaris x86, but why can't
I boot it?

One possibility is because Linux kernels with UFS filesystem support
will rearrange the numbering of the extended partitions in certain
circumstances. Look at the following partition map reported by Linux
during booting:
     Partition check:
     hda: hda1 hda2 <solaris: [s0] hda5 [s1] hda6 [s2] hda7 [s7] hda8 >
             hda3 hda4 < hda9 hda10 hda11 >

Partition number 4 (hda4) is an "extended" partition, containing three
logical partitions used by Linux. In this particular case, these
logical partitions were created by the Red Hat Linux 7 installer, and
they hold the Linux root filesystem, swap space, and a filesystem
mounted on /home.

The kernel used by the installer did not include UFS support, so it
perceived /dev/hda4 to logically contain hda5, hda6, and hda7, and it
recorded these settings with LILO and /etc/fstab.

However, when the new Linux installation booted for the first time, it
assigned hda5 to a Solaris partition, then tried to boot with it as
the root filesystem. Under Red Hat Linux 7 with the 2.2.16 kernel,
this generates the following error:
     Invalid session number or type of track
     Kernel panic: VFS: Unable to mount root fs on xx:xx

To boot this system, provide LILO with something like "linux single
root=/dev/hda9" to force the proper selection of the root filesystem
(or you could also boot from the install CD with options like "linux
single root=/dev/hda9 initrd="), then modify the root filesystem
parameter in /etc/lilo.conf to reflect the change (and run the "lilo"
command after modifying the file):

Under most Linux distributions, you must also modify /etc/fstab to
reflect the new partition layout. Red Hat Linux 7 now uses "labels" in
/etc/fstab (which are maintained with the "e2label" command), which
obviates the need to adjust /etc/fstab in this case (you still may
need to adjust the swap partition in /etc/fstab, though).

If the extended partition has a lower number than the Solaris
partition, this renumbering won't occur.

[Thanks to Charles J. Fisher]

(9.35) What hardware solutions are available for dual booting?

Romtec makes "Trios," which allows for dual or triple booting off of
multiple hard ATAPI disk drives. Trios fits into a 5.25" drive bay and
comes with cables to connect the hard drives to it. An operating
system may be installed on each hard drive. A button selects between
which drive to boot off of. The other drives are not seen. See for details.

(9.36) What are the /dev/dsk/ disk naming conventions for x86 disks?

The naming convention comes from AT&T SysV/386:
  * p0 whole physical disk
  * p1 - p4 Four primary fdisk partitions
  * p5 - p30 26 logical drives in extended DOS partition (not
    implemented by Solaris)
  * s0 - s15 16 slices in the Solaris FDISK partition (SPARC has only
    8) On Solaris, by convention, s2 is the whole Solaris partition.
For the first part of the name, e.g. c0t0d2:
  * "c" is the disk controller number as seen by the operating system
  * "t" is the target number on the controller. That is, SCSI ID for
    SCSI. Omitted for ATAPI. controllers
  * "d" is the disk on that target. That is, LUN for SCSI, Master (d0)
    or Slave (d1) for ATAPI.
The precise naming for IDE disks and ATAPI cdroms has varied through
Solaris x86 releases, and is different on SPARC. On x86, the 't' part
is often missing for IDE disks as IDE doesn't support multiple targets
(the Master is the single target and it drives the Slave too, so these
look more like SCSI LUNs). However, the IDE ATAPI interface looks more
like SCSI, so you can find the Master disk has an IDE type name, and
the ATAPI slave CDROM has a SCSI type of name. On SPARC, I think both
IDE disks and ATAPI CDROMs are named like SCSI disks. This area is a
bit of a mess, sadly.

The pcfs filesystem also has a pseudo naming scheme it uses. You
always use the p0 (whole disk) device, but you append more info which
enables pcfs to find the right PC filesystem on the disk. So, p0:1 is
the first DOS drive on the disk, which will be the primary DOS
partition if there is one or the first DOS drive in the Extended DOS
partition. p0:2 is the second DOS drive -- if there was a primary DOS
partition, p0:2 will be the first DOS drive in the Extended DOS
partition, otherwise it's the second DOS drive in the Extended DOS
partition. There's a hack in there in to cope with multiple primary
DOS FDISK partitions too, but such a disk is strictly illegal. p0:boot
is the Solaris x86 boot partition if you have one, which is like a
primary DOS partition but with a different partition type.

[Thanks to Andrew Gabriel]

Copyright  1997 - 2005 Dan Anderson. All rights reserved.
This FAQ is provided "as is" in the hope that it will be useful, but
WITHOUT ANY WARRANTY, to the extent permitted by law; without even the

                End of the Solaris on Intel - x86 FAQ.
       Maintained by Dan Anderson, San Diego, California, USA.

User Contributions:

Aug 13, 2023 @ 9:21 pm

We absolutely love your blog and find the majority of your post's to be just what I'm looking for. Would you offer guest writers to write content for yourself? I wouldn't mind producing a post or elaborating on most of the subjects you write concerning here. Again, awesome site!

Best Regards

Comment about this article, ask questions, or add new information about this topic:

[ Usenet FAQs | Web FAQs | Documents | RFC Index ]

Send corrections/additions to the FAQ Maintainer:
Dan Anderson <>

Last Update March 27 2014 @ 02:11 PM