Linux+Solaris HOWTO
Max Berger
v0.8-$Revision: 1.1 $, $Date: 2000/04/17 23:48:03 $
Describes how
to use Linux (x86) and Solaris (x86) together on one machine
Introduction
Why Solaris?
This is actually a good
question. Why use Solaris, when you can have Linux? Solaris is a
commercial system, the hardware support is scarce. But if you are
reading this you have probably already decided on using Solaris. If
not, here are some reasons:
I have a part-time job administrating Solaris
machines. It is of no use that I learning all the neat
command parameters and nifty Linux tricks at home, when
I can't use them on my Solaris-Box.
Sun was giving away Solaris for what they call
``Shipping and handling cost only'' for some time. They
might do that again. And almost-free-of-charge is always
a good deal.
Another reason might be that you like CDE.
Things covered in this HOWTO
This HOWTO tries to help you install Solaris 7 or 8 on an x86
computer already running Linux. The main targets are
not to destroy any data, see section
To make Linux and Solaris coexist (boot manager),
see section
To share data between Linux and Solaris, as described in
section
Referenced versions
The reference versions used while creating this
document where:
Solaris 7 x86 (= Solaris 2.7 / SunOS 5.7)
Solaris 8 x86 (= Solaris 2.8 / SunOS 5.8)
Linux 2.2.14, 2.3.99-pre3
fdisk v2.10f
The information might apply to other versions of the software, or it
might all be different.
Warning
Please back up any data
before messing with your system! A lot of the things
described in this document may result in excessive data
loss! I am not responsible for any data loss! See also
section
Preparing your Hard Drive
To Prepare your hard-drive for Solaris, you need
to know about standard PC partition tables and
about Solaris disk slices. In this HOWTO I talk
about single-disk systems only, but all the
information should also apply to a multi-disk
environment.
Traditional PC partitions
The standard partition-table has only 4 entries. The
entries important for us are the following:
A Primary Partition
Takes up one entry, and contains exactly one
partition. A waste of resources, but the only partition
you can boot from!
An extended Partition
Takes up one entry, but can
contain multiple DOS, Linux, and other partitions
A Solaris Partition
Takes up one entry,
but can contain multiple Solaris Partitions
To find out what partitions are present on your system, use
the fdisk program. Partitions numbers 1 to 4
(hda1..4, sda1..4, ...) are the ones
in your partition table.
Solaris partition labels
Solaris has its own partitioning scheme. It
uses one entry in the partition table, and
this entry is and acts as this partition would
be the entire disk.
This virtual disk is then divided in up to 8 slices. The
third slice, s2, covers the whole virtual disk, so you
actually have up to 7 slices for Solaris.
Unfortunately, the Solaris partition entry has the same
type as a Linux Swap partition (82). Therefore, you should
not have any Linux swap partitions as primary
partitions. Linux doesn't care about this, but who knows
what Solaris does?
Although the Linux fdisk program has some ``Sun
disklabel'' support, this doesn't seem to help any.
Hard disk space
Of course, Solaris needs disk space. The minimum
installation of Solaris 8 is about 300 MB. For the normal
tools its about 700 MB, and for a ``developer-system'' about
1 GB.
But this is only the space required for the base
installation. You might want to add a lot of GNU-Tools, and
other stuff. And if you want to share data between Solaris
and Linux, this has to happen on the Solaris partitions.
You might even think of sharing your home directories
between Solaris and Linux. As the time of this writing:
Forget it! I messed up my home directory doing so and I was
very happy about my backup. See also section
Quick check list
Here's the quick check list. Make sure you:
have used no more than 3 entries in your partition table
have no Linux swap partitions as primary partitions
Have at least 1 Linux ext2 partition as primary
Have at least 1 GB unpartitioned space
Preparing Linux
Building a new kernel
Some people donīt like building a custom kernel. For those of you:
you must build your own kernel if you want to share data
between Solaris and Linux on one hard disk. If, however, you do not
want to share data, you are safe with your old kernel.
Here are your kernel options for ``Solaris compatibility'':
Under code maturity:
Prompt for development drivers
Unfortunately UFS writing is still experimental.
In file systems:
UFS file system support
UFS is
the Solaris file system
UFS file system
write support
The only way to pass data
to Solaris
partition types / Solaris
(x86) partition table support
Is needed
for the slices within your Solaris partition to be
found.
Additional info about kernel building can be found in the
Kernel-HOWTO
Preparing your boot loader
Before
messing with your boot loader, please make sure that you have
an emergency disk ready which enables you to boot your old
system.
Unfortunately the Solaris install
overwrites the master boot record (MBR) and overwrites your
old boot manager.
Fortunately, the Solaris boot manager
is able to chain-boot. For this to work you have to put your
old boot loader (e.g. lilo) into the boot sector of one primary
Linux partition.
For lilo this means: look at your
/etc/lilo.conf. Look for the boot=
line. If it is something like boot=/dev/hda1
everything is fine. But if itīs something like
boot=/dev/hda it points to the MBR. Please change
it to point to a primary Linux partition
(e.g. boot=/dev/hda1)
A way to check if your
boot-loader is chain-loadable is installing lilo in to the
MBR and trying to chain load your other boot-manager. I used
the following file called lilo.conf.mbr for
this:
#lilo.conf.mbr
#Lilo in Master Boot Record doing nothing but chain-loading another lilo
boot=/dev/hda
root=/dev/hda5
install=/boot/boot.b
map=/boot/map
vga=ask
delay=50
other=/dev/hda1
label=lilochain
You can then
run lilo -C lilo.conf.mbr to install lilo into your
MBR. And donīt forget to run lilo to have lilo in
the boot sector of your hard-drive.
If you reboot
now, you should have a lilo-prompt. When you select other this
chain loads the old lilo, which in turn loads Linux.
Installing Solaris
Solaris interactive
Solaris 7
Solaris Interactive is on the first CD. Boot it, select
Solaris interactive
Solaris 8
On the Solaris 8 CDs the interactive installer is on
the first software CD. You don't need the install CD at
all.
The Solaris installation itself is quite straight
forward. One thing that might be confusing is the
partitioning. Solaris will automatically use all the free
space on your hard disk, and create it's own virtual disk in
it. And when it comes to slicing up your virtual disk, donīt
forget to add space for Solaris/Linux exchange. A good place
for this is an extra /export/share partition.
Please Note: If you abort during the Solaris installation,
the MBR of your hard disk may already be overwritten and you
may not be able to boot from the hard disk at all.
Web-Start
I couldn't get Web-Start to work at all. Please mail me if
you have any experience using it.
However, once Solaris was installed, I had no problems
adding web-start-packages
Getting GNU-tools
Solaris standard installation doesn't even have a
less command. Some people recommend getting the
Redhat Package Manager (RPM) for Solaris, but the standard
packaging tool will usually do it. You can find many nice
packages at http://www.sunfreeware.com
The standard packages can be used with
pkgadd <package>, and the web-start
packages with
java <packagewithoutclassextension>
Boot managing
Using the Solaris boot manager
When booting, the Solaris boot manager gives you all 4
primary partitions for choosing which to boot from. If you had
your boot loader installed on the boot sector of a primary
partition, everything should be fine. Just boot from this
partition, and Linux should come up.
Using lilo
Now you have lilo as a secondary boot loader, but you want
it to be your primary boot loader again? No Problem. Lilo
can easily chain boot Solaris. Just add the appropriate
other= lines to your lilo.conf
For testing, you should add the Solaris chain loading to
the lilo in your boot sector first. Then try chain loading
lilo, Solaris, lilo, Solaris, ... until you have enough of
it. If this works, you should be able to put lilo back into
the MBR again.
However, Solaris might have messed up your partition
table. This has happened on my system after installation of
Solaris 8. Lilo doesn't like the new partition, nor does
fdisk. I had no problems with Solaris 7
Using grub
Unfortunately, I have no experience with grub booting
Solaris. If you do, please mail me!
Sharing data
Using a shared partition
If you have build your kernel with Sun disk label support
and UFS support as mentioned in section , you are now able to
mount your Solaris partitions. During boot up, you should get
something similar to:
hda: [PTBL] [523/255/63] hda1 hda2 < hda5 hda6 hda7 hda8 > hda3 <Polaris: [s0]
hda9 [s1] hda10 [s2] hda11 [s3] hda12 [s6] hda13 [s7] hda14 >
Meaning (in this case): partition 3 (hda3) is a
Solaris partition with 6 slices (s0,s1,s2,s3,s6,s7). They
are mapped to Linux devices hda9 to hda14.
Try mounting your Solaris
partitions. When mounting UFS partitions, you always have to
add an -oufstype= argument, in this case
-oufstype=sunx86. So the command to mount a
partition is something like:
mount -oufstype=sunx86 /dev/hda14 /mnt
Now, test your partition. Please note: The write support
on UFS partitions is very experimental. Please don't trust
any data you write on your UFS partitions!
If you want your Solaris partitions automatically mounted
at boot time, you can add a line like
/dev/hda14 /solaris ufs ufstype=sunx86 0 0
to your /etc/fstab
Alternative ways
And, of course there are always other ways of sharing
data:
Floppy disk
I don't know which floppy disk file systems are supported by
Solaris. Do you? Mail me.
Network
Solaris knows NFS. Linux knows NFS. This might actually
be the best way of sharing data
Running foreign binaries
Linux binaries on Solaris
Is supposed to work using a program called ``lxrun''. I
haven't got around to testing it yet. See the Solaris
web site for more information.
Solaris binaries on Linux
Are as far as I know unsupported
Appendix
Finding additional info
Here are some URI that might help you:
Sun Freeware
My first stop for Solaris
resources. Has many GNU-tools in binary format ready to
install.
Sun Microsystems
Suns official web page
Solaris Homepage
Solaris Hardware Compatibility List (HCL)
Solaris Online Documentation
My Website
You will always find the newest version of this document
somewhere on this page
Credits and legal stuff
Credits
Thanks to Marcel Meyer for beta testing this HOWTO while
installing Solaris on his machine
Questions, comments, suggestions
Are
always welcome. You can reach me via e-mail at
max.berger@xslt.de
License
This document is copyrighted © by Max Berger. You may
use and/or modify it according to the Linux Documentation
Project License (LDPL) found at http://www.linuxdoc.org/COPYRIGHT.html.
According to the license you don't have to tell me, but I'd
very much like to know when you modify and/or republish this
document.
Although the information given in this document is believed
to be correct, the author will accept no liability for the
content of this document. Use the tips and examples given
herein at your own risk.