Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Темы - keremet

Страницы: 1 ... 3 4 [5] 6 7 8
61
С правами root
acctadm -e extended -f /var/log/net.log net #Включить протоколирование
acctadm -x net #Выключить протоколирование

Под OpenIndiana 148 появилась утилита dlstat для отображения содержимого файла со статистикой. Для отображения общей статистики (интерфейс, продолжительность сбора статистики в секундах, вошло байт и пакетов, вышло байт и пакетов, нагрузка на сеть в мегабитах в секунду)
dlstat show-link -h  -a -f /var/log/net.log

62
Было
keremet@opensolaris:~$ zonecfg -z linuxzone info
zonename: linuxzone
zonepath: /export/linuxzone
brand: lx
autoboot: false
bootargs:
pool:
limitpriv:
scheduling-class:
ip-type: shared
hostid:
net:
   address: 192.168.1.116/24
   physical: rge0
   defrouter not specified
attr:
   name: audio
   type: boolean
   value: true

Действия
keremet@opensolaris:~$ pfexec  zonecfg -z linuxzone
zonecfg:linuxzone> select net address=192.168.1.116/24
zonecfg:linuxzone:net> set address=192.168.0.112/24
zonecfg:linuxzone:net> set defrouter=192.168.0.1
zonecfg:linuxzone:net> end
zonecfg:linuxzone> verify
zonecfg:linuxzone> commit
zonecfg:linuxzone> exit

Стало

keremet@opensolaris:~$ pfexec  zonecfg -z linuxzone info
zonename: linuxzone
zonepath: /export/linuxzone
brand: lx
autoboot: false
bootargs:
pool:
limitpriv:
scheduling-class:
ip-type: shared
hostid:
net:
   address: 192.168.0.112
   physical: rge0
   defrouter: 192.168.0.1
attr:
   name: audio
   type: boolean
   value: true

63
Nexenta / Планировщик Cron в Nexenta
« : Август 16, 2011, 12:01:42 pm »
Файл /etc/crontab отсутствует.

Чтобы запланировать задачу используется команда
crontab -e
Она вызывает текстовый редактор. По умолчанию - vi.

Для просмотра списка задач
crontab -l

Задания будут выполняться от имени пользователя, выполнившего команду crontab -e.

Формат: минуты часы дни месяцы дни_недели команда

64
Скачать исходники с сайта
https://www.torproject.org/download/download.html.en

Установить зависимости
pfexec pkg install SUNWlibevent

Выполнить компиляцию
./configure
make
pfexec make install

Запустить приложение
/usr/local/bin/tor

Проверка работоспособности
$ netstat -a|grep 9050
opensolaris.9050           *.*                0      0 49152      0 LISTEN

В Firefox задать SOCKS5 прокси: localhost:9050

Зайти на сайт для проверки
https://check.torproject.org/

65
Nexenta / Установка Apache mod_rewrite на Nexenta CP 3.0
« : Август 03, 2011, 11:45:43 am »
В /etc/apache2/apache2.conf добавлены директивы
RewriteEngine on
RewriteRule   ^oldstuff\.html$  newstuff.html

a2enmod rewrite
svcadm restart svc:/network/apache2:default
while [ true ]; do sleep 5;svcs -a|grep apa; done
online*        11:03:07 svc:/network/apache2:default
online*        11:03:07 svc:/network/apache2:default
online         11:04:05 svc:/network/apache2:default

Командой pldd выяснено, что /usr/lib/apache2/modules/mod_rewrite.so подгружен
# cat /var/www/newstuff.php
<?php
print_r(apache_get_modules());
?>
Также отображает успешную загрузку модуля

Однако правила преобразования адресов не срабатывают. Для выяснения причины следует добавить в /etc/apache2/apache2.conf директивы протоколирования:
RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 9

Анализом вывод команды
grep oldstuff\.html /var/log/apache2/rewrite.log
Выяснено, что надо скорретировать правило преобразования добавлением слешей:
RewriteRule   ^/oldstuff\.html$  /newstuff.html

Чтобы для применения изменений не требовалась перезагрузка сервера, следует использовать .htaccess
Правила преобразования были перенесены в .htaccess
RewriteEngine On
RewriteBase   /
RewriteRule   ^/oldstuff\.html$  /newstuff.html

Анализом вывод команды
grep oldstuff\.html /var/log/apache2/rewrite.log
92.255.239.250 - - [03/Aug/2011:11:45:14 +0400] [188.128.114.221/sid#81a4ed8][rid#8333af0/initial] (2) init rewrite engine with requested uri /oldstuff.html
92.255.239.250 - - [03/Aug/2011:11:45:14 +0400] [188.128.114.221/sid#81a4ed8][rid#8333af0/initial] (1) pass through /oldstuff.html
Выяснено, что правила не подгружаются

В /etc/apache2/apache2.conf добавлены директивы
AccessFileName .htaccess
AllowOverride all

Перезапускаем apache. смотрим, его состояние
svcs -a|grep apa
maintance         11:54:29 svc:/network/apache2:default

через svcs -xv определяем файл лога и смотрим его:
cat /var/svc/log/network-apache2:default.log

Там написано
AllowOverride not allowed here

Прочитал внимательно описание директивы. Удалил ее из /etc/apache2/apache2.conf и разместил в конфиге сайта

cat /etc/apache2/sites-available/default
DocumentRoot /var/www/
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
        <Directory /var/www/>
                Options -Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

Создание .htaccess
host:/var/www$ cat .htaccess
php_flag register_globals On
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^personal_cabinet/(.*)$ personal_cabinet/index.php [NC,L]

Теперь можно убрать директивы прокотолирования из /etc/apache2/apache2.conf

66
OpenSolaris / Настройка NAT в OpenSolaris
« : Август 02, 2011, 04:03:14 pm »
Задача: Есть rtls1 c ip 10.0.10.14 и rge0  с ip 192.168.1.16. Надо дать возможность компам из сети 10.0.0.0/8 иметь возможность выхода в 192.168.1.0/24.
Решение:
1. Заполнение конфигов IPfilter
$ cat /etc/ipf/ipf.conf
pass in log on rtls1 all
pass out log on rtls1 all


$cat /etc/ipf/ipnat.conf
map rge0 10.0.0.0/8 -> 0/32 proxy port ftp ftp/tcp
map rge0 10.0.0.0/8 -> 0/32 portmap tcp/udp auto
map rge0 10.0.0.0/8 -> 0/32

$ cat /etc/ipf/pfil.ap
rtls -1 0 pfil

2. Включить  ipv4-forwarding
pfexec routeadm -u -e ipv4-forwarding
3. Запустить или перезапустить службу ipfilter.
pfexec svcadm enable svc:/network/ipfilter:default

NAT должен работать. Для просмотра активных правил:
pfexec ipnat -l

Удаление сессий
pfexec ipnat -F
Удаление правил
pfexec ipnat -C
Загрузка правил
pfexec ipnat -f /etc/ipf/ipnat.conf


Побочный эффект: с этими настройками перестают работать линуксовые зоны (комп зависает и перезагружается после нескольких пингов яндекса из зоны)

При этом содержимое /var/adm/messages
Aug 31 09:10:03 opensolaris unix: [ID 836849 kern.notice]
Aug 31 09:10:03 opensolaris ^Mpanic[cpu0]/thread=ffffff0008300c60:
Aug 31 09:10:03 opensolaris genunix: [ID 335743 kern.notice] BAD TRAP: type=e (#pf Page fault) rp=ffffff0008300840 addr=46 occurred in module "ip" due to a NULL pointer dereference
Aug 31 09:10:03 opensolaris unix: [ID 100000 kern.notice]
Aug 31 09:10:03 opensolaris unix: [ID 839527 kern.notice] sched:
Aug 31 09:10:03 opensolaris unix: [ID 753105 kern.notice] #pf Page fault
Aug 31 09:10:03 opensolaris unix: [ID 532287 kern.notice] Bad kernel fault at addr=0x46
Aug 31 09:10:03 opensolaris unix: [ID 243837 kern.notice] pid=0, pc=0xfffffffff7a78c11, sp=0xffffff0008300930, eflags=0x10286
Aug 31 09:10:03 opensolaris unix: [ID 211416 kern.notice] cr0: 8005003b<pg,wp,ne,et,ts,mp,pe> cr4: 6f8<xmme,fxsr,pge,mce,pae,pse,de>
Aug 31 09:10:03 opensolaris unix: [ID 624947 kern.notice] cr2: 46
Aug 31 09:10:03 opensolaris unix: [ID 625075 kern.notice] cr3: 4400000
Aug 31 09:10:03 opensolaris unix: [ID 625715 kern.notice] cr8: c
Aug 31 09:10:03 opensolaris unix: [ID 592667 kern.notice]    rdi: ffffff01ceeb0c98 rsi:                1 rdx:                0
Aug 31 09:10:03 opensolaris unix: [ID 592667 kern.notice]    rcx: ffffff0008300c60  r8: ffffff01e333b620  r9:                1
Aug 31 09:10:03 opensolaris unix: [ID 592667 kern.notice]    rax:                0 rbx:          194905b rbp: ffffff0008300a50
Aug 31 09:10:03 opensolaris unix: [ID 592667 kern.notice]    r10: ffffff01cf10f000 r11:                0 r12:                0
Aug 31 09:10:03 opensolaris unix: [ID 592667 kern.notice]    r13: ffffff01cd3d2000 r14: ffffff01e3511e7e r15: ffffff01cb5593e8
Aug 31 09:10:03 opensolaris unix: [ID 592667 kern.notice]    fsb:                0 gsb: fffffffffbc2e070  ds:               38
Aug 31 09:10:03 opensolaris unix: [ID 592667 kern.notice]     es:                0  fs:                0  gs:                0
Aug 31 09:10:03 opensolaris unix: [ID 592667 kern.notice]    trp:                e err:                0 rip: fffffffff7a78c11
Aug 31 09:10:03 opensolaris unix: [ID 592667 kern.notice]     cs:               30 rfl:            10286 rsp: ffffff0008300930
Aug 31 09:10:03 opensolaris unix: [ID 266532 kern.notice]     ss:               38
Aug 31 09:10:03 opensolaris genunix: [ID 655072 kern.notice] ffffff0008300720 unix:die+dd ()
Aug 31 09:10:03 opensolaris genunix: [ID 655072 kern.notice] ffffff0008300830 unix:trap+1752 ()
Aug 31 09:10:03 opensolaris genunix: [ID 655072 kern.notice] ffffff0008300840 unix:cmntrap+e9 ()
Aug 31 09:10:03 opensolaris genunix: [ID 655072 kern.notice] ffffff0008300a50 ip:ip_fast_forward+c9 ()
Aug 31 09:10:03 opensolaris genunix: [ID 655072 kern.notice] ffffff0008300b70 ip:ip_input+600 ()
Aug 31 09:10:03 opensolaris genunix: [ID 655072 kern.notice] ffffff0008300be0 mac:mac_rx_soft_ring_drain+df ()
Aug 31 09:10:03 opensolaris genunix: [ID 655072 kern.notice] ffffff0008300c40 mac:mac_soft_ring_worker+111 ()
Aug 31 09:10:03 opensolaris genunix: [ID 655072 kern.notice] ffffff0008300c50 unix:thread_start+8 ()
Aug 31 09:10:03 opensolaris unix: [ID 100000 kern.notice]
Aug 31 09:10:03 opensolaris genunix: [ID 672855 kern.notice] syncing file systems...
Aug 31 09:10:03 opensolaris genunix: [ID 904073 kern.notice]  done
Aug 31 09:10:04 opensolaris genunix: [ID 111219 kern.notice] dumping to /dev/zvol/dsk/rpool/dump, offset 65536, content: kernel
Aug 31 09:10:14 opensolaris genunix: [ID 409368 kern.notice] ^M100% done: 129249 pages dumped, compression ratio 3.53,
Aug 31 09:10:14 opensolaris genunix: [ID 851671 kern.notice] dump succeeded

67
Nexenta / FastCGI и Nexenta CP 3.0
« : Июль 28, 2011, 01:25:03 am »
1. Настройка Apache
aptitude install libapache2-mod-fcgid
mkdir /usr/lib/fcgi-bin/

Добавить в /etc/apache2/apache2.conf
        ScriptAlias /fcgi-bin/ /usr/lib/fcgi-bin/
        <Directory "/usr/lib/fcgi-bin">
                SetHandler fcgid-script
                Options +ExecCGI
                Order allow,deny
                Allow from all
        </Directory>


svcadm disable svc:/network/apache2:default
svcadm enable svc:/network/apache2:default

2. Компиляция fcgi-2.4.0
wget http://fastcgi.com/dist/fcgi-2.4.0.tar.gz
tar xf fcgi-2.4.0.tar.gz
cd fcgi-2.4.0
./configure CFLAGS="-O3" CXXFLAGS="-O3"
make

3. Копирование тестового примера
cp examples/echo-cpp /usr/lib/fcgi-bin/
mkdir /usr/lib/fcgi-bin/.libs
cp examples/.libs/echo-cpp /usr/lib/fcgi-bin/.libs/


В случае ошибок смотреть
tail -n 50 /var/log/apache2/error.log

68
OpenIndiana / OpenIndiana 151
« : Май 31, 2011, 10:40:13 pm »
Доступна предварительная версия: http://dlc-int.openindiana.org/151/oi-dev-151-text-x86-20110526-1.iso
В ближайшее время будут закончены работы над DVD образом с окончательной версией этого девелоперского релиза.
Описание нововведений: http://wiki.openindiana.org/oi/oi_151
Описание багов можно сразу отправлять на английском разработчикам, а можно описывать тут на русском языке, я постараюсь перевести и отправить.

69
OpenSolaris / Полезные скрипты DTrace
« : Май 05, 2011, 10:20:35 pm »
Просмотр запускаемых процессов и их параметров:
dtrace -n 'proc:::exec-success { trace(curpsinfo->pr_psargs); }'
____
Получение графа вызовов функций в приложении a.out
$ cat a.out.d
#!/usr/sbin/dtrace -s
#pragma D option flowindent
pid$target:a.out::entry,
pid$target:a.out::return
{
}

Запуск: ./a.out.d -c a.out
_____
Какие файлы открывает psql
pfexec dtrace -n 'syscall::open:entry/execname=="psql"/{ printf("file:%s",copyinstr(arg0));}'
_____
Что запускает cron
dtrace -n 'syscall::exec*:entry/execname=="cron"/{ printf("file:%s",copyinstr(arg0));}'
_____
Пищать после завершения процесса 1444
dtrace -q -n "proc:::exit/pid==1444/{exit(0);}";while [ 1 ];do printf \\007; sleep 1;done;

70
Hardware / Сетевая карта Broadcom BCM57780
« : Апрель 10, 2011, 12:43:13 am »
Под OpenSolaris 2009.06 сетевуха не определилась. В списке совместимого оборудования (HCL) не значится. Попробовал по совету с http://opensolaris.org/jive/thread.jspa?threadID=130171 натравить на нее драйвер bge:
pfexec update_drv -a -i '"pciex14e4,1692"' bge
Через dladm show-phys сетевуха показывалась как bge0, однако ifconfig bge0 plumb завершался безрезультатно.
Решил посмотреть, как обстоят дела с поддержкой данной сетевухи в новых версиях OpenSolaris. Судя по http://cr.opensolaris.org/~estibi/illumos/ баг исправлен 5 августа 2010. Патч достаточно простой:
http://cr.opensolaris.org/~estibi/illumos/usr/src/uts/common/io/bge/bge_chip2.c.patch
http://cr.opensolaris.org/~estibi/illumos/usr/src/uts/common/io/bge/bge_hw.h.patch
Скачал драйвер с исходниками с официального сайта: http://www.broadcom.com/support/ethernet_nic/netxtreme_server.php
Прочитав исходники, выяснил, что патч уже применен, однако драйвер не подгрузился в ядро из-за того, что на нашел в нем необходимых для своей работы функций. Похоже, драйвер был заточен под Solaris.
Надо попробовать наложить патч и перекомпилить драйвер из подходящих исходников.

72
Hardware / Драйвер для ATI Radeon HD 5650
« : Апрель 06, 2011, 04:25:48 pm »
На ноут с такой видеокартой поставил OpenSolaris 2009.06. На момент выпуска дистриба такой видюхи еще не было и вместо специализированного драйвера (ati или radeonhd) загружается vesa. Разрешение экрана ноута не попадает в список стандартных расширений vesa, поэтому все отображается искаженно. Попробую скомпилировать свежий (17-Mar-2011) драйвер: http://ftp.x.org/pub/individual/driver/xf86-video-ati-6.14.1.tar.bz2

./configure
checking for DRI... configure: error: Package requirements (libdrm >= 2.2 xf86driproto) were not met:

No package 'libdrm' found

Как выяснилось, проблема в том, что версия имеющегося в репозитории libdrm ниже версии 2.2, значит надо компилировать.


скачать http://dri.freedesktop.org/libdrm/libdrm-2.4.24.tar.bz2
распаковать
./configure
make
pfexec make install

test -z "/usr/local/lib" || /usr/gnu/bin/mkdir -p "/usr/local/lib"
 /bin/sh ./libtool   --mode=install /usr/bin/ginstall -c   libdrm.la '/usr/local/lib'
libtool: install: /usr/bin/ginstall -c .libs/libdrm.so.2.4.0 /usr/local/lib/libdrm.so.2.4.0
libtool: install: (cd /usr/local/lib && { ln -s -f libdrm.so.2.4.0 libdrm.so.2 || { rm -f libdrm.so.2 && ln -s libdrm.so.2.4.0 libdrm.so.2; }; })
libtool: install: (cd /usr/local/lib && { ln -s -f libdrm.so.2.4.0 libdrm.so || { rm -f libdrm.so && ln -s libdrm.so.2.4.0 libdrm.so; }; })
libtool: install: chmod +x /usr/local/lib/libdrm.so.2.4.0
libtool: install: /usr/bin/ginstall -c .libs/libdrm.lai /usr/local/lib/libdrm.la
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/lib
----------------------------------------------------------------------
test -z "/usr/local/include" || /usr/gnu/bin/mkdir -p "/usr/local/include"
 /usr/bin/ginstall -c -m 644 xf86drm.h xf86drmMode.h '/usr/local/include'
test -z "/usr/local/lib/pkgconfig" || /usr/gnu/bin/mkdir -p "/usr/local/lib/pkgconfig"
 /usr/bin/ginstall -c -m 644 libdrm.pc '/usr/local/lib/pkgconfig'
test -z "/usr/local/lib" || /usr/gnu/bin/mkdir -p "/usr/local/lib"
 /bin/sh ../libtool   --mode=install /usr/bin/ginstall -c   libdrm_intel.la '/usr/local/lib'
libtool: install: warning: relinking `libdrm_intel.la'
libtool: install: (cd /export/home/keremet/compilation/libdrm-2.4.24/intel; /bin/sh /export/home/keremet/compilation/libdrm-2.4.24/libtool  --silent --tag CC --mode=relink gcc -Wall -Wextra -Wsign-compare -Werror-implicit-function-declaration -Wpointer-arith -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wpacked -Wswitch-enum -Wmissing-format-attribute -Wstrict-aliasing=2 -Winit-self -Wdeclaration-after-statement -Wold-style-definition -Wno-unused-parameter -Wno-long-long -Winline -I.. -I../intel -I../include/drm -g -O2 -version-number 1:0:0 -no-undefined -o libdrm_intel.la -rpath /usr/local/lib intel_bufmgr.lo intel_bufmgr_fake.lo intel_bufmgr_gem.lo mm.lo ../libdrm.la )
libtool: install: /usr/bin/ginstall -c .libs/libdrm_intel.so.1.0.0T /usr/local/lib/libdrm_intel.so.1.0.0
libtool: install: (cd /usr/local/lib && { ln -s -f libdrm_intel.so.1.0.0 libdrm_intel.so.1 || { rm -f libdrm_intel.so.1 && ln -s libdrm_intel.so.1.0.0 libdrm_intel.so.1; }; })
libtool: install: (cd /usr/local/lib && { ln -s -f libdrm_intel.so.1.0.0 libdrm_intel.so || { rm -f libdrm_intel.so && ln -s libdrm_intel.so.1.0.0 libdrm_intel.so; }; })
libtool: install: chmod +x /usr/local/lib/libdrm_intel.so.1.0.0
libtool: install: /usr/bin/ginstall -c .libs/libdrm_intel.lai /usr/local/lib/libdrm_intel.la
test -z "/usr/local/include/libdrm" || /usr/gnu/bin/mkdir -p "/usr/local/include/libdrm"
 /usr/bin/ginstall -c -m 644 intel_bufmgr.h '/usr/local/include/libdrm'
test -z "/usr/local/lib/pkgconfig" || /usr/gnu/bin/mkdir -p "/usr/local/lib/pkgconfig"
 /usr/bin/ginstall -c -m 644 libdrm_intel.pc '/usr/local/lib/pkgconfig'
 /bin/sh ../libtool   --mode=install /usr/bin/ginstall -c   libdrm_radeon.la '/usr/local/lib'
libtool: install: warning: relinking `libdrm_radeon.la'
libtool: install: (cd /export/home/keremet/compilation/libdrm-2.4.24/radeon; /bin/sh /export/home/keremet/compilation/libdrm-2.4.24/libtool  --silent --tag CC --mode=relink gcc -Wall -Wextra -Wsign-compare -Werror-implicit-function-declaration -Wpointer-arith -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wpacked -Wswitch-enum -Wmissing-format-attribute -Wstrict-aliasing=2 -Winit-self -Wdeclaration-after-statement -Wold-style-definition -Wno-unused-parameter -Wno-long-long -Winline -I.. -I../radeon -I../include/drm -g -O2 -version-number 1:0:0 -no-undefined -o libdrm_radeon.la -rpath /usr/local/lib radeon_bo_gem.lo radeon_cs_gem.lo radeon_cs_space.lo radeon_bo.lo radeon_cs.lo bof.lo ../libdrm.la )
libtool: install: /usr/bin/ginstall -c .libs/libdrm_radeon.so.1.0.0T /usr/local/lib/libdrm_radeon.so.1.0.0
libtool: install: (cd /usr/local/lib && { ln -s -f libdrm_radeon.so.1.0.0 libdrm_radeon.so.1 || { rm -f libdrm_radeon.so.1 && ln -s libdrm_radeon.so.1.0.0 libdrm_radeon.so.1; }; })
libtool: install: (cd /usr/local/lib && { ln -s -f libdrm_radeon.so.1.0.0 libdrm_radeon.so || { rm -f libdrm_radeon.so && ln -s libdrm_radeon.so.1.0.0 libdrm_radeon.so; }; })
libtool: install: chmod +x /usr/local/lib/libdrm_radeon.so.1.0.0
libtool: install: /usr/bin/ginstall -c .libs/libdrm_radeon.lai /usr/local/lib/libdrm_radeon.la
test -z "/usr/local/include/libdrm" || /usr/gnu/bin/mkdir -p "/usr/local/include/libdrm"
 /usr/bin/ginstall -c -m 644 radeon_bo.h radeon_cs.h radeon_bo_gem.h radeon_cs_gem.h radeon_bo_int.h radeon_cs_int.h '/usr/local/include/libdrm'
test -z "/usr/local/lib/pkgconfig" || /usr/gnu/bin/mkdir -p "/usr/local/lib/pkgconfig"
 /usr/bin/ginstall -c -m 644 libdrm_radeon.pc '/usr/local/lib/pkgconfig'
test -z "/usr/local/include/libdrm" || /usr/gnu/bin/mkdir -p "/usr/local/include/libdrm"
 /usr/bin/ginstall -c -m 644 drm.h drm_mode.h drm_sarea.h i915_drm.h mga_drm.h nouveau_drm.h r128_drm.h radeon_drm.h savage_drm.h sis_drm.h via_drm.h mach64_drm.h '/usr/local/include/libdrm'


PKG_CONFIG_PATH Задается, чтобы указать на скомпилированную версию libdrm.
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/ ./configure
make
pfexec make install

Making install in src
test -z "/usr/local/lib/xorg/modules/drivers" || /usr/gnu/bin/mkdir -p "/usr/local/lib/xorg/modules/drivers"
 /bin/sh ../libtool   --mode=install /usr/bin/ginstall -c   ati_drv.la '/usr/local/lib/xorg/modules/drivers'
libtool: install: /usr/bin/ginstall -c .libs/ati_drv.so /usr/local/lib/xorg/modules/drivers/ati_drv.so
libtool: install: chmod +x /usr/local/lib/xorg/modules/drivers/ati_drv.so
libtool: install: /usr/bin/ginstall -c .libs/ati_drv.lai /usr/local/lib/xorg/modules/drivers/ati_drv.la
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/lib/xorg/modules/drivers
----------------------------------------------------------------------
test -z "/usr/local/lib/xorg/modules/drivers" || /usr/gnu/bin/mkdir -p "/usr/local/lib/xorg/modules/drivers"
 /bin/sh ../libtool   --mode=install /usr/bin/ginstall -c   radeon_drv.la '/usr/local/lib/xorg/modules/drivers'
libtool: install: /usr/bin/ginstall -c .libs/radeon_drv.so /usr/local/lib/xorg/modules/drivers/radeon_drv.so
libtool: install: chmod +x /usr/local/lib/xorg/modules/drivers/radeon_drv.so
libtool: install: /usr/bin/ginstall -c .libs/radeon_drv.lai /usr/local/lib/xorg/modules/drivers/radeon_drv.la
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/lib/xorg/modules/drivers
----------------------------------------------------------------------
test -z "/usr/local/lib/xorg/modules/multimedia" || /usr/gnu/bin/mkdir -p "/usr/local/lib/xorg/modules/multimedia"
 /bin/sh ../libtool   --mode=install /usr/bin/ginstall -c   theatre200_drv.la '/usr/local/lib/xorg/modules/multimedia'
libtool: install: /usr/bin/ginstall -c .libs/theatre200_drv.so /usr/local/lib/xorg/modules/multimedia/theatre200_drv.so
libtool: install: chmod +x /usr/local/lib/xorg/modules/multimedia/theatre200_drv.so
libtool: install: /usr/bin/ginstall -c .libs/theatre200_drv.lai /usr/local/lib/xorg/modules/multimedia/theatre200_drv.la
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/lib/xorg/modules/multimedia
----------------------------------------------------------------------
test -z "/usr/local/lib/xorg/modules/multimedia" || /usr/gnu/bin/mkdir -p "/usr/local/lib/xorg/modules/multimedia"
 /bin/sh ../libtool   --mode=install /usr/bin/ginstall -c   theatre_detect_drv.la '/usr/local/lib/xorg/modules/multimedia'
libtool: install: /usr/bin/ginstall -c .libs/theatre_detect_drv.so /usr/local/lib/xorg/modules/multimedia/theatre_detect_drv.so
libtool: install: chmod +x /usr/local/lib/xorg/modules/multimedia/theatre_detect_drv.so
libtool: install: /usr/bin/ginstall -c .libs/theatre_detect_drv.lai /usr/local/lib/xorg/modules/multimedia/theatre_detect_drv.la
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/lib/xorg/modules/multimedia
----------------------------------------------------------------------
test -z "/usr/local/lib/xorg/modules/multimedia" || /usr/gnu/bin/mkdir -p "/usr/local/lib/xorg/modules/multimedia"
 /bin/sh ../libtool   --mode=install /usr/bin/ginstall -c   theatre_drv.la '/usr/local/lib/xorg/modules/multimedia'
libtool: install: /usr/bin/ginstall -c .libs/theatre_drv.so /usr/local/lib/xorg/modules/multimedia/theatre_drv.so
libtool: install: chmod +x /usr/local/lib/xorg/modules/multimedia/theatre_drv.so
libtool: install: /usr/bin/ginstall -c .libs/theatre_drv.lai /usr/local/lib/xorg/modules/multimedia/theatre_drv.la
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/lib/xorg/modules/multimedia
----------------------------------------------------------------------
test -z "/usr/local/share/man/man7" || /usr/gnu/bin/mkdir -p "/usr/local/share/man/man7"
 /usr/bin/ginstall -c -m 644 ati.7 radeon.7 '/usr/local/share/man/man7'



Получились 32-битные драйвера в каталоге /usr/local/lib/xorg
./modules/drivers/radeon_drv.so
./modules/drivers/ati_drv.so
./modules/multimedia/theatre_detect_drv.so
./modules/multimedia/theatre_drv.so
./modules/multimedia/theatre200_drv.so

Заменил ими имеющиеся в /usr/X11/lib/modules/ файлы с теми же именами. radeon_drv.so зависит от libdrm.so.2. Разместил libdrm.so.2.4.0 в /usr/X11/lib/ и сделал на нее ссылку libdrm.so.2 из /usr/lib

При запуске с 32-битным ядром они работают хорошо, по крайней мере проблема с разрешением решена. Для полного решения вопроса надо скомпилить 64-битные версии (оптимизированные и без отладочной информации):


wget http://dri.freedesktop.org/libdrm/libdrm-2.4.24.tar.bz2
tar xf libdrm-2.4.24.tar.bz2
cd libdrm-2.4.24
CFLAGS="-m64 -O3" ./configure --prefix=/data/solaris/compilation/atiout
make
make install

wget http://ftp.x.org/pub/individual/driver/xf86-video-ati-6.14.1.tar.bz2
tar xf xf86-video-ati-6.14.1.tar.bz2
cd xf86-video-ati-6.14.1
PKG_CONFIG_PATH=/data/solaris/compilation/atiout/lib/pkgconfig/  CFLAGS="-m64 -O3" ./configure --prefix=/data/solaris/compilation/atiout
make
make install

Полученные so разместил аналогично прежним, но в подкаталогах amd64. Разрешение на ноуте установилось адекватное как в 32-ом, так и в 64-битном режимах.

73
OpenSolaris / Компиляция QGIS
« : Апрель 05, 2011, 06:16:43 pm »
Начал компилировать QGIS. Может быть пригодится кому-то, когда доведу до конца.

Скачать исходники версии 1.6: http://www.qgis.org/wiki/Download
Компиляция зависимостей:
    * Qt >= 4.4.0 (4.6.2)
    * Proj >= 4.4.x (4.7.0)
    * GEOS >= 3.0 (3.2.0)
    * Sqlite3 >= 3.0.0
    * GDAL/OGR >= 1.4.x (1.6.3)
    * Qwt >= 5.0 (5.2)

В каталоге с распакованными исходниками
mkdir build
cd build
export LD_LIBRARY_PATH=/opt/qt4/lib/
export PATH=/opt/qt4/bin:$PATH
ccmake ..

В программе выставить значения:
QWT_INCLUDE_DIR        /usr/local/qwt-5.2.1/include                 
QWT_LIBRARY           /usr/local/qwt-5.2.1/lib

75
Существуют такие приложения, как например skype и некоторые фильтры печати, у которых закрыты исходники, но свободно доступны бинарники под Linux. Хотелось бы иметь программу которая преобразовывала бы эти приложения так, чтобы они могли запускаться под OpenSolaris без необходимости использования зоны или lxrun. Узнав, что формат исполняемых файлов под обеими ОС одинаковый, решил попробовать поисследовать возможность создания такой программы.
Взял самый простой пример приложения на С:
#include <stdio.h>
int main(){
   printf("HW!\n");
   return 0;
}

Команда gcc -O3 -S генерирует одинаковый ассемблерный код как в случае Linux (в lx-зоне), так и в случае OpenSolaris.
Сгенерированный в lx-зоне объектный файл, поданный на вход gcc в OpenSolaris, позволил без ошибок слинковать нормально работающее приложение. Таким образом, если приложение использует только libc(не исключаю, что допустимо использование и других библиотек), то если из бинарника удастся сформировать объектный файл, на основе которого он создан, то можно получить такое же приложение под OpenSolaris.
Дизассемблировать линуксовое приложение, а потом снова сассемблировать под OpenSolaris - затруднительно в виду сложности создания адекватного дизассемблера.
Зависимости приложения под Linux:
$ldd a.out
        libc.so.6 => /lib/tls/libc.so.6 (0xfe776000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0xfef61000)

$objdump -R a.out

a.out:     file format elf32-i386

DYNAMIC RELOCATION RECORDS
OFFSET   TYPE              VALUE
08049534 R_386_GLOB_DAT    __gmon_start__
0804952c R_386_JUMP_SLOT   puts
08049530 R_386_JUMP_SLOT   __libc_start_main

Под OpenSolaris зависимости совершенно другие. Для упрощения задачи взял еще более простой пример программы.

// Компиляция: as -o hello.o hello.s && ld -s hello.o -lc && ./a.out
.text
.globl _start
_start:
   pushl $message1
   call puts
   popl %ebx
   call exit
   hlt
.data
message1:
   .string "Hello world\0"

Теперь зависимости от функций совпадают.
$objdump -R a.out

a.out:     file format elf32-i386

DYNAMIC RELOCATION RECORDS
OFFSET   TYPE              VALUE
08049330 R_386_JUMP_SLOT   exit
08049334 R_386_JUMP_SLOT   puts

Открыл файл a.out с lx-зоны в ghex2 и внес изменения:
1. Строку /usr/lib/libc.so.1 заменил на /usr/lib/ld.so.1
2. Строку libc.so.6 заменил на libc.so.1
3. Строку GLIBC_2.0 заменил на SUNW_0.8, находящуюся чуть ниже последовательность байт 10 69 69 0D, тоже задающую версию, заменил на 98 28 3d 0a
Просмотр доступных версий в libc: objdump -p /lib/libc.so.1. objdump -p a.out - просмотр используемой приложением версии.


Файл запускается и работает нормально. Это доказывает возможность с относительно небольшими изменениями модифицировать бинарники из Linux для нативного запуска под OpenSolaris.

Страницы: 1 ... 3 4 [5] 6 7 8