# kldload linux
This translation may be out of date. To help with the translations please access the FreeBSD translations instance .
FreeBSD proporciona compatibilidad de binarios con muchos otros sistemas operativos tipo UNIX®, incluyendo Linux. Puede estarse preguntando ?por qué necesita FreeBSD ejecutar binarios de Linux? La respuesta a esa pregunta es muy simple. Muchos desarrolladores y compañías desarrollan sólo para Linux, ya que últimamente es el blanco de todas las miradas dentro del mundo de las tecnologís de la información. Esto hace que la comunidad FreeBSD tenga que exigir a esas compañías y desarrolladores que produzcan versiones nativas de sus aplicaciones para FreeBSD. El problema es que la mayoría de esas compañías no suelen saber realmente cuánta gente utilizaría su producto si existieran esas versiones para FreeBSD, y la mayoría continúa desarrollando únicamente para Linux. Vista la situación ?que puede hacer un usuario de FreeBSD? Aquí es donde entra en juego la compatibilidad binaria con Linux.
Para expresarlo en pocas palabras, dicha compabitilidad permite a los usuarios de FreeBSD cerca del 90% de las aplicaciones de Linux sin tener que modificarlas en absoluto. Entre estas está StarOffice™, la versión Linux de getenv(3) , Adobe® Acrobat®, RealPlayer, VMware, Oracle®, WordPerfect, Doom, Quake y muchas más. En determinados casos los binarios Linux rinden mejor en FreeBSD que en Linux.
Existen, por desgracia, ciertas características específicas de Linux que no funcionan en FreeBSD. Los binarios Linux no funcionarán en FreeBSD si recurren a llamadas específicas de i386™ como la activación del modo virtual 8086.
Tras leer este capítulo sabrá usted:
cómo activar la compatibilidad binaria con Linux en su sistema.
cómo instalar bibliotecas compartidas de Linux que pueda necesitar.
cómo instalar aplicaciones de Linux en su sistema FreeBSD.
cuáles son los detalles de la implementación de compatibilidad binaria con Linux en FreeBSD.
Antes de leer este capítulo es necesario que sepa:
cómo instalar software de terceros ( Instalación de aplicaciones: «packages» y ports ).
La compatibilidad binaria con Linux no viene activada por omisión. La forma más sencilla de habilitarla es cargar el KLD ("objeto cargable en el kernel")
linux
. Como usuario
root
proceda del siguiente modo:
# kldload linux
Si quiere que la compatibilidad con Linux esté siempre activada tendrá que añadir la siguiente línea en /etc/rc.conf :
linux_enable="YES"
Utilice kldstat(8) para verificar que el KLD esté cargado:
% kldstat
Id Refs Address Size Name
1 2 0xc0100000 16bdb8 kernel
7 1 0xc24db000 d000 linux.ko
Si por alguna razón no desea o no puede cargar el KLD, entonces puede enlazar estáticamente la compatibilidad de binarios Linux en el kernel agregando
options COMPAT_LINUX
a su fichero de configuración del kernel. Luego instale su nuevo kernel como se describe en
Configuración del kernel de FreeBSD
.
Puede hacerse de dos maneras, ya sea usando el port linux_base , o instalándolas de forma manual .
Este es con mucho el método mas sencillo para instalar bibliotecas de ejecución. Es como instalar cualquier otro port de la Colección de Ports . Es tan sencillo como esto:
# cd /usr/ports/emulators/linux_base
# make install distclean
Hecho esto debería disponer de compatibilidad binaria con Linux. Algunos programas pueden "quejarse" por la presencia de versiones antiguas de algunas bibliotecas del sistema. Generalmente esto no suele ser un problema muy grave.
|
Pueden coexistir múltiples versiones del port emulators/linux_base disponibles correspondientes a distintas versiones de diversas distribuciones de Linux. Tendrá que instalar el port que más se ajuste a las necesidades de las aplicaciones de Linux que quiera instalar. |
Si, por el motivo que fuese, no tiene instalada la colección de ports puede instalar las bibliotecas que necesite de forma manual. Necesitará las bibliotecas compartidas Linux de las que depende el programa y el enlazador en tiempo de ejecución ("runtime linker"). Necesitará también crear un directorio
/compat/linux
donde alojar las bibliotecas Linux en su sistema FreeBSD Cualquier biblioteca compartida a la que haya recurrido un programa de Linux ejecutado en FreeBSD buscará en primer lugar en dicho directorio. Por lo tanto, si se carga un programa Linux, por ejemplo
/lib/libc.so
, FreeBSD intentará en primer lugar abrir
/compat/linux/lib/libc.so
y, si no existe, lo intentará con
/lib/libc.so
. Las bibliotecas compartidas deben instalarse en
/compat/linux/lib
en lugar de las rutas que el
ld.so
de Linux proporcione.
En general, necesitará buscar las bibliotecas compartidas de las que los binarios Linux dependen sólamente las primeras veces que instale un programa Linux en su FreeBSD. Más adelante tendrá un conjunto suficiente de bibliotecas compartidas Linux en su sistema para poder ejecutar binarios Linux sin que tenga que hacer nada más.
?Que pasaría si instalara el port
linux_base
y su aplicación todavía tuviera problemas debido a bibliotecas compartidas que no encuentra en el sistema? ?Cómo saber qué bibliotecas compartidas necesitan los binarios Linux? Básicamente hay dos posibilidades (para poder ejecutar las siguientes instrucciones necesitará estar como
root
Si tiene acceso a un sistema Linux busque en él qué bibliotecas necesita la aplicación, y cópielas a su sistema FreeBSD. Veamos unos ejemplos:
Asumiremos que utilizó FTP para conseguir los binarios Linux de Doom y los puso en un sistema Linux. Para ver qué bibliotecas compartidas necesitará ejecute
ldd linuxdoom
:
% ldd linuxdoom
libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0
libX11.so.3 (DLL Jump 3.1) => /usr/X11/lib/libX11.so.3.1.0
libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29
Necesitaría todos los ficheros de la segunda columna, y tendrá que ponerlos en /compat/linux con los nombres de la primera columna como enlaces simbólicos apuntando hacia ellos. De este modo tendría en su sistema FreeBSD los siguientes ficheros:
/compat/linux/usr/X11/lib/libXt.so.3.1.0
/compat/linux/usr/X11/lib/libXt.so.3 -> libXt.so.3.1.0
/compat/linux/usr/X11/lib/libX11.so.3.1.0
/compat/linux/usr/X11/lib/libX11.so.3 -> libX11.so.3.1.0
/compat/linux/lib/libc.so.4.6.29
/compat/linux/lib/libc.so.4 -> libc.so.4.6.29
|
Recuerde que si ya tiene una biblioteca compartida Linux con un número de versión mayor que coincida con la primera columna de la salida de
y un binario requiere una versión más reciente (como indica la siguiente salida de
si solo ve una o dos versiones desfasadas en los últimos dígitos no se preocupe de copiar /lib/libc.so.4.6.29 , el programa debería funcionar bien con una versión ligeramente antigua. De todas formas, si así lo prefiere, puede actualizar libc.so ; el resultado sería este:
|
|
El mecanismo de enlazado simbólico sólamente es necesario con binarios Linux. El enlazador en tiempo de ejecución de FreeBSD se encarga de buscar él mismo las versiones correctas, así que no tendrá que preocuparse usted de hacerlo. |
Los binarios ELF algunas veces requieren un paso extra de "marcado". Si trata de ejecutar un binario ELF no marcado recibirá un mensaje de error como el siguiente:
% ./mi-binario-elf
ELF binary type not known
Abort
Para ayudar al kernel de FreeBSD a distinguir entre un binario ELF de FreeBSD y uno de Linux utilice brandelf(1) .
% brandelf -t Linux mi-binario-elf-de-linux
Las herramientas GNU se encargan de ubicar automáticamente la marca apropiada en los binarios ELF, por lo tanto este paso será innecesario en un futuro próximo.
Si el DNS no funciona u obtiene este mensaje:
resolv+: "bind" is an invalid keyword resolv+:
"hosts" is an invalid keyword
Necesitará un fichero /compat/linux/etc/host.conf con el siguiente contenido:
order hosts, bind multi on
Significa que
/etc/hosts
seráanalizado en primer lugar y después se usará DNS. Si
/compat/linux/etc/host.conf
no está instalado, las aplicaciones Linux usan el
/etc/host.conf
de FreeBSD y chocan con la sintaxis (incompatible) de FreeBSD. Borre
bind
de su
/etc/resolv.conf
si no tiene configurado un servidor de nombres.
Este documento describe el proceso de instalación de la versión para Linux de Mathematica® 5.X en un sistema FreeBSD.
Puede pedir a Wolfram, el fabricante, La versión para para Linux de Mathematica® o la versión de Mathematica® para estudiantes en su sitio web, http://www.wolfram.com/ .
Lo primero que tiene que hacer es decirle a FreeBSD que los binarios de Mathematica® para Linux utilizan la ABI Linux. La forma más sencilla de hacerlo es marcar por omisión todos los binarios sin marcas como Linux ELF.
# sysctl kern.fallback_elf_brand=3
Hecho esto FreeBSD asumirá que cualquier binario sin marca que encuentre utiliza la ABI Linux; de este modo podrá ejecutar el binario directamente desde el CDROM.
Copie el fichero MathInstaller en su disco duro
# mount /cdrom
# cp /cdrom/Unix/Installers/Linux/MathInstaller /directoriolocal/
Edite este fichero y sustituya la primera línea,
/bin/sh
, por
/compat/linux/bin/sh
para asegurarnos de que lo que ejecute el instalador sea la verión de
sh(1)
de Linux. El siguiente paso es sustituir todos los
Linux)
por
FreeBSD)
con un editor de texto on con el script que encontrará en la siguiente sección. Esto se hace para ayudar al instalador de Mathematica®, el cual en un cierto momento invoca a
uname -s
para determinar el sistema operativo, a tratar a FreeBSD como si fuera un sistema operativo muy similar a Linux. Hecho todo esto, cuando ejecute
MathInstaller
podrá instalar Mathematica®.
Debe modificar los scripts de shell que Mathematica® creó durante la instalación antes de usarlos. Si eligió ubicar en
/usr/local/bin
los ejecutables de Mathematica® verá que en ese directorio hay enlaces simbólicos a ficheros como
math
,
mathematica
,
Mathematica
y
MathKernel
. En cada uno de esos ficheros debe sustituir
Linux)
por
FreeBSD)
con un editor de texto o bien con el siguiente script de shell:
#!/bin/sh cd /usr/local/bin for i in math mathematica Mathematica MathKernel do sed 's/Linux)/FreeBSD)/g' $i > $i.tmp sed 's/\/bin\/sh/\/compat\/linux\/bin\/sh/g' $i.tmp > $i rm $i.tmp chmod a+x $i done
Cuando arranque Mathematica® por primera vez se le pedirá una contraseña. Si Wolfram no le ha enviado ya necesita un "machine ID", para lo cual debe ir al directorio de instalación y ejecutar
mathinfo
. Este "machine IDE" se obtiene de la dirección MAC de la primera tarjeta Ethernet de la máquina y tiene como objetivo que no pueda ejecutar Mathematica® en más de una máquina.
Durante el proceso de registro en Wolfram (ya sea por correo electrónico, teléfono o fax) les dará el "machine ID" y Wolfram le enviará una contraseña relacionada con él, consistente en grupos de números.
Mathematica® usa unos cuantos tipos especiales para mostrar caracteres que no están en ningún conjunto estándar de tipos: integrales, sumas, letras griegas, etc. El protocolo X exige que los tipos estén instalados en local , es decir, tiene que copiar los tipos del CDROM o la máquina desde la que ha instalado Mathematica® a su máquina. Los tipos están en el directorio del CDDROM /cdrom/Unix/Files/SystemFiles/Fonts y se supone que deben estar en su disco duro en el directorio /usr/local/mathematica/SystemFiles/Fonts . Los tipos están realmente en los subdirectorios Type1 y X . Hay varias formas de utilizarlos.
La primera es copiarlos en uno de los directorios de tipos que hay en /usr/X11R6/lib/X11/fonts , antes de lo cual tendrá que añadir a fonts.dir los nombres de los tipos; tendrá también que cambiar el número de tipos en la primera línea. Por otra parte, todo esto puede hacerse ejecutando mkfontdir(1) en el directorio donde haya copiado los tipos.
La segunda forma de utilizar estos tipos es copiarlos bajo /usr/X11R6/lib/X11/fonts :
# cd /usr/X11R6/lib/X11/fonts
# mkdir X
# mkdir MathType1
# cd /cdrom/Unix/Files/SystemFiles/Fonts
# cp X/* /usr/X11R6/lib/X11/fonts/X
# cp Type1/* /usr/X11R6/lib/X11/fonts/MathType1
# cd /usr/X11R6/lib/X11/fonts/X
# mkfontdir
# cd ../MathType1
# mkfontdir
Añada los nuevos directorios de tipos a su ruta de tipos:
# xset fp+ /usr/X11R6/lib/X11/fonts/X
# xset fp+ /usr/X11R6/lib/X11/fonts/MathType1
# xset fp rehash
Si usa el servidor Xorg puede cargar los tipos automáticamente añadiéndolos al fichero xorg.conf .
|
En servidores XFree86™ el fichero de configuración es XF86Config . |
Si no tiene ya en su sistema un directorio /usr/X11R6/lib/X11/fonts/Type1 puede cambiarle el nombre al directorio MathType1 del ejemplo anterior por Type1 .
Maple™ es un programa comercial de matemáticas similar a Mathematica®. Puede adquirir este software en http://www.maplesoft.com/ ; tras registrarlo recibirá un fichero de licencia. Si quiere instalar este software en FreeBSD siga los siguienes pasos:
Ejecute el "script" de shell INSTALL desde el lugar de instalación del producto. Elija la opción "RedHat" cuando le pregunte el programa de instalación. /usr/local/maple es un buen sitio para instalar el software.
Si no lo ha hecho ya, solicite una licencia para Maple™ a Maple Waterloo Software ( http://register.maplesoft.com/ ) y cópiela a /usr/local/maple/license/license.dat .
Instale el gestor de licencias FLEXlm ejecutando el "script" de shell de instalación INSTALL_LIC que viene con Maple™. Introduzca el nombre de su máquina (el servidor de licencias lo necesita).
Parchée el fichero /usr/local/maple/bin/maple.system.type con lo siguiente:
----- snip ------------------
*** maple.system.type.orig Sun Jul 8 16:35:33 2001
--- maple.system.type Sun Jul 8 16:35:51 2001
***************
*** 72,77 ****
--- 72,78 ----
# the IBM RS/6000 AIX case
MAPLE_BIN="bin.IBM_RISC_UNIX"
;;
+ "FreeBSD"|\
"Linux")
# the Linux/x86 case
# We have two Linux implementations, one for Red Hat and
----- snip end of patch -----
Tenga muy presente que después de
"FreeBSD"|\
no debe haber ningún espacio en blanco.
Este parche le dice a Maple™ que interprete "FreeBSD" como un tipo de sistema Linux. El "script" de shell
bin/maple
llama al "script" de shell
bin/maple.system.type
, que a su vez recurre a
uname -a
para dictaminar el nombre del sistema operativo. Dependiendo de cuál sea sabrá qué binarios utilizar.
Inicio del servidor de licencias.
El siguiente "script", sito en
/usr/local/etc/rc.d/lmgrd.sh
, le permitirá arrancar
lmgrd
:
----- snip ------------
#! /bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin
PATH=${PATH}:/usr/local/maple/bin:/usr/local/maple/FLEXlm/UNIX/LINUX
export PATH
LICENSE_FILE=/usr/local/maple/license/license.dat
LOG=/var/log/lmgrd.log
case "$1" in
start)
lmgrd -c ${LICENSE_FILE} 2<< ${LOG} 1<&2
echo -n " lmgrd"
;;
stop)
lmgrd -c ${LICENSE_FILE} -x lmdown 2<< ${LOG} 1<&2
;;
*)
echo "Usage: `basename $0` {start|stop}" 1<&2
exit 64
;;
esac
exit 0
----- snip ------------
Prueba de arranque de Maple™:
% cd /usr/local/maple/bin
% ./xmaple
Todo debería funcionar perfectamente. Si es así aún le queda un último paso: escribir a Maplesoft y decirles que sería genial una versión nativa para FreeBSD.
El gestor de licencias FLEXlm puede ser un tanto difícil de usar. En caso de necesitarla tiene más información en http://www.globetrotter.com/ .
lmgrd
tiene una reconocida fama de ser muy meticuloso en todo lo relacionado con el fichero de licencia; suele generar volcados de memoria si se encuentra con algún problema. Un fichero de licencia correcto tiene que parecerse mucho a este:
# =======================================================
# License File for UNIX Installations ("Pointer File")
# =======================================================
SERVER chillig ANY
#USE_SERVER
VENDOR maplelmg
FEATURE Maple maplelmg 2000.0831 permanent 1 XXXXXXXXXXXX \
PLATFORMS=i86_r ISSUER="Waterloo Maple Inc." \
ISSUED=11-may-2000 NOTICE=" Technische Universitat Wien" \
SN=XXXXXXXXX
|
El número de serie y la clave han sido sobreescritos con X.
|
Puede editar el fichero de licencia siempre que no toque la línea "FEATURE" (que está protegida por la clave de la licencia).
Este documento describe el proceso de instalación de la versión para Linux de MATLAB® version 6.5 en FreeBSD. En general funciona bastante bien, excepción hecha de Java Virtual Machine™ (consulte la Enlace del entorno de ejecución Java™ ).
La versión Linux de MATLAB® puede pedirse directamente en el sitio de The MathWorks, http://www.mathworks.com . Tiene que recibir también el fichero de licencia o instrucciones de cómo crearlo. Al hacer su pedido aproveche para decirles que sería muy buena idea que ofrecieran una versión nativa de su software para FreeBSD.
Para instalar MATLAB® haga lo siguiente:
Inserte el CD de instalación y móntelo. Conviértase en
root
e inicie la instalación:
# /compat/linux/bin/sh /cdrom/install
|
El instalador es gráfico. Si obtiene errores acerca de no ser capaz de abrir un display teclée
|
Teclée
/compat/linux/usr/local/matlab
donde el instalador le pida el directorio raíz de MATLAB®.
|
Esto último le facilitará la entrada de datos durante el resto de la instalación. Introduzca lo siguiente en el "prompt" de su shell:
|
Edite el fichero de licencia tal y como consta en las instrucciones de la licencia de MATLAB®.
|
Puede tenerlo ya editado y copiado a $MATLAB/license.dat desde antes de que el instalador se lo pida. |
Complete el proceso de instalación.
La instalación MATLAB® ha finalizado. Los siguientes pasos aplicarán el "pegamento" necesario para conectarlo a su sistema FreeBSD.
Crée los enlaces simbólicos que necesitan los "scripts" del administrador de licencias:
# ln -s $MATLAB/etc/lmboot /usr/local/etc/lmboot_TMW
# ln -s $MATLAB/etc/lmdown /usr/local/etc/lmdown_TMW
Crée un fichero de inicio en /usr/local/etc/rc.d/flexlm.sh . El siguiente ejemplo es una versión modificada de $MATLAB/etc/rc.lm.glnx86 que viene con la distribución de MATLAB®. Los cambios que se han hecho en él obedecen a la ubicación de los ficheros y el arranque del administrador de licencias bajo emulación de Linux.
#!/bin/sh
case "$1" in
start)
if [ -f /usr/local/etc/lmboot_TMW ]; then
/compat/linux/bin/sh /usr/local/etc/lmboot_TMW -u nombre-de-usuario && echo 'MATLAB_lmgrd'
fi
;;
stop)
if [ -f /usr/local/etc/lmdown_TMW ]; then
/compat/linux/bin/sh /usr/local/etc/lmdown_TMW > /dev/null 2>&1
fi
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
exit 0
|
El fichero debe ser ejecutable:
Tendrá que reemplazar la entrada
nombre-de-usuario
de nuestro ejemplo por un nombre de usuario válido en su sistema (que no sea
|
Arranque el administrador de licencias:
# /usr/local/etc/rc.d/flexlm.sh start
Cambie el enlace del entorno de ejecución Java™ (JRE) a uno que funcione en FreeBSD:
# cd $MATLAB/sys/java/jre/glnx86/
# unlink jre; ln -s ./jre1.1.8 ./jre
Coloque el siguiente "script" de arranque en /usr/local/bin/matlab :
#!/bin/sh /compat/linux/bin/sh /compat/linux/usr/local/matlab/bin/matlab "$@"
Escriba
chmod +x /usr/local/bin/matlab
.
|
Dependiendo de su versión de emulators/linux_base tal vez obtenga errores al ejecutar este "script". Para evitarlo edite /compat/linux/usr/local/matlab/bin/matlab y cambie la línea en la que aparece: if [ `expr "$lscmd" : '.*->.*'` -ne 0 ]; then (en la versión 13.0.1 es en la línea 410) por esta otra línea: if test -L $newbase; then |
Este "script" solucionará las dificultades que pueda tener para detener MATLAB® correctamente.
Crée un fichero llamado $MATLAB/toolbox/local/finish.m y ponga en él una sola línea con este texto:
! $MATLAB/bin/finish.sh
|
|
|
En el mismo directorio encontrará los ficheros
finishsav.m
y
finishdlg.m
, que le permiten guardar su trabajo antes de salir de la aplicación. Si quiere usar alguno de ellos, inserte la línea de arriba inmediatamente después de
|
Crée un fichero $MATLAB/bin/finish.sh con el siguiente contenido:
#!/usr/compat/linux/bin/sh (sleep 5; killall -1 matlab_helper) & exit 0
El fichero tiene que ser ejecutable:
# chmod +x $MATLAB/bin/finish.sh
Este texto describe el proceso de instalación de Oracle® 8.0.5 y Oracle® 8.0.5.1 Enterprise Edition para Linux en una máquina FreeBSD.
Debe tener instalados los ports emulators/linux_base y devel/linux_devtools . Si tiene dificultades con estos ports es posible que tenga que usar los paquetes o quizás versiones más antiguas de dichas aplicaciones que encontrará en la Colección de Ports.
Si quiere usar el agente inteligente también tendrá que instalar el paquete Tcl de Red Hat, tcl-8.0.3-20.i386.rpm . La orden genérica para instalar paquetes con el port oficial de RPM ( archivers/rpm ) es:
# rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm paquete
La instalación de dicho paquete no debe generar ningún error.
Antes de instalar Oracle® tendrá que configurar un entorno apropiado. Este documento solamente explica lo que hay que hacer especialmente para utilizar la versión de Linux para Oracle® FreeBSD, no lo que figura en la guía de instalación de Oracle®.
Tal y como consta en la guía de instalación de Oracle®, debe configurar la cantidad máxima de memoria compartida. No utilice
SHMMAX
en FreeBSD.
SHMMAX
se calcula a partir de
SHMMAXPGS
y
PGSIZE
, así que defina
SHMMAXPGS
. Todas las demás opciones pueden usarse tal y como se describen en la guía. Por ejemplo:
options SHMMAXPGS=10000 options SHMMNI=100 options SHMSEG=10 options SEMMNS=200 options SEMMNI=70 options SEMMSL=61
Configure estas opciones para que se ajusten al uso que pretenda darle a Oracle®.
Asegúrese también de que las siguientes opciones están en el fichero de configuración de su kernel:
options SYSVSHM #SysV shared memory options SYSVSEM #SysV semaphores options SYSVMSG #SysV interprocess communication
Crée una cuenta
oracle
según el procedimiento habitual de creación de usuarios. La cuenta
oracle
, empero, tiene algo especial puesto que debe teer una shell
de
Linux. Añada
/compat/linux/bin/bash
a
/etc/shells
y asigne a la cuenta
oracle
/compat/linux/bin/bash
como shell por omisión.
Además de las variables normales para Oracle®, como
ORACLE_HOME
y
ORACLE_SID
, debe configurar las siguientes variables de entorno:
| Variable | Valor |
|---|---|
|
|
|
|
|
|
|
|
|
Le aconsejamos configurar todas las variables de entorno en .profile . Veamos un ejemplo completo:
ORACLE_BASE=/oracle; export ORACLE_BASE ORACLE_HOME=/oracle; export ORACLE_HOME LD_LIBRARY_PATH=$ORACLE_HOME/lib export LD_LIBRARY_PATH ORACLE_SID=ORCL; export ORACLE_SID ORACLE_TERM=386x; export ORACLE_TERM CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip export CLASSPATH PATH=/compat/linux/bin:/compat/linux/sbin:/compat/linux/usr/bin PATH=$PATH:/compat/linux/usr/sbin:/bin:/sbin:/usr/bin:/usr/sbin PATH=$PATH:/usr/local/bin:$ORACLE_HOME/bin export PATH
Debido a una pequeña inconsistencia en el emulador Linux tendrá que crear un directorio llamado
.oracle
en
/var/tmp
antes de iniciar el instalador. Haga que sea propiedad del usuario
oracle
. Hecho esto deberí poder instalar Oracle® sin ningún problema. Si no es así
revise su distribución
Oracle® y su configuración. Una vez finalizada la instalación de Oracle® aplique los parches que se detallan en las dos siguientes subsecciones.
Un problema que se da con una cierta frecuencia es que el adaptador del protocolo TCP no está correctamente instalado. Como consecuencia no puede iniciarse ninguna escucha TCP, a las que también se les llama directamente «listeners». Esto le ayudará a resolver el problema.:
# cd $ORACLE_HOME/network/lib
# make -f ins_network.mk ntcontab.o
# cd $ORACLE_HOME/lib
# ar r libnetwork.a ntcontab.o
# cd $ORACLE_HOME/network/lib
# make -f ins_network.mk install
No se olvide de ejecutar root.sh de nuevo .
Durante la instalación de Oracle® algunas acciones que requieren ser ejecutadas como
root
deben almacenarse en un "script" de shell llamado
root.sh
. Dicho "script" está en el directorio
orainst
. Aplique el siguiente parche a
root.sh
para que utilice la ruta correcta de
chown
o ejecute el "script" bajo una shell nativa de Linux.
*** orainst/root.sh.orig Tue Oct 6 21:57:33 1998 --- orainst/root.sh Mon Dec 28 15:58:53 1998 *************** *** 31,37 **** # This is the default value for CHOWN # It will redefined later in this script for those ports # which have it conditionally defined in ss_install.h ! CHOWN=/bin/chown # # Define variables to be used in this script --- 31,37 ---- # This is the default value for CHOWN # It will redefined later in this script for those ports # which have it conditionally defined in ss_install.h ! CHOWN=/usr/sbin/chown # # Define variables to be used in this script
Si no está instalando Oracle® desde un CD puede parchear las fuentes de root.sh . Se llama rthd.sh y está en el directorio orainst del árbol de fuentes.
El "script"
genclntsh
se usa para crear una biblioteca de cliente compartida y para construir los demos. Al aplicar el siguiente parche comentará la definición de
PATH
:
*** bin/genclntsh.orig Wed Sep 30 07:37:19 1998 --- bin/genclntsh Tue Dec 22 15:36:49 1998 *************** *** 32,38 **** # # Explicit path to ensure that we're using the correct commands #PATH=/usr/bin:/usr/ccs/bin export PATH ! PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH # # each product MUST provide a $PRODUCT/admin/shrept.lst --- 32,38 ---- # # Explicit path to ensure that we're using the correct commands #PATH=/usr/bin:/usr/ccs/bin export PATH ! #PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH # # each product MUST provide a $PRODUCT/admin/shrept.lst
Las instalaciones de sistemas SAP® en FreeBSD no reciben soporte técnico de SAP®. SAP® solamente lo ofrece si se usan plataformas certificadas.
Este texto expone una forma de instalar un SAP® R/3® System con una Oracle® Database para Linux en una máquina FreeBSD, incluyendo la instalación de FreeBSD y Oracle®. Se muestran dos configuraciones diferentes:
SAP® R/3® 4.6B (IDES) con Oracle® 8.0.5 en FreeBSD 4.3-STABLE
SAP® R/3® 4.6C con Oracle® 8.1.7 en FreeBSD 4.5-STABLE
Aunque este documento trate de describir todos los pasos importantes con detalle no ha sido escrito como sustituto de las guías de instalación de Oracle® y SAP® R/3®.
Por favor, consulte la documentación de SAP® R/3® que se incluye en la edición para Linux de SAP® y las preguntas específicas sobre Oracle®, así como los recursos que estén a su disposición sobre Oracle® y SAP® OSS.
Durante la instalación de SAP® se han utilizado los siguientes CD-ROM:
| Nombre | Número | Descripción |
|---|---|---|
|
KERNEL |
51009113 |
SAP Kernel Oracle / Installation / AIX, Linux, Solaris |
|
RDBMS |
51007558 |
Oracle / RDBMS 8.0.5.X / Linux |
|
EXPORT1 |
51010208 |
IDES / DB-Export / Disco 1 de 6 |
|
EXPORT2 |
51010209 |
IDES / DB-Export / Disco 2 de 6 |
|
EXPORT3 |
51010210 |
IDES / DB-Export / Disco 3 de 6 |
|
EXPORT4 |
51010211 |
IDES / DB-Export / Disco 4 de 6 |
|
EXPORT5 |
51010212 |
IDES / DB-Export / Disco 5 de 6 |
|
EXPORT6 |
51010213 |
IDES / DB-Export / Disco 6 de 6 |
También utilizamos el CD de Oracle® 8 Server (versión pre-producción 8.0.5 para Linux, versión de kernel 2.0.33), que no es realmente necesario y FreeBSD 4.3-STABLE (a unos cuantos días de la liberación de 4.3-RELEASE).
| Nombre | Número | Descripción |
|---|---|---|
|
KERNEL |
51014004 |
SAP Kernel Oracle / SAP Kernel Version 4.6D / DEC, Linux |
|
RDBMS |
51012930 |
Oracle 8.1.7/ RDBMS / Linux |
|
EXPORT1 |
51013953 |
Release 4.6C SR2 / Export / Disco 1 de 4 |
|
EXPORT1 |
51013953 |
Release 4.6C SR2 / Export / Disco 2 de 4 |
|
EXPORT1 |
51013953 |
Release 4.6C SR2 / Export / Disco 3 de 4 |
|
EXPORT1 |
51013953 |
Release 4.6C SR2 / Export / Disco 4 de 4 |
|
LANG1 |
51013954 |
Release 4.6C SR2 / Language / DE, EN, FR / Disco 1 de 3 |
Según los idiomas que quiera usar es posible que necesite otros CD de idiomas. Sólo hemos utilizado DE y EN, así que nos bastó con el primer CD. Para su información, los números de los cuatro CD EXPORT son idénticos. Los tres CD de idiomas también tienen el mismo número, aunque esto es distinto en los CD de la versión 4.6B IDES. Al escribir este texto (20.03.2002) ejecutamos la instalación en FreeBSD 4.5-STABLE (20.03.2002).
Las siguientes notas han resultado ser muy útiles durante la instalación, así que le recomendamos encarecidamente que las lea antes de instalar SAP® R/3®:
| Número | Título |
|---|---|
|
0171356 |
SAP Software on Linux: Essential Comments |
|
0201147 |
INST: 4.6C R/3 Inst. on UNIX - Oracle |
|
0373203 |
Update / Migration Oracle 8.0.5 -→ 8.0.6/8.1.6 LINUX |
|
0072984 |
Release of Digital UNIX 4.0B for Oracle |
|
0130581 |
R3SETUP step DIPGNTAB terminates |
|
0144978 |
Your system has not been installed correctly |
|
0162266 |
Questions and tips for R3SETUP on Windows NT / W2K |
| Número | Título |
|---|---|
|
0015023 |
Initializing table TCPDB (RSXP0004) (EBCDIC) |
|
0045619 |
R/3 with several languages or typefaces |
|
0171356 |
SAP Software on Linux: Essential Comments |
|
0195603 |
RedHat 6.1 Enterprise version: Known problems |
|
0212876 |
The new archiving tool SAPCAR |
|
0300900 |
Linux: Released DELL Hardware |
|
0377187 |
RedHat 6.2: important remarks |
|
0387074 |
INST: R/3 4.6C SR2 Installation on UNIX |
|
0387077 |
INST: R/3 4.6C SR2 Inst. on UNIX - Oracle |
|
0387078 |
SAP Software on UNIX: OS Dependencies 4.6C SR2 |
El siguiente equipo es suficiente para la instalación de un sistema SAP® R/3®. Si pretende darle uso productivo necesitará hacer un estudio detallado de sus necesidades:
| Componente | 4.6B | 4.6C |
|---|---|---|
|
Procesador |
Pentium® III 800MHz x 2 |
Pentium® III 800MHz x 2 |
|
Memoria |
1GB ECC |
2GB ECC |
|
Espacio en disco |
50-60GB (IDES) |
50-60GB (IDES) |
Para su uso en producción le recomendamos procesadores Xeon™ con una caché grande, discos de alta velocidad (SCSI, controlador de RAID por hardware), USV y ECC-RAM. Un espacio en disco tan grande se debe al sistema IDES preconfigurado, que crea ficheros de bases de datos de 27 GB durante la instalación. Este espacio también es suficiente para sistemas de producción iniciales y datos de aplicación.
Este es el hardware que utilizamos al escribir este texto: placa base dual con 2 procesadores Pentium® III a 800 MHz, adaptador SCSI Adaptec® 29160 Ultra160 (para acceder a una unidad de cinta 40/80 GB DLT y CDROM), Mylex® AcceleRAID™ (2 canales, firmware 6.00-1-00 con 32 MB RAM). La controladora Mylex® RAID tiene conectados dos discos duros de 17 GB (replicados) y cuatro discos duros de 36 GB (RAID nivel 5).
Para esta instalación se usó un Dell™ PowerEdge™ 2500: placa base dual con 2 procesadores Pentium® III a 1000 MHz (256 kB de Caché), 2 GB PC133 ECC SDRAM, controladora RAID PERC/3 DC PCI con 128 MB y una unidad EIDE DVD-ROM. La controladora RAID tiene conectados dos discos duros 18 GB (replicados) y cuatro discos duros de 36 GB (RAID nivel 5).
Lo primero que tiene que hacer es instalar FreeBSD. Hay muchas formas de hacerlo. Nosotros instalamos FreeBSD 4.3 desde un FTP y FreeBSD 4.5 desde el CD de la distribución. Si necesita más información sobre los medios de instalación de FreeBSD consulte la Cómo preparar su propio medio de instalación .
Quisimos hacer el proceso lo más simple posible, así que usamos el esquema de disco de SAP® R/3® 46B y SAP® R/3® 46C SR2. Solo cambiamos los nombres de dispositivo debido a que las instalaciones tuvieron lugar en hardware diferente ( /dev/da y /dev/amr respectivamente. Si utiliza una AMI MegaRAID® verá en pantalla /dev/amr0s1a en lugar de /dev/da0s1a ):
| Sistema de ficheros | Tamaño (bloques de 1k) | Tamaño (GB) | Montado en |
|---|---|---|---|
|
/dev/da0s1a |
1.016.303 |
1 |
/ |
|
/dev/da0s1b |
6 |
swap |
|
|
/dev/da0s1e |
2.032.623 |
2 |
/var |
|
/dev/da0s1f |
8.205.339 |
8 |
/usr |
|
/dev/da1s1e |
45.734.361 |
45 |
/compat/linux/oracle |
|
/dev/da1s1f |
2.032.623 |
2 |
/compat/linux/sapmnt |
|
/dev/da1s1g |
2.032.623 |
2 |
/compat/linux/usr/sap |
Configure e inicialice antes que nada las dos unidades lógicas con el software Mylex® o PERC/3 RAID. El software puede iniciarse durante la fase de arranque de BIOS.
Por favor, tenga en cuenta que el esquema de disco que utilizamos difiere ligeramente de las recomendaciones de SAP®, ya que SAP® sugiere montar los subdirectorios Oracle® (y algunos otros) por separado. Decidimos crearlos como subdirectorios reales para simplificar.
make world
y un nuevo kernel
Descargue las fuentes -STABLE más recientes. Ejecute
make world
y compile su kernel personalizado. Recuerde incluir en él tanto los
parámetros del kernel
requeridos por SAP® R/3® como los que necesita Oracle®.
Primero instale el port
linux_base
(como
root
):
# cd /usr/ports/emulators/linux_base
# make install distclean
El entorno de desarrollo Linux es imprescindible si quiere instalar Oracle® en FreeBSD según se explica en la Instalación de Oracle® :
# cd /usr/ports/devel/linux_devtools
# make install distclean
El entorno de desarrollo Linux solo ha de instalarse si sigue el proceso para instalar SAP® R/3® 46B IDES. No es necesario si Oracle® DB no está reenlazado («relinked») con el sistema FreeBSD. Este sería su caso si está usa el fichero comprimido tar de Oracle® de un sistema Linux.
Necesitará soporte PAM para iniciar el programa
R3SETUP
. Durante la primera instalación de SAP® en FreeBSD 4.3-STABLE intentamos instalar PAM con todas las dependencias y finalmente forzamos la instalación del paquete PAM, y funcionó. En SAP® R/3® 4.6C SR2 forzamos la instalación del RPM PAM, que también funcionó, así que parece que las dependencias no lo son tanto:
# rpm -i --ignoreos --nodeps --root /compat/linux --dbpath /var/lib/rpm \
pam-0.68-7.i386.rpm
Para que Oracle® 8.0.5 pueda lanzar el agente inteligente también tendremos que instalar el paquete Tcl de RedHat tcl-8.0.5-30.i386.rpm (si no, cuando lo reenlace durante la instalación de Oracle® no funcionará). Existen otros aspectos relacionados con el reenlazado de Oracle® a tener en cuenta durante la instalación, pero atañen a la versión para Linux de Oracle® y no son específicos de FreeBSD.
Le recomendamos añadir
linprocfs
a
/etc/fstab
. Consulte
linprocfs(5)
para más información. Otro parámetro que debería configurar es
kern.fallback_elf_brand=3
en
/etc/sysctl.conf
.
Para una instalación sencilla es suficiente con crear los siguientes sistemas de ficheros:
| punto de montaje | tamaño en GB |
|---|---|
|
/compat/linux/oracle |
45 GB |
|
/compat/linux/sapmnt |
2 GB |
|
/compat/linux/usr/sap |
2 GB |
También es necesario crear algunos enlaces. Si no, el instalador SAP® tendrá problemas ya que buscará los siguientes enlaces:
# ln -s /compat/linux/oracle /oracle
# ln -s /compat/linux/sapmnt /sapmnt
# ln -s /compat/linux/usr/sap /usr/sap
Veamos unos cuantos errores que se le pueden presentar durante la instalación (en este caso con el sistema PRD y la instalación de SAP® R/3® 4.6C SR2):
INFO 2002-03-19 16:45:36 R3LINKS_IND_IND SyLinkCreate:200
Checking existence of symbolic link /usr/sap/PRD/SYS/exe/dbg to
/sapmnt/PRD/exe. Creating if it does not exist...
WARNING 2002-03-19 16:45:36 R3LINKS_IND_IND SyLinkCreate:400
Link /usr/sap/PRD/SYS/exe/dbg exists but it points to file
/compat/linux/sapmnt/PRD/exe instead of /sapmnt/PRD/exe. The
program cannot go on as long as this link exists at this
location. Move the link to another location.
ERROR 2002-03-19 16:45:36 R3LINKS_IND_IND Ins_SetupLinks:0
can not setup link '/usr/sap/PRD/SYS/exe/dbg' with content
'/sapmnt/PRD/exe'
SAP® R/3® necesita dos usuarios y tres grupos. Los nombres de usuario dependen del "SAP® system ID" (SID), y consisten en tres letras. Algunos de estos SID están reservados por SAP® (por ejemplo
SAP
y
NIX
. Tiene una lista completa de ellos en la documentación de SAP®). Para la instalación de IDES usamos
IDS
y para la instalación de 4.6C SR2
PRD
, dado que ese sistema está pensado para un uso de producción. Tenemos por lo tanto los siguientes grupos (Los ID de grupo pueden ser diferentes, estos son solamente los valores que utilizamos en nuestra instalación):
| ID de grupo | nombre de grupo | descripción |
|---|---|---|
|
100 |
dba |
Administrador de base de datos |
|
101 |
sapsys |
Sistema SAP® |
|
102 |
oper |
Operador de base de datos |
En una instalación por omisión de Oracle® solo se usa el grupo
dba
. Puede usar el grupo
oper
como grupo
dba
(consulte la documentación de Oracle® y SAP® para más información).
También necesitaremos los siguientes usuarios:
| ID de usuario | nombre de usuario | nombre genérico | grupo | grupos adicionales | descripción |
|---|---|---|---|---|---|
|
1000 |
idsadm/prdadm |
sid adm |
sapsys |
oper |
Administrador SAP® |
|
1002 |
oraids/oraprd |
ora sid |
dba |
oper |
Administrador Oracle® |
Al añadir dichos usuarios mediante adduser(8) tenga en cuenta que debe incluir las siguientes entradas (observe la shell y el directorio home) al crear el "administrador SAP®":
Name: sidadm Password: ****** Fullname: SAP Administrator SID Uid: 1000 Gid: 101 (sapsys) Class: Groups: sapsys dba HOME: /home/sidadm Shell: bash (/compat/linux/bin/bash)
y para el "Administrador Oracle®":
Name: orasid Password: ****** Fullname: Oracle Administrator SID Uid: 1002 Gid: 100 (dba) Class: Groups: dba HOME: /oracle/sid Shell: bash (/compat/linux/bin/bash)
Esto también incluye al grupo
oper
en caso de que esté usando el grupo
dba
y el grupo
oper
.
Estos directorios se crean como sistemas de ficheros independientes. Esto depende totalmente de sus necesidades. Nosotros decidimos crearlos como directorios ya que todos están en el mismo RAID 5:
Primero vamos a configurar los propietarios y los derechos de algunos directorios (como
root
):
# chmod 775 /oracle
# chmod 777 /sapmnt
# chown root:dba /oracle
# chown sidadm:sapsys /compat/linux/usr/sap
# chmod 775 /compat/linux/usr/sap
Luego vamos a crear directorios como el usuario
ora
sid
. Estos serán todos subdirectorios de
/oracle/SID
:
# su - orasid
# cd /oracle/SID
# mkdir mirrlogA mirrlogB origlogA origlogB
# mkdir sapdata1 sapdata2 sapdata3 sapdata4 sapdata5 sapdata6
# mkdir saparch sapreorg
# exit
Para la instalación de Oracle® 8.1.7 tendrá que crear unos cuantos directorios más:
# su - orasid
# cd /oracle
# mkdir 805_32
# mkdir client stage
# mkdir client/80x_32
# mkdir stage/817_32
# cd /oracle/SID
# mkdir 817_32
|
El directorio client/80x_32 tiene que tener exactamente este nombre. No sustituya la x por un número ni por ninguna otra cosa. |
En el tercer paso creamos directorios como usuario
sid
adm
:
# su - sidadm
# cd /usr/sap
# mkdir SID
# mkdir trans
# exit
SAP® R/3® requiere algunas entradas en
/etc/services
que es posible que no estén correctamente activadas durante la instalalación. Añada las siguientes entradas (necesita al menos las entradas correspondientes al número de instancia, en este caso,
00
. No hará ningún daño añadir todas las entradas de
00
hasta
99
para
dp
,
gw
,
sp
y
ms
). Si va a utilizar un SAProuter o necesita acceder a SAP® OSS, también necesitará
99
, ya que el puerto 3299 se usa generalmente para el proceso SAProuter en el sistema destino:
sapdp00 3200/tcp # SAP Dispatcher. 3200 + Instance-Number sapgw00 3300/tcp # SAP Gateway. 3300 + Instance-Number sapsp00 3400/tcp # 3400 + Instance-Number sapms00 3500/tcp # 3500 + Instance-Number sapmsSID 3600/tcp # SAP Message Server. 3600 + Instance-Number sapgw00s 4800/tcp # SAP Secure Gateway 4800 + Instance-Number
SAP® requiere al menos dos locales que no forman parte de la instalación por defecto de RedHat. SAP® dispone de los paquetes RPMs que pueda necesitar; puede descargalos desde su FTP, aunque tenga en cuenta que solo pueden acceder al mismo los clientes con acceso OSS). Consulte la nota 0171356, que contiene una lista de los RPM que necesitará.
También puede crear enlaces (por ejemplo desde de_DE y en_US ), pero no se lo recomendamos si pretende configurar un sistema de producción (no obstante, hemos de reconocer que a nosotros nos ha funcionado con el sistema IDES sin ningún problema). Necesitará al menos los siguientes locales:
de_DE.ISO-8859-1 en_US.ISO-8859-1
Haga los enlaces de esta manera:
# cd /compat/linux/usr/shared/locale
# ln -s de_DE de_DE.ISO-8859-1
# ln -s en_US en_US.ISO-8859-1
Si no están habrá algunos problemas durante la instalación. Si se ignoran (es decir, si configura el
STATUS
de los pasos relacionados con esos locales a
OK
en el fichero
CENTRDB.R3S
) será imposible entrar al sistema SAP® sin tener que recurrir a ciertas triquiñuelas.
Los sistemas SAP® R/3® necesitan muchos recursos, por eso hemos añadido los siguientes parámetros al fichero de configuración de su kernel:
# Set these for memory pigs (SAP and Oracle): options MAXDSIZ="(1024*1024*1024)" options DFLDSIZ="(1024*1024*1024)" # System V options needed. options SYSVSHM #SYSV-style shared memory options SHMMAXPGS=262144 #max amount of shared mem. pages #options SHMMAXPGS=393216 #use this for the 46C inst.parameters options SHMMNI=256 #max number of shared memory ident if. options SHMSEG=100 #max shared mem.segs per process options SYSVMSG #SYSV-style message queues options MSGSEG=32767 #max num. of mes.segments in system options MSGSSZ=32 #size of msg-seg. MUST be power of 2 options MSGMNB=65535 #max char. per message queue options MSGTQL=2046 #max amount of msgs in system options SYSVSEM #SYSV-style semaphores options SEMMNU=256 #number of semaphore UNDO structures options SEMMNS=1024 #number of semaphores in system options SEMMNI=520 #number of semaphore identifiers options SEMUME=100 #number of UNDO keys
Puede consultar los valores mínimos en la documentación de SAP®. Como no hay detalles sobre Linux, consulte para mayor información la sección de HP-UX (32-bit). El sistema de instalación 4.6C SR2 tiene más memoria principal, asín que los segmentos compartidos pueden ser más extensos tanto para SAP® como para Oracle®; elija, por tanto, un número mayor de páginas de memoria compartida.
|
En la instalación por omisión de FreeBSD 4.5 en i386™, configure
|
Hay que montar y desmontar muchos CD-ROM durante la instalación. Si tiene suficientes unidades de CDROM, podría montarlos todos. Nosotros decidimos copiar el contenido de los CD-ROM a los directorios correspondientes:
/oracle/SID/sapreorg/nombre-cd
Donde
nombre-cd
era
KERNEL
,
RDBMS
,
EXPORT1
,
EXPORT2
,
EXPORT3
,
EXPORT4
,
EXPORT5
y
EXPORT6
para la instalación 4.6B/IDES, y
KERNEL
,
RDBMS
,
DISK1
,
DISK2
,
DISK3
,
DISK4
y
LANG
para la instalación 4.6C SR2. Todos los nombres de fichero en los CDs montados deben estar en mayúsculas; si no es así use la opción
-g
al montar. Utilice lo siguiente:
# mount_cd9660 -g /dev/cd0a /mnt
# cp -R /mnt/* /oracle/SID/sapreorg/nombre-cd
# umount /mnt
Primero tendrá que preparar un directorio install :
# cd /oracle/SID/sapreorg
# mkdir install
# cd install
Una vez arrancado el "script" de instalación copiará casi todos los ficheros relevantes en el directorio install :
# /oracle/SID/sapreorg/KERNEL/UNIX/INSTTOOL.SH
La instalación IDES (4.6B) incluye un sistema de demostración SAP® R/3® totalmente personalizado, así que hay seis CD EXPORT en lugar de solo tres. La plantilla de instalación
CENTRDB.R3S
está pensada para una instancia central estándar (R/3® y base de datos), no la instancia central IDES, así que hay que copiar el
CENTRDB.R3S
correspondiente del directorio
EXPORT1
. Si no lo hace
R3SETUP
solo pedirá tres CD EXPORT.
La nueva versión de SAP® 4.6C SR2 incluye cuatro CDs EXPORT. El fichero de parámetros que controla los pasos de la instalación es CENTRAL.R3S . A diferencia de versiones versiones anteriores, no existen patrones de instalación por separado para una instancia central con o sin base de datos. SAP® utiliza un patrón separado para la instalación de la base de datos. Para reiniciar la instalación después es suficiente reiniciarla con el fichero original.
Durante y después de la instalación, SAP® necesita que
hostname
devuelva
sólamente
el nombre del sistema, no el nombre cualificado de dominio. Configure el nombre del equipo de ese modo, o active un alias mediante
alias hostname='hostname -s'
para
ora
sid
y para
sid
adm
(y para
root
al menos durante los pasos de la instalación realizados como
root
). También puede configurar los ficheros
.profile
y
.login
de los usuarios que se crean durante la instalación SAP®.
R3SETUP
4.6B
Asegúrese de que
LD_LIBRARY_PATH
esté configurada correctamente:
# export LD_LIBRARY_PATH=/oracle/IDS/lib:/sapmnt/IDS/exe:/oracle/805_32/lib
Inicie
R3SETUP
como
root
desde el directorio de instalación:
# cd /oracle/IDS/sapreorg/install
# ./R3SETUP -f CENTRDB.R3S
El "script" le preguntará algunas cosas; le mostramos aquí entre corchetes la respuesta por defecto, y después la respuesta que nosotros introdujimos:
| Pregunta | Por omisión | Entrada |
|---|---|---|
|
Enter SAP System ID |
[C11] |
IDS Intro |
|
Enter SAP Instance Number |
[00] |
Intro |
|
Enter SAPMOUNT Directory |
[/sapmnt] |
Intro |
|
Enter name of SAP central host |
[troubadix.domain.de] |
Intro |
|
Enter name of SAP db host |
[troubadix] |
Intro |
|
Select character set |
[1] (WE8DEC) |
Intro |
|
Enter Oracle server version (1) Oracle 8.0.5, (2) Oracle 8.0.6, (3) Oracle 8.1.5, (4) Oracle 8.1.6 |
1 Intro |
|
|
Extract Oracle Client archive |
[1] (Yes, extract) |
Intro |
|
Enter path to KERNEL CD |
[/sapcd] |
/oracle/IDS/sapreorg/KERNEL |
|
Enter path to RDBMS CD |
[/sapcd] |
/oracle/IDS/sapreorg/RDBMS |
|
Enter path to EXPORT1 CD |
[/sapcd] |
/oracle/IDS/sapreorg/EXPORT1 |
|
Directory to copy EXPORT1 CD |
[/oracle/IDS/sapreorg/CD4_DIR] |
Intro |
|
Enter path to EXPORT2 CD |
[/sapcd] |
/oracle/IDS/sapreorg/EXPORT2 |
|
Directory to copy EXPORT2 CD |
[/oracle/IDS/sapreorg/CD5_DIR] |
Intro |
|
Enter path to EXPORT3 CD |
[/sapcd] |
/oracle/IDS/sapreorg/EXPORT3 |
|
Directory to copy EXPORT3 CD |
[/oracle/IDS/sapreorg/CD6_DIR] |
Intro |
|
Enter path to EXPORT4 CD |
[/sapcd] |
/oracle/IDS/sapreorg/EXPORT4 |
|
Directory to copy EXPORT4 CD |
[/oracle/IDS/sapreorg/CD7_DIR] |
Intro |
|
Enter path to EXPORT5 CD |
[/sapcd] |
/oracle/IDS/sapreorg/EXPORT5 |
|
Directory to copy EXPORT5 CD |
[/oracle/IDS/sapreorg/CD8_DIR] |
Intro |
|
Enter path to EXPORT6 CD |
[/sapcd] |
/oracle/IDS/sapreorg/EXPORT6 |
|
Directory to copy EXPORT6 CD |
[/oracle/IDS/sapreorg/CD9_DIR] |
Intro |
|
Enter amount of RAM for SAP + DB |
850 Intro (en Megabytes) |
|
|
Service Entry Message Server |
[3600] |
Intro |
|
Enter Group-ID of sapsys |
[101] |
Intro |
|
Enter Group-ID of oper |
[102] |
Intro |
|
Enter Group-ID of dba |
[100] |
Intro |
|
Enter User-ID of sid adm |
[1000] |
Intro |
|
Enter User-ID of ora sid |
[1002] |
Intro |
|
Number of parallel procs |
[2] |
Intro |
Si no ha copiado los CD a su disco duro el instalador SAP® no podrá encontrar el CD que necesite (identifica los contenidos mediante fichero LABEL.ASC de cada CD) y por lo tanto le pedirá que introduzca y monte el CD, o que confirme o introduzca la ruta de montaje.
CENTRDB.R3S puede contener algún error. En nuestro caso, solicitó el CD EXPORT4 más de una vez, pero se le indicó la clave correcta (6_LOCATION, luego 7_LOCATION, etc), así que pudimos continuar introduciendo los valores correctos.
Aparte de algunos problemas que se detallan más adelante deberíamos ir llegando a la instalación del software de base de datos Oracle®.
R3SETUP
4.6C SR2
Asegúrese de que
LD_LIBRARY_PATH
esté correctamente configurada. Tenga en cuenta de que es un valor diferente de la instalación 4.6B con Oracle® 8.0.5:
# export LD_LIBRARY_PATH=/sapmnt/PRD/exe:/oracle/PRD/817_32/lib
Arranque
R3SETUP
como el usuario
root
desde el directorio de instalación:
# cd /oracle/PRD/sapreorg/install
# ./R3SETUP -f CENTRAL.R3S
El "script" le preguntará algunas cosas. Le presentamos la respuesta por omisión entre corchetes y después la respuesta que dimos nosotros):
| Pregunta | Por omisión | Entrada |
|---|---|---|
|
Enter SAP System ID |
[C11] |
PRD Intro |
|
Enter SAP Instance Number |
[00] |
Intro |
|
Enter SAPMOUNT Directory |
[/sapmnt] |
Intro |
|
Enter name of SAP central host |
[majestix] |
Intro |
|
Enter Database System ID |
[PRD] |
PRD Intro |
|
Enter name of SAP db host |
[majestix] |
Intro |
|
Select character set |
[1] (WE8DEC) |
Intro |
|
Enter Oracle server version (2) Oracle 8.1.7 |
2 Intro |
|
|
Extract Oracle Client archive |
[1] (Yes, extract) |
Intro |
|
Enter path to KERNEL CD |
[/sapcd] |
/oracle/PRD/sapreorg/KERNEL |
|
Enter amount of RAM for SAP + DB |
2044 |
1800 Intro (in Megabytes) |
|
Service Entry Message Server |
[3600] |
Intro |
|
Enter Group-ID of sapsys |
[100] |
Intro |
|
Enter Group-ID of oper |
[101] |
Intro |
|
Enter Group-ID of dba |
[102] |
Intro |
|
Enter User-ID of
|
[1002] |
Intro |
|
Enter User-ID of
|
[1000] |
Intro |
|
LDAP support |
3 Intro (no support) |
|
|
Installation step completed |
[1] (continue) |
Intro |
|
Choose installation service |
[1] (DB inst,file) |
Intro |
La creación de usuarios da un error durante la instalación en las fases OSUSERDBSID_IND_ORA (al crear al usuario
ora
sid
) y OSUSERSIDADM_IND_ORA (al crear el usuario
sid
adm
).
Más adelante hablaremos de cierto problemas que aún tenemos pendientes, pero ha llegado el momento de instalar el software de base de datos Oracle®.
Consulte los Readme de Oracle® y las notas de de SAP® sobre Linux y Oracle® DB por si hubiera algo que le pueda afectar. La mayoría de los problemas, por no decir todos, tienen su origen en bibliotecas incompatibles.
Para mayor información sobre la instalación de Oracle® diríjase al capítulo de instalación de Oracle®.
orainst
Si quiere instalar Oracle® 8.0.5 necesitará unas cuantas bibliotecas para el enlazado, ya que Oracle® 8.0.5 fué enlazado con una glibc antigua (la de RedHat 6.0), pero RedHat 6.1 usa una nueva glibc. Tendrá que instalar los siguientes paquetes para asegurarse que el reenlazado funcione:
compat-libs-5.2-2.i386.rpm
compat-glibc-5.2-2.0.7.2.i386.rpm
compat-egcs-5.2-1.0.3a.1.i386.rpm
compat-egcs-c++-5.2-1.0.3a.1.i386.rpm
compat-binutils-5.2-2.9.1.0.23.1.i386.rpm
Para más información consulte las notas correspondientes de SAP® o los Readme de Oracle®. Si no es posible (durante la instalación no tuvimos tiempo suficiente para ello), se podrían utilizar los binarios originales, o los binarios reenlazados de un sistema original RedHat.
Instale el paquete Tcl de RedHat para compilar el agente inteligente. Si no puede conseguir tcl-8.0.3-20.i386.rpm debería funcionar una versión más reciente, por ejemplo tcl-8.0.5-30.i386.rpm para RedHat.
Aparte del reenlazado, la instalación es muy sencilla:
# su - oraids
# export TERM=xterm
# export ORACLE_TERM=xterm
# export ORACLE_HOME=/oracle/IDS
# cd $ORACLE_HOME/orainst_sap
# ./orainst
Confirme todas las pantallas con
Intro
hasta que el software esté instalado; todas excepto en la que debe quitar la marca de instalación al
visualizador de textos Oracle® en línea
, ya que no existe para Linux. Oracle® intentará, gracias a esto, reenlazar con
i386-glibc20-linux-gcc
en lugar de
gcc
,
egcs
o
i386-redhat-linux-gcc
.
Debido a la falta de tiempo decidimos usar los binarios de una versión Oracle® 8.0.5 PreProduction, después de que nuestro primer intento de que funcionara la versión del CD RDBMS fallara y viendo que encontrar y utilizar los RPM correctos hubiera sido una pesadilla.
La instalación es bastante fácil. Monte el CD e inicie el instalador. Le preguntará por la ubicación del directorio home de Oracle®, y copiará en él todos los binarios. (Nosotros no eliminamos los restos de una instalación RDBMS anterior que no terminó de llegó a terminar).
Tras esto la base de datos Oracle® puede arrancar.
Descomprima el fichero oracle81732.tgz (creado en el directorio de instalación en un sistema Linux) y descomprímalo en /oracle/SID/817_32/ .
Revise las configuraciones del entorno de los usuarios
idsamd
(
sid
adm) y
oraids
(ora
sid
). Ambos deben tener los ficheros
.profile
,
.login
y
.cshrc
con
hostname
correctamente configurado. En caso que el nombre del sistema sea el nombre cualificado completo tendrá que cambiar
hostname
a
hostname -s
en los tres ficheros anteriormente citados.
Hecho esto puede rearrancar
R3SETUP
o volver a arrancar la instalación (dependiendo si eligió salir o no).
R3SETUP
crea las tablas y carga los datos (en 46B IDES, desde EXPORT1 a EXPORT6, en 46C desde DISK1 a DISK4) mediante
R3load
.
Cuando se termina la carga de la base de datos (que puede llevar un par de horas) se le pedirán algunas contraseñas. En una instalación de prueba puede usar unas contraseñas de compromiso. ( use una contraseña de verdad si le preocupa siquiera ligeramente la seguridad ):
| Pregunta | Entrada |
|---|---|
|
Enter Password for sapr3 |
sap Intro |
|
Confirum Password for sapr3 |
sap Intro |
|
Enter Password for sys |
change_on_install Enter |
|
Confirm Password for sys |
change_on_install Enter |
|
Enter Password for system |
manager Intro |
|
Confirm Password for system |
manager Intro |
Aquí tuvimos problemas con
dipgntab
en la instalación de 4.6B.
Arranque las escuchas de Oracle® con el usuario
ora
sid
de la siguiente manera:
% umask 0; lsnrctl start
Si no lo hace así verá un error ORA-12546, ya que los sockets no tendrán los permisos correctos. Consulte la nota 072984 de SAP®.
Si tiene previsto importar idiomas que no sean Latin-1 en SAP® tiene que actualizar las tablas "Multi National Language Support". Tiene más información sobre esto en las notas de SAP® OSS 15023 y 45619. Si no es su caso puede saltarse esta parte de la instalación de SAP®.
|
Aunque no necesite soporte MNLS sigue siendo necesario que revise la tabla TCPDB y que la inicialice si no lo ha hecho ya. Consulte las notas 0015023 y 0045619 de SAP® para más información. |
Tiene que solicitar una licencia de SAP® R/3®. No tendrá más remedio, puesto que la licencia temporal que se usa durante la instalación tiene un límite de validez de cuatro semanas. Necesitará la llave hardware. Entre al sistema como usuario
idsadm
y ejecute
saplicense
:
# /sapmnt/IDS/exe/saplicense -get
Si ejecuta
saplicense
sin parámetros verá una lista de opciones. Una vez que tenga la licencia en su poder la podrá instalar del siguiente modo:
# /sapmnt/IDS/exe/saplicense -install
Se le solicitará que introduzca los siguientes valores:
SAP SYSTEM ID = SID, 3 caracteres CUSTOMER KEY = llave hardware, 11 caracteres INSTALLATION NO = instalación, 10 caracteres EXPIRATION DATE = yyyymmdd, normalmente "99991231" LICENSE KEY = licencia, 24 caracteres
Cree un usuario dentro del cliente 000 (es necesario para algunas tareas que requieren hacerse dentro del cliente 000, pero con un usuario que no sea ni
sap*
ni
ddic
). Nosotros solemos elegir para este usuario el nombre de
wartung
(o
service
, ambos "servicio" en castellano). Los perfiles son
sap_new
y
sap_all
. Para mayor seguridad las contraseñas para usuarios por defecto dentro de todos los clientes deben cambiarse (incluidos los usuarios
sap*
y
ddic
).
Dentro del cliente 000 y con un usuario que no sea
ddic
ni
sap*
, haga al menos lo siguiente:
| Tarea | Transacción |
|---|---|
|
Configurar sistema de transporte, por ejemplo como Stand-Alone Transport Domain Entity |
STMS |
|
Crear / editar perfil para el sistema |
RZ10 |
|
Mantener modos de operación e instancias |
RZ04 |
Todos estos (y muchos más) pasos para ejecutar después de la instalación se explican de forma detallada en las guías de instalación de SAP®.
El fichero
/oracle/IDS/dbs/initIDS.sap
contiene la copia de seguridad del perfil de de SAP®. Aquí es donde debe definir el tamaño de la cinta a utilizar, tipo de conpresión, etc. Las siguientes modificaciones nos permitirían ejecutar
sapdba
/
brbackup
:
compress = hardware archive_function = copy_delete_save cpio_flags = "-ov --format=newc --block-size=128 --quiet" cpio_in_flags = "-iuv --block-size=128 --quiet" tape_size = 38000M tape_address = /dev/nsa0 tape_address_rew = /dev/sa0
Explicación:
compress
: La cinta que usamos es una HP DLT1 que tiene compresión por hardware.
archive_function
: Define el comportamiento por omisión del almacenaje de los logs de Oracle®: los nuevos ficheros de log se guardan en cinta, los ficheros de log que ya han sido guardados se guardan de nuevo y luego se borran. Así se evitan muchos problemas si necesita recuperar la base de datos y una de las cintas está dañada.
cpio_flags
: por omisión se usa
-B
, que asigna un tamaño de bloque de 5120 Bytes. HP recomienda un tamaño de bloque de 32 K como mínimo; usamos
--block-size=128
para que sea de 64 K. Necesitaremos usar
--format=newc
porque tenemos números de inodo mayores a 65535. La última opción (
--quiet
) se necesita ya que
brbackup
se queja en cuanto
cpio
imprime los números de bloque guardados.
cpio_in_flags
: Parámetros necesarios para cargar datos desde la cinta. El formato es reconocido automáticamente.
tape_size
: La capacidad de almacenaje de la cinta. Por razones de seguridad (nosotros usamos compresión por hardware) el valor es ligeramente menor que el valor real.
tape_address
: El dispositivo (que no permite el rebobinado) que se usará con
cpio
.
tape_address_rew
: El dispositivo (que permite el rebobinado) que se usará con
cpio
.
Los siguientes parámetros SAP® deben personalizarse una vez concluída la instalación (los ejemplos son para IDES 46B, 1 GB de memoria):
| Nombre | Valor |
|---|---|
|
ztta/roll_extension |
250000000 |
|
abap/heap_area_dia |
300000000 |
|
abap/heap_area_nondia |
400000000 |
|
em/initial_size_MB |
256 |
|
em/blocksize_kB |
1024 |
|
ipc/shm_psize_40 |
70000000 |
SAP® Note 0013026:
| Nombre | Valor |
|---|---|
|
ztta/dynpro_area |
2500000 |
SAP® Note 0157246:
| Nombre | Valor |
|---|---|
|
rdisp/ROLL_MAXFS |
16000 |
|
rdisp/PG_MAXFS |
30000 |
|
En un sistema con 1 GB de memoria y los parámetros arriba expuestos puede esperarse encontrar un consumo de memoria similar al siguiente: Mem: 547M Active, 305M Inact, 109M Wired, 40M Cache, 112M Buf, 3492K Free |
R3SETUP
una vez arreglado el problema
R3SETUP
se detiene si encuentra un error. Si ha revisado los logs y ha corregido el error reinicie
R3SETUP
; hágalo seleccionando la opción REPEAT en el paso donde
R3SETUP
se detuvo.
Cuando quiera reiniciar
R3SETUP
inícielo con el fichero
R3S
correspondiente:
# ./R3SETUP -f CENTRDB.R3S
en el caso de 4.6B, o con
# ./R3SETUP -f CENTRAL.R3S
en 4.6C; no importa si el error ocurrió con CENTRAL.R3S o con DATABASE.R3S .
|
En algunas etapas,
No olvide iniciar también la escucha de Oracle® (como
|
R3SETUP
Si
R3SETUP
se queja en este etapa edite la plantilla
R3SETUP
que esté usando en ese momento (
CENTRDB.R3S
(en 4.6B) o
CENTRAL.R3S
o
DATABASE.R3S
(en 4.6C)). Ubique
[OSUSERSIDADM_IND_ORA]
o busque la única entrada
STATUS=ERROR
y edite los siguientes valores:
HOME=/home/sidadm (was empty) STATUS=OK (had status ERROR)
Hecho esto, reinicie
R3SETUP
.
R3SETUP
Es posible que
R3SETUP
se queje también en esta etapa. El error aquí es similar al de la fase OSUSERSIDADM_IND_ORA. Edite la plantilla
R3SETUP
que esté usando (
CENTRDB.R3S
(en 4.6B) o
CENTRAL.R3S
o
DATABASE.R3S
(en 4.6C)). Ubique
[OSUSERDBSID_IND_ORA]
o busque la única entrada
STATUS=ERROR
y edite los siguientes valores en esa sección:
STATUS=OK
Hecho esto reinicie
R3SETUP
.
oraview.vrf FILE NOT FOUND
durante la instalación de Oracle®
No ha dejado sin seleccionar la opción de instalar el visualizador de texto en línea de Oracle® antes de iniciar la instalación. Está seleccionado para ser instalado, aunque la aplicación no existe para Linux. Deje sin seleccionar el producto en el menú de instalación de Oracle® y reinicie la instalación.
TEXTENV_INVALID
durante
R3SETUP
, o inicio de RFC o SAPgui
Si se encuentra con este error significa que falta el locale correcto. La nota 0171356 de SAP® contiene una lista de RPM que deben instalarse (p.ej.
saplocales-1.0-3
,
saposcheck-1.0-1
para RedHat 6.1). En caso de que ignore todos los errores relacionados y configure los
STATUS
correspondientes de
ERROR
a
OK
(en
CENTRDB.R3S
) cada vez que
R3SETUP
se queje y simplemente reinicie
R3SETUP
; el sistema SAP® no estará configurado correctamente y no podrá conectarse al sistema con SAPgui, aunque el sistema pueda arrancar. Si intenta conectar con el antiguo SAPgui de Linux recibirá los siguientes mensajes:
Sat May 5 14:23:14 2001 *** ERROR => no valid userarea given [trgmsgo. 0401] Sat May 5 14:23:22 2001 *** ERROR => ERROR NR 24 occured [trgmsgi. 0410] *** ERROR => Error when generating text environment. [trgmsgi. 0435] *** ERROR => function failed [trgmsgi. 0447] *** ERROR => no socket operation allowed [trxio.c 3363] Speicherzugriffsfehler
Este comportamiento se debe a que SAP® R/3® es incapaz de asignar correctamente un locale y tampoco puede configurarse a sí mismo correctamente (faltan entradas en algunas tablas de la base de datos). Añada las siguientes entradas al fichero DEFAULT.PFL y podrá conectarse a SAP® (vea la nota 0043288):
abap/set_etct_env_at_new_mode = 0 install/collate/active = 0 rscp/TCP0B = TCP0B
Reinicie el sistema SAP®. Puede conectar al sistema, aunque la configuración de idioma o de país puede que no funcione como se espera de ella. Una vez corregidas las configuraciones de país (y proporcionados los locales adecuados) puede eliminar estas entradas de DEFAULT.PFL y el sistema SAP® puede reiniciarse.
Este error solo aparece con Oracle® 8.1.7 en FreeBSD 4.5. Se debe a que la base de datos Oracle® no puede inicializarse correctamente y se viene abajo, dejando semáforos y memoria compartida en el sistema. El siguiente intento de iniciar la base de datos produce el error ORA-00001.
Encuéntrelos con
ipcs -a
y elimínelos con
ipcrm
.
Este error tuvo lugar con Oracle® 8.1.7. Aparece si se arranca la base de datos con el "script"
startsap
(por ejemplo
startsap_majestix_00
) con el usuario
prdadm
.
Una solución (entre otras) es iniciar la base de datos con el usuario
oraprd
en lugar de hacerlo con
svrmgrl
:
% svrmgrl
SVRMGR> connect internal;
SVRMGR> startup;
SVRMGR> exit
Inicie la escucha de Oracle® como usuario
oraids
con la siguiente orden:
# umask 0; lsnrctl start
De no ser así puede encontrarse con el error ORA-12546, ya que los sockets no tendrán los permisos adecuados. Consulte la nota de SAP® 0072984.
Este error ocurre al tratar de usar valores mayores a 1 GB (1024x1024x1024) en
MAXDSIZ
y
DFLDSIZ
. Recibiremos, además, este otro error:
Linux Error 12: Cannot allocate memory
.
R3SETUP
Consulte la nota de SAP® 0130581 de (
R3SETUP
step (
DIPGNTAB
terminates). Por alguna razón durante la instalación específica IDES el proceso de instalación no usaba el nombre de sistema correcto SAP®"IDS" sino la cadena vacía
""
. Esto provocaba algunos errores menores en el acceso a directorios, ya que las rutas se generan dinámicamente en base a dicho
SID
(en este caso IDS). En lugar de ejecutar los accesos del siguiente modo :
/usr/sap/IDS/SYS/... /usr/sap/IDS/DVMGS00
se usaron las siguientes rutas:
/usr/sap//SYS/... /usr/sap/D00
Para continuar con la instalación creamos un enlace y un directorio adicional:
# pwd
/compat/linux/usr/sap
# ls -l
total 4
drwxr-xr-x 3 idsadm sapsys 512 May 5 11:20 D00
drwxr-x--x 5 idsadm sapsys 512 May 5 11:35 IDS
lrwxr-xr-x 1 root sapsys 7 May 5 11:35 SYS -> IDS/SYS
drwxrwxr-x 2 idsadm sapsys 512 May 5 13:00 tmp
drwxrwxr-x 11 idsadm sapsys 512 May 4 14:20 trans
Encontramos una descripción de este comportamiento en las notas de SAP®. (0029227 y 0008401). En la instalación de SAP® 4.6C no tuvimos estos problemas.
R3SETUP
Durante la instalación de SAP® 4.6C nos encontramos con este error, cuyo origen está en un error que tuvo lugar anteriormente durante la propia instalación. Busque en sus ficheros de log y corrija el problema.
Si despues de buscar en los logs el error resulta ser el correcto (revise las notas de SAP®), puede poner el
STATUS
del paso donde se produce el error de
ERROR
a
OK
(en el fichero
CENTRDB.R3S
) y reiniciar
R3SETUP
. Una vez finalizada la instalación, tiene que ejecutar el informe
RSWBOINS
de la transacción SE38. Consulte la nota SAP® 0162266 para más información sobre las fases
RFCRSWBOINI
y
RFCRADDBDIF
.
R3SETUP
Aquí sucede lo mismo de antes, asegúrese, revisando los logs, de que la causa de este error no esté en algún problema previo.
Si en la nota de SAP® 0162266 está la solución ponga el
STATUS
del paso donde se produce el error de
ERROR
a
OK
(en el fichero
CENTRDB.R3S
) y reinicie
R3SETUP
. Una vez finalizada la instalación ejecute el informe
RADDBDIF
desde la transacción SE38.
Este error ocurrió durante el inicio del proceso SAP®
disp+work
. Si inicia SAP® con el "script"
startsap
se inician los subprocesos que se separan y hacen el "trabajo sucio" de iniciar el resto de procesos de SAP®, pero es importante saber que el propio "script" no notará si algo ha ido mal.
Puede revisar si los procesos SAP® se iniciaron correctamente con
ps ax | grep SID
, que le proporcionará una lista de todos los procesos de Oracle® y de SAP®. Si parece que algunos procesos no están, o si no puede conectarse al sistema SAP® revise los logs que encontrará en
/usr/sap/SID/DVEBMGSnr/work/
. Los ficheros que debe revisar son
dev_ms
y
dev_disp
.
La señal 31 aparece si la cantidad de memoria compartida asignada a Oracle® y SAP® supera la definida dentro del fichero de configuración del kernel y puede resolverse usando un valor mayor:
# larger value for 46C production systems: options SHMMAXPGS=393216 # smaller value sufficient for 46B: #options SHMMAXPGS=262144
saposcol
Failed
Hay algunos problemas con el programa
saposcol
(version 4.6D). El sistema SAP® utiliza
saposcol
para recoger datos del rendimiento del sistema. Este programa no es necesario para usar el sistema SAP®, así que el problema puede considerarse como poco importante. La versión más antigua (4.6B) funciona, pero no recoge todos los datos (muchas llamadas devolverán un 0, por ejemplo el uso de CPU).
Si siente curiosidad por saber cómo funciona la compatibilidad con Linux esta es la sección que debe leer. La mayor parte de lo que sigue está basado casi en su totalidad en un mensaje enviado por Terry Lambert
tlambert@primenet.com
a la lista
Lista de charla de FreeBSD
(Message ID:
<
199906020108.SAA07001@usr09.primenet.com
>
).
FreeBSD dispone de una abstracció denominada "cargador de clase en ejecución". Esto no es más que un bloque de código incrustado en la llamada execve(2) del sistema.
Históricamente las plataformas UNIX® disponían de un único cargador de binarios, que en última instancia (
fallback
) recurría al cargador
#!
para ejecutar cualesquiera intérpretes o scripts de la shell. Ese cargador único examinaba el número mágico (generalmente los 4 u 8 primeros bytes del fichero) para ver si era un binario reconocible por el sistema y, en tal caso, invocaba al cargador binario.
Si no era de tipo binario, la llamada execve(2) devolvía un error y la shell intentaba empezar a ejecutarlo como órdenes shell, tomando por defecto como punto de partida "la shell actual, sea cual sea".
Posteriormente se pensó en hacer una modificación de manera que
sh(1)
examinara los dos primeros caracteres, de modo que si eran
:\n
se llamaba a la shell
csh(1)
en su lugar (parece ser que en SCO fueron los primeros en utilizar ese truco).
Lo que ocurre ahora es que FreeBSD dispone de una lista de cargadores, en lugar de uno solo. FreeBSD recorre esa lista de cargadores, con un cargador genérico
#!
que sabe reconocer los intérpretes en base a los caracteres que siguen al siguiente espacio en blanco, con
/bin/sh
como último recurso.
Para dar soporte a la ABI ("Application Binary Interface") de Linux, FreeBSD interpreta el número mágico como un binario ELF ("Executable and Linking Format"): En este punto no hace distinción entre FreeBSD, Solaris™, Linux® o cualquier otro SO que tenga un tipo de imagen ELF.
El cargador ELF busca entonces una marca ( brand ) especial, una sección de comentarios en la imagen ELF que no está presente en los binarios ELF de SVR4/Solaris™.
Para que los binarios de Linux funcionen deben estar marcados con
brandelf(1)
como tipo
Linux
:
# brandelf -t Linux file
Hecho esto el cargador ELF verá la marca
Linux
en el fichero.
Cuando el cargador ELF ve la marca
Linux
sustituye un puntero en la estructura
proc
. Todas las llamadas del sistema se indexan a través de este puntero (en un sistema UNIX® tradicional sería el «array» de estructura
sysent[]
que contiene las llamadas del sistema). Además, el proceso se marca con unos indicadores ("flags") para que el vector trampa del código de envío señales lo maneje de una forma determinada, así como otros arreglos (menores) que serán utilizados por el módulo Linux del kernel.
El vector de llamada del sistema Linux contiene, entre otras cosas, una lista de entradas
sysent[]
cuyas direcciones residen en el módulo del kernel.
Cuando el binario Linux realiza una llamada al sistema, el código trampa extrae el puntero a la función de la llamada del sistema de la estructura
proc
, y así obtiene los puntos de entrada a las llamadas del sistema Linux, no las de FreeBSD.
Además, el modo Linux cambia la raíz de las búsquedas de una forma dinámica. En efecto, esto es lo que hace la opción
union
cuando se monta un sistema de ficheros (¡y que
no
es lo mismo que el sistema de ficheros
unionfs
!). Primero se hace un intento de buscar el fichero en el directorio
/compat/linux/ruta-original
y
solo después
, si lo anterior falla, se repite la búsqueda en el directorio
/ruta-original
. Esto permite que se puedan ejecutar binarios que necesitan de otros binarios (por ejemplo las herramientas de programación ("toolchain") de Linux pueden ejecutarse en su totalidad bajo la ABI de Linux). Esto significa también que los binarios Linux pueden cargar y ejecutar binarios FreeBSD si los binarios Linux equivalentes no se hallan presentes y que se puede poner una orden
uname(1)
en el árbol de directorios
/compat/linux
para poder estar seguros de que los binarios Linux no puedan decir que no estaban ejecutándose en Linux.
En efecto, hay un kernel Linux en el kernel FreeBSD; las distintas funciones subyacentes que implementan todos los servicios proporcionados por el kernel son idénticas en ambas, las tablas de entradas de llamadas del sistema en FreeBSD y en Linux: operaciones del sistema de ficheros, operaciones de memoria virtual, envío de señales IPC System V, etc. La única diferencia es que los binarios FreeBSD reciben sus funciones de conexión ("
glue
") y los binarios Linux las suyas (la mayoría de los sistemas operativos más antiguos solo tienen sus propias funciones de conexión: direcciones de funciones en un "array" de estructura
sysent[]
estática y global, en lugar de direcciones de funciones que se extraen a partir de un puntero inicializado dinámicamente en la estructura
proc
del proceso que hace la llamada).
?Cuál es entonces la ABI nativa de FreeBSD? No importa. Básicamente, la única diferencia es (ahora mismo; esto podría cambiar y probablemente lo hará en una release futura) que las funciones de conexión de FreeBSD están enlazadas estáticamente en el kernel mientras que las de Linux pueden estarlo también estáticamente o se puede acceder a ellas por medio de un módulo del kernel.
Bien, pero ?de verdad es esto una emulación? No. Es una implementación ABI, no una emulación. No hay un emulador involucrado (ni un simulador, para adelantarnos a la siguiente pregunta).
Entonces ?por qué a veces se le llama "emulación Linux"? ¡Para hacer más difícil el vender FreeBSD! En serio, se debe a que la primera implementación se hizo en un momento en que realmente no había ninguna palabra distinta a esa para describir lo que se estaba haciendo; decir que FreeBSD ejecutaba binarios Linux no era cierto si no se compilaba el código o se cargaba un módulo; hacía falta una forma de describir todo esto y acabamos usando "emulador Linux".
Last modified on : 18 de febrero de 2025 by Fernando Apesteguía