Jim Mock Реструктурировал и частично обновил Brian N. Handy Первоначально предоставил Rich Murphey Алексей Докучаев Перевод на русский язык: Валерий Кравчук Перевод на русский язык и редактирование: Двоичная совместимость с Linux Краткий обзор Linux - бинарная совместимость двоичная совместимость Linux FreeBSD предоставляет двоичную совместимость с несколькими другими &unix;–подобными операционными системами, включая Linux. Возможно, вы спрашиваете себя, зачем FreeBSD нужно уметь работать с приложениями, написанными для Linux? Ответ на этот вопрос достаточно прост: многие компании и разработчики производят программное обеспечение только для Linux, так как эта операционная система очень быстро завоевала огромную популярность в компьютерном мире. Пользователям же FreeBSD приходится обращаться к этим компаниям и разработчикам с просьбами выпустить версии своих программ специально для FreeBSD. Проблема в том, что большинство производителей программного обеспечения не осознают, насколько бы увеличился их рынок сбыта, выпускай они также FreeBSD–версии, и продолжают разрабатывать только под Linux. Что же делать пользователям FreeBSD? В этой ситуации на помощь приходит двоичная совместимость FreeBSD с Linux. Вкратце, эта совместимость позволяет пользователям FreeBSD работать с 90% приложений для Linux без каких-либо модификаций последних. Среди этих приложений: &staroffice;, Linux–версия &netscape;, &adobe; &acrobat;, RealPlayer, VMware, &oracle;, WordPerfect, Doom, Quake, и многие другие. Есть сведения, что в некоторых ситуациях эти Linux–программы показывали более высокую производительность при работе под FreeBSD, чем под Linux. Конечно, существуют некоторые особенности Linux, которые не поддерживаются в полной мере под FreeBSD. Например, не будут работать приложения Linux, использующие специфичные вызовы &i386;, такие как переключение в виртуальный режим 8086. При чтении этой главы вы узнаете: Как включить двоичную совместимость с Linux в вашей системе. Как установить дополнительные совместно используемые (shared) библиотеки Linux. Как установить приложения Linux в систему FreeBSD. Детали реализации совместимости с Linux в ОС FreeBSD. Перед прочтением этой главы вам потребуется: Узнать как устанавливать дополнительное программное обеспечение сторонних разработчиков (). Установка KLD (загружаемый объект ядра) Двоичная совместимость с Linux не включена по умолчанию. Простейший способ включения этой функциональности заключается в загрузке KLD–объекта linux (Kernel LoaDable object). Вы можете загрузить этот модуль, набрав следующее, как пользователь root: &prompt.root; kldload linux Если вы хотите, чтобы совместимость с Linux была включена постоянно, необходимо добавить в /etc/rc.conf следующую строку: linux_enable="YES" Для проверки того, загружен ли модуль, может быть использована команда &man.kldstat.8;: &prompt.user; kldstat Id Refs Address Size Name 1 2 0xc0100000 16bdb8 kernel 7 1 0xc24db000 d000 linux.ko параметры ядра COMPAT_LINUX Если по какой-либо причине вы не хотите или не можете загрузить KLD, вы можете статически включить поддержку Linux в ядро, добавив опцию options COMPAT_LINUX в файл конфигурации ядра. Затем соберите и установите новое ядро, следуя описанию в . Установка необходимых библиотек Linux Linux установка библиотек Linux Установить все требуемые библиотеки можно двумя путями: либо используя порт linux_base, либо установив их вручную. Установка с помощью порта linux_base коллекция портов Этот метод является самым простым, и мы рекомендуем воспользоваться именно им. Процесс аналогичен установке любого другого порта из Коллекции Портов. Просто выполните следующие команды: &prompt.root; cd /usr/ports/emulators/linux_base-fc4 &prompt.root; make install distclean Теперь вы можете работать с приложениями для Linux. Некоторые программы, возможно, будут сообщать о несоответствии подверсий некоторых системных библиотек. Однако обычно это не вызывает каких-либо неудобств. Возможно наличие нескольких версий порта emulators/linux_base, соответствующих различным версиям разных дистрибутивов Linux. Вы должны установить порт, наиболее близко соответствующий требованиям приложений Linux, которые будут установлены. Установка библиотек вручную Если у вас не установлена коллекция портов, можно установить требуемые библиотеки вручную. Вам понадобятся совместно используемые библиотеки для Linux, которые нужны программам, и runtime–компоновщик. Вам также потребуется создать теневой корневой каталог, /compat/linux, где будут расположены Linux–библиотеки. Если Linux–программе нужно загрузить какую–либо совместно используемую библиотеку, FreeBSD сперва будет пытаться найти ее в этом дереве. Так, если программа загружает, например, /lib/libc.so, FreeBSD попытается открыть /compat/linux/lib/libc.so, и если такого файла не существует, будет пытаться открыть /lib/libc.so. Разделяемые библиотеки должны находиться в теневом дереве, а не в каталогах, выдаваемых загрузчиком Linux ld.so. Обычно вам придется добавлять совместно используемые библиотеки, от которых зависят Linux–программы, только при нескольких первых установках приложений Linux на вашу систему FreeBSD. По мере работы, у вас в системе накопится достаточный набор совместно используемых библиотек Linux для запуска новых Linux-программ без дополнительных действий. Как установить дополнительные совместно используемые библиотеки совместно используемые библиотеки Что, если при установленном linux_base порте ваше приложение все равно сообщает об отсутствии необходимой библиотеки? Как узнать, какая именно нужна библиотека и где ее взять? В принципе, есть два способа. Вам необходимо иметь привилегии пользователя root для их осуществления. Если у вас есть доступ к машине, на которой установлен Linux, узнайте, какие библиотеки использует Linux–приложение, и просто скопируйте из на свою машину. Рассмотрим следующий пример: Допустим, вы скачали по FTP Linux–версию Doom и установили ее на Linux–машине. Вы можете узнать, какие совместно используемые библиотеки нужны Doom, с помощью команды ldd linuxdoom: &prompt.user; 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 символические ссылки Вам потребуются все файлы, перечисленные в последнем столбце. Скопируйте их в дерево /compat/linux на вашей системе, а также создайте символические ссылки на эти файлы с именами из первого столбца, соответственно. В итоге, у вас в системе FreeBSD должны быть следующие файлы: /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
Учтите, что если у вас уже есть совместно используемая библиотека Linux с соответствующим первому столбцу результатов ldd основным номером версии, вам не обязательно копировать файл, указанный в последнем столбце, в вашу систему. Уже существующий файл должен подойти. Рекомендуется, однако, все равно скопировать совместно используемую библиотеку, если ее версия новее. Предыдущую версию библиотеки можно удалить, если вы создали символическую ссылку на новую. Итак, если у вас в системе есть следующие библиотеки: /compat/linux/lib/libc.so.4.6.27 /compat/linux/lib/libc.so.4 -> libc.so.4.6.27 и какое-либо приложение требует библиотеку более поздней версии, судя по результатам команды ldd: libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29 Если версии немного отличаются в последней цифре, копировать /lib/libc.so.4.6.29 необязательно, так как программа, скорее всего, будет нормально работать и с немного устаревшей версией. Тем не менее, вы можете заменить libc.so: /compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29
Символические ссылки важны только для Linux–программ. Runtime–компоновщик FreeBSD самостоятельно подберет правильные номера версий библиотек, и вам не нужно об этом беспокоиться.
Установка двоичных файлов Linux ELF Linux двоичные файлы ELF Для ELF-файлов иногда требуется сделать так называемый branding (маркировать его). Если попытаться запустить не маркированный ELF-файл, вы получите следующее сообщение об ошибке: &prompt.user; ./моя-linux-elf-программа ELF binary type not known Abort Чтобы помочь ядру FreeBSD отличить ELF-файл FreeBSD от двоичного файла Linux, используется утилита &man.brandelf.1;: &prompt.user; brandelf -t Linux моя-linux-elf-программа GNU toolchain В настоящее время набор инструментальных средств GNU (GNU toolchain) помещает необходимую маркировочную информацию в двоичные ELF-файлы автоматически, поэтому необходимость в этом действии возникает всё реже. Конфигурирование распознавания имен хостов Если DNS не работает или вы получаете это сообщение: resolv+: "bind" is an invalid keyword resolv+: "hosts" is an invalid keyword то вам нужно создать (изменить) файл /compat/linux/etc/host.conf, содержащий: order hosts, bind multi on Таким образом, вы указываете, то сначала производится поиск в файле /etc/hosts, а только затем запрашивается DNS. Когда файл /compat/linux/etc/host.conf отсутствует, Linux–приложения находят файл /etc/host.conf для FreeBSD и сообщают о несовместимом синтаксисе. Если вы не настраивали сервер имен с помощью файла /etc/resolv.conf, уберите bind из файла /compat/linux/etc/host.conf.
Boris Hollas Обновил для Mathematica 5.X Установка &mathematica; приложения Mathematica Ниже описано, как установить Linux–версию пакета &mathematica; 5.X на систему FreeBSD. Linux версия &mathematica; или &mathematica; for Students можно заказать непосредственно в компании Wolfram по адресу . Использование установщика &mathematica; Сначала вы должны указать &os;, что Linux бинарники от &mathematica; используют Linux ABI. Самый простой путь сделать это—установить марку ELF Linux по умолчанию для всех немаркированных двоичных файлов с помощью команды: &prompt.root; sysctl kern.fallback_elf_brand=3 &os; будет считать, что все немаркированные двоичные ELF-файлы используют Linux ABI, и вы сможете запустить MathInstaller прямо с CDROM. Теперь, скопируйте файл MathInstaller на ваш жёсткий диск: &prompt.root; mount /cdrom &prompt.root; cp /cdrom/Unix/Installers/Linux/MathInstaller /localdir/ и в этом файле замените /bin/sh в в первой строке на /compat/linux/bin/sh. Этим мы убедимся, что установщик будет выполняться Linux версией &man.sh.1;. Дальше, замените все вхождения Linux) на FreeBSD) с помощью текстового редактора или с помощью скрипта, представленного ниже, в следующей главе. Это укажет установщику &mathematica;, вызывающему uname -s для определения операционной системы, относиться к &os;, как к Linux подобной операционной системе. Теперь, запуск MathInstaller установит &mathematica;. Modifying the &mathematica; Executables Скрипты командной оболочки, которые &mathematica; создала во время установки, должны быть изменены перед тем, как вы сможете использовать их. Если вы выбрали /usr/local/bin в качестве директории для помещения исполняемых файлов &mathematica;, то вы обнаружите в этом каталоге ссылки на файлы math, mathematica, Mathematica, и MathKernel. В каждом из них замените Linux) на FreeBSD) с помощью текстового редактора или с помощью следующего скрипта командной оболочки: #!/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 Получение пароля к пакету &mathematica; Ethernet MAC-адрес Когда вы запустите &mathematica; в первый раз, у вас будет запрошен пароль. Если вы еще не получили пароль от Wolfram, запустите программу mathinfo в директории установки для получения вашего machine ID. Этот machine ID основан исключительно на MAC адресе вашей первичной Ethernet карты, так что, вы не сможете использовать вашу копию &mathematica; на разных машинах. При регистрации по электронной почте, по телефону или по факсу вы сообщаете machine ID, а в ответ получаете пароль, состоящий из нескольких групп чисел. Использование интерфейса &mathematica; по сети &mathematica; использует специальные шрифты для отображения некоторых символов, которые отсутствуют в стандартных шрифтах (символы интегралов, сумм, греческий алфавит и другие). Протокол X требует, чтобы эти шрифты были установлены локально. Это означает, что вы должны скопировать эти шрифты с компакт-диска или хоста, на котором установлена &mathematica;, на вашу машину. Обычно эти шрифты находятся в каталоге /cdrom/Unix/Files/SystemFiles/Fonts компакт-диска или в каталоге /usr/local/mathematica/SystemFiles/Fonts на диске. Собственно файлы со шрифтами находятся в подкаталогах Type1 и X. О том, как их использовать, читайте ниже. Можно просто скопировать их в один из существующих каталогов шрифтов в каталоге /usr/X11R6/lib/X11/fonts. В этом случае придётся отредактировать файл fonts.dir, добавив в него названия шрифтов и изменив число шрифтов в первой строке. Можно также запустить программу &man.mkfontdir.1;, находясь в том каталоге, куда вы скопировали шрифты. Есть альтернативный способ: скопировать каталоги в /usr/X11R6/lib/X11/fonts: &prompt.root; cd /usr/X11R6/lib/X11/fonts &prompt.root; mkdir X &prompt.root; mkdir MathType1 &prompt.root; cd /cdrom/Unix/Files/SystemFiles/Fonts &prompt.root; cp X/* /usr/X11R6/lib/X11/fonts/X &prompt.root; cp Type1/* /usr/X11R6/lib/X11/fonts/MathType1 &prompt.root; cd /usr/X11R6/lib/X11/fonts/X &prompt.root; mkfontdir &prompt.root; cd ../MathType1 &prompt.root; mkfontdir Теперь добавьте каталоги с новыми шрифтами в путь к шрифтам: &prompt.root; xset fp+ /usr/X11R6/lib/X11/fonts/X &prompt.root; xset fp+ /usr/X11R6/lib/X11/fonts/MathType1 &prompt.root; xset fp rehash Если вы используете сервер &xorg;, то можно просто прописать эти каталоги в файле xorg.conf. Для сервера &xfree86;, файл конфигурации XF86Config. шрифты Если на вашем компьютере нет каталога /usr/X11R6/lib/X11/fonts/Type1, замените MathType1 на Type1 в предыдущем примере. Aaron Kaplan Предоставил Robert Getschmann Благодарности: Установка &maple; приложения Maple &maple; — коммерческая математическая программа, аналогичная &mathematica;. Это программное обеспечение надо купить у , а потом зарегистрироваться там для получения файла лицензии. Для установки этого программного обеспечения в ОС FreeBSD используется следующая последовательность простых шагов. Выполните скрипт командного интерпретатора INSTALL из дистрибутива. Выберите опцию RedHat, когда будет предложено программой установки. Обычно установка выполняется в каталог /usr/local/maple. Если вы этого ещё не сделали, купите лицензию на &maple; в компании Maple Waterloo Software () и скопируйте ее в файл /usr/local/maple/license/license.dat. Установите диспетчер лицензий FLEXlm, выполнив скрипт установки INSTALL_LIC, входящий в состав &maple;. Укажите основное имя хоста вашей машины для сервера лицензий. Исправьте файл /usr/local/maple/bin/maple.system.type с помощью следующего патча: ----- 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 ----- Учтите, что после "FreeBSD"|\ не должно быть никаких пробелов. Этот патч заставляет &maple; распознавать FreeBSD как тип Linux-системы. Скрипт командного интерпретатора bin/maple вызывает скрипт bin/maple.system.type, который, в свою очередь, вызывает uname -a для получения имени операционной системы. В зависимости от имени ОС он определяет, какие двоичные модули использовать. Запустите сервер лицензий. Следующий скрипт, установленный в файл /usr/local/etc/rc.d/lmgrd.sh, обеспечивает удобный способ запуска 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 ------------ Выполните тестовый запуск &maple;: &prompt.user; cd /usr/local/maple/bin &prompt.user; ./xmaple Программа должна запуститься и работать. Не забудьте написать в Maplesoft и сообщить, что хотели бы видеть версию специально для FreeBSD! Типичные проблемы Работать с диспетчером лицензий FLEXlm может быть непросто. Дополнительную документацию по нему можно найти на сайте . lmgrd очень требователен к файлу лицензии и выдает дамп памяти при выявлении любых проблем. Правильный файл лицензии должен иметь следующий вид: # ======================================================= # 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 Серийный номер и ключ забиты символами 'X'. chillig – имя хоста. Редактирование файла лицензий возможно, если только не трогать строку FEATURE (которая защищена лицензионным ключом). Установка &matlab; приложения MATLAB Этот документ описывает процесс установки Linux-версии &matlab; версии 6.5 на систему &os;. Эта программа работает вполне нормально, за исключением &java.virtual.machine; (см. ). Linux-версию &matlab; можно приобрести непосредственно в компании The MathWorks на сайте . Не забудьте получить файл лицензии или инструкции по его созданию. По ходу дела дайте знать производителю, что хотели бы увидеть версию их ПО специально для &os;. Процесс установки &matlab; Для установки &matlab; выполните следующие шаги: Вставьте инсталляционный CD и смонтируйте его. Станьте пользователем root, как рекомендует скрипт установки. Для запуска скрипта установки наберите: &prompt.root; /compat/linux/bin/sh /cdrom/install Запускается графический инсталлятор. Если вы получаете сообщения о невозможности открыть дисплей, наберите setenv HOME ~USER, где USER – пользователь, от имени которого выполнена команда &man.su.1;. При запросе корневого каталога &matlab;, наберите: /compat/linux/usr/local/matlab. Чтобы упростить набор остальных команд в ходе установки, выполните в командном интерпретаторе следующую команду: set MATLAB=/compat/linux/usr/local/matlab Отредактируйте файл лицензии в соответствии с инструкциями в полученной лицензии &matlab;. Этот файл можно подготовить заранее с помощью любого текстового редактора и скопировать его в $MATLAB/license.dat до того, как инсталлятор попросит его отредактировать. Завершите процесс установки. В этот момент ваша установка &matlab; завершена. Следующие шаги позволяют связать эту программу с вашей системой &os;. Запуск диспетчера лицензий Создайте символические ссылки для скриптов диспетчера лицензий: &prompt.root; ln -s $MATLAB/etc/lmboot /usr/local/etc/lmboot_TMW &prompt.root; ln -s $MATLAB/etc/lmdown /usr/local/etc/lmdown_TMW Создайте файл запуска /usr/local/etc/rc.d/flexlm.sh. Представленный ниже пример – измененная версия входящего в дистрибутив файла $MATLAB/etc/rc.lm.glnx86. Изменены местонахождения файлов и диспетчер лицензий запускается под эмулятором 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 username && 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 Этот файл надо сделать выполняемым: &prompt.root; chmod +x /usr/local/etc/rc.d/flexlm.sh Вы также должны заменить username именем пользователя в вашей системе (но не root). Запустите диспетчер лицензий с помощью команды: &prompt.root; /usr/local/etc/rc.d/flexlm.sh start Связь с &java; Runtime Environment Измените ссылку &java; Runtime Environment (JRE) так, чтобы он ссылалась на версию, работающую в &os;: &prompt.root; cd $MATLAB/sys/java/jre/glnx86/ &prompt.root; unlink jre; ln -s ./jre1.1.8 ./jre Создание скрипта запуска &matlab; Поместите следующий скрипт запуска в файл /usr/local/bin/matlab: #!/bin/sh /compat/linux/bin/sh /compat/linux/usr/local/matlab/bin/matlab "$@" Затем выполните команду chmod +x /usr/local/bin/matlab. В зависимости от версии emulators/linux_base, при выполнении этого скрипта могут быть выданы сообщения об ошибках. Чтобы избежать этого, отредактируйте файл /compat/linux/usr/local/matlab/bin/matlab и измените строку вида: if [ `expr "$lscmd" : '.*->.*'` -ne 0 ]; then (в версии 13.0.1 это строка 410) на следующую строку: if test -L $newbase; then Создание скрипта остановки &matlab; Следующие действия необходимы для решения проблемы с некорректным завершением работы &matlab;. Создайте файл $MATLAB/toolbox/local/finish.m и поместите в него одну строку: ! $MATLAB/bin/finish.sh $MATLAB — литерал. В том же каталоге находятся файлы finishsav.m и finishdlg.m, которые позволяют сохранять рабочее пространство перед выходом. Если вы используете любой из них, вставьте представленную выше строку сразу после команды save. Создайте файл $MATLAB/bin/finish.sh, который будет содержать следующий скрипт: #!/usr/compat/linux/bin/sh (sleep 5; killall -1 matlab_helper) & exit 0 Сделайте этот файл выполняемым: &prompt.root; chmod +x $MATLAB/bin/finish.sh Использование &matlab; В этот момент все готово для выполнения команды matlab и начала использования этой программы. Marcel Moolenaar Предоставил Установка &oracle; приложения Oracle Введение Ниже описан процесс установки &oracle; 8.0.5 и &oracle; 8.0.5.1 Enterprise Edition для Linux на систему FreeBSD. Установка Linux–среды Удостоверьтесь, что порты emulators/linux_base и devel/linux_devtools установлены на вашей системе. Если у вас возникнут трудности с этими портами, воспользуйтесь пакетами или более ранними их версиями из Коллекции Портов. Если вы хотите использовать интеллектуальный агент (intelligent agent), придется также установить пакет TCL от Red Hat: tcl-8.0.3-20.i386.rpm. Универсальная команда для установки пакетов с помощью официального порта RPM (archivers/rpm): &prompt.root; rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm пакет Установка этого пакета должна пройти без каких-либо ошибок. Создание среды &oracle; Прежде чем вы сможете установить &oracle;, необходимо настроить соответствующую среду. В этом документе описано, что специально нужно сделать, чтобы запустить &oracle; для Linux под FreeBSD – это не пересказ официального руководства по установке &oracle;. Настройка ядра настройка ядра Как описано в руководстве по установке &oracle;, необходимо установить максимальный размер совместно используемой (shared) памяти. Не используйте SHMMAX под FreeBSD. SHMMAX просто вычисляется, исходя из SHMMAXPGS и PGSIZE. Следовательно, нужно задавать SHMMAXPGS. За информацией о прочих опциях обратитесь к официальному руководству. Пример настроек: options SHMMAXPGS=10000 options SHMMNI=100 options SHMSEG=10 options SEMMNS=200 options SEMMNI=70 options SEMMSL=61 Установите эти опции в зависимости от того, как и для чего вы будете использовать &oracle;. Не забудьте добавить следующие строки в файл конфигурации ядра: options SYSVSHM # совместно используемая память SysV options SYSVSEM # семафоры SysV options SYSVMSG # межпроцессное взаимодействие SysV Учетная запись &oracle; Создайте специальную учетную запись oracle, как и любую другую учетную запись. Единственное отличие в том, что для oracle необходимо указать командный интерпретатор Linux. Добавьте /compat/linux/bin/bash в /etc/shells и установите для oracle командный интерпретатор /compat/linux/bin/bash. Переменные среды Кроме стандартных переменных среды &oracle;, таких как ORACLE_HOME и ORACLE_SID, вам нужно будет установить следующие переменные среды: Переменная Значение 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 Желательно устанавливать все переменные среды в файле .profile. Вот реальный пример: 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 Установка &oracle; Из-за небольшой несовместимости с Linux–эмулятором, вам нужно будет создать подкаталог .oracle в каталоге /var/tmp прежде, чем можно будет начать установку. Сделайте ее владельцем пользователя oracle. Если вы все сделали правильно, то установка &oracle; должна пройти без проблем. Если какие-либо трудности все же возникли, проверьте еще раз все конфигурационные файлы и/или целостность дистрибутива &oracle;. После окончания установки &oracle; примените патчи, описанные в следующих двух подразделах. Одна из часто возникающих проблем — неправильно установленный адаптер TCP-протокола. В результате, невозможно запустить процессы прослушивания TCP. Вот решение проблемы: &prompt.root; cd $ORACLE_HOME/network/lib &prompt.root; make -f ins_network.mk ntcontab.o &prompt.root; cd $ORACLE_HOME/lib &prompt.root; ar r libnetwork.a ntcontab.o &prompt.root; cd $ORACLE_HOME/network/lib &prompt.root; make -f ins_network.mk install Не забудьте повторно запустить root.sh! Изменение root.sh При установке &oracle; необходимо выполнить некоторые действия от имени пользователя root. Они записаны в скрипте командного интерпретатора root.sh, который находится в каталоге orainst. Перед запуском, примените к нему следующий патч (исправляет местонахождение утилиты chown), либо запускайте его в командном интерпретаторе 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 Если вы устанавливаете &oracle; не с компакт–диска, можно изменить исходный файл root.sh. Он называется rthd.sh и находится в каталоге orainst. Изменение genclntsh Скрипт genclntsh используется для того, чтобы создать единую совместно используемую клиентскую библиотеку, которая используется для создания демонстраций. Примените следующий патч, чтобы закомментировать определение переменной 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 Запуск &oracle; Теперь, если вы все сделали правильно, то можете использовать &oracle; так же, как и в системе Linux. Holger Kipp Предоставил Valentino Vaschetto Исходную версию преобразовал в SGML Установка &sap.r3; приложения SAP R/3 Инсталляции систем &sap; на базе FreeBSD не будут поддерживаться службой поддержки &sap; — они предоставляют поддержку только на сертифицированных платформах. Предисловие Этот документ описывает возможный способ установки системы &sap.r3; с СУБД &oracle; Database на машине с ОС FreeBSD, включая установку FreeBSD и &oracle;. Будут описаны две разные конфигурации: &sap.r3; 4.6B (IDES) с &oracle; 8.0.5 на FreeBSD 4.3-STABLE &sap.r3; 4.6C с &oracle; 8.1.7 на FreeBSD 4.5-STABLE Хотя в этом документе мы пытаемся подробно описать все важные шаги, он не заменяет руководства по установке &oracle; и &sap.r3;. По специфическим вопросам &sap; и &oracle; обратитесь к документации, поставляемой в составе &sap.r3; Linux edition, а также к другим источникам информации об &oracle; и &sap; OSS. Программное обеспечение Для установки &sap; были использованы следующие диски CD-ROM: &sap.r3; 4.6B, &oracle; 8.0.5 Имя Номер Описание KERNEL 51009113 SAP Kernel Oracle / Installation / AIX, Linux, Solaris RDBMS 51007558 Oracle / RDBMS 8.0.5.X / Linux EXPORT1 51010208 IDES / DB-Export / Диск 1 из 6 EXPORT2 51010209 IDES / DB-Export / Диск 2 из 6 EXPORT3 51010210 IDES / DB-Export / Диск 3 из 6 EXPORT4 51010211 IDES / DB-Export / Диск 4 из 6 EXPORT5 51010212 IDES / DB-Export / Диск 5 из 6 EXPORT6 51010213 IDES / DB-Export / Диск 6 из 6 Кроме того, мы использовали CD &oracle; 8 Server (Опытная версия 8.0.5 для Linux, ядро версии 2.0.33), который не обязательно понадобится, и FreeBSD 4.3-STABLE (она вышла всего через несколько дней после 4.3 RELEASE). &sap.r3; 4.6C SR2, &oracle; 8.1.7 Имя Номер Описание 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 / Диск 1 из 4 EXPORT1 51013953 Release 4.6C SR2 / Export / Диск 2 из 4 EXPORT1 51013953 Release 4.6C SR2 / Export / Диск 3 bp 4 EXPORT1 51013953 Release 4.6C SR2 / Export / Диск 4 из 4 LANG1 51013954 Release 4.6C SR2 / Language / DE, EN, FR / Диск 1 из 3 В зависимости от языков, которые необходимо установить, могут потребоваться дополнительные CD. Здесь мы использовали только немецкий и английский языки, поэтому потребовался только первый языковой CD. Обратите внимание, что номера всех EXPORT CD идентичны. Все три языковых CD тоже имеют один номер (это отличается от нумерации CD в версии 4.6B IDES). На момент написания этого раздела (20.03.2002) установленное ПО работало на FreeBSD 4.5-STABLE. Примечания по &sap; Прочитайте следующие документы перед установкой &sap.r3; — они пригодятся в ходе установки: &sap.r3; 4.6B, &oracle; 8.0.5 Номер Название 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 &sap.r3; 4.6C, &oracle; 8.1.7 Номер Название 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 Требования к аппаратному обеспечению Следующего оборудования достаточно для установки &sap.r3; System. Для производственного использования необходима более точная оценка параметров: Компонент 4.6B 4.6C Процессор 2 x 800MHz &pentium; III 2 x 800MHz &pentium; III Память 1GB ECC 2GB ECC Объем дисков 50-60GB (IDES) 50-60GB (IDES) Для производственного использования рекомендуются процессоры &xeon; с большим кешем, высокоскоростной доступ к дискам (SCSI, аппаратный RAID-контроллер), USV и ECC-RAM. Большой объем дискового пространства связан с заранее сконфигурированной системой IDES, которая создает 27 Гбайт файлов базы данных по ходу установки. Этого пространства также достаточно для исходных производственных систем и прикладных данных. &sap.r3; 4.6B, &oracle; 8.0.5 Было использовано следующее стандартное оборудование: двухпроцессорная материнская плата с двумя процессорами &pentium; III 800 MHz, SCSI-контроллером &adaptec; 29160 Ultra160 (для работы с 40/80 Гбайт стримером DLT и приводом CDROM), &mylex; &acceleraid; (2 канала, firmware 6.00-1-00 с 32 Мбайт RAM). К RAID-контроллеру &mylex; подключены два диска по 17 Гбайт (зеркалированы) и четыре диска по 36 Гбайт (RAID уровня 5). &sap.r3; 4.6C, &oracle; 8.1.7 Для этой установки был использован &dell; &poweredge; 2500: двухпроцессорная плата с двумя процессорами &pentium; III 1000 MHz (256 Кбайт кэш), 2 Гбайта PC133 ECC SDRAM, PERC/3 DC PCI RAID-контроллер со 128 Мбайтами и приводом EIDE DVD-ROM. К RAID-контроллеру подключены два диска по 18 Гбайт (зеркалированы) и четыре диска по 36 Гбайт (RAID уровня 5). Установка FreeBSD Сначала надо установить FreeBSD. Есть несколько способов сделать это; подробнее см. . Компоновка дисков Для простоты диски при установке &sap.r3; 46B и &sap.r3; 46C SR2 использовались одинаково. Изменились только имена устройств, поскольку установка выполнялась на разное оборудование (/dev/da и /dev/amr, соответственно, так что при использовании AMI &megaraid; будут задействованы устройства /dev/amr0s1a вместо /dev/da0s1a): Файловая система Размер (в блока по 1 Кбайту) Размер (Гбайт) Смонтирована в /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 Конфигурируем и инициализируем заранее два логических диска с помощью ПО RAID &mylex; или PERC/3. Программы конфигурирования можно запустить в ходе загрузки BIOS. Обратите внимание, что использованная компоновка дисков немного отличается от рекомендованной &sap;, поскольку &sap; рекомендует монтировать подкаталоги &oracle; (и некоторые другие) отдельно — мы решили просто создать подкаталоги. <command>make world</command> и новое ядро Загрузите последние исходные коды ветки -STABLE. Пересоздайте систему и ваше специализированное ядро после необходимых изменений в файле конфигурации ядра. В него надо включить параметры ядра, требуемые для &sap.r3; и &oracle;. Установка среды Linux Установка базовой системы Linux Сначала необходимо установить порт linux_base (от имени пользователя root): &prompt.root; cd /usr/ports/emulators/linux_base &prompt.root; make install distclean Установка среды разработки Linux Среда разработки Linux необходима, если вы хотите установить &oracle; в ОС FreeBSD, как описано в : &prompt.root; cd /usr/ports/devel/linux_devtools &prompt.root; make install distclean Среда разработки Linux была установлена только для &sap.r3; 46B IDES. Она не нужна, если сервер &oracle; не перекомпоновывается в системе FreeBSD. Именно так и происходит, если вы используете tar-архив (tarball) &oracle; с Linux-системы. Установка необходимых пакетов RPM RPM Для запуска программы R3SETUP необходима поддержка модулей PAM. В ходе первой установки &sap; на ОС FreeBSD 4.3-STABLE мы попытались установить PAM со всеми необходимыми пакетами и, в конце концов, принудительно установили пакет PAM, что и сработало. Для &sap.r3; 4.6C SR2 мы сразу принудительно установили PAM RPM, что тоже сработало, так что похоже, что пакеты, от которых декларирована зависимость, не нужны: &prompt.root; rpm -i --ignoreos --nodeps --root /compat/linux --dbpath /var/lib/rpm \ pam-0.68-7.i386.rpm Чтобы &oracle; 8.0.5 мог запустить интеллектуального агента, нам также пришлось установить пакет RedHat Tcl tcl-8.0.5-30.i386.rpm (иначе перекомпоновка в ходе установки &oracle; не выполнится). Есть и другие проблемы с перекомпоновкой &oracle;, но это проблема &oracle; на Linux, не связанная с особенностями FreeBSD. Дополнительные советы Может также иметь смысл добавить linprocfs в /etc/fstab; подробнее об этом см. на странице справочника &man.linprocfs.5;. Еще можно установить параметр kern.fallback_elf_brand=3 в файле /etc/sysctl.conf. Создание среды &sap.r3; Создание необходимых файловых систем и точек монтирования Для простой установки достаточно создать следующие файловые системы: точка монтирования размер в Гбайтах /compat/linux/oracle 45 GB /compat/linux/sapmnt 2 GB /compat/linux/usr/sap 2 GB Также необходимо создать несколько ссылок. В противном случае, инсталлятор &sap; будет выдавать сообщения об ошибках, поскольку он проверяет созданные ссылки: &prompt.root; ln -s /compat/linux/oracle /oracle &prompt.root; ln -s /compat/linux/sapmnt /sapmnt &prompt.root; ln -s /compat/linux/usr/sap /usr/sap Возможные сообщения об ошибках в ходе установки (в данном случае, для установки System PRD и &sap.r3; 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.r3; необходимы два пользователя и три группы. Имена пользователей зависят от идентификатора системы &sap; (SID), который состоит из трех букв. Некоторые из этих идентификаторов зарезервированы &sap; (например, SAP и NIX. Полный список см. в документации &sap;). Для установки IDES мы использовали IDS, а для установки 4.6C SR2 — PRD, поскольку эта система предназначалась для промышленного использования. Поэтому нам понадобились следующие группы (идентификаторы групп могут отличаться, мы просто указали наши значения, использованные при установке): идентификатор группы имя группы описание 100 dba Администратор базы данных 101 sapsys Система &sap; 102 oper Оператор базы данных Для стандартной установки &oracle; используется только группа dba. В качестве группы oper используется та же группа dba (подробнее об этом см. в документации &oracle; и &sap;). Нам также нужны следующие пользователи: идентификатор пользователя имя пользователя общий вид имени группа дополнительные группы описание 1000 idsadm/prdadm sidadm sapsys oper Администратор &sap; 1002 oraids/oraprd orasid dba oper Администратор &oracle; Добавление пользователей с помощью &man.adduser.8; требует следующих параметров для Администратора &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) а для Администратора &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) Для него также надо указать группу oper, если вы используете обе группы, dba и oper. Создание каталогов Эти каталоги обычно создаются в отдельных файловых системах. Впрочем, все зависит от ваших требований. Мы решили создавать их как обычные каталоги, поскольку в любом случае они находятся на одном массиве RAID 5: Сначала мы установим владельцев и права для ряда каталогов (от имени пользователя root): &prompt.root; chmod 775 /oracle &prompt.root; chmod 777 /sapmnt &prompt.root; chown root:dba /oracle &prompt.root; chown sidadm:sapsys /compat/linux/usr/sap &prompt.root; chmod 775 /compat/linux/usr/sap Затем, мы создадим каталоги от имени пользователя orasid. Все они будут размещены в каталоге /oracle/SID: &prompt.root; su - orasid &prompt.root; cd /oracle/SID &prompt.root; mkdir mirrlogA mirrlogB origlogA origlogB &prompt.root; mkdir sapdata1 sapdata2 sapdata3 sapdata4 sapdata5 sapdata6 &prompt.root; mkdir saparch sapreorg &prompt.root; exit Для установки &oracle; 8.1.7 потребуется несколько дополнительных каталогов: &prompt.root; su - orasid &prompt.root; cd /oracle &prompt.root; mkdir 805_32 &prompt.root; mkdir client stage &prompt.root; mkdir client/80x_32 &prompt.root; mkdir stage/817_32 &prompt.root; cd /oracle/SID &prompt.root; mkdir 817_32 Каталог client/80x_32 должен иметь точно такое имя. Не заменяйте x числом или другим символом. На третьем шаге мы создаем каталоги от имени пользователя sidadm: &prompt.root; su - sidadm &prompt.root; cd /usr/sap &prompt.root; mkdir SID &prompt.root; mkdir trans &prompt.root; exit Записи в файле <filename>/etc/services</filename> Для системы &sap.r3; необходим ряд записей в файле /etc/services, которые не будут правильно созданы при установке под FreeBSD. Пожалуйста, добавьте следующие записи (потребуются, по крайней мере, записи, соответствующие номеру экземпляра — в данном случае, 00. Не повредит добавить все записи, от 00 до 99, для dp, gw, sp и ms). Если вы собираетесь использовать SAProuter или вам необходим доступ к &sap; OSS, потребуется также запись для 99, поскольку порт 3299 обычно используется для процесса SAProuter в целевой системе: 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; нужны, по крайней мере, две локали, не входящие в стандартную установку RedHat. &sap; предлагает необходимые пакеты RPM для загрузки со своего FTP-сервера (который доступен только для клиентов с доступом к OSS). См. список необходимых пакетов RPM в заметке 0171356. Можно также просто создать соответствующие ссылки (например, с de_DE и en_US), но мы не рекомендуем это для производственной системы (хотя это и сработало для системы IDES безо всяких проблем). Необходимы следующие локали: de_DE.ISO-8859-1 en_US.ISO-8859-1 Создайте ссылки следующим образом: &prompt.root; cd /compat/linux/usr/share/locale &prompt.root; ln -s de_DE de_DE.ISO-8859-1 &prompt.root; ln -s en_US en_US.ISO-8859-1 Если их не будет, в ходе установки возникнет ряд проблем. Если их просто проигнорировать (установив STATUS для соответствующих шагов равным OK в файле CENTRDB.R3S), нельзя будет зарегистрироваться в системе &sap; без дополнительных усилий. Настройка ядра настройка ядра Системам &sap.r3; надо много ресурсов. Поэтому мы добавили следующие параметры в файл конфигурации ядра: # Для пожирателей памяти (SAP и Oracle): options MAXDSIZ="(1024*1024*1024)" options DFLDSIZ="(1024*1024*1024)" # Необходимые опции System V. options SYSVSHM #совместно используемая память в стиле SYSV options SHMMAXPGS=262144 #макс. количество страниц совместно используемой #options SHMMAXPGS=393216 #use this for the 46C inst.parameters options SHMMNI=256 #макс. количество идентификаторов совместно используемой options SHMSEG=100 #макс. количество сегментов разд. памяти на процесс options SYSVMSG #очереди сообщений в стиле SYSV options MSGSEG=32767 #макс. количество сегментов сообщений в системе options MSGSSZ=32 #размер сегмента сообщений. ДОЛЖЕН быть степенью 2 options MSGMNB=65535 #макс. символов на очередь сообщений options MSGTQL=2046 #макс. количество сообщений в системе options SYSVSEM #семафоры в стиле SYSV options SEMMNU=256 #количество структур UNDO семафоров options SEMMNS=1024 #количество семафоров в системе options SEMMNI=520 #количество идентификаторов семафоров options SEMUME=100 #количество ключей UNDO Минимальные значения указаны в документации, поставляемой вместе с &sap;. Поскольку описания для Linux нет, дополнительную информацию см. в разделе HP-UX (32-bit). Поскольку в системе, на которую устанавливалась версия 4.6C SR2, оперативной памяти больше, сегменты совместно используемой можно сделать больше как для &sap;, так и для &oracle;, поэтому задайте большее количество страниц совместно используемой памяти. При стандартной установке FreeBSD на &i386;, задайте значения MAXDSIZ и DFLDSIZ не более 1 Гбайта. В противном случае могут выдаваться странные ошибки вроде ORA-27102: out of memory и Linux Error: 12: Cannot allocate memory. Установка &sap.r3; Подготовка дисков CDROM &sap; В ходе установки придется монтировать и демонтировать много дисков CDROM. При наличии достаточного количества приводов CDROM, можно смонтировать их все. Мы же решили скопировать содержимое дисков CDROM в соответствующие каталоги: /oracle/SID/sapreorg/имя_cd где имя_cd — одно из следующих KERNEL, RDBMS, EXPORT1, EXPORT2, EXPORT3, EXPORT4, EXPORT5 и EXPORT6 для установки 4.6B/IDES, и KERNEL, RDBMS, DISK1, DISK2, DISK3, DISK4 и LANG для установки 4.6C SR2. Все имена файлов на смонтированных дисках должны быть в верхнем регистре, в противном случае, используйте при монтировании опцию . Поэтому используйте следующие команды: &prompt.root; mount_cd9660 -g /dev/cd0a /mnt &prompt.root; cp -R /mnt/* /oracle/SID/sapreorg/имя_cd &prompt.root; umount /mnt Запуск скрипта установки Сначала надо подготовить каталог install: &prompt.root; cd /oracle/SID/sapreorg &prompt.root; mkdir install &prompt.root; cd install Затем запускается скрипт установки, который скопирует почти все необходимые файлы в каталог install: &prompt.root; /oracle/SID/sapreorg/KERNEL/UNIX/INSTTOOL.SH Дистрибутив IDES (4.6B) включает полностью настроенную демонстрационную систему &sap.r3;, поэтому он включает шесть дисков EXPORT CD, а не три. В этот момент шаблон установки CENTRDB.R3S предназначен для установки стандартного центрального экземпляра (&r3; и базы данных), а не для установки центрального экземпляра IDES, поэтому необходимо скопировать соответствующий файл CENTRDB.R3S из каталога EXPORT1, иначе команда R3SETUP запросит только три диска EXPORT CDs. Более новый релиз &sap; 4.6C SR2 включает четыре диска EXPORT CD. Шаги установки определяет файл параметров CENTRAL.R3S. В отличие от прежних релизов, больше нет отдельных шаблонов установки для центрального экземпляра с базой данных или без нее. &sap; использует отдельный шаблон для установки базы данных. Для перезапуска установки в дальнейшем, однако, достаточно перезапустить исходный файл. В ходе установки и после нее &sap; требует, чтобы команда hostname возвращала только имя компьютера, не уточнённое именем домена. Поэтому либо задайте имя хоста в соответствии с этим требованием, либо настройте псевдоним с помощью команды alias hostname='hostname -s' для пользователей orasid и sidadm (и для пользователя root, про крайней мере, в ходе шагов по установке, выполняемых от имени root). Можно также изменить файлы .profile и .login для обоих пользователей, которые создаются в ходе установки &sap;. Запуск <command>R3SETUP</command> 4.6B Проверьте, что переменная среды LD_LIBRARY_PATH установлена правильно: &prompt.root; export LD_LIBRARY_PATH=/oracle/IDS/lib:/sapmnt/IDS/exe:/oracle/805_32/lib Выполните команду R3SETUP от имени пользователя root из каталога установки: &prompt.root; cd /oracle/IDS/sapreorg/install &prompt.root; ./R3SETUP -f CENTRDB.R3S Скрипт затем задает ряд вопросов (стандартные ответы даны в скобках, а затем представлены реальные ответы): Вопрос Стандартное значение Ответ 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 (in Megabytes) 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 sidadm [1000] Enter Enter User-ID of orasid [1002] Enter Number of parallel procs [2] Enter Если вы не скопировали диски в разные каталоги, инсталлятор &sap; не сможет найти необходимые CD (идентифицируемые файлом LABEL.ASC на диске) и попросит затем вставить и смонтировать CD, и подтвердить или ввести точку его монтирования. Файл CENTRDB.R3S может содержать ошибки. В нашем случае, он снова запросил EXPORT4 CD, но указал корректный ключ (6_LOCATION, затем 7_LOCATION и т.д.), так что, можно просто продолжать вводить корректные значения. За исключением нескольких упомянутых ниже проблем, все должно идти нормально до момента, когда придется устанавливать программное обеспечение для работы с базой данных &oracle;. Запуск <command>R3SETUP</command> 4.6C SR2 Проверьте, что переменная среды LD_LIBRARY_PATH установлена правильно. Это значение отличается от использованного при установке версии 4.6B с &oracle; 8.0.5: &prompt.root; export LD_LIBRARY_PATH=/sapmnt/PRD/exe:/oracle/PRD/817_32/lib Выполните команду R3SETUP от имени пользователя root из каталога установки: &prompt.root; cd /oracle/PRD/sapreorg/install &prompt.root; ./R3SETUP -f CENTRAL.R3S Скрипт затем задаст ряд вопросов (стандартные значения даны в скобках, а затем идут реальные ответы): Вопрос Стандартное значение Ответ 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 (in Megabytes) 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 (no support) Installation step completed [1] (continue) Enter Choose installation service [1] (DB inst,file) Enter Пока создание пользователей дает сообщение об ошибке при установке на стадиях OSUSERDBSID_IND_ORA (создание пользователя orasid) и OSUSERSIDADM_IND_ORA (создание пользователя sidadm). За исключением некоторых упомянутых далее проблем, все должно идти нормально до момента, когда придется устанавливать программное обеспечение для работы с базой данных &oracle;. Установка &oracle; 8.0.5 Описания возможных проблем с Linux и Сервером &oracle; см. в соответствующих файлах &sap; Notes и &oracle; Readme. Большинство, если не все проблемы, связаны с несовместимыми библиотеками. Подробнее об установке &oracle; см. в разделе Установка &oracle;. Установка &oracle; 8.0.5 с помощью <command>orainst</command> Если надо использовать &oracle; 8.0.5, для успешной перекомпоновки понадобится несколько дополнительных библиотек, поскольку &oracle; 8.0.5 был скомпонован со старой версией glibc (RedHat 6.0), но уже RedHat 6.1 использует новую библиотеку glibc. Так что, для успешной перекомпоновки нужно установить следующие дополнительные пакеты: 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 Дополнительную информацию см. в файлах &sap; Notes или &oracle; Readme. Если установить эти пакеты не представляется возможным (на момент установки у нас не было времени, чтобы это проверить), можно использовать исходные двоичные модули или перекомпонованные двоичные модули с исходной системы RedHat. Для компиляции интеллектуального агента должен быть установлен пакет RedHat Tcl. Если вы не можете найти пакет tcl-8.0.3-20.i386.rpm, подойдет и более новый, вроде tcl-8.0.5-30.i386.rpm для RedHat 6.1. За исключением перекомпоновки, установка выполняется просто: &prompt.root; su - oraids &prompt.root; export TERM=xterm &prompt.root; export ORACLE_TERM=xterm &prompt.root; export ORACLE_HOME=/oracle/IDS &prompt.root; cd $ORACLE_HOME/orainst_sap &prompt.root; ./orainst Нажимайте на всех экранах клавишу Enter, пока программное обеспечение не будет установлено, убрав только пометку выбора с &oracle; On-Line Text Viewer, поскольку этого компонента для Linux сейчас нет. &oracle; затем захочет перекомпоновать модули с помощью i386-glibc20-linux-gcc вместо имеющихся gcc, egcs или i386-redhat-linux-gcc. Из-за нехватки времени мы решили использовать двоичные модули из версии &oracle; 8.0.5 PreProduction после того, как первая попытка заставить работать версию с RDBMS CD провалилась, — попытки найти и загрузить требуемые пакеты RPM нам показались настоящим кошмаром. Установка &oracle; 8.0.5 Pre-production Release для Linux (ядро 2.0.33) Эту установку выполнить очень легко. Монтируем CD, запускаем инсталлятор. Затем он запрашивает местонахождение начального каталога &oracle; и копирует туда двоичные модули. Мы, однако, не удаляли остатки прежних попыток установить RDBMS. В конечном итоге, базу данных &oracle; удалось запустить без проблем. Установка tar-архива &oracle; 8.1.7 для Linux Создайте tar-архив oracle81732.tgz каталога установки на Linux-системе и разархивируйте его в каталог /oracle/SID/817_32/. Продолжение установки &sap.r3; Сначала проверьте настройку среды для пользователей idsamd (sidadm) и oraids (orasid). У них обоих должны теперь быть файлы .profile, .login и .cshrc, использующие hostname. Если имя хоста в системе полностью уточнено, надо заменить hostname командой hostname -s во всех трех файлах. Загрузка базы данных Потом команду R3SETUP можно либо перезапустить, либо продолжить (в зависимости от того, была ли завершена ее работа). R3SETUP затем создает табличные пространства и загружает данные (для 46B IDES — с дисков от EXPORT1 до EXPORT6, для 46C — с дисков от DISK1 до DISK4) в базу данных с помощью утилиты R3load. После завершения загрузки базы данных (это может занять несколько часов), будет запрошено несколько паролей. Для тестовых установок можно использовать хорошо известные стандартные пароли (но если защита важна — используйте другие!): Вопрос Ответ 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 Мы столкнулись с несколькими проблемами с dipgntab при установке 4.6B. Процесс прослушивания Запустите процесс прослушивания (&oracle; Listener) от имени пользователя orasid следующим образом: &prompt.user; umask 0; lsnrctl start В противном случае, вы можете получить сообщение об ошибке ORA-12546, поскольку у сокетов будут неправильные права доступа. См. &sap; Note 072984. Обновление таблиц MNLS Если вы планируете использовать в системе &sap; языки, для которых не подходит кодировка Latin-1, придется изменить таблицы Multi National Language Support. Эта процедура описана в &sap; OSS Notes 15023 и 45619. Если же нет, можете пропустить этот вопрос в ходе установки &sap;. Если вам не нужна поддержка MNLS, все равно необходимо проверить таблицу TCPDB и инициализировать ее, если это еще не было сделано. Дополнительную информацию см. в &sap; Note 0015023 и 0045619. Шаги после установки Запрос лицензионного ключа &sap.r3; Вы должны запросить ваш лицензионный ключ &sap.r3;. Это необходимо, поскольку временная лицензия, использованная в ходе установки, действительна только четыре недели. Сначала получите ключ оборудования. Зарегистрируйтесь как пользователь idsadm и вызовите команду saplicense: &prompt.root; /sapmnt/IDS/exe/saplicense -get При вызове команды saplicense без параметров будет выдан список опций. После получения лицензионного ключа, его можно установить с помощью команды: &prompt.root; /sapmnt/IDS/exe/saplicense -install Затем вас попросят ввести следующие значения: SAP SYSTEM ID = SID, 3 символа CUSTOMER KEY = ключ оборудования, 11 символов INSTALLATION NO = установка, 10 цифр EXPIRATION DATE = yyyymmdd, обычно - "99991231" LICENSE KEY = лицензионный ключ, 24 символа Создание пользователей Создайте пользователя в клиенте 000 (некоторые задачи обязательно надо выполнять из клиента 000, от имени пользователя, отличающегося от sap* и ddic). В качестве имени пользователя мы обычно выбираем wartung (или service, по английски). Требуются профили sap_new и sap_all. Для дополнительной защиты надо изменить пароли стандартных пользователей на всех клиентах (в том числе, пользователей sap* и ddic). Конфигурирование системы передачи, профиля, режимов работы и т.п. В клиенте 000, от имени пользователя, отличающегося от ddic и sap*, выполните, как минимум, следующее: Задача Транзакция Сконфигурируйте систему передачи, например, как Stand-Alone Transport Domain Entity STMS Создайте/Отредактируйте профиль для системы RZ10 Сконфигурируйте режимы работы и экземпляры RZ04 Эти и другие шаги, которые надо выполнить после установки, подробно описаны в руководствах по установке &sap;. Редактирование <filename>init<replaceable>sid</replaceable>.sap</filename> (<filename>initIDS.sap</filename>) Файл /oracle/IDS/dbs/initIDS.sap содержит профиль резервного копирования &sap;. Здесь надо задать размер используемой ленты, тип сжатия и т.д. Чтобы можно было использовать 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 Объяснения: compress: мы использовали ленту HP DLT1, которая поддерживает аппаратное сжатие. archive_function: этот параметр задает стандартное поведение для сохранения архивных журналов &oracle;: новые журнальные файлы сохраняются на ленту, уже сохраненные файлы журнала сохраняются еще раз, а затем удаляются. Это предотвращает многочисленные проблемы, если потребуется восстановить базу данных, а одна из архивных лент окажется сбойной. cpio_flags: по умолчанию используется , что устанавливает размер блока 5120 байт. Для лент DLT компания HP рекомендует размер блока не меньше 32 Кбайт, поэтому мы использовали значение для задания размера блока 64 Кбайта. Опция необходима, поскольку у нас есть индексные дескрипторы (inodes) с номерами больше 65535. Последняя опция, необходима потому, что иначе команда brbackup выдает сообщение об ошибке, как только команда cpio выдаст количество сохраненных блоков. cpio_in_flags: флаги, необходимые для загрузки данных с ленты. Формат распознается автоматически. tape_size: обычно этот параметр задает реальную ёмкость ленты. Из соображений надежности (мы используем аппаратное сжатие), задано значение несколько меньше фактического. tape_address: устройство без перемотки для использования в команде cpio. tape_address_rew: устройство с перемоткой для использования в команде cpio. Проблемы конфигурирования после установки Следующие параметры &sap; надо настроить после установки (примеры для IDES 46B, 1 Гбайт памяти): Имя Значение 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: Имя Значение ztta/dynpro_area 2500000 &sap; Note 0157246: Имя Значение rdisp/ROLL_MAXFS 16000 rdisp/PG_MAXFS 30000 При указанных выше параметрах в системе с 1 Гбайт памяти можно обнаружить примерно следующее использование памяти: Mem: 547M Active, 305M Inact, 109M Wired, 40M Cache, 112M Buf, 3492K Free Проблемы в ходе установки Перезапуск <command>R3SETUP</command> после устранения проблемы R3SETUP останавливается при выявлении ошибки. Если вы просмотрели соответствующие журнальные файлы и исправили ошибку, придется запускать R3SETUP снова, обычно выбирая REPEAT как опцию для последнего шага, на котором команда R3SETUP выдала сообщение об ошибке. Для перезапуска команды R3SETUP просто запустите её с соответствующим файлом R3S: &prompt.root; ./R3SETUP -f CENTRDB.R3S для 4.6B или с файлом &prompt.root; ./R3SETUP -f CENTRAL.R3S для 4.6C, независимо от того, произошла ли ошибка при работе с файлом CENTRAL.R3S или DATABASE.R3S. На некоторых стадиях команда R3SETUP предполагает, что запущены и работают процессы как сервера базы данных, так и &sap; (поскольку эти шаги уже выполнены). Если возникнут ошибки и, например, запустить сервер базы данных не получится, придется вручную запускать сервер базы данных и &sap; после исправления ошибок и до повторного запуска R3SETUP. Не забудьте также снова запустить процесс прослушивания &oracle; (как пользователь orasid с помощью команды umask 0; lsnrctl start), если он тоже был остановлен (например, из-за необходимой перезагрузки системы). OSUSERSIDADM_IND_ORA в ходе <command>R3SETUP</command> Если R3SETUP выдает сообщения об ошибках на этом этапе, отредактируйте используемый при этом файл шаблона R3SETUP (CENTRDB.R3S (4.6B), либо CENTRAL.R3S или DATABASE.R3S (4.6C)). Найдите раздел [OSUSERSIDADM_IND_ORA] или поищите единственную запись STATUS=ERROR и отредактируйте следующие значения: HOME=/home/sidadm (было пусто) STATUS=OK (был статус ERROR) Затем надо снова перезапустить R3SETUP. OSUSERDBSID_IND_ORA в ходе <command>R3SETUP</command> Возможно, команда R3SETUP также выдаст сообщения об ошибке на этой стадии. Ошибка здесь аналогична возникающей на стадии OSUSERSIDADM_IND_ORA. Просто отредактируйте используемый файл шаблона R3SETUP (CENTRDB.R3S (4.6B), либо CENTRAL.R3S или DATABASE.R3S (4.6C)). Найдите раздел [OSUSERDBSID_IND_ORA] или поищите единственную запись STATUS=ERROR и отредактируйте следующее значение в этом разделе: STATUS=OK Затем перезапустите R3SETUP. <errorname>oraview.vrf FILE NOT FOUND</errorname> в ходе установки &oracle; Вы не сняли выбор с &oracle; On-Line Text Viewer перед началом установки. Он помечен для установки, хотя этот продукт и не доступен сейчас для Linux. Снимите пометку с этого продукта в меню установки &oracle; и перезапустите установку. <errorname>TEXTENV_INVALID</errorname> в ходе <command>R3SETUP</command>, RFC или запуска SAPgui Если возникает эта ошибка, не найдена нужная локаль. &sap; Note 0171356 перечисляет необходимые пакеты RPM, которые надо установить (например, saplocales-1.0-3, saposcheck-1.0-1 для RedHat 6.1). Если игнорировать все ошибки и менять STATUS соответствующих шагов с ERROR на OK (в файле CENTRDB.R3S) каждый раз, когда R3SETUP сообщает об ошибке и просто перезапуск ать R3SETUP, система &sap; не будет правильно сконфигурирована, и вы затем не сможете подключиться к системе с помощью SAPgui, хотя запустить систему и получится. Попытка подключения с помощью старой Linux-версии SAPgui приведет к выдаче следующих сообщений: 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 Это связано с тем, что система &sap.r3; не может корректно назначить локаль и сама не была надлежащим образом сконфигурирована (не хватает записей в некоторых таблицах базы данных). Чтобы можно было подключиться к &sap;, добавьте следующие записи в файл DEFAULT.PFL (см. Note 0043288): abap/set_etct_env_at_new_mode = 0 install/collate/active = 0 rscp/TCP0B = TCP0B Перезапустите систему &sap;. Теперь вы можете подключиться к системе, хотя специфические для страны языковые установки могут работать не так, как предполагалось. После исправления настроек страны (и добавления соответствующих локалей) эти записи можно удалить из файла DEFAULT.PFL и перезапустить систему &sap;. <errorcode>ORA-00001</errorcode> Эта ошибка возникает только с &oracle; 8.1.7 на FreeBSD. Причина в том, что сервер &oracle; не может правильно проинициализироваться и аварийно завершает работу, оставляя не освобожденными в системе семафоры и совместно используемую память. При следующей попытке запустить сервер базы данных выдается ошибка ORA-00001. Найдите оставшиеся семафоры и сегменты памяти с помощью команды ipcs -a и удалите с помощью ipcrm. <errorcode>ORA-00445</errorcode> (фоновый процесс PMON не запущен) Эта ошибка произошла с &oracle; 8.1.7. Она выдается, если сервер был запущен с помощью обычного скрипта startsap (например, startsap_majestix_00) от имени пользователя prdadm. Возможный способ обхода – запускать сервер базы данных от имени пользователя oraprd с помощью svrmgrl: &prompt.user; svrmgrl SVRMGR> connect internal; SVRMGR> startup; SVRMGR> exit <errorcode>ORA-12546</errorcode> (запускайте процесс прослушивания с правильными правами) Запускайте процесс прослушивания &oracle; от имени пользователя oraids следующими командами: &prompt.root; umask 0; lsnrctl start В противном случае, вы можете получить сообщение об ошибке ORA-12546, поскольку сокеты не будут иметь нужных прав доступа. См. &sap; Note 0072984. <errorcode>ORA-27102</errorcode> (не хватает памяти) Эта ошибка произошла при попытке использовать значения MAXDSIZ и DFLDSIZ больше 1 Гбайта (1024x1024x1024). Кроме того, мы получили Linux Error 12: Cannot allocate memory. [DIPGNTAB_IND_IND] в ходе <command>R3SETUP</command> В общем случае, см. &sap; Note 0130581 (прекращается работа R3SETUP на шаге DIPGNTAB). В ходе установки IDES-версии по каким-то причинам процесс установки использовал вместо правильного имени системы &sap;, IDS, пустую строку, "". Это приводит к небольшим проблемам при доступе к каталогам, поскольку пути генерируются динамически на базе SID (в данном случае, IDS). Поэтому вместо обращения к: /usr/sap/IDS/SYS/... /usr/sap/IDS/DVMGS00 используются следующие пути: /usr/sap//SYS/... /usr/sap/D00 Чтобы продолжить установку мы создали ссылку и дополнительный каталог: &prompt.root; pwd /compat/linux/usr/sap &prompt.root; 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 Мы также нашли документы &sap; Notes (0029227 и 0008401), описывающие это поведение. Мы не столкнулись с подобными проблемами при установке &sap; 4.6C. [RFCRSWBOINI_IND_IND] в ходе <command>R3SETUP</command> В ходе установки &sap; 4.6C, эта ошибка возникла в результате другой ошибки, произошедшей ранее по ходу установки. В данном случае придется просмотреть соответствующие журнальные файлы и устранить исходную проблему. Если после просмотра журнальных файлов выявлена только эта ошибка (проверьте &sap; Notes), можно поменять STATUS соответствующего шага с ERROR на OK (в файле CENTRDB.R3S) и перезапустить R3SETUP. После установки надо выполнить отчет RSWBOINS из транзакции SE38. Дополнительную информацию о стадиях RFCRSWBOINI и RFCRADDBDIF см. в &sap; Note 0162266. [RFCRADDBDIF_IND_IND] в ходе <command>R3SETUP</command> Здесь применяются те же ограничения: проверьте путем просмотра журнальных файлов, что эта ошибка не вызвана какими-то предыдущими проблемами. Если подтверждается, что применим документ &sap; Note 0162266, просто поменяйте STATUS соответствующего шага с ERROR на OK (в файле CENTRDB.R3S) и перезапустите R3SETUP. После установки надо выполнить отчет RADDBDIF из транзакции SE38. <errorcode>sigaction sig31: File size limit exceeded</errorcode> Это сообщение об ошибке выдается в ходе запуска процессов &sap; disp+work. Если &sap; запускается скриптом startsap, запускаются отдельные подпроцессы, выполняющие грязную работу по запуску всех остальных процессов &sap;. В результате, сам скрипт не получит уведомления, если что-то пойдет не так. Чтобы проверить, нормально ли запустились процессы &sap;, посмотрите на состояние процессов с помощью команды ps ax | grep SID, которая выдаст список всех процессов &oracle; и &sap;. Если похоже, что некоторых процессов не хватает или вы не можете подключиться к системе &sap;, просмотрите соответствующие журнальные файлы, которые можно найти в каталоге /usr/sap/SID/DVEBMGSnr/work/. Надо просматривать файлы dev_ms и dev_disp. Сигнал 31 выдается, если объем памяти, совместно используемой &oracle; и &sap;, превосходит заданный в файле конфигурации ядра, и от него можно избавиться, указав большее значение: # большее значение для производственных систем 46C: options SHMMAXPGS=393216 # меньшее значение, достаточное для 46B: #options SHMMAXPGS=262144 Сбой при запуске <command>saposcol</command> Есть ряд проблем с программой saposcol (версии 4.6D). Система &sap; использует saposcol для сбора данных о производительности системы. Эта программа не нужна для использования системы &sap;, так что проблему можно отнести к несерьезным. Более старые версии (4.6B) работают, но собирают не все данные (многие вызовы просто возвращают 0, например, для использования процессора). Дополнительные сведения Если вы интересуетесь, как обеспечивается двоичная совместимость с Linux, этот раздел для вас. Большинство материала взято из электронного письма, адресованного Terry Lambert tlambert@primenet.com в &a.chat; (ID письма: <199906020108.SAA07001@usr09.primenet.com>). Как все это устроено? загрузчик выполняемых классов FreeBSD поддерживает абстракцию, называемую загрузчик выполняемых классов. Фактически, он является первой стадией системного вызова &man.execve.2;. На самом деле, FreeBSD имеет список загрузчиков вместо одного, завершающийся загрузчиком #! для запуска любых командных интерпретаторов и скриптов. Исторически сложилось, что единственный загрузчик в &unix; системах проверял магическое число (чаще всего первые 4 или 8 байт файла), чтобы определить, известен ли формат двоичного файла системе, и если да, то вызвал соответствующий загрузчик. Если файл не опознавался системой как двоичный, системный вызов &man.execve.2; возвращал ошибку, и текущий командный интерпретатор начинал выполнять файл как скрипт. По умолчанию скрипт выполнялся текущим командным интерпретатором. Позднее, &man.sh.1; был модифицирован, так, чтобы проверять первые два символа в файле, и если они оказывались :\n, то файл выполнялся как сценарий для &man.csh.1; (утверждается, что SCO были первыми, кто сделал эту модификацию). FreeBSD сейчас ведет себя по-другому: пробегает по списку загрузчиков,включающему специальный загрузчик #!, который вызывает нужный интерпретатор, указанный после этих символов до следующего пробела, или /bin/sh, если не нашел подходящего. ELF Для поддержки Linux ABI FreeBSD ищет магическое число, соответствующее двоичному файлу ELF (на этой стадии не различаются FreeBSD, &solaris;, Linux или любая другая ОС поддерживающая формат ELF). Solaris Далее, ELF-загрузчик определяет марку (brand) двоичного файла ELF (специальный комментарий в ELF-файле, отсутствующий в двоичных файлах ELF SVR4/&solaris;). Соответственно, Linux программы должны быть маркированы для Linux (например, с помощью утилиты &man.brandelf.1;): &prompt.root; brandelf -t Linux file Когда это сделано, загрузчик ELF выявит марку Linux в файле. ELF branding Когда ELF-загрузчик находит марку Linux, он заменяет соответствующий указатель в структуре proc. Все системные вызовы индексируются через этот указатель (в традиционной &unix; системе это массив структур sysent[], содержащий системные вызовы). Кроме того, процесс помечается для специальной обработки вектора обработчиков сигналов, а также ряда других (небольших) исправлений, которые осуществляются специальным модулем ядра для поддержки Linux. Вектор системных вызовов Linux содержит, среди прочего, список записей sysent[], адреса которых находятся в модуле ядра. При выполнении системного вызова из двоичного файла Linux, код обработчика разыменовывает указатель на функцию системного вызова из структуры proc, и получает точки входа системных вызовов Linux, а не FreeBSD. Плюс ко всему, в Linux–режиме динамически изменяется корень файловой системы при поиске файлов; фактически так же, как и параметр union при монтировании файловых систем (не путать с unionfs!). Сперва, файл ищется в каталоге /compat/linux/исходное_полное_имя и только затем, в случае неудачи, в /исходное_полное_имя. Это гарантирует, что программы, которым требуются другие программы, смогут работать (например, весь набор инструментальных средств Linux сможет работать в среде поддержки Linux ABI). Это также дает возможность Linux программам выполнять FreeBSD команды, если не найдется соответствующих Linux команд. Например, можно скопировать FreeBSD &man.uname.1; в дерево каталогов /compat/linux, и Linux-программы не смогут разобраться, что они работают не в Linux. Фактически, имеется ядро Linux в ядре FreeBSD; различные базовые функции, реализующие все услуги ядра, идентичны как в записях таблицы системных вызовов FreeBSD, так и в записях таблицы системных вызовов Linux: операции с файловой системой, виртуальная память, средства доставки сигналов, System V IPC … Единственное отличие в том, что FreeBSD-программы получают интерфейсные функции FreeBSD, а Linux-программы получают интерфейсные функции Linux (в большинстве более старых ОС есть только их собственные интерфейсные функции: функции берутся из статического глобального массива структур sysent[], а не из массива, полученного разыменованием динамически проинициализированного указателя в структуре proc процесса, выполняющего вызов). Какая же реализация ABI для FreeBSD родная? Это не имеет значения. Единственное различие (на данный момент, в будущем все может и, вероятно, изменится), пожалуй, в том, что функции системных вызовов FreeBSD зашиты в ядро, а для Linux они могут быть либо статически скомпонованы в ядро, либо получаться через модуль ядра. Да, но можно ли назвать это эмуляцией? Нет. Это реализация ABI, а не эмуляция. Как таковой, эмулятор (или симулятор) отсутствует. В таком случае, почему же иногда говорят об эмуляции Linux? Чтобы насолить FreeBSD! Фактически, причина в том, что на момент первой реализации не существовало слова, которое бы точнее описывало этот процесс. Нельзя было сказать, что FreeBSD запускает приложения Linux (без перекомпиляции или загрузки соответствующего модуля ядра это невозможно). Но надо было как-то описать, что загружается — отсюда и эмулятор Linux.