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

[Solaris x86 FAQ] 9. Interoperability with Other Operating Systems (Solaris x86 FAQ)



(9.0) INTEROPERABILITY WITH OTHER OPERATING SYSTEMS

(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 Solaris install program, it will ask you which partition you wish to use. On your boot disk all you need to do is to create another partition on your existing disk. You use GRUB to boot to choose to boot to Solaris or another operating system, such as MS Windows.

To shrink an existing MS-DOS/MS Windows partition, if you need to make room, use something like Partition Magic or Linux ntfsresize. ntfsresize is also available for Solaris from FSWfsmisc

[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]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows NT"
multi(0)disk(0)rdisk(1)partition(1)C:\BOOTSECT.SUN="Solaris/x86"
C:\="DOS"

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 channel.

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 below).

In Solaris, mount a DOS-formatted floppy (if you've converted C: to NTFS, which isn't easily 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 http://www.winimage.com/bootpart.htm. 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 Thorn]


(9.3) Can I mount Solaris ZFS filesystems on Linux or Mac?

ZFS is Zettabyte Filesystem, a modern, flexible, integral filesystem described at http://www.opensolaris.org/os/community/zfs/ Experimental, unsupported, read-only support for Linux is available from Ricardo Correia, a berliOS developer, at http://zfs-on-fuse.blogspot.com/ as a user-space filesystem. ZFS filesystem support will be on Mac OS X 10.5 "Leopard."


(9.4) How can I mount MS Windows NTFS filesystems in Solaris? +

Mounting NTFS in Solaris is supported by mount_ntfs, by Martin Rosenau, and packages FSWfsmisc and FSWfspart, by Moinak Ghosh (and based on Martin Rosenau's work and part of Moinak's BeleniX work). I use and recommend FSWfsmisc/FSWfspart as it allows mount directly from the mount(1M) command and /etc/vfstab, supports extended partitions, and supports NTFS. Both are explained below and both work with Solaris 10 and 11.

Download the package file for FSWfsmisc/FSWfspart from http://www.belenix.org/binfiles/FSWpart.tar.gz and http://www.belenix.org/binfiles/FSWfsmisc.tar.gz and install the two packages (pkgadd). Use prtpart to display the partitions and mount to mount the NTFS partition. For example, I use this command:
mount -F ntfs /dev/dsk/c0d0p1 /c
If you have this line in /etc/fstab you can mount with just mount /c
/dev/dsk/c0d0p1 - /c ntfs - no ro
(change the mount point, /c, and partition c0d0p1 for your system). Here's the output from mount and FSWfsmisc's xlsmounts:

# mount |grep '^/c'
/c on 127.0.0.1:/ remote/read only/setuid/devices/port=33249/public/vers=
2/proto=udp/xattr/dev=4700004 on Sun Nov 26 19:42:29 2006
# xlsmounts
  PHYSICAL DEVICE     LOGICAL DEVICE      FS    PID         ADDR Mounted on
  /dev/dsk/c0d0p1     /dev/dsk/c0d0p1    ntfs   3354  127.0.0.1:/ /c

Martin Rosenau's program mount_ntfs, also mounts NTFS filesystems, but with a separate program, mount_ntfs. Download the binary (and source, if desired) from http://sourceforge.net/projects/mount-ntfs/ Determine what disk and partition your NFS filesystem resides on.
/usr/local/sbin/mount_ntfs /dev/rdsk/c2d0p1 /c
Type mount_ntfs for usage information. Unmount with umount.

[Thanks to Martin Rosenau and Moinak Ghosh for mount_ntfs and FSWfsmisc]


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

Yes. If you use Solaris 10 or greater, it's no problem--as they use different partition IDs (0x82 for Linux and 0xBF for Solaris). Unfortunately, Solaris 9 and earlier and Linux swap partitions use the same ID, 0x82, so be careful.

For the most part, both Linux and Solaris use GRUB to boot load the OS. Linux and Solaris GRUB both live at the beginning of the partition and in the /boot/grub/ directory. Solaris GRUB can boot to either Linux or Solaris directly. Linux GRUB can't boot to Solaris directly, as it doesn't have the Solaris modifications (at least yet). But Linux GRUB can "chain load" to Solaris GRUB. The following is a sample entry to chain load Solaris GRUB from Linux GRUB:

# Boot from Linux GRUB to Solaris GRUB at the 3rd partition, /dev/hda3
title Sun Solaris GRUB Boot Loader
    rootnoverify (hd0,2)
    chainloader +1

The following is a sample entry for booting Linux from Solaris GRUB. It can just be copied and pasted from your Linux GRUB menu.lst file:

# Boot from Solaris GRUB to Linux at the 4th partition, /dev/hda4
title SUSE Linux 10.1
    root (hd0,0)
    kernel /vmlinuz root=/dev/tahoma-suse10.1/root-tahoma-suse10.1 vga=0x31a
    initrd /initrd


(9.6) Help! Mount of a Linux NSFv4 fails with "Not owner"

If you get this error message mounting a NSFv4 filesystem from a Linux server on a Solaris client:
nfs mount: mount: /netdrive: Not owner
then the problem is NFSv4 support is broken in Linux. There's two solutions for this:


(9.7) Empty


(9.8) Empty


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

With Solaris 10 Update 1 and above, GRUB is the boot loader for Solaris. GRUB allows you to boot to one out of multiple operating systems on your disk, whether Solaris or non-Solaris. The Windows partition is automatically recognized and added to your GRUB menu. For example, here's my entry:

title Windows
        rootnoverify (hd0,0)
        chainloader +1
Active partition: You must set the Solaris partition to be ACTIVE in order to make it boot to Solaris. MS Windows doesn't have to be active to boot. If you make the Windows partition active, it will only boot to windows and not use GRUB.


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

Omit the Solaris "slice" number (e.g., "s0") for DOS partitions. You can use the normal UNIX commands to copy files, 'cp', etc., after that to move the data. DOS filenames are in the 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 details).

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 partition.

To mount the partitions automatically, put something like this in /etc/vfstab:

#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 partition.

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


(9.11) Does PartitionMagic and BootMagic understand Solaris partitions?

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:


(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 FAQ]

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 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 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 for Solaris 10 or earlier, or Solaris SMB for Solaris 11. SAMBA is 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: http://samba.anu.edu.au/samba/

OpenSolaris SMB allows files to be shared on MS Windows. To enable add this line to /etc/pam.conf :

other password required pam_smb_passwd.so.1 nowarn
Enable the service and join a MS Windows Workgroup:
svcadm enable -r smb/server;
smbadm join -w MYGROUP # (default is WORKGROUP)
sharemgr add-share -s /myshare -r myshare -d "My OpenSolaris SMB share" default
sharemgr list -v
sharemgr show -vp
Change "myshare" to the name of the root directory you're sharing. Then use passwd(1) to set any passwords you'll be using in MS Windows (old passwords set before pam.conf is modified are not used). On MS Windows, go to Windows Explorer or My Computer and, from the Tools menu, select "Map Network Drive": \\myhostname\myshare. Change myhostname to your OpenSolaris hostname and myshare to the root directory being shared. Login with the username and password set with passwd, above. No guest login is allowed.

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 access files on a remote MS Windows, SMB, or SAMBA share?

You can't use mount or smbmount, as on Linux, because no Solaris kernel driver is available. You can use smbsh, smbclient, or Sharity as workarounds. For example, "smbclient //servernamehere/sharenamehere" then type "get somefilename to access a file. smbsh allows SMB file access through UNIX commands, such as ls or egrep, from your UNIX shell. The shell must be dynamically linked in order for this to work (which is the typical case). To use type "smbsh" then access your SMB files from "/smb/groupnamehere/servernamehere

If you use GNOME, Nautilus has the ability to browse SMB shares, but you can't open the file directly. You drag (copy) files from a SMB share to your local disk (and vice versa).

Another solution is to us NFS instead of SMB. Get a file server (Network Attached Storage, NAS) that supports NFS. If accessing from windows, download MS Windows "Services for Unix," which supports NFS, at http://www.microsoft.com/windows/sfu/

The best solution may be Sharity-Light from Objective Development. It's open source, GNU licensed that runs in user (not kernel) space using the Solaris NFS kernel interface. See http://www.obdev.at/products/sharity-light/ for details. Here's how I mount a SMB share with sharity:
shlight //mazama/d /d -n

Objective Development also has a commercial product, Sharity, which also provides SMB server functions, at http://www.obdev.at/products/sharity/ Sharity works with 32-bit x86, but not 64-bit.


(9.16) 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 SMB.

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: http://www.cs.mu.oz.au/appletalk/cap.html


(9.17) 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.18) 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 either package FSWfsmisc or 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 dany.drydog.com 5.8 Generic_108529-06 i86pc i386 i86pc
$ lxrun /linux/bin/rpm -q redhat-release
redhat-release-6.2-1
$ lxrun /linux/bin/uname -a
SunOS dany.drydog.com 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 /usr/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 $PATHMAP.

lxrun has been replaced with BrandZ in Solaris 10, which allows one to run Linux 2.4-based software on a Solaris "Branded" Zone (or "Container"). The focus is on running Red Hat Enterprise Linux (RHEL) and CentOS.

For more information see the following links:


(9.19) 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.20) Is Solaris x86 able to execute Solaris SPARC applications?

There's no way to run a SPARC binary on an x86 machine unless you have an emulator for the SPARC CPU. Transitive, http://www.transitive.com/ has emulation software that runs SPARC software on x86.


(9.21) 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.22) 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.23) 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 7. These Solaris slices are mapped to virtual partitions hda5 to hda11.

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

       CONFIG_UFS_FS=y
       CONFIG_SOLARIS_x86_PARTITION=y

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.24) Can I access Linux (ext2/ext3) partitions from Solaris?

Yes. You can do this wither with Moinak Ghosh's FSWfsmisc/FSWfspart (for Solaris 10 or 11, developed as part of Moinak's BeleniX work) or with the older ext2fs (Solaris 7-10). I use and recommend FSWfsmisc as it works better with extended partitions and also mounts NTFS filesystems. I use and recommend FSWfsmisc/FSWfspart as it allows mount directly from the mount(1M) command and /etc/vfstab, supports extended partitions, supports NTFS filesystems, and supports 32-bit and AMD64 Solaris. Both FSWfsmisc and ext2fs are explained below.

Download the package files for FSWfsmisc/FSWfspart from http://www.belenix.org/binfiles/FSWpart.tar.gz and and install the two packages (pkgadd). Use prtpart to display the partitions and mount to mount the NTFS partition. For example, I use this command:
mount -F ext2fs /dev/dsk/c0d0p6 /linux
If you have this line in /etc/fstab you can mount with just mount /c
/dev/dsk/c0d0p6 - /linux ext2fs - no ro
(change the mount point, /linux, and partition c0d0p6 for your system). Here's the output from mount and FSWfsmisc's xlsmounts:

# mount |grep /linux
/linux on 127.0.0.1:/ remote/read only/setuid/devices/port=33285/public/
vers=2/proto=udp/xattr/dev=4700005 on Sun Nov 26 20:13:10 2006
# xlsmounts
  PHYSICAL DEVICE     LOGICAL DEVICE      FS    PID         ADDR Mounted on
  /dev/dsk/c0d0p0     /dev/dsk/c0d0p6  ext2fs   3429  127.0.0.1:/ /linux

Linux ext2/ext3 read-only filesystem mounts from Solaris (mount/unmount) is also available with ext2fs. For Solaris 10, ext2fs supports extended partitions.

  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.

  2. Untar file "gzcat ext2fs*.tar.gz | tar xvf -", and either rebuild from source or use the included pre-built binaries (easiest).

  3. Become root and install the files by running "./getext2fs" as root from the source directory downloaded above.

  4. Make your mount point. For example: "mkdir /linux"

  5. 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.
    For an extended partition and ATAPI, it might look like this:
    /usr/sbin/mount -r -F ext2fs /dev/dsk/c0d0p2:1 /linux
    where p2 means the extended partition (type 0x05) is partition 2 (out of 1-4) and ":1" is the 2nd extended partition (:0 would be the first extended partition). See the question above on mounting DOS filesystems and the question below on decoding /dev/dsk/c* device names.

  6. 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
    

  7. 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 boot).
    For an extended partition and ATAPI, it might look like this:
    /dev/dsk/c0d0p2:1 - /linux ext2fs - no ro
    where p2 means the extended partition (type 0x05) is partition 2 (out of 1-4) and ":1" is the 2nd extended partition (:0 would be the first extended partition).

  8. 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).

You can also backup a ntfs filesystem partition with ntfsclone. For example, here's how I backup the NTFS partition on my laptop to a removable hard drive or NFS filesystem:

nice ntfsclone --save-image /dev/dsk/c0d0p1 -o - 2>ntfsclone.log \
	| bzip2 -c >/mnt/backup-drive/ntfs-partition.img.bz2
Other ntfs tools in FSWfsmisc are: ntfscp, ntfslabel, ntfsresize, ntfsundelete, ntfscat, ntfscluster, ntfscmp, ntfsfix, ntfsinfo, & ntfsls.

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

Paul Floyd has ext2fs drivers for Solaris 7, 8, 9, and 10 at http://paulf.free.fr/software.html. His webpage also has partition tools to resize and edit UFS partitions.

The OpenSolaris Ext3 Project seeks to add e2fs/e3fs filesystem support. See http://opensolaris.org/os/project/ext3/

[Thanks to Moinak Ghosh for FSWfsmisc (Solaris 10 and OpenSolaris), Paul Floyd for the Solaris 9 and 10 ports, and Mike Sullivan for the Solaris 8 port. Neither I nor they take any responsibility for errors with this unsupported software.]


(9.25) 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.26) 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 http://www.sun.com/products-n-solutions/edu/promotions/edusoft/

Open Office, http://www.openoffice.org/ an open-source spin-off from StarOffice, is free. It doesn't contain some components of Star Office (such as some fonts, macros, and clip art and a better spell-checker), but is perfectly acceptable for casual use. Solaris x86 binaries are available, as are SPARC, Windows, Linux and Apple Mac OSx.

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). See the question below on building Abiword for Solaris.

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 http://www.corel.com/wpunix/

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

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

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 (http://www.inso.com/) QuickView Plus. See http://www.Sun.COM/desktop/products/software/pcviewer.html


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

Mozilla Firefox (web browser) and Mozilla Thunderbird (email) comes with Solaris 10 and above. "Bleeding edge" releases of Firefox and Thunderbird are available from and http://www.mozilla.org/releases/ For troubleshooting tips with Solaris Mozilla, see http://www.mozilla.org/unix/solaris.html


(9.28) How do I setup Xprint for Mozilla?

Some builds of Mozilla for Solaris (unfortunately) 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 #
export XPSERVERLIST
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.29) Can I mount other ufs disks, say from BSDi/FreeBSD, and vice versa?

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.30) 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
Cylinders
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: 13142]


(9.31) 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.32) 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 2000. This is done by creating a "virtual machine" for each OS. VMware 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, www.sysadminmag.com

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, http://www.vmware.com/ 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 folks.`
  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: 172.16.4.0 255.255.255.0

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 server.
  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 http://www.mostlysoftware.com/ His solution is posted at http://miataru.computing.net/solaris/wwwboard/forum/545.html 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 http://fabrice.bellard.free.fr/qemu/ You will need to download the source and apply the patch from: http://lists.gnu.org/archive/html/qemu-devel/2004-09/msg00016.html You will also need the network drivers from: http://www.tools.de/solaris/itu/DU.zip 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/2006, 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 http://www.cl.cam.ac.uk/Research/SRG/netos/xen/

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


(9.33) 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. Solaris handles multiple processes and threads easily in a SMP system. 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 http://www.osnews.com/story.php?news_id=4867&page=1

[Thanks to Rich Teer]


(9.34) 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.35) 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):

        image=/boot/vmlinuz-2.2.16-22
                label=linux
                read-only
                root=/dev/hda9

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.36) Empty


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

The naming convention comes from AT&T SysV/386:

For the first part of the name, e.g. c0t0d2:

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]


(9.38) What is OpenSolaris and what distributions are available?

OpenSolaris is open source Solaris, based on the OSI-approved Common Development and Distribution License (CDDL). It seeks to emulate the Linux distribution model. Some Solaris software is still closed source (see the Roadmap on the OpenSolaris site). See http://www.opensolaris.org/ for more information.

Here's the distributions I know about:


(9.39) How do I compile Abiword for Solaris?

Abiword is a basic word processor available from http://www.abisource.com/ It can be compiled with Sun's cc and GNU gcc with the following instructions. The 2.2 and 2.4 versions compile on Solaris, but not 2.6.

Compiling with gcc (gcc-3.4.4)

Compiling with Sun cc

Same as above, but no need to set either the environment or make the change with pthreads. It is necessary to make the other changes I have listed above.
./configure --with-libiconv="path_of_libiconv" -with-libpng="path_of_libpng"

gmake && gmake install should install abiword.

[Thanks to Nagesh Subbanna]


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 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


End of the Solaris x86 FAQ.
http://sun.drydog.com/faq/
Maintained by Dan Anderson, San Diego, California, USA.


<- PREVIOUS CONTENTS

  SOLARIS X86 HOME     SEARCH     PACKAGES     FAQ  

I Boot OpenSolaris [Blue Ribbon]   This web page is not associated with Oracle Corporation. [Legal Stuff]

 

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

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