Showing posts with label Solaris. Show all posts
Showing posts with label Solaris. Show all posts

Wednesday, August 18, 2010

Booting Solaris Operating System using Windows Boot Loader - redirect

The post has moved here:
http://tech.saoslab.com/post/2010/08/18/boot-solaris-windows-bcdedit-bootloader

Blog is migrating

How to concatenate/merge Solaris 10 DVD image segments


Here's an example how to merge segments in Unix or Unix like systems:

[sa@ispros.com.bd ]$ cat sol-10-u8-ga-sparc-dvd-iso-a sol-10-u8-ga-sparc-dvd-iso-b > \
sol-10-GA-sp-dvd.iso


In Windows system, concatenate the files using the following command:

D:\> copy /b sol-10-u8-ga-x86-dvd-iso-a + sol-10-u8-ga-x86-dvd-iso-b \
sol-10-u8-ga-x86-dvd.iso

The result is a true ISO image that you can use to burn a DVD.
Use software like Nero or MagicISO to burn the DVD in Windows.

Thursday, February 11, 2010

Configure Broadband Internet Connection on Solaris

You have to follow some procedural steps as provided below:
  • login as root. You can use vi or other editor to modify files but be careful because you have the root previlege you can damage the system without having a notification.

  • Enter your PC's ip address in /etc/hosts. For example, after adding
    the last line my /etc/hosts look like:


    127.0.0.1       localhost 
    ::1     localhost 
    10.8.18.15      arncorp.net     loghost

  • Write the your default gateway ip address to /etc/defaultrouter file.

    # echo defaultGatewayAddress > /etc/defaultrouter 

    My /etc/defaultrouter looks like:

    10.8.18.21 

  • Write dns server information to /etc/resolv.conf

    # echo nameserver nameserverAddress1 > /etc/resolv.conf
    # echo nameserver nameserverAddress2 >> /etc/resolv.conf

  • Enter netmasks info on /etc/netmasks. For example, I have added this line to /etc/netmasks:

    10.8.0.0        255.255.255.0

  • In the file /etc/nssswitch.conf modify the enty for hosts to "file dns" from "file" so that system resolves dns internally.

  • Start your dns client if it is disabled.

    svcadm enable dns-client

Wednesday, February 3, 2010

Installing OS161 on Solaris 10 x86

This post applies to Solaris 10 and later releases (x86) and for the old packages of os161.

As it is said that there's too much linuxism in the code of os161 I could not find a relevant Solaris Package for os161. So I had to install os161 on Solaris from this old package source.

So first of all you have to download this source package of os161.

   - cs161-binutils-1.4 
   - cs161-gcc-1.4-2 
   - cs161-gdb-1.4-2 
   - sys161-1.12-2 
   - os161-1.11 

We have to solve an incompatibility problem.

Existing incompatibility in packages,

/usr/bin/awk
/usr/ccs/bin/make

Let's rename them.

mv /usr/bin/awk /usr/bin/tawk 
mv /usr/bin/nawk /usr/bin/awk 

Because nawk is default in Linux and exists with name awk. If you type ls
/usr/bin/*awk on Solaris you will see 3 different packages:

$ ls /usr/bin/*awk
awk 
nawk 
oawk 

Now set gnu make as default make

mv /usr/ccs/bin/make make.orig 
mv /usr/sfw/bin/gmake /usr/sfw/bin/make 

We did this because Solaris make does not work for gnu package. (These are the little difference between Solaris (Unix) and Linux.)

There's another way to use gmake as default. To modify an environmental variable:
    export MAKE=gmake

But this does not work always (maybe it does not totally replace make and in some way goes back sun's make).

Export /usr/ccs/bin and /usr/sfw/bin in PATH variable.

$ export  PATH=$PATH:/usr/ccs/bin:/usr/sfw/bin 

* Extract the packages

$ gunzip ASST0.tar.gz 
$ tar xvf ASST0.tar 
$ gunzip cs161-binutils-1.4.tgz 
$ tar xvf cs161-binutils-1.4.tar 
$ gunzip cs161-gcc-1.4-2.tgz 
$ tar xvf cs161-gcc-1.4-2.tar 
$ gunzip cs161-gdb-1.4-2.tgz 
$ tar xvf cs161-gdb-1.4-2.tar 
$ gunzip sys161-1.12-2.tgz 
$ tar xvf sys161-1.12-2.tar 
$ gunzip os161-1.11.tar.gz 
$ tar xvf os161-1.11.tar.gz 

Fixes

Download the attached support.h in current directory and replace

$ mv ./support.h os161-1.11/sbin/mksfs/support.h

I added some type definitions in the support.h file which were missing for Solaris x86 machines.

Now configure, build and install os161

$ cd cs161-binutils-1.4 
$ ./toolbuild.sh 
$ export PATH=$PATH:$HOME/cs161/bin 
$ cd ../cs161-gcc-1.4-2 
$ ./toolbuild.sh 
$ cd ../cs161-gdb-1.4-2 
$ ./toolbuild.sh 
$ cd ../sys161-1.12-2 
$ ./configure mipseb 
$ make 
$ make install 
$ cd ../os161-1.11 
$ make 
$ cd kern/conf

Configure Fix

Download the attached config in current directory and replace (assuming you
extracted os161 in current directory or you have to cd to the directory that
contain os161-1.11 directory)

$ chmod a+x config
$ mv config os161-1.11/kern/conf/config

In that config file I just changed tr to /usr/xpg4/bin/tr
because it is linux equivalent

Booting the Kernel

$ ./config ASST0 
$ cd ../compile/ASST0 
$ make depend 
$ make 
$ make install 
$ cd ~/cs161/root 
$ cp sys161.conf.sample sys161.conf 
$ ./sys161 kernel-ASST0 

Tips and Tricks

If you have once installed os161 in your Unix or Unix-like operating system just keep a copy of all files. When you re-install Solaris update the path as it was done before and simply copy the files. Then change the ownership of the files and folders using this command as root

# chown -R userName:userGroup /home/userName/cs161 

You have got os161 installed without actually installing the packages. Have fun with Solaris.

Trouble shooting

A common error during building ASST1(for Lab1) is something like this:

$ gmake install 
gmake: cannot create ~/cs161/root

To avoid this error configure should be done using correct PATH prefix.

$ ./configure --ostree=/export/ar/cs161/root

~/cs161/root does not work in Solaris!

And I assure you will have no problem with installing ASST1 in Solaris.

Monday, December 21, 2009

How to Configure Dial Up Internet Connection on Solaris 10

Googling for the solution with many types of workarounds in different references brings confusion. It's why I"m describing actually how I configured it.

Follow the steps given below correctly.
  • If you have selected non-networked during installation of Solaris 10 then you have to activate your network interface using the following command:

    # ifconfig interfaceName plumb up ipAddress netmask subnetMask

    In my PC the default network interface is rtls0. You can get your interfacename using following command and then looking up a while.
    # ifconfig -a

    ipAddress means ip Address of your Machine in LAN (you can get it
    from Windows if you have or contact your ISP).

    Subnet Mask is the subnet mask of your PC something like this 255.255.0.0.
  • Create a file /etc/ppp/peer/isp with following contents:

    sppptun 
    plugin pppoe.so 
    connect "/usr/lib/inet/pppoec interfaceName" 
    user atiq...@smile.com.bd           # my account name at my ISP 
    remotename smile.com.bd # name of the ISP; for pap-secrets 
    noauth                  # do not authenticate the ISP's identity (client) 
    noipdefault             # assume no IP address; get it from ISP 
    defaultroute            # install default route; ISP is Internet gateway 
    updetach                # log errors and CONNECT string to invoker 
    noccp                   # ISP doesn't support free compression 
    
  • Append to /etc/ppp/pap-sectrects and /etc/ppp/chap-sectrects

    ispProvidedUserName     ispName password

    Be careful no space as separator should be used. You must place tab instead. For example,
    abcd...@smile.com.bd        smile.com.bd    abcdef
  • Create /etc/ppp/pppoe.if with content
    interfaceName
    You have to set your interface name. interfaceName in my case is rtls0.
  • Create /etc/resolv.conf with content
    nameserver primaryDNSServer 
    nameserver secondoryDNSServer
    You can get them from Windows(peeping into your dialup connection
    detais) or asking your ISP. For example, mine is:
    nameserver 114.31.0.66 
    nameserver 4.2.2.2
  • Apply following commands
    # sppptun plumb pppoed interfaceName
    # sppptun plumb pppoe interfaceName # pppd call isp

    Or you can use debug to check for errors.
    # pppd debug call isp

How to Install Network Simulator (NS) and nsnam on Solaris 10

Follow the steps given below.
  • Download the ns-allinone package from here:
  • Extract it or apply following command and cd to the directory where you downloaded the file. Now apply following commands.
    # gtar xzvf \
    http://nchc.dl.sourceforge.net/sourceforge/nsnam/ns-allinone-2.33.tar.gz
    # cd ns-allinone-2.33
  • Now download all the files attached with this post (look at the bottom) in the same directory. After download is complete enter following commands.

    # chmod a+x ns_fix.sh
    # ./ns_fix.sh
Say yes if it asks to over-write any file.

Wordarounds

What fixes have been done to make the installation successful is described here.

I chose ns-allinone-2.33 package which contains
* Tcl release 8.4.18 (required component)
* Tk release 8.4.18 (required component)
* Otcl release 1.13 (required component)
* TclCL release 1.19 (required component)
* Ns release 2.33 (required component)
* Nam release 1.13 (optional component)
* Xgraph version 12 (optional component)
* CWeb version 3.4g (optional component)
* SGB version 1.0 (?) (optional component, builds sgblib for all UNIX
type platforms)
* Gt-itm gt-itm and sgb2ns 1.1 (optional component)
* Zlib version 1.2.3 (optional, but required should Nam be used)

First, Make your system gnu compatible (fix cc, make).

I have seen cases where setting enveronmental variables does not help. Still
you can try.
$ CC=gcc 
$ MAKE=gmake 

Better try this,
# ln -s /usr/sfw/bin/gcc /usr/sfw/bin/cc 
# ln -s /usr/sfw/bin/gmake /usr/sfw/bin/make

Put /usr/sfw/bin in PATH variable.
# export PATH=/usr/sfw/bin/:$PATH
To make it permanent add it to .bashrc in your home directory if you are using bourne again shell. Else add to .profile. To know which shell: give this command "echo $SHELL" without quotations exactly.

After doing this gcc will be used instead of Sun's default compiler. And gnu make will be default make. If there were no problems if you just extracted the package installed them using ./install command inside the dir it was enough. But it is actually not enough.

There is a problem with the Solaris MIN MAX macros. To fix it I have provided files: config.h and mobile/mip-reg.cc Finally provide tcp_cong.c where replaced strsep with getToken function because strsep is not in Solaris 10 (details here: http://does-not-exist.org/mail-archives/mutt-dev/msg10335.html)

It is included with later releases of Solaris. So you might find it easier to install ns in Solaris Express versions (OpenSolaris, SXCE). (Note: Architecture dependant fix: config.h and mip-reg.cc, OS dependant
fix: tcp_cong.c)

Files are attached with this post. Click to download files.
          config.h
          mip-reg.cc
          tcp_cong.c
          ns_fix.sh