Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 23 Jun 2006 14:35:20 +0300
From:      Dmitry Ganenko <dima@apk-inform.com>
To:        freebsd-emulation@freebsd.org
Subject:   Installation of Oracle10g Express Edition on FreeBSD 5.4-RELEASE
Message-ID:  <885310187.20060623143520@apk-inform.com>

next in thread | raw e-mail | index | archive | help
------------D4EAE116F414BE
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Introduction

It is impossible to hold in check a tear of tender emotions while
reading a press release of the Oracle Corporation:

"REDWOOD SHORES, California, Moscow, November,10, 2005 - the Oracle
Corporation announced  the release of Oracle Database 10g Express
Edition (Oracle Database XE),a free version of the world-wide known
DBMS for developers. The Beta-version of Oracle Database XE can be
loaded from the website of the Corporation.
New edition of DBMS Oracle Database 10g enables software developers,
DB administrators and all those using the Oracle technology for the
first time to get a free basic version of the DBMS which allows
starting developing and expansion of their own applications. Besides,
this version is proposed free to independent software developers and
equipment suppliers for free distribution and embedding into their own
applications.
"Oracle Database XE enables developers, DB administrators, independent
software suppliers and students to study, create and develop their own
applications on the basis of the most advanced DBMS for free", says
Thomas Kyte, the Oracle vice- president. "Nobody has ever supposed
such a thing - anybody is able to start his work with the best market
solution."

You see, the most advanced Oracle has come nearer to common people.
But as usually it has been nearer to Windows and Linux users. All the
best is for children! But why are we worse? So, students, developers,
administrators, let us start!


1. Playing the role of kernel hackers

First of all, we should patch kernel - just a little. Having tried to
launch oracle for some days with the following actions: using ktrace -
kdump; then (after having guessed to pay attention on ports and
joyfully detected linux_kdump there) using the last one; rummaging in
kernel sources; scratching the back of your head; murmuring quietly
abusive words about Oracle Corporation programmers, FreeBSD
developers, Linus Torvalds, Larry Ellison and, of course, Bill Gates
(nobody knows why him exactly!); dreaming in nightmares about teenage
Daemons with pitchforks which fight with Penguins in red caps and then,
after a short reconciliation, crash windows throughout all the
Silicone Valley - at last you are to recognize: the kernel should be
unbent, it really should!

The first patch corrects the error in the  Linux emulator in the
linux_time() function (or maybe it is not an error)

File patch1
 
--- compat/linux/linux_misc.c.orig      Fri Apr  1 01:17:42 2005
+++ compat/linux/linux_misc.c   Wed Jun 21 11:14:05 2006
@@ -711,8 +711,9 @@ linux_times(struct thread *td, struct li
        tms.tms_cutime = CONVTCK(td->td_proc->p_stats->p_cru.ru_utime);
        tms.tms_cstime = CONVTCK(td->td_proc->p_stats->p_cru.ru_stime);
 
-       if ((error = copyout(&tms, args->buf, sizeof(tms))))
-               return error;
+       if (args->buf != NULL)
+               if ((error = copyout(&tms, args->buf, sizeof(tms))))
+                       return error;
 
        microuptime(&tv);
        td->td_retval[0] = (int)CONVTCK(tv);

The second patch is for linprocfs. Don't ask me why it should be done
exactly this way. It was found experimentally and by peeping into
SuSE Linux 9.2 (It works somehow there...)

File patch2

--- compat/linprocfs/linprocfs.c.orig   Fri Apr  1 01:27:16 2005
+++ compat/linprocfs/linprocfs.c        Wed Jun 21 11:14:10 2006
@@ -515,7 +515,7 @@ linprocfs_doprocstat(PFS_FILL_ARGS)
        sbuf_printf(sb, "%d", p->p_pid);
 #define PS_ADD(name, fmt, arg) sbuf_printf(sb, " " fmt, arg)
        PS_ADD("comm",          "(%s)", p->p_comm);
-       PS_ADD("statr",         "%c",   '0'); /* XXX */
+       PS_ADD("statr",         "%c",   'S'); /* XXX */
        PS_ADD("ppid",          "%d",   p->p_pptr ? p->p_pptr->p_pid : 0);
        PS_ADD("pgrp",          "%d",   p->p_pgid);
        PS_ADD("session",       "%d",   p->p_session->s_sid);
@@ -535,7 +535,7 @@ linprocfs_doprocstat(PFS_FILL_ARGS)
        PS_ADD("priority",      "%d",   0); /* XXX */
        PS_ADD("timeout",       "%u",   0); /* XXX */
        PS_ADD("itrealvalue",   "%u",   0); /* XXX */
-       PS_ADD("starttime",     "%d",   0); /* XXX */
+       PS_ADD("starttime",     "%d",   1); /* XXX */
        PS_ADD("vsize",         "%ju",  (uintmax_t)kp.ki_size);
        PS_ADD("rss",           "%ju",  P2K((uintmax_t)kp.ki_rssize));
        PS_ADD("rlim",          "%u",   0); /* XXX */

The third patch corrects a bug (or maybe a feature) in the pseudofs
code (it is necessary for linprocfs). The case is, if you assemble
linprocfs and try such a program, then the read function will read not
4 as it was asked but one point less, that is, as it is easily
calculated, 3 bytes:

File test.c

#include <sys/types.h>
#include <sys/uio.h> 
#include <unistd.h> 
#include <fcntl.h> 

main () { 
 int fd, count;
 char buf[10];

 fd = open("/compat/linux/proc/self/cmdline", O_RDONLY);
 count = read(fd, buf, 4);
 buf[4] = '\0';
 printf("count = %d, buf = %s\n", count, buf);
}

I am not sure whether the third correction is absolutely right;
moreover, I am not sure as to its place in the code. This question is
to real kernel hackers.

File patch3

--- fs/pseudofs/pseudofs_vnops.c.orig   Mon Sep  6 22:38:01 2004
+++ fs/pseudofs/pseudofs_vnops.c        Wed Jun 21 11:14:14 2006
@@ -530,7 +530,7 @@ pfs_read(struct vop_read_args *va)
                        PRELE(proc);
                PFS_RETURN (EIO);
        }
-       sb = sbuf_new(sb, NULL, buflen, 0);
+       sb = sbuf_new(sb, NULL, buflen+1, 0);
        if (sb == NULL) {
                if (proc != NULL)
                        PRELE(proc);

We correct our kernel:

# cp patch1 patch2 patch3 /usr/src/sys
# patch < patch1
# patch < patch2
# patch < patch3

Then (it goes without saying)as it has always been done for Oracle
launching not only in FreeBSD, but also on Linux itself, we add the
following to the configuration of the core:

options   COMPAT_LINUX #it is as you would like it, you may load the module
options   SEMMAP=128
options   SEMMNI=128
options   SEMMNS=32000
options   SEMOPM=100
options   SEMMSL=250
options   SHMMAXPGS=262144
options   SHMMNI=4096
options   SHMSEG=4096
options   MAXDSIZ="(1024*1024*1024)" # as to this and what is below I am not sure
options   MAXSSIZ="(1024*1024*1024)"
options   DFLDSIZ="(1024*1024*1024)"

So, we compile, install, reboot... and go on.
        

2. We install the right linux_base

Though it is written in the Oracle10g Express Edition Installation
instruction that the glibc version should be  >=2.3.2, it seems to be
naive to believe everything that is written. It is going to work with
the version >=2.3.3. Anyhow, mine didn't start working. At binary
launching something told me about a relocation error and mentioned
some symbols GLIB_2.3.3 or something of the kind. That is why instead
of linux_base-8 you should install linux_base-fc4 (or linux_base-suse-9.2).

# cd /usr/ports/emulators/linux_base-fc4
# make
# make install

Then we find somewhere libaio-0.3.104-2.i386.rpm for FC4 and install
it with the help of rpm

# rpm --root=/compat/linux --ignoreos --ignorearch --nodeps -ivh libaio-0.3.104-2.i386.rpm

You also should mount linux procfs

# echo "linproc /compat/linux/proc linprocfs rw 0 0" >> /etc/fstab
# mount /compat/linux/proc


3. We install Oracle10g Express Edition

We take distributive Oracle XE for linux86
(oracle-xe-univ-10.2.0.1-1.0.i386.rpm) from otn.oracle.com. Of course,
you may also take distributive for Win32, but anything written above
or below will have nothing to do with it.
Install it with rpm:

# rpm --root=/compat/linux --ignoreos --ignorearch --noscripts --nodeps -ivh oracle-xe-univ-10.2.0.1-1.0.i386.rpm

It is installed in  /compat/linux/usr/lib/oracle, but it is unlikely
to work. You should replace it into /usr/lib/oracle with no
variations. It is assembled by this path, this bright path is
registered everywhere in scripts, so you  have nothing to do but agree
with it:

# mv /compat/linux/usr/lib/oracle /usr/lib

We launch the following script, answer two or three questions and go
out to smoke. (If you are a non-smoker, you may have a cup of tea or
coffee). Smoking should be fast, tea or coffee should be gulped
because in some two minutes you will have Oracle10g Express Edition
installed and working at your FreeBSD; moreover, you'll be able to use
it any way, absolutely free, with your favorite operational system.

File install.sh
skipped (it is not interesting, and so long).
You may found it and patches in the attached file.

PS.

This article in russian you may also read here
http://wiki.bsdportal.ru/doc:oraclexe_on_freebsd



With best regards
Dmitry Ganenko <dima@apk-inform.com>
------------D4EAE116F414BE
Content-Type: application/octet-stream; name="orainst.tar.gz"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="orainst.tar.gz"

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
uq3buq3b49p/APnDFBcAUAAA

------------D4EAE116F414BE--




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?885310187.20060623143520>