10. fejezet - Bináris Linux kompatibilitás

This translation may be out of date. To help with the translations please access the FreeBSD translations instance.

10.1. Áttekintés

A FreeBSD számos más UNIX®-szerû operációs rendszerhez nyújt bináris kompatibilitást, köztük a Linuxhoz is. Elcsodálkozhatnánk rajta, hogy vajon miért kell tudnia a FreeBSD-nek Linux binárisokat futtatnia. A válasz erre nagyon egyszerû. Rengeteg cég és fejlesztõ kizárólag csak Linuxra fejleszt, hiszen ez mostanság egy nagyon "izgalmas téma" az informatika világában. Emiatt azonban a FreeBSD közösségnek külön gyõzködnie kell ezeket a cégeket és fejlesztõket, hogy készítsék el a termékeik natív FreeBSD-s változatát. Ezzel az a gond, a legtöbb ilyen cég egyszerûen nem veszi észre, hogy ha létezne a terméküknek FreeBSD-re írt változata, akkor még többen használnák. Így továbbra is csak Linuxra fejlesztenek. Mit tudnak tenni ilyenkor a FreeBSD használói? Nos, ekkor jön jól a FreeBSD bináris szintû kompatibilitása.

Dióhéjban úgy tudnánk összefoglalni, hogy ennek köszönhetõen a FreeBSD felhasználók képesek a linuxos alkalmazások közel 90%-át mindenféle további módosítás nélkül futtatni. Így tehát használható a StarOffice™, getenv(3) Linux változata, az Adobe® Acrobat®, RealPlayer®, VMware, Oracle®, WordPerfect®, Doom, Quake, és még sok minden más. Sõt, egyes tapasztalatok szerint bizonyos helyzetekben a FreeBSD által futtatott Linux binárisok sokkal jobban teljesítenek, mint Linux alatt.

Azonban vannak olyan Linuxra jellemzõ, az operációs rendszer szintjén meghúzódó eszközök, amelyek FreeBSD alatt nem használhatóak. FreeBSD-n nem fognak mûködni azok a Linux binárisok, amelyek túlzottan kihasználják az olyan i386™-os rendszerhívásokat, mint például a virtuális 8086 mód.

A fejezet elolvasása során megismerjük:

  • hogyan engedélyezzük rendszerünkön a Linux kompatibilitást;

  • hogyan telepítsünk linuxos osztott könyvtárakat;

  • hogyan telepítsünk linuxos alkalmazásokat a FreeBSD rendszerünkre;

  • a FreeBSD Linux kompatibilitásának implementációs részleteit.

A fejezet elolvasásához ajánlott:

10.2. Telepítés

A bináris Linux kompatibilitás alapértelmezés szerint nem engedélyezett. Legkönnyebben úgy tudjuk elérhetõvé tenni, ha betöltjük a linux nevû KLD modult ("Kernel LoaDable"). Ehhez root felhasználóként a következõket kell begépelni:

# kldload linux

Ha minden egyes rendszerindítás során engedélyezni szeretnénk a bináris kompatibilitást, akkor tegyük bele az /etc/rc.conf állományba ezt a sort:

linux_enable="YES"

A modul betöltõdését a kldstat(8) paranccsal tudjuk ellenõrizni:

% kldstat
Id Refs Address    Size     Name
 1    2 0xc0100000 16bdb8   kernel
 7    1 0xc24db000 d000     linux.ko

Ha valamiért nem akarjuk vagy nem éppen nem tudjuk betölteni a modult, akkor a bináris Linux kompatibilitást az options COMPAT_LINUX beállítással be is tudjuk építeni a rendszermagba. Ennek pontos menetét a A FreeBSD rendszermag testreszabásaben találjuk meg.

10.2.1. Linuxos futtatókönyvtárak telepítése

A linuxos könyvtárakat két módon is felrakhatjuk: egyrészt a linux_base port telepítésével, másrészt manuálisan.

10.2.1.1. A könyvtárak telepítése a linux_base porttal

A futtatókönyvtárakat a lehetõ legegyszerûbben a emulators/linux_base porton keresztül tudjuk telepíteni. Teljesen úgy történik, mint a Portgyûjtemény akármelyik másik portjának telepítése. Csupán ennyit kell beírnunk:

# cd /usr/ports/emulators/linux_base-f10
# make install distclean

A FreeBSD 8.0 kiadását megelõzõ változataiban az emulators/linux_base-f10 port helyett az emulators/linux_base-fc4 portot használjuk.

A telepítés végeztével kaptunk is egy mûködõ bináris Linux kompatibilitást, habár egyes programok még panaszkodhatnak a rendszerkönyvtárak alverzióit illetõen. Általánosságban véve ez azonban nem okoz nagyobb gondot.

A emulators/linux_base portnak több változata is használható, melyek az egyes Linux disztribúcióknak feleltethetõek meg. Ilyenkor mindig érdemes közülük azt választani, amelyik a leginkább megfelel a telepíteni kívánt linuxos alkalmazás igényeinek.

10.2.1.2. A könyvtárak telepítése manuálisan

Ha korábban még nem telepítettük volna a Portgyûjteményt, akkor egyénileg kell felraknunk az egyes könyvtárakat. Közülük azokra lesz szükségünk, amelyeket maga az alkalmazás is használni akar, valamint a futásidejû linkerre. Emellett még a FreeBSD rendszerünkön levõ Linux binárisok számára a /compat/linux könyvtárban létre kell hoznunk a gyökér ún. "árnyékkönyvtárát" is. A FreeBSD alatt elindított Linux programok elõször ebben a könyvtárban fogják keresni a hozzájuk tartozó osztott könyvtárakat. Így tehát, amikor egy linuxos program betölti például a /lib/libc.so függvénykönyvtárat, akkor a FreeBSD elõször a /compat/linux/lib/libc.so állományt próbálja meg megnyitni, majd ha az nem létezik, akkor a /lib/libc.so állományt. Az osztott könyvtárak ezért a /compat/linux/lib árnyékkönyvtárba telepítendõek, és nem oda, ahova a linuxos ld.so mutat.

Általánosságban szólva eleinte elég csak azokat az osztott könyvtárakat megkeresni és felrakni, amelyekre a telepítendõ linuxos alkalmazásunknak ténylegesen szüksége van. Egy idõ után úgyis összegyûlnek azok a fontosabb függvénykönyvtárak, amelyek segítségével már minden további ráfordítás nélkül futtatni tudjuk a frissen importált programokat.

10.2.1.3. Hogyan telepítsünk újabb osztott könyvtárakat?

Mit tegyünk, ha az emulators/linux_base port telepítése után az alkalmazás még mindig hiányol néhány osztott könyvtárat? Honnan tudhatjuk meg, hogy milyen osztott könyvtárak kellenek majd egy Linux bináris használatához, és honnan szerezzük be ezeket? Erre alapvetõn két lehetõségünk van (az utasításokat root felhasználóként kell majd végrehajtanunk).

Ha hozzáférünk egy Linux rendszerhez, akkor szedjük össze az alkalmazásunk futtatásához szükséges osztott könyvtárakat, és másoljuk ezeket a FreeBSD partíciójára. Például:

Tegyük fel, hogy FTP-n keresztül leszedtük a Doom Linux változatát, és felraktuk egy általunk elérhetõ Linux rendszerre. Az ldd linuxdoom parancs segítségével ki tudjuk deríteni, milyen osztott könyvtárak kellenek majd nekünk:

% 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

Az utolsó oszlopban levõ állományokat másoljuk át, tegyük ezeket a /compat/linux könyvtárba, és hozzunk létre az elsõ oszlopban szereplõ szimbolikus linkeket. Így tehát a következõ állományok kellenének:

/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

Ha már rendelkezünk az ldd kimenetének elsõ oszlopában szereplõ fõverziószámú osztott könyvtárral, akkor nem kell átmásolni az utolsó oszlopban levõ állományokat, hiszen így is mûködnie kellene mindennek. Ha viszont egy újabb változattal találkozunk, akkor érdemes mégis inkább átmásolni. Miután a szimbolikus linkeket átirányítottuk az új változatra, a régit akár törölhetjük is. Ha például ezek a könyvtárak elérhetõek a rendszerünkön:

/compat/linux/lib/libc.so.4.6.27
/compat/linux/lib/libc.so.4 -> libc.so.4.6.27

Észrevesszük, hogy az ldd kimenetében az új bináris egy újabb változatot igényel:

libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29

Ha csak az utolsó jegyében marad le valamivel a verziószám, akkor nem kell különösebben aggódnunk a /lib/libc.so.4.6.29 miatt sem, hiszen a programnak egy picivel korábbi verzióval is remekül kellene tudnia mûködni. Természetesen, ha akarjuk, ettõl függetlenül lecserélhetjük a libc.so állományt, ami ezt eredményezi:

/compat/linux/lib/libc.so.4.6.29
/compat/linux/lib/libc.so.4 -> libc.so.4.6.29

A szimbolikus linkek karbantartása csak a Linux binárisok esetén szükséges. A FreeBSD saját futásidejû linkere magától megkeresi a megfelelõ fõverziószámú könyvtárakat, ezért emiatt általában nem kell aggódni.

10.2.2. Linux ELF binárisok telepítése

Az ELF binárisok futtatása elõtt néha még szükség van a "megbélyegzés" (branding) használatára is. Ha egy bélyegezetlen ELF binárist akarunk elindítani, akkor a következõ hibaüzenetet kapjuk:

% ./egy-linux-elf-bináris
ELF binary type not known
Abort

A FreeBSD rendszermagjának a brandelf(1) paranccsal tudunk segíteni a FreeBSD és a Linux binárisainak megkülönböztetésében.

% brandelf -t Linux egy-linux-elf-bináris

A GNU által fejlesztett eszközök manapság már automatikusan elhelyezik az ELF binárisok azonosításához szükséges bélyegeket, ezért ez a lépés a jövõben egyre inkább feleslegessé válik.

10.2.3. Tetszõleges RPM formátumú csomag telepítése

A FreeBSD a telepített (akár linuxos) alkalmazások nyomonkövetésére saját csomagadatbázissal rendelkezik, amelynek következtében a Linux® által felkínált RPM adatbázisokat nem támogatja.

Ennek ellenére akármelyik RPM alapú Linux® alkalmazás telepíthetõ rendszerünkre a következõ módon:

# cd /compat/linux
# rpm2cpio -q < /a/linuxos/allomány.helye.rpm | cpio -id

Ezt követõen a brandelf(1) segítségével állítsuk be az ELF binárisokat (könyvtárakat viszont ne!) megfelelõ típusúra. Ekkor ugyan nem leszünk képesek rendesen eltávolítani az így telepített szoftvert, de ez a módszer teszteléshez megfelelõ.

10.2.4. A névfeloldó beállítása

Ha a névfeloldás (DNS) valamiért nem mûködne, vagy egy ehhez hasonló üzenetet kapunk:

resolv+: "bind" is an invalid keyword resolv+:
"hosts" is an invalid keyword

Akkor a /compat/linux/etc/host.conf állományba be kell illesztenünk a következõ sorokat:

order hosts, bind
multi on

Az itt megszabott sorrend szerint elõször az /etc/hosts állományt nézi át, és majd csak ezután próbálja meg feloldani a nevet. Ha a /compat/linux/etc/host.conf állomány nem létezik, akkor a linuxos alkalmazás a FreeBSD /etc/host.conf állományát találja meg, és panaszkodni fog a FreeBSD eltérõ formátumára. Távolítsuk el a bind szócskát, ha nem állítottunk be névszervert az /etc/resolv.conf állományhoz.

10.3. A Mathematica® telepítése

Ebben a szakaszban megismerhetjük, hogyan telepítsük a Mathematica® 5.X Linux változatát FreeBSD rendszerekre.

A Mathematica® vagy a Mathematica® for Students linuxos változatai közvetlenül megrendelhetõek a fejlesztõtõl: http://www.wolfram.com/.

10.3.1. A Mathematica® telepítõjének elindítása

Elõször is jeleznünk kell a FreeBSD-nek, hogy a Mathematica® binárisai a linuxos ABI-t (Application Binary Interface) fogják használni. Itt legkönnyebben úgy járhatunk el, ha egyszerûen beállítjuk, hogy a rendszer a bélyegezetlen ELF binárisokat automatikusan Linux binárisoknak tekintse:

# sysctl kern.fallback_elf_brand=3

Ennek köszönhetõen a FreeBSD most már az összes bélyegezetlen ELF bináris esetén a linuxos ABI-t fogja használni, és így a telepítõt akár már közvetlenül a CD-rõl is indíthatjuk.

Most másoljuk át a MathInstaller nevû állományt a merevlemezünkre:

# mount /cdrom
# cp /cdrom/Unix/Installers/Linux/MathInstaller helyi_könyvtár

Az állományban cseréljük ki az elsõ sorban található /bin/sh hivatkozást a /compat/linux/bin/sh hivatkozásra. Ezzel biztosíthatjuk, hogy a telepítõt a linuxos sh(1) fogja elindítani. Ezután a kedvenc szövegszerkesztõnkkel vagy a következõ szakaszban található szkript segítségével helyettesítsük benne a Linux) szöveg összes elõfordulását a FreeBSD) szöveggel. Mivel a Mathematica® telepítõje az uname -s parancsra kapott válaszból állapítja meg az operációs rendszer típusát, ezért ezzel a módosítással a FreeBSD-t is a Linuxhoz hasonló módon fogja kezelni. A MathInstaller elindítása után most már telepíthetõ a Mathematica®.

10.3.2. A Mathematica® állományainak módosítása

A Mathematica® telepítése során létrejött szkripteket a használatuk elõtt át kell írnunk. Amennyiben a Mathematica®hoz tartozó programokat a /usr/local/bin könyvtárba telepítettük, akkor itt találjuk a math, mathematica, Mathematica és MathKernel állományokra mutató szimbolikus linkeket. Ezek mindegyikében cseréljük ki a Linux) karakterláncot a FreeBSD) szövegre a kedvenc szövegszerkesztõnkkel vagy az alábbi szkripttel:

#!/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

10.3.3. A Mathematica® jelszavának megszerzése

A Mathematica® elsõ indítása során kérni fog egy jelszót. Ha még nem kértünk volna jelszót a fejlesztõtõl, akkor a "számítógépünk azonosítójának" (machine ID) megállapításához indítsuk el a telepítés könyvtárában található mathinfo nevû programot. Ez az azonosító lényegében az elsõdleges Ethernet kártyánk MAC-címe lesz, ezért a Mathematica® nem futtatható több számítógépen.

Amikor e-mailen, telefonon vagy faxon keresztül regisztráljuk a terméket a Wolframnál, akkor meg kell adnunk nekik ezt az azonosítót "machine ID" néven, amire õk elküldik a hozzá tartozó jelszót.

10.3.4. A Mathematica® frontendjének futtatása hálózaton keresztül

A Mathematica® a szabványos betûkészletekkel meg nem jeleníthetõ szimbólumokhoz (integráljelek, szummák, görög betûk, matematikai jelölések stb.) használ néhány olyan speciális betûtípust, amelyek nem minden esetben állnak rendelkezésre. Az X által használt protokoll miatt ezeket a betûtípusokat helyben kell telepíteni. Ennek értelmében a Mathematica® CD-jén található betûtípusokat telepítenünk kell a számítógépünkre is. A CD-n ezeket általában a /cdrom/Unix/Files/SystemFiles/Fonts könyvtárban találjuk meg, vagy a merevlemezen a /usr/local/mathematica/SystemFiles/Fonts könyvtárban. Ezen belül pedig a Type1 és X alkönyvtárakra van szükségünk. Az alábbiakban leírtak szerint több módon is használhatjuk ezeket.

Az egyik ilyen módszer, ha átmásoljuk az imént említett könyvtárakat a többi mellé, vagyis a /usr/X11R6/lib/X11/fonts könyvtárba. Ekkor szükségünk lesz még a fonts.dir állomány átírására is, ahova fel kell vennünk a betûtípusok neveit, majd ennek megfelelõen az elsõ sorban módosítanunk a könyvtárban található betûtípusok számát. De ugyanígy lefuttathatjuk ebben a könyvtárban a mkfontdir(1) parancsot is.

Az a másik megoldás, ha a könyvtárakat így másoljuk át a /usr/X11R6/lib/X11/fonts helyre:

# 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

Most adjuk hozzá az új könyvtárakat a betûtípusok könyvtáraihoz:

# xset fp+ /usr/X11R6/lib/X11/fonts/X
# xset fp+ /usr/X11R6/lib/X11/fonts/MathType1
# xset fp rehash

Ha az Xorg szervert használjuk, akkor az xorg.conf állományban megadhatjuk ezen könyvtárak automatikus betöltését is.

Az XFree86™ típusú szerverek esetén az XF86Config konfigurációs állományt kell módosítanunk.

Ha még nincs /usr/X11R6/lib/X11/fonts/Type1 nevû könyvtárunk, akkor a példában szereplõ MathType1 könyvtárat nyugodtan átnevezhetjük Type1 nevûre.

10.4. A Maple™ telepítése

A Maple™ egy Mathematica®hoz hasonló kereskedelmi alkalmazás. A használatához elõször meg kell vásárolni a http://www.maplesoft.com/ címrõl, majd a licenc megszerzéséhez ugyanott regisztrálni. FreeBSD-re a szoftvert a következõ egyszerû lépéseken keresztül tudjuk telepíteni.

  1. Indítsuk el a termékhez mellékelt INSTALL nevû szkriptet. Válasszuk a telepítõprogram által felkínált opciók közül a "RedHat" címkéjût. A telepítés célkönyvtára legyen a /usr/local/maple.

  2. Ha eddig még nem tettük volna meg, rendeljük meg a Maple™ licencét a Maple Waterloo Software-tõl (http://register.maplesoft.com/) és másoljuk az /usr/local/maple/license/license.dat állományba.

  3. Az Maple™-höz mellékelt INSTALL_LIC szkript elindításával telepítsük a FLEXlm licenckezelõt. A szervernek adjuk meg a számítógépünk hálózati nevét.

  4. Javítsuk át a /usr/local/maple/bin/maple.system.type állományt a következõ módon:

       ----- itt kezdõdik a módosítás ---------
    *** 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
       ----- módosítás vége -------------------

    Vigyázzunk, hogy a "FreeBSD"|\ kezdetû sor végén nem szabad semmilyen további whitespace karakternek lennie.

    Ez a javítás arra utasítja a Maple™-t, hogy a "FreeBSD"-t Linux rendszerként ismerje fel. A bin/maple szkript hívja a bin/maple.system.type szkriptet, amely pedig a uname -a hívással próbálja kideríteni az operációs rendszer nevét. Ettõl függõen választja ki, hogy milyen típusú binárisokat fog futtatni.

  5. Indítsuk el a licenckezelõ szervert.

    A most következõ szkripttel könnyedén el tudjuk indítani az lmgrd programot. A szkriptet /usr/local/etc/rc.d/lmgrd.sh néven hozzuk létre:

       ----- nyissz -----------
    
    #! /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
       ----- nyissz -----------
  6. Próbáljuk meg elindítani a Maple™-t:

    % cd /usr/local/maple/bin
    % ./xmaple

    Szerencsés esetben innentõl kezdve már minden mûködik. És ne felejtsünk el írni a Maplesoftnak, hogy szeretnénk egy natív FreeBSD verziót a termékükbõl!

10.4.1. Általános buktatók

  • A FLEXlm licenckezelõvel esetenként nehéz lehet elboldogulni. Errõl a témáról bõvebben a http://www.globetrotter.com/ címen találunk leírásokat.

  • Az lmgrd nagyon válogatós a licencállományokat illetõen és bármilyen apróságra kiakad. Egy szabályos licencállomány valahogy így néz ki:

    # =======================================================
    # 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

    A sorozatszámot természetesen eltávolítottuk. Itt a chillig a számítógép neve.

    Az itt megadott licencállomány remekül használható egészen addig a pontig, amíg békén hagyjuk a "FEATURE" kezdetû sort (melyet a licenckulcs véd).

10.5. A MATLAB® telepítése

Ez a leírás azt mutatja be, hogyan telepítsük FreeBSD rendszerekre a MATLAB® version 6.5 Linux változatát. A Java Virtual Machine™ (lásd A Java™ futtató környezet élesítése) használatától eltekintve meglepõen jól mûködik.

A MATLAB® Linux változata közvetlenül megrendelhetõ a The MathWorks-tõl, a http://www.mathworks.com címen. Ne felejtsük el beszerezni a licencállományt és az elkészítéséhez szükséges útmutatót. Ha már úgyis arra járunk, jelezzük a fejlesztõknek, hogy igényt tartanánk a termékük natív FreeBSD-s változatára is!

10.5.1. A MATLAB® telepítése

A MATLAB® telepítéséhez a következõket kell tennünk:

  1. Helyezzük be a telepítõ CD-t és csatlakoztassuk. A telepítõszkript javaslatának megfelelõen váltsunk át a root felhasználóra. A szóbanforgó szkript elindításához gépeljük be a következõt:

    # /compat/linux/bin/sh /cdrom/install

    A telepítõ grafikus. Ha a megjelenítõ használatáról szóló hibaüzeneteket kapunk, akkor adjuk ki a setenv HOME ~FELHASZNÁLÓ parancsot, ahol a FELHASZNÁLÓ annak a felhasználónak a neve legyen, amivel az imént meghívtuk a su(1) programot.

  2. Amikor a MATLAB® könyvtárát kell megadnunk, ezt írjuk be: /compat/linux/usr/local/matlab.

    A telepítés további részeinek megkönnyítése érdekében írjuk be ezt a parancssorba: set MATLAB=/compat/linux/usr/local/matlab

  3. Miután megkaptuk a MATLAB® licencét, az útmutatás szerint szerkesszük át.

    A licencállományt a kedvenc szövegszerkesztõnkkel akár már korábban elõ is készíthetjük, és majd amikor a telepítõnek szüksége lesz rá, másoljuk be $MATLAB/license.dat helyre.

  4. Futtassuk le a telepítést.

Ezzel befejezõdött a MATLAB® hagyományos telepítése. Innentõl már csak a FreeBSD rendszer "hozzátapasztásán" fogunk dolgozni.

10.5.2. A licenckezelõ elindítása

  1. Hozzunk létre szimbolikus linkeket a licenckezelõ szkriptjeire:

    # ln -s $MATLAB/etc/lmboot /usr/local/etc/lmboot_TMW
    # ln -s $MATLAB/etc/lmdown /usr/local/etc/lmdown_TMW
  2. Hozzunk létre egy indítószkriptet /usr/local/etc/rc.d/flexlm.sh néven. A lentebb látható minta a MATLAB®hoz mellékelt $MATLAB/etc/rc.lm.glnx86 állomány egy módosított változata. Benne az állományok helyét és a licenckezelõ indításának körülményeit változtattuk meg (hogy Linux emuláció alatt fusson).

    #!/bin/sh
    case "$1" in
      start)
            if [ -f /usr/local/etc/lmboot_TMW ]; then
                  /compat/linux/bin/sh /usr/local/etc/lmboot_TMW -u felhasználó && 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

    Tegyük ezt az állományt végrehajthatóvá:

    # chmod +x /usr/local/etc/rc.d/flexlm.sh

    A fenti szkriptben cseréljük ki a felhasználó nevét a rendszerünkben levõ egyik felhasználó nevére (ami persze nem a root).

  3. A licenckezelõt az alábbi paranccsal indítsuk el:

    # /usr/local/etc/rc.d/flexlm.sh start

10.5.3. A Java™ futtató környezet élesítése

A Java™ futtató környezet (Java™ Runtime Environment, JRE) linkjét irányítsuk át egy FreeBSD alatt mûködõ változatéra:

# cd $MATLAB/sys/java/jre/glnx86/
# unlink jre; ln -s ./jre1.1.8 ./jre

10.5.4. A MATLAB® indítószkriptjének elkészítése

  1. Hozzunk létre egy ilyen indítószkriptet a /usr/local/bin/matlab könyvtárban:

    #!/bin/sh
    /compat/linux/bin/sh /compat/linux/usr/local/matlab/bin/matlab "$@"
  2. Futtassuk le a chmod +x /usr/local/bin/matlab parancsot.

A szkript lefutása során az emulators/linux_base verziójától függõen hibákat is kaphatunk. Ha el akarjuk kerülni ezeket, akkor szerkesszük át a /compat/linux/usr/local/matlab/bin/matlab állomány következõ sorát:

if [ `expr "$lscmd" : '.*->.*'` -ne 0 ]; then

(a 13.0.1 számú verzióban ez 410. sor) erre:

if test -L $newbase; then

10.5.5. A MATLAB® leállító szkriptjének elkészítése

A MATLAB® szabálytalan kilépéseit az alábbi utasítások nyomán tudjuk megszüntetni.

  1. Hozzunk létre egy $MATLAB/toolbox/local/finish.m nevû állományt, majd írjuk bele ezt a sort:

    ! $MATLAB/bin/finish.sh

    A $MATLAB szöveget pontosan így írjuk be.

    Ugyanebben a könyvtárban találjuk a beállításaink kilépés elõtti mentéséért felelõs finishsav.m és finishdlg.m állományokat. Ha ezek valamelyikét módosítjuk, akkor az elõbbi parancsot közvetlenül a save után szúrjuk be.

  2. Hozzunk létre egy $MATLAB/bin/finish.sh állományt, amelyben szerepeljen a következõ:

    #!/usr/compat/linux/bin/sh
    (sleep 5; killall -1 matlab_helper) &
    exit 0
  3. Tegyük végrehajthatóvá:

    # chmod +x $MATLAB/bin/finish.sh

10.5.6. A MATLAB® használata

Most már a matlab parancs begépelésével bármikor elindíthatjuk.

10.6. Az Oracle® telepítése

10.6.1. Elõszó

Ez a leírás azt mutatja be, hogyan telepítsük FreeBSD-re az Oracle® 8.0.5 és Oracle® 8.0.5.1 Enterprise Edition Linux változatait.

10.6.2. A Linux környezet telepítése

Telepítsük az emulators/linux_base és devel/linux_devtools portokat a Portgyûjteménybõl. Amennyiben ennek során nehézségekbe ütköznénk, próbálkozzunk a korábbi változataikkal.

Fel kell raknunk a Red Hat Tcl csomagját is, ha az alkalmazáshoz tartozó intelligens ügynököt is futtatni szeretnénk. Ez a tcl-8.0.3-20.i386.rpm. A hivatalos RPM port segítségével az alábbi általános parancson keresztül tudunk csomagokat telepíteni:

# rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm csomag

A csomag telepítésének semmilyen hibát nem kellene okoznia.

10.6.3. Az Oracle® környezetének létrehozása

Az Oracle® telepítéséhez elõször ki kell alakítanunk a megfelelõ környezetet. Ez a leírás kifejezetten arról szól, hogy FreeBSD-n hogyan futtassuk a linuxos Oracle®-t, nem pedig az Oracle® telepítési útmutatójában bemutatottakat taglalja.

10.6.3.1. A rendszermag hangolása

Ahogy az Oracle® telepítési útmutatójában is olvashatjuk, be kell állítanunk az osztott memória maximális méretét. FreeBSD alatt erre a célra ne használjuk az SHMMAX értéket, mivel az SHMMAX az SHMMAXPGS és PGSIZE értékekbõl számolódik ki. Ezért nekünk itt a SHMMAXPGS értékét kell meghatároznunk. Minden egyéb beállítás történhet az útmutatóban megadottak szerint. Például:

options SHMMAXPGS=10000
options SHMMNI=100
options SHMSEG=10
options SEMMNS=200
options SEMMNI=70
options SEMMSL=61

Hangoljuk be ezeket az értékeket az Oracle® tervezett használatához.

Emellett a konfigurációs állományban ne feledkezzünk meg az alábbi beállítások megadásáról sem:

options SYSVSHM #SysV osztott memória
options SYSVSEM #SysV szemaforok
options SYSVMSG #SysV folyamatok közti kommunikáció

10.6.3.2. Az Oracle® hozzáférése

Egy rendes hozzáféréshez hasonlóan hozzunk létre egy külön oracle hozzáférést is rendszerünkön. Az oracle hozzáférés csak annyiban különleges, hogy linuxos parancsértelmezõt kell társítanunk hozzá. Ehhez vegyük fel /compat/linux/bin/bash sort az /etc/shells állományba, majd állítsuk át az oracle nevû felhasználó parancsértelmezõjét a /compat/linux/bin/bash programra.

10.6.3.3. Környezet

A megszokott Oracle® környezeti változók, mint például az ORACLE_HOME és ORACLE_SID mellett még definiálnunk kell a következõket is:

VáltozóÉrték

LD_LIBRARY_PATH

$ORACLE_HOME/lib

CLASSPATH

$ORACLE_HOME/jdbc/lib/classes111.zip

PATH

/compat/linux/bin /compat/linux/sbin /compat/linux/usr/bin /compat/linux/usr/sbin /bin /sbin /usr/bin /usr/sbin /usr/local/bin $ORACLE_HOME/bin

Javasoljuk, hogy az összes környezeti változót a .profile állományban adjuk meg. Ennek megfelelõen a példa beállításai így fognak kinézni benne:

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

10.6.4. Az Oracle® telepítése

A Linux emulátorban meghúzódó apró egyenletlenségek miatt a telepítés elõtt létre kell hoznunk egy .oracle nevû alkönyvtárat a /var/tmp könyvtárban. Helyezzük ezt az oracle felhasználó tulajdonába. Ezt követõen minden további gond nélkül képesek leszünk az Oracle® telepítésére. Ha netalán mégis problémákba ütköznénk, elõször mindig az Oracle® telepítési és konfigurációs állományait ellenõrizzük! Az Oracle® telepítése után rakjuk fel a következõ szakaszokban bemutatandó javításokat.

Gyakran problémát okoz, ha a TCP protokollt még nem telepítettük. Ennek következményeképpen ugyanis nem tudnak elindulni a TCP alapú szolgáltatások. Az alábbi mûveletek ebben igyekeznek segíteni:

# 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

Ne felejtsük el ismét elindítani a root.sh szkriptet!

10.6.4.1. A root.sh javítása

Az Oracle® telepítése során root (privilegizált) felhasználóként elvégzendõ mûveleteket a root.sh elnevezésû szkriptben találjuk. Ez a szkript az orainst könyvtárba kerül. A chown parancs helyes lefutásához alkalmazzuk az alább mellékelt javítást, vagy az egész szkriptet egy linuxos parancsértelmezõbõl indítsuk el.

*** 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

Ha nem CD-rõl telepítjük az Oracle®-t, akkor akár a root.sh forrását is kijavíthatjuk. A neve rthd.sh, és a forrásfa orainst könyvtárában találhatjuk.

10.6.4.2. A genclntsh javítása

A genclntsh szkript a kliensek által használt osztott könyvtár létrehozására alkalmazható. Általában demók fordításához van rá szükség. Az alábbi javítás alkalmazásával a PATH változó értéke törölhetõ:

*** 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

10.6.5. Az Oracle® futtatása

Ha rendesen követtük az iménti utasításokat, akkor most már úgy tudjuk futtatni az Oracle®-t, mintha csak Linuxon futna.

10.7. Az SAP® R/3® telepítése

Az SAP® típusú rendszerek telepítéséhez FreeBSD-re hivatalosan nem kaphatunk mûszaki segélynyújtást - csak a minõsített platformokat támogatják.

10.7.1. Elõszó

Ez a leírás az SAP® R/3® rendszer és Oracle® adatbázis Linux változatainak telepítését mutatja be FreeBSD-n, beleértve a FreeBSD és az Oracle® telepítését. Kétféle konfigurációt írunk le:

  • SAP® R/3® 4.6B (IDES) és Oracle® 8.0.5, FreeBSD 4.3-STABLE

  • SAP® R/3® 4.6C és Oracle® 8.1.7, FreeBSD 4.5-STABLE

Habár ez a dokumentum igyekszik az összes fontos lépést a lehetõ legrészletesebb módon tárgyalni, semmiképpen sem célja az Oracle® és az SAP® R/3® alkalmazásokhoz mellékelt telepítési útmutatók kiváltása.

A kifejezetten az SAP® vagy az Oracle® Linux változataira vonatkozó kérdések, valamint az Oracle® és az SAP® OSS konkrét használatával kapcsolatos leírások tekintetében a saját dokumentációjukat olvassuk el.

10.7.2. A szoftver

Az SAP® telepítéséhez az alábbi CD-ket használtuk fel:

10.7.2.1. SAP® R/3® 4.6B, Oracle® 8.0.5

NévSzámLeírás

KERNEL

51009113

SAP Kernel Oracle / telepítõ / AIX, Linux, Solaris

RDBMS

51007558

Oracle / RDBMS 8.0.5.X / Linux

EXPORT1

51010208

IDES / DB-Export / 1. lemez

EXPORT2

51010209

IDES / DB-Export / 2. lemez

EXPORT3

51010210

IDES / DB-Export / 3. lemez

EXPORT4

51010211

IDES / DB-Export / 4. lemez

EXPORT5

51010212

IDES / DB-Export / 5. lemez

EXPORT6

51010213

IDES / DB-Export / 6. (utolsó) lemez

Emellett még használtuk az Oracle® 8 Server (az elõzetes 8.0.5 változat a Linux 2.0.33 verziójához) CD-jét is, amely igazából nem feltétlenül szükséges, valamint a FreeBSD (a 4.3 RELEASE kiadása után nem sokkal levõ) 4.3-STABLE változatát.

10.7.2.2. SAP® R/3® 4.6C SR2, Oracle® 8.1.7

NévSzámLeírás

KERNEL

51014004

SAP Kernel Oracle / SAP Kernel 4.6D változat / DEC, Linux

RDBMS

51012930

Oracle 8.1.7/ RDBMS / Linux

EXPORT1

51013953

4.6C kiadás SR2 / Export / 1. lemez

EXPORT1

51013953

4.6C kiadás SR2 / Export / 2. lemez

EXPORT1

51013953

4.6C kiadás SR2 / Export / 3. lemez

EXPORT1

51013953

4.6C kiadás SR2 / Export / 4. (utolsó) lemez

LANG1

51013954

4.6C kiadás SR2 / Nyelvi támogatás / német, angol, francia / 1. lemez

A telepítendõ nyelvtõl függõen egyéb nyelvi támogatást tartalmazó CD használata is szükségessé válhat. Itt most csak a német és angol nyelveket használjuk, ezért elegendõ az elsõ CD. Csendben hozzátesszük, hogy mind a négy EXPORT CD száma megegyezik. Ugyanígy a három nyelvi CD-nek is megegyeznek a számai (ez eltér a 4.6B IDES kiadás CD számozásától). Az írás pillanatában a FreeBSD 4.5-STABLE (2002.03.20-i) változatát használjuk.

10.7.3. SAP® füzetek

Az SAP® R/3® telepítésével kapcsolatban az alábbi füzetek bizonyultak hasznosnak:

10.7.3.1. SAP® R/3® 4.6B, Oracle® 8.0.5

SzámCím

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

10.7.3.2. SAP® R/3® 4.6C, Oracle® 8.1.7

SzámCím

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

10.7.4. Hardverkövetelmények

Az alábbi hardvereszközök szükségesek az SAP® R/3® rendszer telepítéséhez. Az éles használathoz ennél természetesen valamivel több kell majd:

Változat4.6B4.6C

Processzor

Két Pentium® III 800MHz

Két Pentium® III 800MHz

Memória

1GB ECC

2GB ECC

Szabad hely a merevlemezen

50 - 60GB (IDES)

50 - 60GB (IDES)

Éles használatra nagyobb gyorsítótárral rendelkezõ Xeon™ processzorokat, nagysebességû háttértárakat (SCSI, hardveres RAID vezérlõvel), USV és ECC memória modulok ajánlottak. A nagy tárigényt egyébként az elõre beállított IDES rendszer indokolja, ami egy 27 GB méretû adatbázist hoz létre a telepítés során. Ez a terület általában elegendõ egy frissen induló rendszer és hozzá tartozó alkalmazásadatok tárolására.

10.7.4.1. SAP® R/3® 4.6B, Oracle® 8.0.5

A következõ hardverkonfigurációt használtuk: két 800 MHz-es Pentium® III processzor és a hozzájuk tartozó alaplap, egy Adaptec® 29160 Ultra160 SCSI-vezérlõ (a 40/80 GB méretû DLT szalagos meghajtó és CD-meghajtó használatához) és egy Mylex® AcceleRAID™ RAID-vezérlõ (2 csatorna, 6.00-1-00 verziójú firmware és 32 MB memória), amihez két 17 GB-os (tükrözött) merevlemez és négy 36 GB-os merevlemez (RAID 5) csatlakozik.

10.7.4.2. SAP® R/3® 4.6C, Oracle® 8.1.7

Itt a hardver egy Dell™ PowerEdge™ 2500 volt: kétprocesszoros alaplap, két darab 1000 MHz-es Pentium® III processzorral (fejenként 256 KB gyorsítótárral), 2 GB PC133-as ECC SDRAM memóriával, PERC/3 DC PCI RAID-vezérlõvel (128 MB memória), valamint egy EIDE DVD-meghajtóval. A RAID-vezérlõre két, egyenként 18 GB méretû merevlemezt (tükrözve) és négy 36 GB méretû merevlemezt csatlakoztattunk (RAID 5-ben).

10.7.5. A FreeBSD telepítése

Elõször is telepítenünk kell a FreeBSD-t. Ez több módon is lehetséges, ezekrõl a Saját telepítőeszköz elkészítéseban olvashatunk bõvebben.

10.7.5.1. A lemezek felosztása

Az egyszerûség kedvéért az SAP® R/3® 46B és SAP® R/3® 46C SR2 telepítése során is ugyanazt a felosztást használtuk. Egyedül az eszközök nevei változtak, mivel a telepítés eltérõ hardvereken történt (/dev/da) és /dev/amr, tehát ha az AMI MegaRAID® esetén a /dev/da0s1a helyett a /dev/amr0s1a eszközt láthatjuk):

ÁllományrendszerMéretCsatlakozási pont

/dev/da0s1a

1 GB

/

/dev/da0s1b

6 GB

lapozóállomány

/dev/da0s1e

2 GB

/var

/dev/da0s1f

8 GB

/usr

/dev/da1s1e

45 GB

/compat/linux/oracle

/dev/da1s1f

2 GB

/compat/linux/sapmnt

/dev/da1s1g

2 GB

/compat/linux/usr/sap

Elõre állítsuk be és inicializáljuk a két logikai meghajtót a Mylex® és a PERC/3 RAID-vezérlõkön. A hozzá tartozó szoftver a BIOS indításának fázisában hívható be.

A lemezek felosztása némileg eltér az SAP® által javasoltaktól, mivel az SAP® szerint az Oracle® könyvtárait (néhány másikkal együtt) külön-külön érdemes csatlakoztatni - mi most az egyszerûsítés kedvéért csak létrehoztuk ezeket.

10.7.5.2. A make world és egy új rendszermag

Töltsük le a legfrissebb -STABLE forrásokat. Fordítsuk újra az összes forrást (make world) és a beállításainak elvégzése után a saját rendszermagunkat is. Itt ne felejtsük el megadni az SAP® R/3® és az Oracle® mûködéséhez szükséges paramétereket.

10.7.6. A Linux környezet telepítése

10.7.6.1. Az linuxos alaprendszer telepítése

Elsõként a linux_base portot kell felraknunk (root felhasználóként):

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

10.7.6.2. A linuxos fejlesztõi környezet telepítése

Ha az Oracle®-t FreeBSD-re a Az Oracle® telepítéseban leírtak szerint akarjuk telepíteni, akkor szükségünk lesz a linuxos fejlesztõeszközökre is:

# cd /usr/ports/devel/linux_devtools
# make install distclean

A linuxos fejlesztõkörnyezetet csak az SAP® R/3® 46B IDES telepítésénél raktuk fel. Nincs rá szükségünk, ha a FreeBSD rendszeren nem akarjuk újralinkelni az Oracle® adatbázist. Pontosan ez a helyzet, amikor egy Linux rendszerhez gyártott Oracle® készletet használunk.

10.7.6.3. A szükséges RPM csomagok telepítése

Az R3SETUP elindításához PAM támogatásra is szükségünk lesz. Amikor elõször próbáltuk meg telepíteni a FreeBSD 4.3-STABLE változatára az SAP®-t, felraktuk a PAM-et és az összes hozzá tartozó csomagot, majd végül úgy bírtuk mûködésre, hogy kényszerítettük a PAM telepítését is. Az SAP® R/3® 4.6C SR2 esetén szintén sikerült önmagában felrakni a PAM RPM csomagját is, tehát úgy néz ki, hogy a függõségeit már nem kell telepíteni:

# rpm -i --ignoreos --nodeps --root /compat/linux --dbpath /var/lib/rpm \
pam-0.68-7.i386.rpm

Az Oracle® 8.0.5 verziójához mellékelt intelligens ügynök futtatásához fel kell rakni a RedHat tcl-8.0.5-30.i386.rpm nevû Tcl csomagját is (máskülönben a az Oracle® telepítése közben szükséges újralinkelés nem fog mûködni). Vannak ugyan egyébként is gondok az Oracle® újralinkelésével, azonban ez linuxos probléma, nem pedig FreeBSD-s.

10.7.6.4. Néhány további tipp

Hasznos lehet, ha felvesszük a linprocfs bejegyzést az /etc/fstab állományba. Ennek pontos részleteit a linprocfs(5) man oldalon találjuk meg. Másik fontos paraméter a kern.fallback_elf_brand=3, amelyet az /etc/sysctl.conf állományba kell beszúrnunk.

10.7.7. Az SAP® R/3® környezetének létrehozása

10.7.7.1. A szükséges állományrendszerek és csatlakozási pontok létrehozása

Egy egyszerûbb telepítéshez elég csupán a következõ állományrendszereket elkészíteni:

csatlakozási pontméret GB-ban

/compat/linux/oracle

45 GB

/compat/linux/sapmnt

2 GB

/compat/linux/usr/sap

2 GB

Készítenünk kell még néhány linket is, különben az SAP® telepítõje panaszkodni fogni az ellenõrzésük során:

# ln -s /compat/linux/oracle /oracle
# ln -s /compat/linux/sapmnt /sapmnt
# ln -s /compat/linux/usr/sap /usr/sap

Az egyik ilyen telepítés közben megjelenõ hibaüzenet (a PRD rendszer és az SAP® R/3® 4.6C SR2 telepítése esetén):

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'

10.7.7.2. A felhasználók és könyvtárak létrehozása

Az SAP® R/3® rendszernek két felhasználóra és három csoportra van szüksége. Az igényelt felhasználók nevei az SAP® rendszer azonosítójától (System ID, SID) függenek, amely három betûbõl áll. Egyes ilyen rendszerazonosítók az SAP® számára vannak fenntartva. (Például a SAP és a NIX. Ezek teljes listáját az SAP® dokumentációjában találjuk meg.) Erre az IDES telepítéséhez az IDS, a 4.6C SR2 telepítésénél a PRD neveket adtuk, mivel ezeket a rendszereket éles használatra szánták. Ennélfogva a következõ csoportokat hoztuk létre hozzájuk (a csoportok azonosítói ugyan eltérhetnek az általunk használtaktól):

csoport azonosítójacsoport neveleírás

100

dba

Adatbázis adminisztrátor

101

sapsys

SAP® rendszer

102

oper

Adatbázis operátor

Az Oracle® alapértelmezett telepítésénél csak a dba csoport jön létre. A dba csoportot oper csoportként is használhatjuk (bõvebb információkért lásd az Oracle® és az SAP® dokumentációját).

Ezenkívül az alábbi felhasználókra van még szükségünk:

felhasználói azonosítófelhasználói néváltalános névcsoportegyéb csoportokleírás

1000

idsadm/prdadm

sidadm

sapsys

oper

SAP® adminisztrátor

1002

oraids/oraprd

orasid

dba

oper

Oracle® adminisztrátor

Az adduser(8) parancs használata során a következõkre lesz szükségünk egy "SAP® Administrator" létrehozásához (figyeljük a parancsértelmezõt (shell) és a felhasználói könyvtárat (home directory)):

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)

Ugyanígy az "Oracle® Administrator" esetében:

Name: orasid
Password: ******
Fullname: Oracle Administrator SID
Uid: 1002
Gid: 100 (dba)
Class:
Groups: dba
HOME: /oracle/sid
Shell: bash  (/compat/linux/bin/bash)

A dba és oper csoportok használata során ne felejtsük el megadni az oper csoportot sem.

10.7.7.3. Könyvtárak létrehozása

A könyvtárakat általában külön állományrendszerekként hozzák létre, de ez teljesen az igényeinken múlik. Mi most egyszerû könyvtárakként alakítottuk ki ezeket, ezért tulajdonképpen ugyanazon a RAID 5 tömbön találhatóak meg:

Ehhez elõször beállítjuk az egyes könyvtárak tulajdonosait és engedélyeit (root felhasználóként):

# chmod 775 /oracle
# chmod 777 /sapmnt
# chown root:dba /oracle
# chown sidadm:sapsys /compat/linux/usr/sap
# chmod 775 /compat/linux/usr/sap

Másodsorban orasid felhasználóként hozzuk létre az /oracle/SID alkönyvtárait:

# su - orasid
# cd /oracle/SID
# mkdir mirrlogA mirrlogB origlogA origlogB
# mkdir sapdata1 sapdata2 sapdata3 sapdata4 sapdata5 sapdata6
# mkdir saparch sapreorg
# exit

Az Oracle® 8.1.7 telepítésénél még további könyvtárakra is szükségünk lesz:

# su - orasid
# cd /oracle
# mkdir 805_32
# mkdir client stage
# mkdir client/80x_32
# mkdir stage/817_32
# cd /oracle/SID
# mkdir 817_32

A client/80x_32 könyvtárnak pontosan ilyen névvel kell rendelkeznie. Ne cseréljük ki a benne szereplõ x-et semmire se!

A harmadik lépésben létrehozzuk a sidadm felhasználóhoz tartozó könyvtárakat:

# su - sidadm
# cd /usr/sap
# mkdir SID
# mkdir trans
# exit

10.7.7.4. Az /etc/services

A SAP® R/3® mûködéséhez fel kell vennünk néhány olyan bejegyzést is az /etc/services állományba, amelyek a FreeBSD telepítése során nem jönnek létre. Így tehát írjuk be az alábbi sorokat (legalább a használni kívánt példány számához illõ sorokat adjuk meg - ez jelen esetünkben most a 00. Természetesen az sem okoz gondot, ha a dp, gw, sp és ms esetén beírjuk az összes példánynak megfelelõ portot 00-tól 99-ig). Amennyiben a SAProuter vagy az SAP® OSS használatára lenne szükségünk, akkor adjuk meg a SAProuter által lefoglalt 99-es példánynak megfelelõ 3299-es portot a rendszerünkön:

sapdp00  3200/tcp # SAP menetirányító        3200 + a példány száma
sapgw00  3300/tcp # SAP átjáró               3300 + a példány száma
sapsp00  3400/tcp #                          3400 + a példány száma
sapms00  3500/tcp #                          3500 + a példány száma
sapmsSID 3600/tcp # SAP üzenetkezelõ szerver 3600 + a példány száma
sapgw00s 4800/tcp # biztonságos SAP átjáró   4800 + a példány száma

10.7.7.5. A szükséges nyelvi beállítások

Az SAP®-nek legalább két olyan nyelvre van szüksége, amely nem része az alap RedHat telepítéseknek. Az SAP® a saját FTP szervereirõl elérhetõvé tette az ehhez szükséges RPM csomagokat (amelyek viszont csak OSS típusú hozzáférés birtokában tölthetõek le). A 0171356 számú jegyzet tartalmazza a beszerzendõ RPM-ek listáját.

Megcsinálhatjuk úgy is, hogy egyszerûen csak linkeket hozunk létre (például a de_DE és en_US könyvtárakra), habár ezt egy éles rendszer esetében semmiképpen sem ajánljuk (az IDES rendszerrel tapasztalataink szerint eddig még remekül mûködött). Az alábbi nyelvi beállítások fognak tehát nekünk kelleni:

de_DE.ISO-8859-1
en_US.ISO-8859-1

Így hozzuk létre hozzájuk a linkeket:

# cd /compat/linux/usr/shared/locale
# ln -s de_DE de_DE.ISO-8859-1
# ln -s en_US en_US.ISO-8859-1

A telepítés során az iméntiek hiánya gondokat okozhat. Ha folyamatosan figyelmen kívül hagyjuk az ezekbõl fakadó hibákat (vagyis a CENTRDB.R3S állományban a gondot okozó lépések STATUS értékét OK-ra állítjuk), akkor komolyabb erõfeszítések megtétele nélkül majd képtelenek leszünk bejelentkezni a frissen telepített SAP® rendszerünkbe.

10.7.7.6. A rendszermag finomhangolása

Az SAP® R/3® rendszerek temérdek mennyiségû erõforrást igényelnek. Ennek kielégítésére az alábbi paramétereket adjuk hozzá a rendszermag beállításait tartalmazó állományhoz:

# Adjunk a memóriazabálóknak (SAP és Oracle):
options MAXDSIZ="(1024*1024*1024)"
options DFLDSIZ="(1024*1024*1024)"
# Kell néhány System V beállítás is:
options SYSVSHM # SYSV típusú osztott memória be
options SHMMAXPGS=262144 # a megosztható memória maximális mérete lapokban
#options SHMMAXPGS=393216 # a 46C telepítésekor ezt használjuk
options SHMMNI=256 # az osztott memóriákhoz tartozó azonosítók maximális száma
options SHMSEG=100 # a futó programonként megosztható szegmensek maximuma
options SYSVMSG # SYSV típusú üzenetsorok
options MSGSEG=32767 # a rendszerben keringõ üzenetszegmensek maximális száma
options MSGSSZ=32 # az üzenetszegmensek mérete. 2 hatványa LEGYEN
options MSGMNB=65535 # maximális karakter üzenetsoronként
options MSGTQL=2046 # a rendszerben levõ üzenetek maximuma
options SYSVSEM # SYSV típusú szemaforok
options SEMMNU=256 # a szemaforok UNDO struktúráinak száma
options SEMMNS=1024 # a rendszerben levõ szemaforok száma
options SEMMNI=520 # a szemaforok azonosítóinak mennyisége
options SEMUME=100 # az UNDO kulcsok száma

Az itt megadott minimum értékek az SAP® által kiadott dokumentációkból származnak. Mivel a Linux változathoz errõl nincs külön leírás, ezért a (32 bites) HP-UX változat dokumentációi között érdemes ennek utánanézni. Mivel a 4.6C SR2 telepítéséhez használt rendszeren valamivel több fizikai memória állt rendelkezésünkre, ezért az osztott szegmensek méretét nagyobbra tudtuk megválasztani mind az SAP®, mind az Oracle® esetében, ami magyarázza a megosztható lapok nagyobb számát.

A FreeBSD i386™ változatának telepítése során hagyjuk meg a MAXDSIZ és DFLDSIZ értékek alapértelmezett 1 GB-os maximumát. Ellenkezõ esetben ezekhez hasonló furcsa hibaüzeneteket láthatunk: ORA-27102: out of memory vagy Linux Error: 12: Cannot allocate memory.

10.7.8. Az SAP® R/3® telepítése

10.7.8.1. Az SAP® CD-k elõkészítése

Sok CD-t kell a telepítés során mozgatni, tehát csatlakoztatni és leválasztani. Ha viszont elegendõ meghajtóval rendelkezünk, akkor akár csatlakoztathatjuk egyszerre is az összeset. Vagy felmásolhatjuk a CD-k tartalmát a nekik megfelelõ könyvtárakba:

/oracle/SID/sapreorg/cd-neve

ahol a cd-neve a következõk valamelyike: KERNEL, RDBMS, EXPORT1, EXPORT2, EXPORT3, EXPORT4, EXPORT5 és EXPORT6 (4.6B/IDES), valamint KERNEL, RDBMS, DISK1, DISK2, DISK3, DISK4 és LANG (4.6C SR2). A csatlakoztatott CD-ken található állományok neveinek nagybetûseknek kell lenniük. Ha nem így lenne, akkor a csatlakoztatásnál adjuk meg a -g opciót. Így tehát a következõ parancsokat kell kiadnunk:

# mount_cd9660 -g /dev/cd0a /mnt
# cp -R /mnt/* /oracle/SID/sapreorg/cd-neve
# umount /mnt

10.7.8.2. A telepítõszkript futtatása

Elsõként egy install nevû könyvtárat kell elõkészítenünk:

# cd /oracle/SID/sapreorg
# mkdir install
# cd install

Ezután futtassuk le a telepítõszkriptet, ami pedig bemásolja az install könyvtárba szinte az összes fontos állományt:

# /oracle/SID/sapreorg/KERNEL/UNIX/INSTTOOL.SH

Az IDES (4.6B) változathoz egy teljes SAP® R/3® bemutató rendszer is tartozik, ezért a megszokott három CD helyett hat EXPORT típusú CD-bõl áll. Itt a CENTRDB.R3S telepítõsablon csak a szabvány központi példányt hozza létre (R/3® és az adatbázis), az IDES központi példányát már nem. Ezért az EXPORT1 könyvtárból ki kell másolnunk a CENTRDB.R3S állományt, különben az R3SETUP csak három EXPORT CD-t fog kérni.

Az újabb SAP® 4.6 SR2 kiadáshoz négy EXPORT CD tartozik. A telepítés folyamatát a CENTRAL.R3S állományban levõ paraméterek vezérlik. A korábbi kiadásokkal ellentétben nincsenek külön sablonok az adatbázissal és a nélküle telepítendõ központi példányok számára. Az SAP® az adatbázisok telepítésére külön sablont használ. Újrakezdéskor a telepítést ettõl függetlenül elegendõ az eredeti állománnyal újraindítani.

A telepítés közben és után az SAP®-nek a hostname paranccsal csak a gép saját nevét, nem pedig a teljes hálózati nevét kell megadnunk. Ilyenkor ezt vagy egyenként begépeljük, vagy létrehozunk rá egy álnevet az ora_sid_ és _sid_adm (valamint a megfelelõ lépésekben a root) felhasználóknak: alias hostname='hostname -s'. Ezenkívül még az SAP® telepítésekor létrehozott mindkét felhasználó .profile és .login állományait is beállíthatjuk ennek megfelelõen.

10.7.8.3. Az R3SETUP 4.6B verziójának indítása

Ne felejtsük el jól beállítani az LD_LIBRARY_PATH környezeti változót:

# export LD_LIBRARY_PATH=/oracle/IDS/lib:/sapmnt/IDS/exe:/oracle/805_32/lib

A telepítés könyvtárában root felhasználóként indítsuk el az R3SETUP programot:

# cd /oracle/IDS/sapreorg/install
# ./R3SETUP -f CENTRDB.R3S

A szkript ezek után feltesz néhány kérdést (az alapértelmezett válaszok zárójelben, közvetlenül a megadottak után):

KérdésAlapértelmezésVálasz

Enter SAP System ID

[C11]

IDSEnter

Enter SAP Instance Number

[00]

Enter

Enter SAPMOUNT Directory

[/sapmnt]

Enter

Enter name of SAP central host

[troubadix.domain.de]

Enter

Enter name of SAP db host

[troubadix]

Enter

Select character set

[1] (WE8DEC)

Enter

Enter Oracle server version (1) Oracle 8.0.5, (2) Oracle 8.0.6, (3) Oracle 8.1.5, (4) Oracle 8.1.6

1Enter

Extract Oracle Client archive

[1] (Yes, extract)

Enter

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]

Enter

Enter path to EXPORT2 CD

[/sapcd]

/oracle/IDS/sapreorg/EXPORT2

Directory to copy EXPORT2 CD

[/oracle/IDS/sapreorg/CD5_DIR]

Enter

Enter path to EXPORT3 CD

[/sapcd]

/oracle/IDS/sapreorg/EXPORT3

Directory to copy EXPORT3 CD

[/oracle/IDS/sapreorg/CD6_DIR]

Enter

Enter path to EXPORT4 CD

[/sapcd]

/oracle/IDS/sapreorg/EXPORT4

Directory to copy EXPORT4 CD

[/oracle/IDS/sapreorg/CD7_DIR]

Enter

Enter path to EXPORT5 CD

[/sapcd]

/oracle/IDS/sapreorg/EXPORT5

Directory to copy EXPORT5 CD

[/oracle/IDS/sapreorg/CD8_DIR]

Enter

Enter path to EXPORT6 CD

[/sapcd]

/oracle/IDS/sapreorg/EXPORT6

Directory to copy EXPORT6 CD

[/oracle/IDS/sapreorg/CD9_DIR]

Enter

Enter amount of RAM for SAP + DB

850Enter (megabyte)

Service Entry Message Server

[3600]

Enter

Enter Group-ID of sapsys

[101]

Enter

Enter Group-ID of oper

[102]

Enter

Enter Group-ID of dba

[100]

Enter

Enter User-ID of _sid_adm

[1000]

Enter

Enter User-ID of ora_sid_

[1002]

Enter

Number of parallel procs

[2]

Enter

Ha a CD-ket nem különbözõ helyekre másoltuk, akkor az SAP® telepítõje nem fogja megtalálni ezeket (a rajtuk levõ LABEL.ASC segít neki az azonosításban) és kérni fogja a CD csatlakoztatását, illetve a csatlakozási pontjának megadását.

A CENTRDB.R3S sem minden esetben mentes a hibáktól. A tapasztalataink szerint az EXPORT4 címkéjû CD-t kérte újra, miközben a helyes kulcsokat jelezte ki (6_LOCATION, majd 7_LOCATION stb.), így egyszerûen csak lépjünk tovább az értékek meghagyásával.

Függetlenül az imént említett problémáktól, egészen az Oracle® adatbáziskezelõ telepítéséig mindennek mûködnie kellene.

10.7.8.4. Az R3SETUP 4.6C SR2 elindítása

Állítsuk be jól az LD_LIBRARY_PATH környezeti változó értékét. Ez némileg eltér a 4.6B és az Oracle® 8.0.5 párosának beállításától:

# export LD_LIBRARY_PATH=/sapmnt/PRD/exe:/oracle/PRD/817_32/lib

A telepítés könyvtárából root felhasználóként indítsuk el az R3SETUP programot:

# cd /oracle/PRD/sapreorg/install
# ./R3SETUP -f CENTRAL.R3S

A szkript ezek után feltesz néhány kérdést (az alapértelmezett válaszok zárójelben, közvetlenül a megadottak után):

KérdésAlapértelmezésVálasz

Enter SAP System ID

[C11]

PRDEnter

Enter SAP Instance Number

[00]

Enter

Enter SAPMOUNT Directory

[/sapmnt]

Enter

Enter name of SAP central host

[majestix]

Enter

Enter Database System ID

[PRD]

PRDEnter

Enter name of SAP db host

[majestix]

Enter

Select character set

[1] (WE8DEC)

Enter

Enter Oracle server version (2) Oracle 8.1.7

2Enter

Extract Oracle Client archive

[1] (Yes, extract)

Enter

Enter path to KERNEL CD

[/sapcd]

/oracle/PRD/sapreorg/KERNEL

Enter amount of RAM for SAP + DB

2044

1800Enter (megabyte)

Service Entry Message Server

[3600]

Enter

Enter Group-ID of sapsys

[100]

Enter

Enter Group-ID of oper

[101]

Enter

Enter Group-ID of dba

[102]

Enter

Enter User-ID of oraprd

[1002]

Enter

Enter User-ID of prdadm

[1000]

Enter

LDAP support

3Enter (nincs támogatás)

Installation step completed

[1] (continue)

Enter

Choose installation service

[1] (DB inst,file)

Enter

Az OSUSERDBSID_IND_ORA és OSUSERIDADM_IND_ORA lépésekben az orasid és sidadm felhasználók létrehozása hibákra futhat.

Függetlenül az említett problémáktól, az Oracle® adatbáziskezelõ telepítéséig mindennek remekül kell mûködnie.

10.7.9. Az Oracle® 8.0.5 telepítése

Az Oracle® Linux változatának telepítése során felmerülõ problémák tekintetében keressük fel az SAP® füzeteket és az Oracle® Readme állományait. A legtöbb, ha nem is az összes gondot az egymással nem kompatibilis függvénykönyvtárak okozzák.

Az Oracle® telepítésének részleteit a Az Oracle® telepítése címû szakaszban találjuk.

10.7.9.1. Az Oracle® 8.0.5 telepítése az orainst segítségével

Az Oracle® 8.0.5 verziójának használata esetén néhány további függvénykönyvtár újralinkelésére is szükség lesz, mivel az Oracle® 8.0.5 még a régi glibc könyvtárral lett fordítva (RedHat 6.0), viszont a RedHat 6.1 már a glibc újabb verzióját használja. A linkelés mûködéséhez az alábbi csomagokat kell még telepítenünk:

  • 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

A részleteket lásd az SAP® füzeteiben vagy az Oracle® Readme állományaiban. Amennyiben ez nem oldható meg, akkor az eredeti binárisok, esetleg az eredeti RedHat rendszerbõl származó újralinkelt binárisok is használhatóak (habár a telepítés pillanatában személyesen ezt nem tudtuk ellenõrizni).

Az intelligens ügynök lefordításához fel kell raknunk a RedHat saját Tcl csomagját. Ha ehhez nem tudjuk beszerezni a tcl-8.0.3-20.i386.rpm csomagot, akkor a RedHat 6.1 változatához készült tcl-8.0.5-30.i386.rpm is megteszi.

Az újralinkeléstõl eltekintve a telepítés többi része szinte adja magát:

# su - oraids
# export TERM=xterm
# export ORACLE_TERM=xterm
# export ORACLE_HOME=/oracle/IDS
# cd $ORACLE_HOME/orainst_sap
# ./orainst

Az Oracle® On-Line Text Viewer kikapcsolásán (mivel az jelenleg Linux alatt sem érhetõ el) kívül mindegyik képernyõt hagyjuk jóvá az Enter billentyû lenyomásával. Az Oracle® ezután a rendelkezésre álló gcc, egcs vagy i386-redhat-linux-gcc helyett a i386-glibc20-linux-gcc használatával újra akarja linkelni magát.

Idõ hiányában az Oracle® 8.0.5 PreProduction kiadásából emeltünk ki binárisokat, de az adatbáziskezelõ rendszer felélesztésére tett elsõ kísérleteink kudarcba fulladtak, és ezután a megfelelõ RPM-ek összeszedése valódi rémálomnak bizonyult.

10.7.9.2. Az Oracle® 8.0.5 Pre-production Release for Linux (Kernel 2.0.33) telepítése

A telepítés nagyon könnyû. Csatlakoztassuk a CD-t, majd indítsuk el a telepítõt. Ezután meg kell adnunk az Oracle® felhasználói könyvtárát és a telepítõ odamásolja az összes binárist. Habár a telepítés megkezdése elõtt a korábbi kísérleteink nyomát nem tüntettük el.

Ezt követõen az Oracle® adatbázisrendszer minden további gond nélkül elindítható.

10.7.10. Az Oracle® 8.1.7 Linux változatának telepítése

Szedjük le az oracle8172.tgz állományt a Linux rendszeren létrehozott könyvtárából, és bontsuk ki a /oracle/SID/817_32/ könyvtárba.

10.7.11. Az SAP® R/3® telepítésének folytatása

Elõször is ellenõrizzük az isamd (sidadm) és oraids (orasid) felhasználók környezeti beállításait. A .profile, .login és .cshrc állományaikban a korábbi beállítások szerint kell szerepelnie a hostname parancsnak. Ha még mindig a teljes hálózati név lenne meg bennük, akkor a hostname parancsot át kell írni mind a három állományban a hostname -s parancsra.

10.7.11.1. Az adatbázis feltöltése

Ezután az R3SETUP folytatható vagy újraindítható (attól függõen, hogy a kilépést választottuk-e vagy sem). Az R3SETUP ekkor létrehozza az adatbázisban a táblákat és az R3load meghívásával feltölti ezeket adatokkal (a 46B IDES változat esetében az EXPORT1 - EXPORT6, a 46C esetében pedig a DISK1 - DISK4 lemezekrõl).

Amikor a feltöltés befejezõdött (ami akár órákig is eltarthat), szükség lesz még néhány jelszó megadására is. A próbatelepítéseknél nyugodtan használhatjuk a jól ismert alapértelmezett jelszavakat (azonban mindenképpen változtassuk meg ezeket, ha egy kicsit is számít a biztonság!):

KérdésVálasz

Enter Password for sapr3

sapEnter

Confirum Password for sapr3

sapEnter

Enter Password for sys

change_on_installEnter

Confirm Password for sys

change_on_installEnter

Enter Password for system

managerEnter

Confirm Password for system

managerEnter

A 4.6B telepítése során még gondjaink akadtak a dipgntab használatával.

10.7.11.2. Az Oracle® Listener elindítása

Így kell elindítani az orasid felhasználóval az Oracle® Listenert:

% umask 0; lsnrctl start

Ha máshogy próbálkozunk, akkor az ORA-12546 kódú hibát fogjuk kapni, mert a hálózati portok socketei nem rendelkeznek a szükséges engedélyekkel. Lásd a 072984-es SAP® füzet.

10.7.11.3. Az MNLS táblák frissítése

Ha nem Latin 1 kódolású nyelveket akarunk importálni az SAP® rendszerbe, akkor frissítenünk kell a többnyelvû nyelvi támogatáshoz (Multi National Language Support, MNLS) tartozó táblázatokat. Ezek bemutatását a 15023 és 45619 számú SAP® OSS füzetekben olvashatjuk. Minden más esetben az SAP® telepítésekor nyugodtan kihagyhatjuk.

Ha még nincs is konkrétan szükségünk az MNLS-re, akkor is ellenõriznünk és inicializálnunk kell a TCPDB táblát. A 0015023 és 0045619 számú SAP® füzetekben tudhatunk meg errõl többet.

10.7.12. Telepítés utáni teendõk

10.7.12.1. Az SAP® R/3® licenckulcsának megszerzése

Az SAP® R/3® licenckulcsát külön kell kérni. Fontos, mert a telepítéshez használatos ideiglenes licenc csak négy hétig érvényes. Elõször szerezzük meg a hardverkulcsot. Jelentkezzünk be az idsadm felhasználóval és adjuk ki a saplicense parancsot:

# /sapmnt/IDS/exe/saplicense -get

A saplicense paraméter nélkül meghívására válaszul opciókat listáz ki. A licenckulcsot megérkezése után így tudjuk élesíteni:

# /sapmnt/IDS/exe/saplicense -install

Ezután a következõ értékeket kell megadni:

SAP SYSTEM ID   = SID, 3 karakter
CUSTOMER KEY    = hardverkulcs, 11 karakter
INSTALLATION NO = telepítés száma, 10 számjegy
EXPIRATION DATE = ééééhhnn, tehát "99991231"
LICENSE KEY     = licenckulcs, 24 karakter

10.7.12.2. A felhasználók létrehozása

Hozzunk létre egy felhasználót a 000 kliensen belül (a csak rajta belül elvégezhetõ feladatokhoz, aki különbözik a sap* és ddic felhasználóktól). Felhasználónévként általában a wartung nevet választottuk (ami angolul a service névnek, avagy szolgáltatásnak felel meg). A sap_new és sap_all nevû profilok is kellenek. A biztonságosság kedvéért a kliens összes alapértelmezett felhasználójának (beleértve a sap* és ddic felhasználókat is) változtassuk meg a jelszavát.

10.7.12.3. A szállítási rendszer, a profilok, mûködési módok stb. beállítása

A ddic és sap* felhasználóktól eltérõ nevû felhasználóval a 000 kliensen belül legalább a következõket végezzük el:

FeladatTranzakció

A szállítási rendszer (Transport System) beállítása, például a Stand-Alone Transport Domain Entity értékre

STMS

A rendszer profiljának létrehozása és szerkesztése

RZ10

A mûködési módok és példányok karbantartása

RZ04

Az iménti és az összes többi telepítés utáni lépések leírása teljes egészében megtalálható az SAP® telepítési útmutatóiban.

10.7.12.4. Az initsid.sap (initIDS.sap) szerkesztése

Az /oracle/IDS/dbs/initIDS.sap állomány tartalmazza a SAP® tartalék profilját. Itt többek közt a használni kívánt szalag méretét, a tömörítés típusát és hasonló paramétereket kell definiálni. A sapdba / brbackup futtatásához a következõ értékeket változtattuk meg:

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

Magyarázat:

compress (tömörítés): HP DLT1 típusú szalagot használtunk, ami tud hardveres tömörítést.

archive_function (archiválási házirend): Ez adja meg, hogy alapértelmezés szerint mi történjen az Oracle® archivált naplóival: az új naplóállományok elõször a szalagra mentõdnek, majd a már lementett naplók ismét mentésre kerülnek és végül törlõdnek. Ezzel sok fejfájástól menekülünk meg, mivel ilyenkor az archiváló szalagok esetleges sérülése esetén is valószínûleg képesek leszünk visszaállítani az adatbázist.

cpio_flags (a cpio beállítása): A -B használata alapértelmezés, amivel a blokkok mérete 5120 byte-ra állítódik. A DLT típusú szalagokhoz a HP legalább 32 KB-os blokkméretet javasolt, ezért a --block-size=128 beállítással ezt 64 KB-ra növeltük. Szükségünk volt a --format=newc beállításra is, mivel 65535-nél több inode számunk van. Az utolsó beállítás a --quiet, amivel megakadályozzuk, hogy a cpio lementett blokkokat összefoglaló kijelzésére begerjedjen a brbackup.

cpio_in_flags (a cpio bemeneti beállításai): A szalagok visszatöltésénél használt beállítások. A formátumot automatikusan felismeri.

tape_size (szalagméret): Ezzel adjuk meg általában a szalag nyers kapacitását. Biztonsági okokból (hardveres tömörítést használunk) ez az érték a ténylegesnél valamivel kisebb.

tape_address (szalagos eszköz): a cpio által használható nem visszatekerhetõ eszköz.

tape_address_rew (visszatekerhetõ szalagos eszköz): A cpio által használható visszatekerhetõ eszköz.

10.7.12.5. Telepítés utáni beállítások

Az SAP® alábbi paramétereit kell beállítani a telepítés után (IDES 46B, 1 GB memóriával):

NévÉrték

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

0013026 SAP® füzet:

NévÉrték

ztta/dynpro_area

2500000

0157246 SAP® füzet:

NévÉrték

rdisp/ROLL_MAXFS

16000

rdisp/PG_MAXFS

30000

A fenti paraméterek használatával egy 1 gigabyte fizikai memóriával rendelkezõ rendszer esetén nagyjából így alakul a memóriahasználat:

Mem: 547M Active, 305M Inact, 109M Wired, 40M Cache, 112M Buf, 3492K Free

(547 MB aktív, 305 MB inaktív, 109 MB rögzített, 40 MB gyorsítótár, 112 MB puffer, 3492 KB szabad)

10.7.13. A telepítés során adódó problémák

10.7.13.1. Az R3SETUP újraindítása egy probléma kijavítása után

Az R3SETUP hiba esetén leáll. Miután átnéztük a hibára utaló naplókat és elhárítottuk a hiba okát, újra el kell indítanunk az R3SETUP programot, majd a REPEAT opció kiválasztásával próbáljuk megismételni az R3SETUP által kifogásolt legutóbbi mûveletet.

Az R3SETUP újraindításához egyszerûen adjuk meg a megfelelõ R3S állományt:

# ./R3SETUP -f CENTRDB.R3S

a 4.6B verzió esetén, vagy a

# ./R3SETUP -f CENTRAL.R3S

a 4.6C verzió esetén, függetlenül attól, hogy a hiba a CENTRAL.R3S vagy DATABASE.R3S állományoknál keletkezett.

Egyes lépéseknél az R3SETUP úgy véli, hogy az SAP® programjai mûködnek (mivel a hozzájuk tartozó lépéseket már megtettük), így a hibák miatt az adatbázist esetleg korábban nem tudta elindítani. Ezért a hibák kijavításának végeztével az R3SETUP ismételt indítása elõtt nekünk kell beindítani mind az adatbázist, mind pedig az SAP® rendszert.

Ne felejtsük el újra elindítani az Oracle® Listener segédprogramját sem (az ora_sid_ felhasználóval adjuk ki a umask 0; lsnrctl start parancsot), ha az idõközben leállt volna (például a rendszer kényszerû újraindítása miatt).

10.7.13.2. OSUSERSIDADM_IND_ORA az R3SETUP közben

Ha az R3SETUP panaszkodik ebben a lépésben, akkor írjuk át az általa ekkor használt sablont (a 4.6B esetén ez a CENTRDB.R3S, illetve a 4.6C esetén ez a CENTRAL.R3S vagy a DATABASE.R3S). Keressük a [OSUSERSIDADM_IND_ORA] szöveget, vagy csak a STATUS=ERROR bejegyzést, majd írjuk be a következõ értékeket:

HOME=/home/sidadm (üres volt)
STATUS=OK (ERROR státusza volt)

Ezután indítsuk újra az R3SETUP programot.

10.7.13.3. OSUSERDBSID_IND_ORA az R3SETUP közben

Az R3SETUP ebben a lépésben is hajlamos panaszkodni. Az itt felbukkanó hiba hasonló az OSUSERSIDADM_IND_ORA lépésben jelentkezõhöz. Szerkesszük át az R3SETUP által ilyenkor használt sablont (4.6B verzió esetén ez a CENTRDB.R3S, illetve 4.6C verziónál a CENTRAL.R3S vagy DATABASE.R3S). Keressük meg a [OSUSERDBSID_IND_ORA] részt, vagy csak a STATUS=ERROR bejegyzést, majd írjuk át az ebben a szakaszban szereplõ értéket így:

STATUS=OK

Indítsuk újra az R3SETUP programot.

10.7.13.4. oraview.vrf FILE NOT FOUND hiba az Oracle® telepítése közben

A telepítés megkezdése elõtt nem tiltottuk le az Oracle® On-Line Text Viewer felrakását. Habár Linux esetén ez nem használható, alapértelmezés szerint mégis ki van választva. Az Oracle® telepítõ menüjében tiltsuk le ezt és nélküle kezdjük újra a telepítést.

10.7.13.5. TEXTENV_INVALID hiba az R3SETUP, RFC vagy SAPgui Start programokban

Ha ilyen hibával kerülünk szembe, akkor hiányoznak a megfelelõ nyelvi állományok. A 0171356 SAP® füzet tartalmazza a telepítendõ RPM csomagok felsorolását (például a RedHat 6.1 esetén a saplocales-1.0-3 és saposcheck-1.0-1). Amennyiben figyelmen kívül hagyjuk az ilyen hibákat, és az R3SETUP minden kiakadásánál átírjuk (a CENTRDB.R3S állományban) az STATUS értékét az ERROR értékrõl az OK értékre és újraindítjuk, az SAP® nem állítódik be jól és nem tudunk a SAPgui alkalmazással rácsatlakozni a frissen telepített rendszerre még akkor sem, ha el tudtuk indítani. Amikor a régebbi linuxos SAPgui alkalmazással csatlakozunk, a következõ üzeneteket kapjuk:

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

Ez a viselkedés annak köszönhetõ, hogy az SAP® R/3® nem képes jól összerendelni a nyelvi beállításokat, sõt, magát sem képes jól beállítani (hiányoznak némely bejegyzések az adatbázis egyes tábláiban). Az SAP®-hez úgy tudunk ilyenkor csatlakozni, ha a DEFAULT.PFL állományba felvesszük a következõ bejegyzéseket (lásd 0043288 füzet):

abap/set_etct_env_at_new_mode = 0
install/collate/active = 0
rscp/TCP0B = TCP0B

Majd indítsuk újra az egész SAP® rendszert. Ezután már tudunk csatlakozni hozzá, még ha az országra jellemzõ nyelvi beállítások nem is mûködnek tökéletesen. Miután korrigáltuk az ország beállításait (és felraktuk a megfelelõ nyelvi állományokat), távolítsuk el az iménti bejegyzéseket a DEFAULT.PFL állományból és indítsuk újra az SAP® rendszert.

10.7.13.6. Az ORA-00001 hiba

Ez a hiba FreeBSD alatt az Oracle® 8.1.7 használata során következhet be. Akkor történik, amikor az Oracle® adatbázis nem volt képes rendesen inicializálni magát és összeomlott, aminek révén szemaforokat és memóriát hagyott megosztva a rendszerben. Így az adatbázis következõ indításakor kapunk egy kövér ORA-00001 hibát.

Az ipcs -a paranccsal keressük meg ezeket, majd az ipcrm segítségével pedig számoljuk fel.

10.7.13.7. Az ORA-00445 (a PMON háttérprogram nem indult el) hiba

Ez a hiba az Oracle® 8.1.7 használatakor következhet be. Akkor kapjuk ezt a hibát, amikor prdadm felhasználóként a elindítjuk startsap szkriptet (például startsap_majestix_00).

Erre gyógyír lehet, ha ehelyette az adatbázis elindításához az oraprd felhasználóval adjuk ki az svrmgrl parancsot:

% svrmgrl
SVRMGR> connect internal;
SVRMGR> startup;
SVRMGR> exit

10.7.13.8. Az ORA-12546 (A Listener indítása megfelelõ engedélyekkel) hiba

Az Oracle® Listener alkalmazását oraids felhasználóként az alábbi paranccsal indítsuk el:

# umask 0; lsnrctl start

Máskülönben ORA-12546 hibát kapunk, mivel a hálózati portokhoz tartozó socketek nem rendelkeznek a megfelelõ engedélyekkel. Lásd 0072984 SAP® füzet.

10.7.13.9. Az ORA-27102 (Nincs elég memória) hiba

Akkor fordul elõ ilyen hiba, amikor a MAXDSIZ és DFLDSIZ értékeit 1 GB-nál (1024 x 1024 x 1024-nél) nagyobbra állítottuk. Mellé még kapunk egy Linux Error 12: Cannot allocate memory hibát is.

10.7.13.10. [DIPGNTAB_IND_IND] az R3SETUP közben

Errõl alapvetõen a 0130581 számú SAP® füzet ad tájékoztatást (az R3SETUP DIPGNTAB lépése hibára fut). Az IDES telepítése során az SAP® rendszer valamiért az "IDS" név helyett egy üres karakterláncot használ. Ez a könyvtárak elérésében kisebb gondokat okoz, mivel az elérési útvonaluk a SID-bõl generálódik (ami ebben az esetben az IDS). Tehát a

/usr/sap/IDS/SYS/...
/usr/sap/IDS/DVMGS00

helyett a következõt próbálja meg elérni:

/usr/sap//SYS/...
/usr/sap/D00

A telepítés folytatásához létrehoztunk egy linket és egy másik könyvtárat:

# 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

Észrevettük, hogy a SAP® füzetekben (0029227 és 0008401) ugyanezt a viselkedést írják le. Az SAP® 4.6C telepítésénél azonban ilyen hibával nem találkoztunk.

10.7.13.11. [RFCRSWBOINI_IND_IND] az R3SETUP közben

Az SAP® 4.6C telepítése folyamán ez a hiba csupán egy korábban bekövetkezett másik hiba utóhatása volt. Itt át kell néznünk az összes érintett naplót és ki kell javítanunk a tényleges problémát.

Amennyiben a naplók átvizsgálása után csak ezt találjuk egyedüli hibának (lásd SAP® füzetek), állítsuk át (a CENTRDB.R3S állományban) a STATUS értékét az OK értékre, majd indítsuk újra az R3SETUP programot. A telepítés befejezése után hajtsuk végre az SE38 tranzakcióból az RSWBOINS riportot. A további RFCRSWBOINI és RFCRADDBDIF lépésekkel kapcsolatban lásd a 0162266 SAP® füzetet.

10.7.13.12. [RFCRADDBDIF_IND_IND] az R3SETUP közben

Itt az elõbbihez hasonló feltételek élnek: mindenképpen ellenõrizzük a naplókban, hogy a hibát nem egy korábban keletkezett hiba okozta.

Ha tényleg csak az 0162266 SAP® füzetben leírtak érvényesek, akkor (a CENTRDB.R3S állományban) állítsuk a gondot okozó lépés STATUS értékét az ERROR értékrõl az OK értékre, és indítsuk újra az R3SETUP programot. A telepítés után pedig hajtsuk végre az SE38 tranzakciból az RADDBDIF riportot.

10.7.13.13. A sigaction sig31: File size limit exceeded hiba

Ez a disp és work SAP® programok indítása során történhet meg. Az SAP® rendszert indító startsap szkriptrõl leválva indulnak el a többi SAP® program elindításáért felelõs alfolyamatok. Ennek eredményeképpen a szkript maga nem fogja észrevenni a hibát.

Az SAP® programok elindulását az ps ax | grep SID paranccsal tudjuk ellenõrizni. Az eredményül kapott listában az összes aktív Oracle® és SAP® programnak szerepelnie kell. Ha ebbõl az tûnik ki, hogy bizonyos programok hiányoznak, vagy nem képesek kapcsolódni az SAP® rendszerhez, akkor az /usr/sap/SID/DVEBMGSnr/work/ könyvtárban nézzük át a hozzájuk tartozó naplóállományokat. Elsõsorban a dev_ms és a dev_disp állományok fontosak számunkra.

A 31-es jelzés akkor keletkezik, ha az Oracle® és az SAP® által használt osztott memória mértéke meghaladja a rendszermag beállításai közt megadott értéket. Ezt tehát ennek növelésével lehet orvosolni:

# az éles 46C rendszereknek több kell:
options SHMMAXPGS=393216
# a 46B beéri kevesebbel is:
#options SHMMAXPGS=262144

10.7.13.14. A saposcol nem indul

A saposcol (4.6D verzió) programmal akad néhány probléma. Az SAP® rendszer az saposcol segítségével próbál adatokat gyûjteni a rendszer teljesítményérõl. Mivel ez a program nem feltétlenül szükséges az SAP® rendszer mûködéséhez, ez a probléma nem tekinthetõ komolynak. A korábbi (4.6B) verziókban ugyan mûködik, de semmilyen adatot nem képes begyûjteni (mivel a legtöbb hívás, például a processzorhasználat függvénye, egyszerûen csak nullát ad vissza).

10.8. Témák haladóknak

Ha kíváncsiak vagyunk a Linux emuláció mûködésére, olvassuk el ezt a szakaszt. Az itt leírtak leginkább Terry Lambert (tlambert@primenet.com) FreeBSD chat levelezési lista címére írt levele nyomán kerülnek bemutatásra (Az üzenet azonosítója: <199906020108.SAA07001@usr09.primenet.com>).

10.8.1. Hogyan mûködik?

A FreeBSD rendelkezik egy ún. "végrehajtási osztály betöltõvel" (execution class loader). Ez lényegében a execve(2) rendszerhívás alatt meghúzódó absztrakciós réteg.

A FreeBSD-nek a #! karaktersorozat hatására parancsértelmezõk vagy a hozzájuk tartozó szkriptek betöltésére utasító biztonsági betöltõ helyett van egy listája az alkalmas betöltõkrõl.

A UNIX® rendszerek a hagyományok szerint egyetlen betöltõvel rendelkeznek, ami elõször megvizsgálja a betölteni kívánt állomány bûvös számát (ami általában az elsõ 4 vagy 8 byte) és ez alapján eldönti, hogy az adott formátum támogatott-e. Amennyiben ez így van, meghívja a betöltõt.

Ha a bináris típusa nem ismert a rendszer számára, akkor az execve(2) hívás hibával tér vissza, és a parancsértelmezõ próbálja meg a saját parancsaiként értelmezni.

Eddig ez volt az alapértelmezés, "akármilyen parancsértelmezõnk is volt".

Késõbb az sh(1) kódjába bekerült egy aprócska okosítás, amivel megnézte az állomány elsõ két karakterét, és ha az :\n volt, akkor a futtatáshoz maga helyett a csh(1) parancsértelmezõt hívta meg (ezt állítólag elõször a SCO csinálta).

A FreeBSD viszont végignézi a betöltõk teljes listáját, amiben a sor végén szerepel egy általános ! formátumú betöltõ. Ez az állomány futtatásához használatos értelmezõk kódját keresi, és ha egyet sem sikerül azonosítania, akkor a [.filename]/bin/sh# programot indítja el.

A Linux ABI támogatását a FreeBSD úgy oldja meg, hogy elõször észleli az ELF bináris bûvös számát (ekkor még nem tesz különbséget a FreeBSD, Solaris™, Linux vagy más ELF típusú binárisokat használó operációs rendszerek közt).

Ezután az ELF formátum betöltõje az ELF állomány megjegyzéseket tároló szakaszában bélyegek (brand) után kutat, ami SVR4 és Solaris™ ELF binárisok esetén nem létezik.

A Linux binárisokat mûködésükhöz a brandelf(1) segítségével Linux típusúnak kell megbélyegezni:

# brandelf -t Linux állomány

Miután ezt megcsináltuk, az ELF betöltõ észre fogja venni az állomány Linux típusát.

Mikor az ELF betöltõ észleli, hogy az állomány Linux típusú, kicseréli egy mutató értékét a proc struktúrában. Minden rendszerhívás ezen a mutatón keresztül érhetõ el (a hagyományos UNIX® rendszerekben ez a rendszerhívásokat tartalmazó sysent[] struktúratömb). Emellett a frissen elindított program szoftveres megszakításait tartalmazó tömbjéhez beállítja a speciális jelzések kezelését, valamint a Linux modul által végzett néhány további (kisebb) javítást.

A Linux rendszerhívásokat tartalmazó tömb többek közt tartalmazza a sysent[] bejegyzések egy listáját, amelyek címei a rendszermag Linux moduljára mutatnak.

Amikor a Linux bináris hív egy rendszerhívást, a hozzá tartozó szoftveres megszakítás kódja a proc struktúrából a neki megfelelõ rendszerhívás kódját hivatkozza, így FreeBSD rendszerhívás belépési pontja helyett a Linuxét kapja meg.

Ráadásul Linux módban a különbözõ állományok hivatkozásai is átirányítódnak. Ez lényegében olyan, mint amit az állományrendszerek csatlakoztatásánál a union beállítás csinál (ami nem egyezik meg az unionfs állományrendszerrel!). Ilyenkor az állományokat elõször a /compat/linux/eredeti-hely könyvtárában keresi, és majd ha ott nem találja, csak akkor kezdi el keresni az /eredeti-hely ponton. Ezzel oldhatjuk meg, hogy más binárisok futtatását igénylõ binárisok is képesek legyenek rendesen mûködni (például így az egész linuxos eszköztár tud futni a Linux ABI-n keresztül). Egyúttal arra is utal, hogy ha a Linux binárisok számára nem áll rendelkezésre a megfelelõ bináris, akkor FreeBSD binárisokat is el tudnak indítani. Ha a uname(1) programot pedig bemásoljuk a /compat/linux könyvtáron belülre, akkor a Linux binárisok képtelenek lesznek megmondani, hogy nem Linux alatt futnak.

Így lényegében egy Linux magot találunk a FreeBSD rendszermagjában. A benne megtalálható különbözõ szolgáltatásokat megvalósító függvények: az állománymûveletek, a virtuális memória kezelése, a jelzések küldése és System V típusú folyamatok közti kommunikáció stb. megegyeznek a FreeBSD és a Linux hívásai esetén egyaránt. Egyetlen eltérés, hogy a FreeBSD binárisok a FreeBSD segédfüggvényein (glue function), a Linux binárisok pedig a Linux segédfüggvényein keresztül férnek hozzájuk (a legelsõ operációs rendszerek tulajdonképpen csak a saját segédfüggvényeiket tartalmazták: a hívást kezdeményezõ program proc struktúrájában a függvények dinamikusan beállított címe helyett egy globális sysent[] struktúratömbben tárolták a meghívható függvényeket).

Melyik közülük a FreeBSD natív ABI-ja? Ez teljesen lényegtelen. Alapvetõen az egyetlen különbség csupán annyi (pillanatnyilag, de ez a jövõben még változhat, valószínûleg hamarosan), hogy a FreeBSD segédfüggvényei statikusan megtalálhatóak a rendszermagban, míg a Linux segédfüggvényei egyaránt elérhetõek modulból vagy statikus linkeléssel.

Na igen, de akkor ez most emuláció? Nem. Ez egy ABI, nem emuláció. Itt szó sincs emulátorról (ahogy szimulátorról sincs).

De akkor mégis miért hívják ezt sokszor "Linux emulációnak"? Hát hogy nehezebb legyen eladni a FreeBSD-t! Komolyra fordítva a szót: ennek a kezdeti változata akkoriban született meg, amikor erre még nem volt rendes szó. Nem mondhattuk, hogy a FreeBSD befordítás vagy egy modul betöltése nélkül képes lett volna Linux binárisokat futtatni, ezért valamilyen módon meg kellett neveznünk az ilyenkor betöltött kódot - ebbõl lett "a Linux emulátor".


Last modified on: 2024. március 9. by Danilo G. Baio