SOLARIS X86 HOME     SEARCH     PACKAGES     FAQ     BOOKSTORE  
FAQ: INTRO RESOURCES PRE-INSTALLATION INSTALLATION CUSTOMIZATION TROUBLESHOOTING X WINDOWS INTEROPERABILITY

[Solaris x86 FAQ] 6. Post-installation and Customization (Solaris x86 FAQ)


CalHotels.US--online reservations now CalHotels.US Lowest Hotel Rates Guaranteed. Reviews, maps, and photos.
U.S hotels in California: (L. A., San Diego, San Francisco, & Silicon Valley), AL, AK, AR, AS, AZ, CA, CO, CT, DC, DE, FL, FM, GA, GU, HI, ID, IL, IN, IA, KS, KY, LA, ME, MD, MA, MI, MN, MS, MO, MT, NE, NH, NJ, NY, OK, NV, MH, MP, NM, NC, ND, OH, OR, PA, PR, PW, RI, SC, SD, TN, TX, UT, VT, VA, VI WA, WV, WI, WY


(6.0) POST-INSTALLATION (CUSTOMIZATION)

(6.1) How do I add additional drives?

First, you must have Solaris scan for the new drive. Become root and type: "touch /reconfigure; /usr/sbin/shutdown -i6" This rebuilds the /devices/ and /dev/ directories.

ATAPI and SCSI the drives are already low-level formatted. If you wish to format a SCSI you can use /usr/sbin/format that comes with Solaris. A second drive install would use format.

To create and use a filesystem:

[Thanks to Bob Palowoda's FAQ and Sonny Leman]


(6.2) How do I add or configure users, printers, serial ports, software, etc.?

Use Solaris Management Console (/usr/sadm/lib/smc/bin/smc) from X Windows. Unfortunately, because of its complexity and dependence on Java, smc is often broken and can't be accessed. It's pretty good when it works though. An alternative are several command line programs in /usr/sbin and /sbin, such as lpadmin, stty, and useradd. For "Keyboard Display or Mouse" setup (for the console/monitor) use kdmconfig in single-user mode.


(6.3) How do I suppress the banner page on my printer?

To disable the banner pages permanently perform one of the following steps:

[Thanks to Norm Jacobs]


(6.4) How do I set up an HP-compatible printer to print PostScript files?

Solaris 8 has this ability with Print Manager, /usr/sadm/admin/bin/printmgr, Note that higher-end HP printers (e.g., LaserJet IV) support PostScript directly. Also, Michael Riley reminds us that EPP and ECP printer modes are unsupported.

Before you do any of this, try printing a plain text file (such as /etc/motd) to the printer.

John Groenveld provides the following instructions for Solaris 8. It assumes you have a working Ghostscript with a driver for your printer and that it's attached to /dev/lp1 (/dev/lp0 on some systems). With Solaris 8, USB printers are assigned logical device names /dev/printers/[0..N] The printer queue in the example below is called "lj6l_ps"

# Test your driver:
# (gs may be in /usr/csw/bin/gs, /usr/local/bin, or /opt/gnu/bin, depending
# on who built the Solaris package)
/usr/csw/bin/gs -q -dSAFER -dBATCH -dNOPAUSE -sDEVICE=laserjet \
        -sOutputFile=/dev/lp1 /opt/csw/share/ghostscript/examples/alphabet.ps

# Create the printer filter definition
# (the "Command:" line is 1 line--it may be broken up below):
cat > /etc/lp/fd/laserjet.fd <<eof
Input types: postscript
Output types: laserjet
Printer types: any
Printers: any
Filter type: fast
Command: /opt/csw/bin/gs -q -dSAFER -dBATCH -dNOPAUSE -sDEVICE=laserjet
-sOutputFile=- -
eof

# Test:
/usr/ucb/lpr -Plj6l_ps -h /opt/csw/share/ghostscript/examples/alphabet.ps

# Add the filter name to the filter table:
chown lp:lp /etc/lp/fd/laserjet.fd
chmod 664 /etc/lp/fd/laserjet.fd
lpfilter -f laserjet -F /etc/lp/fd/laserjet.fd

# Configure the printer to use the LaserJet filter:
lpadmin -p lj6l_ps -I laserjet

# Stop the data stream to the printer from being modified:
lpadmin -p lj6l_ps -o stty="-opost"

# Enable the printer to accept jobs:
accept lj6l_ps
enable lj6l_ps

# Retry (if needed):
# If something goes wrong (such as using an incorrect command path
# in laserjet.fd), try deleting the printer destination and starting over
# after making your corrections:
lpadmin -x lj6l_ps
lpadmin -p lj6l_ps -v /dev/lp1 -o nobanner

After it's working you may want to set the default printer with the LPDEST and PRINTER environment variables in your startup script (~/.login or ~/.profile) and with "lpadmin -d"

Update: Norm Jacobs adds: Solaris 9u6 and later contain a number of open source packages including Foomatic, Ghostscript, gimp-print, hpijs, and some changes to the printmgr to make this considerably easier. If you turn on "command logging", in the tool from the file menu, you can see the lpadmin command that is used.

Another solution is Common UNIX Printing System (CUPS), which implements the Internet Printing Protocol (IPP), RFC 1179. IPP standardizes printing of multiple document formats. CUPS provides System V and BSD (lp & lpr) interfaces and supports PostScript with a modified version of Ghostscript. For Solaris x86 binaries and documentation, see http://www.cups.org/ See also the question below in this section on easy-to-use printing solutions. For configuring and enabling CUPS with Solaris 10, see my blog article at http://blogs.sun.com/DanX/entry/using_cups_print_server_for

[Thanks for additional comments from Mark Francis Villa]


(6.5) How can I improve disk and graphic performance?

Disk Performance (iozone)

A typical iozone test with 10 to 20 MB sequential file will give about 2 MB/sec. read/write on a 50 MHz ESIA system on a Maxtor 540SL (8.5 ms) drive with an Adaptec 2740 controller. You'll get a little better performance from a 90 MHz Pentium system. A fully thrashed system will see writes down to about 1 MB/sec. I noticed that the NCR 810/825, etc., seem a little more peaky in the performance specially on the PCI bus.

If you're using a fast wide SCSI controller such as the Adaptec 2940, use a wide SCSI drive for the system drive. These drives usually have double the throughput of the normal 8-bit drives, according to the iozone benchmark results, and they make the tmpfs fly.

Note: If you're using high speed spindle drivers for your boot driver, like 5400 and 7200 RPM drives, you may want to use "set maxpgio=60" for the 5400 RPM drive or "set maxpgio=80" for the 7200 RPM drives in your /etc/system file. This causes the schedpaging to be more efficient. Enable by typing "touch /reconfigure; /usr/sbin/shutdown -i6"

[Andrew Gabriel adds for ATAPI: Read about drive0_block_factor and drive1_block_factor in /platform/i86pc/kernel/drv/ata.conf (man -s 7D ata). Even my oldest ATAPI drives support drive0_block_factor=0x10 without any trouble.]

Starting with Solaris 8, DMA is disabled for ATAPI devices, as it caused installs to fail for several BIOSes. For Solaris 10, it is enabled, at least for me. It can be enabled with the "ata-dma-enabled" property from the GRUB menu (-B ata-dma-enabled=1) After installation, you can also change this line in file /boot/solaris/bootenv.rc:
setprop ata-dma-enabled '1'
If you do this and you have a buggy motherboard chipset, your system won't boot. This happened to me. You can recover by booting in recovery mode and mounting the root filesystem (see the answer in this FAQ about recovering from forgotten root passwords). Buggy chipsets include those with the VIA chipset and ASUS PA5 motherboards. For more details, see the Solaris 8 Intel Release Notes.

Graphic Performance (xstone) Xstones is a little more of a subjective measurement of graphics performance. The comp.unix.x.i386 newsgroup keeps up on the latest xstone performance on graphics cards for PC's.

[From Bob Palowoda's Solaris 2.4 x86 FAQ]



(6.6) + How do I get Solaris to recognize a NE2000 compatible NIC card?

NEI is the driver name for the Novell/Eagle 2000-compatible family of NIC cards. The driver is disabled by default because probing for it causes problems with other cards (it sometimes locks the system up). If this card is "Plug and Play," you should first disable it and configure the card manually, if possible. Don't use DCA probing for ne2000: it may disrupt recognition of or access to other devices (in my case, it was keyboard :-). So, you have to modify file /kernel/drv/nei.conf to include I/O ranges, interrupts (1 line per card). For example:

name="nei" parent="isa" reg=1,0xf600,0x1f interrupts=11;

Where name, "nei," is what will show up in /dev. The parent, "isa," is what bus type to use. The term ISA is misleading as it includes PCI bus (To Solaris, it's either "sysbus," the SPARC system bus, or "isa," meaning not SPARC sysbus). The "1" is a flag meaning that I'm going to specify I/O port ranges, rather than memory offsets, 0xf600 indicates the beginning I/O address, in hex, and 0x1f is the size of the I/O range, in hex. The "interrupts=11" indicate IRQ 11, in decimal. Thus, I have a PCI NE2000-compatible card, set to base I/O addresses 0xf600-0xf61f, IRQ 11. As an exercise, decode this example for a real NE2000 card:

name="nei" parent="isa" reg=1,0x220,0x10 interrupts=10;

You have to add a /etc/hostname.nei0 file with the IP address or hostname (if you use IPv6, also add /etc/hostname6.nei0). Add a line to /etc/hosts. For example:

10.1.1.1	foo.bar.com foo

Check the settings, as root, with "/usr/sbin/drvconfig -i nei". Next, as root, type "touch /reconfigure; /usr/sbin/shutdown -i6" After rebooting, type "ifconfig nei0 plumb" to make sure the device was recognized. It should show up in the output from typing "prtconf". For further details see Sun FAQ 1105-02 at http://access1.Sun.COM/cgi-bin/rinfo2html?110502.faq and the Solaris System Administrator Guide, available at http://docs.Sun.COM/.

The NE2000 driver is not included with Solaris 8 (perhaps Sun thought it was ISA-card only), but the driver files for Solaris 7, nei and nei.bef, can be used instead, as follows (although it's not officially supported for Solaris 8):

If you have a Realtek RTL8139 or 8130 10/100 NIC, which is one of the more popular and low-cost PCI NICs, you can get a Solaris x86 driver from the manufacturer at http://www.realtek.com.tw/ (click on "Download", "Network ICs").

[Thanks to Iram Peerbhai, Martin, Youri Podchosov, Alex Selck, and Vincent Cheng]


(6.7) How do I get Solaris to recognize generic network cards with well-known chipsets?

There are many new ethernet cards available at major retailers for under $20 using well-supported chipsets. Unfortunately, the cards on the Solaris HCL have been out of production for quite some time -- particularly the Intel cards. I was amazed how difficult it is to find hardware on the Solaris HCL.

First, save yourself a lot of trouble and see if there's a driver for your card somewhere. See if the card is listed on the Hardware Compatibility List (HCL) for the latest Solaris Maintenance Update (MU). The HCL is at http://www.sun.com/bigadmin/hcl/ I've had good luck with Intel NICs. Check for new and third-party drivers at http://www.Sun.COM/io_technologies/. Also check to see if there's a patch supporting your card at http://sunsolve.Sun.COM/

A list of third-party drivers (mostly from hardware vendors) for Solaris x86 is at http://www.sun.com/io_technologies/ihv-drivers.html

If you have a Linksys LNE100TX or other NIC card, it may be supported by one of Garrett D'Amore's Ethernet drivers. See http://sol-enet.sourceforge.net/

More free Solaris NIC drivers are provided by Masayuki Murayama at http://homepage2.nifty.com/mrym3/taiyodo/eng/,

If there's no driver found above, here's what to do:

  1. Install the card and watch the computer boot. Look for the list of devices in the BIOS summary screen. Write down the two 4-digit numbers. For the Intel card it was 8086 1030, the PCI/PnP vendor and device ID for the InBusiness card.
  2. Boot into Solaris. Open the /boot/solaris/devicedb/master file and look for the vendor ID you wrote down. In this example, the vendor ID is 8086 for Intel. Look through the file for devices that closely fit the description of your device under the vendor ID. One of them for this card happens to be iprb for the Intel 82559 chipset which is listed as:
    pci8086,1029 pc8086,1029 net pci iprb.bef "Intel Pro 100/B Fast Ethernet"
  3. If you're confident that you have a reasonable match, add a new line to this file that uses the vendor ID and device that you wrote down: pci8086,1030 pc8086,1030 net pci iprb.bef "Intel 82559 You Bonehead"
  4. Open the /etc/driver_aliases file and add a line for the card:
    iprb "pci8086,1030"
  5. Type "devlinks". Type "touch /reconfigure". Restart. Hit ESC in the the Device Configuration Assistant phase of the boot process and ask it to scan for new devices. It should find your device and display the name you typed in in step (3) above. This step is crucial--the DCA step in the boot process is where some important magic happens.
  6. Once the system is finished booting, note the magic appearance of /dev/iprb (or whatever your device is called) and experience joy. Type "ifconfig iprb0 plumb" to wake it up. Edit a file called /etc/hostname.iprb0 and put your hostname into it. (if you use IPv6, also add /etc/hostname6.iprb0). Type "touch /reconfigure" just for good measure and restart a final time. If you are using OpenSolaris ("Nevada") with the hostname.* files, make sure service network/physical:default is enabled and network/physical:nwam is disabled with svcadm(1M), otherwise the hostname.* files are ignored. Or you can leave NWAM enabled and configure your interface with file /etc/nwam/llp. Here's a sample llp file:
    iprb0 static 192.168.88.111
    iprb1 dhcp

As another example, these entries (in /etc/driver_aliases and /boot/solaris/devicedb/master) support both the 905C and 3C980 card, using the elxl driver:

elxl "pci10b7,9200" elxl "pci10b7,9800"
pci10b7,9200 pci10b7,9200 net pci elxl.bef "3Com 3C905C-TX-M El XL 10/100"
pci10b7,9800 pci10b7,9800 net pci elxl.bef "3Com 3C980-TX El Server 10/100"

Finally, here's a partial list of the sub-$20 cards and their chipsets, but I am still looking for the proper driver for the super-cheap 100baseT chipsets from Realtek and Macronix as used by some Dlink, Hawking, Netgear, and Linksys cards.

Another good set of instructions, particularly for newer generations of supported NICs, is at http://solaris-x86.org/documents/tutorials/network.mhtml which is based on Keith Parkansky's http://my.execpc.com/~keithp/bdlogsol.htm#install

[Thanks to Casper Dik, Bruce Adler, and Kriston]


(6.8) How do I change the IP address or hostname or both on Solaris/x86?

See the instructions in "man sys-unconfig" Basically, sys-unconfig unconfigures the machine to make it ready to be configured again on reboot. It's a lot easier and less error prone than the usual dozen or so steps required to purge the old IP address.

Solaris 8 FCS: sys-unconfig is seriously broken for Solaris 8 FCS (2/2000) and will make your system unbootable. If you use it make sure you have a later HW update of Solaris 8 or that you apply x86 patch 109319. Use "showrev -p" to confirm you have this patch.

For the thrill-seekers among us, you can also do it "by-hand" by editing these files (possibly more?) with your fav. editor:

/etc/defaultdomain       Set the default NIS domain name, if any, if it changed.
/etc/defaultrouter       Set the default router's IP address, if it changed.
/etc/hostname.le0        (change le0) Update if the hostname changed.
/etc/hostname6.le0       (change le0) Ditto, if you use IPv6.
/etc/dhcp.le0            (change le0_ Touch [or remove], if [not] using DHCP
/etc/hostname6.ip.tun0   Update if you use a IPv4/IPv6 tunnel (e.g., 6bone)
/etc/nodename            Update if the hostname changed.
/etc/nsswitch.conf       Update if your name resolution method/order changed.
                         Copy /etc/nsswitch.dns to /etc/nsswitch.conf if you
                         use DNS instead of (rarely used) NIS.
/etc/resolv.conf         Update if your name servers/domain changed (DNS only).
/etc/inet/hosts          Make sure your IP address is updated or added here.
                         List your FQDN is first, before the short hostname.
                         E.g., "192.168.128.64 foo.bar.com foo"
/etc/inet/ipnodes        IPv6 version of hosts file (Solaris 8+).
/etc/inet/netmasks       Set your network number & netmask, if it changed.
/etc/inet/networks       Set your network name, if it changed.
/etc/net/ticlts/hosts    For the streams-level loopback interface.
/etc/net/ticots/hosts    For the streams-level loopback interface.
/etc/net/ticotsord/hosts For the streams-level loopback interface.

Finally, use the hostname to set the hostname until the next reboot. To verify you changed all the files, type this as root: find /etc -type f -print|xargs grep `hostname`

Note that for OpenSolaris (Nevada), /etc/hostname.* files are ignoed if NWAM (Network Automagic) is enabled, SMF service, svc:/network/physical:nwam). NWAM uses svc:/network/location:<interface> to specify the hostname or IP adress. To use the old hostname.* files, disable nwam with svcadm disable and enable tt>svc:/network/physical:default instead.

[Thanks to Parthiv Shah, Vijay Brian Gupta, Michael Wang, and Igor Sobrado, Chad Treece]


(6.9) How do I configure another serial port, /dev/ttyb-ttyd (COM2-4)?

Solaris 2.6 and above configures the second serial port automatically. If you just added a serial port type the following:
touch /reconfigure; /usr/sbin/shutdown -i6

If the serial port isn't present after rebooting, follow these instructions:

For Solaris 10, use sacadm. For Solaris 7 - 9, use admintool and select "Browse-->Serial Ports."

If the steps above don't work, perform the following as root to add the second serial port. For other serial ports and internal modems follow the same steps but change the appropriate line in the /kernel/drv/asy.conf file.

[Modified from Bruce Riddle's Solarisx86 2.5/Dialup PPP Configs FAQ; updates from Michael Wang]


(6.10) How do I disable Solaris/x86 from probing the UPS on COM2?

With the following command, ran as root:

# eeprom com2-noprobe=true

This (undocumented) option to the eeprom command disables boot-up time probing of COM2 (apparently done to detect modems). The eeprom command alters the Solaris boot sector. If the UPS is connected to a serial port during boot-up time, the UPS may go into self-test or shutdown or recalibrate. An alternate solution is to disconnect the serial cable during booting. With the obvious change, this also works for COM1. See also BugID 4038351.

[Thanks to Andy I. McMullin and John D. Groenveld]


(6.11) How do I configure and use pppd?

PPPD has shipped with Solaris since Solaris 8. For older versions of Solaris, the binary and source is available from Peter Marelas at http://www.phase-one.com.au/solaris-x86/pppd/ PPPd 2.3.5 is compiled for Solaris 7 but works for more recent Solaris versions. More recent versions of PPPd are not required but are available (source only) from ftp://cs.anu.edu.au/pub/software/ppp/ Follow instructions in file README.sol2 to compile.

To use PPPD follow the instructions in the System Administration Guide: Resource Management and Network Services at http://docs.sun.com/ or follow these directions below.

PPPD Configuration

To configure, you set up a chat script to handle the ISP dialog and enter the phone number and other parameters in the pppd options file. Examples I use are below (files are in /etc/ppp unless otherwise mentioned).

I removed files chap-secrets and pap-secrets, as I don't need them for my ISP. File connect-errors has error output, if any, from bad connections.

File /etc/ppp/ip-down:

#!/usr/bin/sh
# Turn off IP forwarding
/usr/sbin/ndd -set /dev/ip ip_forwarding 0

File /etc/ppp/ip-up:

#!/usr/bin/sh
# Turn on IP forwarding
/usr/sbin/ndd -set /dev/ip ip_forwarding 1

File /etc/ppp/ppp-on:

#!/usr/bin/sh
# Set up a PPP link
PEER=myisp
LOCKDEV=ppp0
#PPPDOPTS=-d # uncomment for debugging
if [ -f /etc/ppp/$LOCKDEV.pid ] ; then
    echo "PPP device $LOCKDEV is locked"
    exit 1
fi
/usr/local/bin/pppd $PPPDOPTS call $PEER
exit 0

File /etc/ppp/ppp-off:

#!/usr/bin/sh
# /etc/ppp/ppp-off
# Shutdown a PPP link
LOCKDEV=ppp0
# If the ppp pid file is present then the program is running. Stop it.
if [ -r /etc/ppp/$LOCKDEV.pid ] ; then
        kill -INT `cat /etc/ppp/$LOCKDEV.pid`
        # If unsuccessful, ensure that the pid file is removed.
        if [ ! "$?" = "0" ] ; then
                echo "removing stale /etc/ppp/$LOCKDEV.pid file."
                rm -f /etc/ppp/$LOCKDEV.pid
                exit 1
        fi
        # Success. Terminate with proper status.
        echo "ppp link $LOCKDEV terminated"
        exit 0
fi
echo "ppp link $LOCKDEV is not active"
exit 1

File etc/ppp/peers/myisp:

cua1           # modem is connected to /dev/cua1 (cua0 may be a serial mouse)
115200         # bits per second (use 38400 or 57600 if this doesn't work)
lock           # Use a UUCP-style lock to ensure exclusive access
crtscts        # use hardware flow control
noauth         # don't require the ISP to authenticate itself
modem           # modem control line
passive         # wait for LCP packets
connect '/usr/local/bin/chat -v  -f /etc/ppp/peers/chat-myisp'
noipdefault     # remote PPP server must supply your IP address.
                # Remove if the remote host doesn't send your IP during
                # IPCP negotiation and uncomment the next:
#204.94.88.94:  # our ip address:gateway address (both are optional)
defaultroute   # use the ISP as our default route

File etc/ppp/peers/chat-myisp:

ABORT "NO CARRIER"
ABORT "NO DIALTONE"
ABORT "ERROR"
ABORT "NO ANSWER"
ABORT "BUSY"
ABORT "Username/Password Incorrect"
"" "ATZ"
OK "ATDT555-2871"
CONNECT ""
"ogin:" "^Updan"
"ssword:" "\qaardvark"

The last two files require the most modification. Make sure to remove read permission ("chmod go-r chat-*") from chat-myisp, as it has your login and password information.

Messages go to /var/adm/messages. A good PPP session should look something like this:

Oct 24 22:47:49 dan.cts.com pppd[1439]: Connect: ppp0 <--> /dev/cua1
Oct 24 22:47:50 dan.cts.com pppd[1439]: local  IP address 204.94.88.94
Oct 24 22:47:50 dan.cts.com pppd[1439]: remote IP address 205.163.84.83
Oct 24 23:08:52 dan.cts.com pppd[1439]: Connection terminated.

Your "netstat -rn" output should have lines that look similar to this:

  Destination           Gateway           Flags  Ref   Use   Interface
-------------------- -------------------- ----- ----- ------ ---------
209.68.192.32        204.94.88.94          UH       1      1  ppp0
default              209.68.192.32         UG       1      1

Your "ifconfig ppp0" output should look similar to this:

ppp0: flags=10008d1<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST,IPv4> mtu 1500 index 15
        inet 204.94.88.94 --> 209.68.192.32 netmask ffffff00

For debugging pppd, add the -d option after pppd (in file ppp-on), add this line in /etc/syslog.conf (fields must be tab-separated):

daemon.*	/var/adm/pppd.log
and restart syslogd with /etc/init.d/syslog stop; /etc/init.d/syslog start

Then, you get the chat script dialog captured to help isolate the problem. Print out and read the docs mentioned above if you have problems.

Once the PPP link is working, you can enable DNS hostnames as follows: First, Modify this line in /etc/nsswitch.conf to something like:

hosts:      files dns

Second, add lines similar to this in /etc/resolv.conf:

search PutYourISPDomainNameHere.com
nameserver 192.188.72.18
nameserver 192.188.72.21

For more information, See "man pppd" and "man chat" and the FAQ and SETUP files provided with pppd. A helpful step-by-step guide is the Linux PPP HOWTO at http://www.tldp.org/ The configuration file information is the same for Solaris, except change tty references from

/dev/ttyS0 - ttyS4
to
/dev/cua0 - cua4
.

(6.12) Help! My "WinModem" doesn't work with PPP.

If it's a WinModem, you're out of luck--That only works with MS Windoze and then only with special drivers. It's missing critical UART hardware that's emulated in proprietary software and hardware interfaces. WinModems (which run only on Windows) are less expensive to manufacture because they don't include a controller. Instead, they include proprietary drivers for Windows that offload processing to the CPU. For some reason (tell me if you know?), Internal PCI card modems all seem to be WinModems.

If you're using aspppd, supplied with stock Solaris, you can either switch to another PPP product that works with USRobotics Internal Sportster modems, such as Solaris PPP (not free) or PPPd (free, see above) or try this: (from Alan Orndorff's "Solaris x86 Resources," http://www.solarisresources.com/):

Modify your /etc/uucp/Dialers file in the following manner:

Add P_ZERO to your modem definition string to set it to "no parity." E.g,

hayes   =,-, ""   P_ZERO  ""
\dA\pTE1V1X4Q0S2=255S12=255\r\c  OK\r    \EATDT\T\r\c  CONNECT


(6.13) How do I configure Dynamic IP Addresses (DHCP)?

Create empty files /etc/hostname.interface and /etc/dhcp.interface (instead of containing the IP address or hostname) where interface where interface is your Ethernet interface (e.g., le0). for example, as root: > /etc/hostname.le0 and > /etc/dhcp.le0).

If you are using PPP, do not specify an IP address in your pppd options file and use ppp0 as the interface.

In addition to the IP address, if you want the DHCP server to supply the hostname (normally not needed, as it should be in /etc/nodename), follow the steps in "DHCP Client Hostnames" in the System Administration Guide mentioned below.

For more information, see "DHCP" in the System Administration Guide "IP Services" chapter at http://docs.Sun.COM/ and http://www.rite-group.com/consulting/solaris_dhcp.html

[Thanks to Bruce Riddle, Wyatt Wong, and Ed Ravin]


(6.14) How do I configure my SoundBlaster or other sound card?

If you have a SoundBlaster PCI card, download Jürgen Keil's audio drivers at http://www.tools.de/solaris/audio/ It includes drivers for Soundblaster, and Intel ICH and VIA AC97 integrated chipsets. I've found it easy to use—just install the packages and reboot. Philip Brown also has a and older version of Soundblaster driver, which he worked on with Jürgen, which supports fewer devices. It's at http://www.bolthole.com/solaris/sbpci/

A commercial alternative to the above is to use 4Front Technologies' Open Sound System (OSS). It's available for a free trial for about 10 days. After that, it's $30, but well-worth the savings in time. For cards newer than SoundBlaster 16/32/Pro, it's the only choice. To use, download the tar.Z file from http://www.opensound.com/, extract, and run the install menu ./oss-install and let it auto-detect the sound card. Reboot (or at least sync), then run "soundon" to enable the driver manually (see file oss/Readme for how to enable automatically). OSS supports the widest variety of sound cards on Solaris. Don't use both Jürgen's driver and OSS at the same time--remove one and reboot before you decide to install the other.

The most difficult procedure is to use the Sun-provided sbpro driver. It works only for old ISA SoundBlaster cards. I recommend not doing this. Instead, buy a sound card supported by Jürgen's, Philip's, or OSS's drivers, instead of wasting your time.

To configure the old Sun sbpro driver become root and type: "touch /reconfigure; /usr/sbin/shutdown -i6". If this works, you should see two links under /dev/sound and be able to play .au files with audiotool

  1. Run "prtconf -pv" to print the current system configuration:

            Node 0xf5a33500
                compatible: 'pnpCTL,00E4,0' + 'sbpro'
                dma-channels:  00000001.00000005
                interrupts:  00000005
                model:  'Audio'
                name:  'pnpCTL,0045'
                pnp-csn:  00000001
                reg:  8e8c00e4.19f815e8.00000000.00000001.00000220.00000010
    		.00000001.00000330.00000002.00000001.00000388.00000004
                unit-address:  'pnpCTL,00E4,19f815e8'
    

    The device ID I want is CTL0045. This comes from the name line "pnpCTL,0045". There were a couple of other 'pnpXXX,DDDD' devices. This was the only one with the model "Audio".

  2. According to old Sun InfoDoc 15830, I used "CTL,0045" from above and updated /platform/i86pc/boot/solaris/devicedb/master as follows (no comma):

    < CSC0000|PNPB002|PNPB003|CTL0031|ESS1681 sbpro oth all sbpro.bef
     "Sound Blaster"
    - ---
    > CTL0045|CSC0000|PNPB002|PNPB003|CTL0031|ESS1681 sbpro oth all sbpro.bef
     "Sound Blaster"
    
    This is only an example. For Solaris 10, the CTL0045 entry is now present.

  3. Rebooted and rebuilt my devices:
    # touch /reconfigure; /usr/sbin/shutdown -i6
    

  4. I also ran the Device Configuration Assistant (DCA) -- press Escape as soon as the machine boots, it will prompt you -- just to verify that the Sound Blaster showed up in the device list. It did as "Sound Blaster." Since I ran the DCA boot will get the -r arg anyways.

  5. When I boot /dev/audio was present. Yeah! I am currently listening to the Sunday Blues on real audio.

  6. For more information, type "man sbpro."

[Thanks to Park Byoung-Gi, Steve Krapp, Chris, Dave, Norma, Jürgen Keil, & Philip Brown]


(6.15) How do I enable the audio output from my CDROM to my SBPRO card?

Start audiocontrol then select "Record." Ha ha, "Record" really means "Sound Source ;-)." In the audiocontrol record window, select "Internal CD" (other choices are Microphone or Line in).

You must have audiocontrol running before starting your favorite CD player application. You can use GNOME, CDE, or open source players, such as xmcd. Robert Muir reports you can use this from the command line (non-X):
audiorecord -p internal-cd /dev/null &

[Thanks to Eugene Bobin and Robert Muir]


(6.16) Can I use Solaris/x86 to setup a "headless" server?

The answer is yes, it can be done, but it's BIOS dependent, since many BIOS chips won't boot up the system without the keyboard and video card. The console can be configured to go to serial ports as described below. Removal of video card is also BIOS dependent. Setup steps:

1. Set the serial line's Carrier Detect (CD) to HIGH and (for 2.6 only) set the serial line's Data Set Ready (DSR) to HIGH. If you don't--it won't boot. This can be done with a NULL modem or with the following 25-pin or 9-pin pinouts:

     DTE A         DTE B
     25 (9)        25 (9)
     ------        ------
FG    1 (-) ------  1 (-) FG
TD*   2 (3) ------  3 (2) RD
RD    3 (2) ------  2 (3) TD*
CTS   5 (8) -+---- 20 (4) DTR*
DSR   6 (6) -|  +-  5 (8) CTS
CD    8 (1) -+  |-  6 (6) DSR
DTR* 20 (4) ----+-  8 (1) CD
SG    7 (5) ------  7 (5) SG
RTS*  4 (7)  (nc)   4 (7) RTS*
RI   22 (9)  (nc)  22 (9) RI
* DTE (terminal/computer) driven
(nc) = no connection

If the NULL modem is "incomplete", the boot process hangs shortly after starting the asy driver (after the message "asy0 is /isa/asy@1,3f8" or similar asy1/2f8 message). For details, see http://www.freebsd.org/handbook/hw-io.html

2. Set your the terminal to (9600 bps,8 bits, No parity, 1 stop bit).

3. Use the eeprom command to specify the console (ttya, ttyb): eeprom input-device=ttya output-device=ttya (just like SPARC? ;-)
Update: Andrew Schwabecher reports that using "ttya" doesn't work. Instead, he adds these entries to /boot/solaris/bootenv.rc:

setprop output-device com1
setprop input-device com1
Update2: David Cocking reports that using "ttya" does work, except with Sun's LX50. For LX50 both ports are set to sense whichever one you attach to under "ttyb".

Steve Rikli adds the following simpler 3-pin alternative, in lieu of the above:

I've found that, while the full NULL modem pinouts work just fine, a simple 3-pin (TD/RD/SG) pinout scheme will also work in Solaris 8 by issuing eeprom commands thusly:

eeprom output-device=ttya
eeprom input-device=ttya
eeprom ttya-ignore-cd=true

The kicker is the "-ignore-cd" variable, which doesn't seem to be present by default on a Solaris x86 install, unlike Solaris for SPARC hardware. But setting it does work and it does persist across reboot/power-cycle. In the absence of "ttya-ignore-cd=true" one does indeed need a full NULL modem pinout.

PC Weasel 2000, at http://www.realweasel.com/intro.html is a PCI board that emulates VGA cards over a serial line. This provides a serial console interface for PC-class computers transparent to the operating system. This is useful for BIOS configuration and the Solaris Device Configuration Assistant (DCA) remotely. Of course, you can't run CDE with it, but once Solaris is up, you can use a regular serial port. Herb Peyerl, one of the company founders, adds: "I've tested this card under 2.8 and it works fine. There isn't a Solaris Watchdog driver for the Weasel yet and sometimes the text attributes are a little funky, but it's certainly usable."

[Thanks to John Weekley, Scott Wedel, Kenneth Wagner, Andy Spitzer, Kai O'Yang, Michael Wang, David Page, Andrew Schwabecher, Steve Rikli, Richard Shuford, and Herb Peyerl]


(6.17) Can I get a Sun-style keyboard (Ctrl & Caps Lock reversed) for S/x86?

Yes, from PFU, now part of Fujitsu, sells it's "Happy Hacking Keyboard" for $69. http://www.pfu.fujitsu.com/en/hhkeyboard/ It's Sun type 5 keyboard with only the essential 60 keys.

You can order a Sun USB keyboard and mouse that works quite well with Solaris x86. They are available from Sun Store, http://store.sun.com/, with the following part numbers:

If you don't want to buy any new hardware, you can use just software to switch Control_L and Caps_Lock keys. Create file $HOME/.xmodmaprc with:

remove Lock = Caps_Lock
remove Control = Control_L
keysym Control_L = Caps_Lock
keysym Caps_Lock = Control_L
add Lock = Caps_Lock
add Control = Control_L
and add "xmodmap $HOME/.xmodmaprc" to your $HOME/.dtprofile file.

For the adventurous electrician, there's a web page to show how to build and program a PCB to to drive a Sun Type 5/6 keyboard from a PC. This includes a PCB mask, source code, and instructions. See http://www.buzzard.org.uk/jonathan/

[Thanks to Don Christensen and Ian Hall-Beyer]


(6.18) Can I run multiple terminals on the console of Solaris x86 like those supported on Linux, FreeBSD, Interactive Unix, and SCO?

No. Starting with Solaris/x86 2.4, they are no longer configured. Starting with Solaris 8, the functionality was removed.

[From Casper Dik's Solaris 2 FAQ]


(6.19) How do I upgrade my video graphics card?

First see if you have the driver installed. They are listed when you run kdmconfig. If the driver is present, configure with kdmconfig. If it's a new card, see if it's listed in the latest driver updates for your Solaris release on http://access1.Sun.COM/drivers/ If listed, install the update. kdmconfig is ran automatically at the end of the update installation. Before changing cards, choose, from kdmconfig, the 16-color 640x480 VGA setting, which is the lowest-common denominator for VGA video cards. After switching cards and rebooting (verifying the VGA setting works for the new card) choose a higher setting with kdmconfig.

See the Update Guide that comes with the update on specific installation instructions for the update. Generally, it's done as follows: (assuming the image downloaded from access1.Sun.COM is named vdu11image.Z and is in /tmp), type as root:

    # cd /tmp
    # uncompress du11vid2.Z ; cat du11vid1.bin du11vid2 | cpio -icvdum
    # zcat vdu11image.Z | cpio -icvdumB
    # ./installdu.sh


(6.20) How do I burn a CD-R or CD-RW with Solaris?

Use cdrecord (free) or commercial software. SCSI CD-R (Record once) and CD-RW (Read-Write many times) drives tend to be better supported than ATAPI drives. For details, see the Sun CD-ROM FAQ at http://www.pimpworks.org/sun/cdrom.html and Jörg Schilling's cdrecord page at: http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schilling/private/cdrecord.html


(6.21) Is IPv6 available for Solaris/x86?

Yes, starting in Solaris 8. See http://www.Sun.COM/solaris/ipv6/. For general IPv6 information, see http://www.ipv6.org/. If you wish to connect to the 6bone, an experimental, mostly tunneled IPv6 network, see http://www.6bone.net/


(6.22) Is IPsec available for Solaris/x86?

Yes, for Solaris 8. See volume 3 of the System Administrator's Guide at http://docs.Sun.COM/ for more configuration information. Solaris 8 IPSec supports AH (authentication) and ESP (encryption) headers, and "shared secrets" (manual keying), but not automatic (ISAKMP or IKE) keying. Solaris 9 supports IKE.

Adam Barclay adds these comments:

As a reminder, some countries (e.g., Russia) prohibit the use or possession of encryption software.


(6.23) Is Kerberos 5 available for Solaris/x86?

Yes, for Solaris 8. See volume 3 of the System Administrator's Guide at http://docs.Sun.COM/ for more configuration information. The configuration files reside at /etc/krb5 and /var/krb5 and the binary files at /usr/krb5 and /usr/lib/krb5. Make sure you answer "y" to whether you want Kerberos during your Solaris install. Then, install SEAM (Sun Enterprise Authentication Mechanism, what Solaris calls Kerberos) from the Solaris 8 Admin Pack, freely downloadable from http://www.Sun.COM/software/solaris/easyaccess/sol8.html


(6.24) 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 (HP/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 Solaris. However, psrinfo -p will still display 1 processor (as it's not true multi-threading).

[Thanks to John Groenveld, Jürgen Keil, Bob Palowoda, Bruce Alder, and Michael VanLoon]


(6.25) 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 http://www.sunfreeware.com/ (use "pkgadd -d packageFileName" to install) and also as a tar file (to extract, type "uncompress gzip*Z; tar xvf gzip*.tar") at ftp://ftp.netscape.com/pub/unsupported/gnu/gzip-1.2.4.x86-sun-solaris2.4.tar.Z


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

Because it's just a front-end "stub" for the unbundled Sun C compiler (Sun Studio C).

However, you can download Sun Studio 11 for free. See http://developers.sun.com/prodtech/cc/

You can also get the free GNU C compiler, gcc, in pkgadd format from various locations. It is bundled with the the "Solaris Software Companion CD" and can be downloaded from http://www.sunfreeware.com/. If you install gcc, I recommend that you rename or compress /usr/bin/cc and softlink (ln -s) /usr/local/bin/gcc (or /usr/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.27) 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:
       127.0.0.1    localhost    CCxxxxx-A  # where CCxxxxx-A is your hostname
       24.x.x.x      CCxxxxx-A    loghost   # where 24.x.x.x is your assigned IP

/etc/nsswitch.conf:
       hosts:        files dns

/etc/resolv.conf
       domain ebnsk1.nj.home.com
       nameserver 24.3.196.33
       nameserver 24.3.196.33

/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
224.0.0.0            24.x.x.x              U      3      0     elxl0
default              24.x.x.1              UG     0      44
127.0.0.1            127.0.0.1             UH     0     236      lo0

$ ifconfig -a
lo0: flags=849<UP,LOOPBACK,RUNNING,MULTICAST> mtu 8232
        inet 127.0.0.1 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.28) How do you setup Solaris to use RoadRunner's cable modem service?

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 -a")
  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 "127.0.0.1 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 127.0.0.1 netmask ff000000
	iprb0: flags=4843 mtu 1500
	inet 24.93.53.4 netmask ffffff00 broadcast 24.93.53.255
	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 sun.drydog.com" 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 sun.drydog.com" to verify routing is OK. Use "traceroute sun.drydog.com" 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 http://www.rr.com/ and help is at http://help.rr.com/ The Unofficial RR FAQ is at http://members.tripod.com/~tlarrow/rrfaq.htm

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.29) 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.30) 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 automounter.)

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 /home/andrew.

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.31) Is Veritas file system available for Solaris x86?

Only through NCR Corporation.
[Thanks to Bob Palowoda]


(6.32) How do 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

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.33) How do 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.34) How do I add color to "ls" or "vi"?

For "ls" you need the GNU "fileutils" version of ls. Obtain the binary from http://www.sunfreeware.com/ or compile it yourself from source from http://www.gnu.org/ 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 http://www.sunfreeware.com/ or directly from http://www.vim.org/. 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.35) How do I move the disk containing Solaris from the ATAPI primary master controller to the secondary controller or slave connector (or both)?

Once Solaris is on the secondary master, you must enable booting to it. Here's three methods:

[Thanks to Michael Wang, Alexander Yu, and Laurent Blume]


(6.36) 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):

Instructions for resizing the Solaris partition and filesystem. These instructions may not be easy and may not succeed. Backup your files and verify the backup first.

[Thanks to John D. Groenveld and Paul Floyd]


(6.37) 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 work.
  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.
  10. Do step 6 on Disk 1.
  11. Run 'installboot' on Disk 1 and Disk 2 (hint: the man page is ambiguous on this, but the Sunsolve doc says it must be run on slice 2 [it's obvious if you think about it]).
  12. Add state db's using metadb on Disk 1 and Disk 2.
  13. Edit /etc/vfstab and took out the :boot entry because it's now in the / fs.
  14. Reboot with /usr/sbin/shutdown -i6
  15. Test boot in single-user mode from either drive.

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


(6.38) 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:

I'm sure other drivers exist. Before buying ISDN hardware, check if they have a driver for Solaris first.


(6.39) 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 cluster.

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 at http://www.sunfreeware.com/


(6.40) 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.41) What is the Solaris Data Encryption Supplement?

It contains kernel modules to support more flavors of encryption for IPsec and Kerberos. Currently, this is AES (192 and 256 bit keys), Blowfish (128 to 448 bit), and ARCFOUR (2048 bit) for IPSec/IKE and GSS-API for Kerberos. A writeup by Carl Ehorn, below, provides a good summary. This is available for both SPARC and Intel. For Solaris 10 it's at http://javashoplm.sun.com/ECom/docs/Welcome.jsp? StoreId=8&PartDetailId=Sol10-GA-Encryption-G-F&TransactionId=try (combine URL into one line) Some countries (not the U.S.) restrict importing or exporting this encryption software.

By default, Solaris comes with 128 bit encryption.


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

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 this:

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: http://www.bolthole.com/solaris/mount-cdrom.html   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) independent :-(. To mount DVD, add "set hsfs:nhsnode=7256 to /etc/system to workaround a filesystem driver bug.

[Thanks to Philip Brown]


(6.43) Is noexec_user_stack supported in Solaris x86?

Yes, but only for AMD64 (Operon) on Solaris 10 or higher. For 32 bit x86, you can set it but it won't do anything. On SPARC and AMD64, 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
set noexec_user_stack = 1
set noexec_user_stack_log = 1

and reboot with /usr/sbin/shutdown -i6

Unfortunately the flag is ignored on Intel 32-bit architecture, because it doesn't have the concept of pages having execute permissions. (SPARC and AMD's Opteron and Athlon support it though).

[Thanks to Alan Coopersmith]


(6.44) How do I setup zones with Solaris?

First, you must have Solaris 10. Solaris Zones (aka Solaris Containers) is partitioning software that's sort of like an enhanced chroot jail—one kernel. It's software-based, not hardware-based, yet lighter-weight than virtualization software, such as VMWare. I find it useful for testing and development as I can easily set up a zone and not worry about destroying my Solaris installation. It's also good for serving several instances of software, say, a web server, each securely running separate from another.

Here's how I setup a zone on Solaris x86. Basically, all I need to setup a zone is a separate filesystem and a new IP address. The Ethernet network device is shared with the root (or "global") zone. I created a dedicated 6GB filesystem for use by the zone by using a loopback file. Loopback filesystems avoids repartitioning or adding disks. Loopback filesystems are inefficient and shouldn't be done for production use: use raw disk instead. If you want to use a etc/sysidcfg file to set the timezone, name service, locale, etc., place it, for this example, in /zones/danszone/etc/sysidcfg The following is from my session log (most output removed):

# mkdir -p /zones/danszone
# mkfile 6g /zones/dansloopbackfile
# lofiadm -a /zones/dansloopbackfile
/dev/lofi/1
# newfs /dev/rlofi/1
# mount /dev/lofi/1 /zones/danszone
# chmod go-rwx /zones/danszone
# zonecfg -z danszone
zonecfg:danszone> create
zonecfg:danszone> set zonepath=/zones/danszone
zonecfg:danszone> set autoboot=true
zonecfg:danszone> add net
zonecfg:danszone:net> set address=10.100.100.20
zonecfg:danszone:net> set physical=e1000g0
zonecfg:danszone:net> end
zonecfg:danszone> info
zonecfg:danszone> verify
zonecfg:danszone> commit
zonecfg:danszone> exit
# zoneadm -z danszone install
# zoneadm -z danszone boot
# zoneadm list -v
  ID NAME             STATUS         PATH
   0 global           running        /
   2 danszone         running        /zones/danszone
# zlogin -e @ -C danszone
(the first time the zone is booted, it takes you through the
usual setup menus.)
(type "@." to exit zlogin)

If you use a loopbackfile (again not recommended for production use), you need to create a startup script to run lofiadm, mount, and zoneadm boot. If you use a regular filesystem (for production use), zones start automatically.

For more information on zones, see http://www.sun.com/bigadmin/content/zones/ and http://www.opensolaris.org/os/community/zones/faq/


(6.45) 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.46) Is Adobe Acrobat Reader available for Solaris x86?

Yes. Adobe now has native Acrobat Reader 9 for Solaris x86 (as of March 2009). It's available from http://www.adobe.com/ It installs in /opt/Adobe/Reader9/bin/acroread

Alternative PDF readers for S86 include Evince, gpdf, ggv, and XPDF. Evince seems to be the best and is included in OpenSolaris. The (old) XPDF viewer is available on the Solaris Companion CD and at http://wwws.sun.com/software/solaris/freeware/ The Evince viewer, http://www.gnome.org/projects/evince/ binary is at http://www.blastwave.org/ and Solaris Express.


(6.47) Are RealPlayer and other audio and video players available for Solaris x86?

Yes. Solaris 10 06/06 and above comes with SUNWrealplayer. The Helix Community at https://helixcommunity.org/ ported RealPlayer 10 to Solaris x86.

For older versions of Solaris, the Unixware RealPlayer 8 is now playable on Solaris x86. For details, see Jürgen Keil's "Using Unixware RealPlayer 8 on Solaris x86" at http://www.tools.de/solaris/realplayer/ An old version of RealPlayer is at ftp://ftp.sun.drydog.com/pub/solaris/

Johan Hagman's Solaris Helpers Page at http://home1.swipnet.se/~w-10694/helpers.html describes other players, such as for MPEG, but seems to have disappeared off the web. Also, some of these players are SPARC-only. Apple QuickTime is available only for Mac and MS Windows.

Macromedia Flash Player comes with Solaris 10. It is also available for Solaris x86 at http://www.macromedia.com/software/shockwaveplayer/
(download from Solaris x86 with your preferred browser to ensure you get the correct version). Or check Jürgen's Solaris x86 Flash page at http://www.tools.de/solaris/flash/

Windows Video (WMV) GStreamer plugins are available from Fluendo at https://shop.fluendo.com/

[Thanks to Johan Hagman and Jürgen Keil]


(6.48) How to I find the battery status for a laptop under Solaris?

You can run Casper Dik's batstat CLI or acpipowertool GUI, and if you're using GNOME, you can optionally run Darren Moffat's port of the gnome-battery program. Neither are integrated into Solaris, at least yet. Here's how to install:


(6.49) * How to I boot into 32-bit mode on a AMD64 box?

Normally Solaris boots into 64-bit mode on AMD64. You may want 32-bit for, say, a device driver that's 32-bit only. To boot into 32-bit mode, copy the Solaris entry in /boot/grub/menu.lst and add "kernel/unix" as the first argument on the multiboot line. For example:

title Solaris
	root (hd0,2,d)
	kernel /platform/i86pc/multiboot
        module /platform/i86pc/boot_archive

title Solaris 32-bit
	root (hd0,2,d)
	kernel /platform/i86pc/multiboot kernel/unix
        module /platform/i86pc/boot_archive

[Thanks to Casper Dik]


(6.50) * How to I shutdown or reboot from GDM?

Add these two lines to /etc/X11/gdm/gdm.conf:

RebootCommand=/sbin/init 6
HaltCommand=/sbin/init 5

[Thanks to Bernd Schemmer]


Copyright © 1997 - 2009 Dan Anderson. All rights reserved.
http://sun.drydog.com/faq/


<- PREVIOUS NEXT ->

CalHotels.US--online reservations now CalHotels.US Lowest Hotel Rates Guaranteed. Reviews, maps, and photos.
U.S hotels in California: (L. A., San Diego, San Francisco, & Silicon Valley), AL, AK, AR, AS, AZ, CA, CO, CT, DC, DE, FL, FM, GA, GU, HI, ID, IL, IN, IA, KS, KY, LA, ME, MD, MA, MI, MN, MS, MO, MT, NE, NH, NJ, NY, OK, NV, MH, MP, NM, NC, ND, OH, OR, PA, PR, PW, RI, SC, SD, TN, TX, UT, VT, VA, VI WA, WV, WI, WY

  SOLARIS X86 HOME     SEARCH     PACKAGES     FAQ     BOOKSTORE  
FAQ: INTRO RESOURCES PRE-INSTALLATION INSTALLATION CUSTOMIZATION TROUBLESHOOTING X WINDOWS INTEROPERABILITY

I Boot OpenSolaris [Blue Ribbon]   This web page is not associated with Sun Microsystems. Copyright © 1997-2009 Dan Anderson. All rights reserved. [Legal Stuff]

 

If you have questions or comments, please send a message to Dan Anderson.

http://www.sun.drydog.com/faq/6.html