LINUX.ORG.RU

Сообщения zaz

 

Перенаправление файловых операцый на удаленную машину

Есть специализированое ПО (ELF бинарник) которое обрабатывает медиа данные. Входные данные читаются из файлов (несколько), результат сохраняется в других файлах (тоже несколько).

Задача - нужно запускать ПО на удаленном сервере с произвольного клиента, при этом нужно чтобы ПО работало на сервере но обрабатывало локальные файлы которые хранятся на клиенте.

В идеале хотелось бы чтобы ПО запускалось с какимто LD_PRELOAD плагином который бы редиректил все файловые операции (open/close/read/write/SEEK) на сетевой сервер (работающий на клиенте). Вот пол дня гуглил - чтото ничего толкового не нагуглил для этого. Ктото встречал чтото похожее ?

 , , ,

zaz
()

LXC производительность сети

Какие у LXC/Docker накладные разсходы на сеть ? Тоесть вот есть у меня приложение которое обрабатывает довольно большой UDP траффик, при этом сама логика (userspace) довольно простая как результат имеем 100% CPU usage но при этом 50%-60% это сетевой стек ядра (system + irq). Если я помещу приложение внутрь LXC конейнера и буду роутить пакеты в между реальными и виртуальными интерфейсами на сколько нагрузка вырастит ?

 , ,

zaz
()

Трейтий монитор

Сегодня присмотрел себе трейтий монитор на рабочую машину, на всякий случай перед покупкой решил протестировать конфигурацию. Был неприятно удевлен, оказывается хотя у моей видео карты (древней 8600 GTS которая на ядре G84 2007 года) 3 выхода (DSUB, HDMI, DVI) одновременно работать могут только два :(. Немного погуглив - оказалось что это весьма глобальная проблема и потдержку более 2х мониторов у Nvidia появилось только у моделей 680 GTX и старше ...

Вобщем вопрос - есть ли на рынке бюджетная + тихая видео карта (желательно NVidia потому как имеется большой негативный опыт использования ATI - хоть и 10-12 летней давности) с которой можно работать на 3+ мониторах ?

 , ,

zaz
()

Flash/HTML 5 видео в отдельном окне.

Давно хотел сделать вывод видео из google chrome в отдельном окне (без рамки, простым оверлеем без всяких MPV на основе превьюшек (thumbnails)).

Решил совместить приятное с полезным и за одно посмотнреть на QML. Такчто можно сказать получился «Hello World» на QML. Решил выложить (может кому пригодится - можно применять не только к браузерам а к любому софту хоть к консоли).

Как пользоватся:

Открываем страницу с нужным видео (youtube, twitch и тд) в отдельном окне браузера и затаскиваем его на виртуальный десктоп «для хлама».
Запускаем «thumb.sh» появляется курсор выбора окна (xwininfo).
Кликаем по окну браузера и ждем запуска основного приложения.
Появляется синий полупрозрачный прямоугольник который нужно расположить точно поверх видео (помогает зажатый Alt + левая / правая кнопка мыши).
После того как оверлей выравнен по видео нажимаем кнопку 'lock' (или дабл клик мыши по оверлею).
Далее распологаем наш фрагмент окна в желаемой позиции монитора (дабл клик переключает между большим и малым размером).

thumb.sh

#!/bin/bash

cd `dirname "$0"`

lines=`xwininfo|tr -d ' ' | tr '":' ' '`

dstVar=""
for line in $lines; do
        if [ ! -z "${dstVar}" ]; then
                eval "${dstVar}=${line}"
                dstVar=""
        fi

        case "${line}" in
                'Windowid') dstVar='id'     ;;
                'Width'   ) dstVar='width'  ;;
                'Height'  ) dstVar='height' ;;
                'Absoluteupper-leftX' ) dstVar='left' ;;
                'Absoluteupper-leftY' ) dstVar='top' ;;

                * ) ;;
        esac
done

exec qml thumb.qml -- ${id} ${left} ${top} ${width} ${height}

thumb.qml

import QtQuick 2.2                                                                                                                                          
import QtQuick.Window 2.2                                                                                                                                   
import QtQuick.Controls 1.4                                                                                                                                 
                                                                                                                                                            
import org.kde.plasma.core 2.0 as PlasmaCore                                                                                                                
                                                                                                                                                             
Window
{
        id: wnd
        visible: true
        width: 320
        height: 160

        title: 'Thumb'

        color: 'blue'
        opacity: 0.5
        flags: Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint

        property var isLocked: false
        property var maxWidth: 0;
        property var minWidth: 0;
        property var isMax: false;

        property var src:
        ({
                x: parseInt(Qt.application.arguments[4]),
                y: parseInt(Qt.application.arguments[5]),
                w: parseInt(Qt.application.arguments[6]),
                h: parseInt(Qt.application.arguments[7])
        })

        property var crop:
        ({
                x: 0,
                y: 0,
                w: parseInt(Qt.application.arguments[6]),
                h: parseInt(Qt.application.arguments[7])
        })

        function lock()
        {
                wnd.opacity     = 1.0;
                wnd.isLocked    = true;
                lockBtn.visible = false;
                thumb.visible   = true;
                wnd.maxWidth    = crop.w;
                wnd.minWidth    = crop.w;

                console.log('Locked !');
        }

        function togleMinMax()
        {
                var nw, nh;

                if( wnd.isMax )
                {
                        nw = wnd.minWidth;
                        wnd.maxWidth = wnd.width;
                        wnd.isMax    = false;
                }
                else
                {
                        nw = wnd.maxWidth;
                        wnd.minWidth = wnd.width;
                        wnd.isMax = true;
                }

                nh = ((nw * crop.h) / crop.w);
                wnd.x -= (nw - wnd.width);
                wnd.y -= (nh - wnd.height);
                wnd.width  = nw;
                wnd.height = nh;
        }

        function fixThumb()
        {
                if( wnd.isLocked )
                {
                        var sf = wnd.width / crop.w;
                        console.log('Scale factor: ' + sf);

                        thumb.x      = -(crop.x * sf);
                        thumb.y      = -(crop.y * sf);
                        thumb.width  = src.w * sf;
                        thumb.height = src.h * sf;
                }
                else
                {
                        crop.x = (wnd.x - src.x);
                        crop.y = (wnd.y - src.y);
                        crop.w = wnd.width;
                        crop.h = wnd.height;

                        thumb.x = - crop.x;
                        thumb.y = - crop.y;
                }
        }

        onXChanged:      { if(! wnd.isLocked) fixThumb(); }
        onYChanged:      { if(! wnd.isLocked) fixThumb(); }
        onHeightChanged: { fixThumb(); }
        onWidthChanged:  { fixThumb(); }

        PlasmaCore.WindowThumbnail {
                id: thumb
                visible: false;

                x: 0
                y: 0
                width:  parseInt(Qt.application.arguments[6])
                height: parseInt(Qt.application.arguments[7])

                winId: parseInt(Qt.application.arguments[3])
        }

        MouseArea
        {
                anchors.fill: parent

                onDoubleClicked:
                {
                        if( wnd.isLocked )
                        {
                                wnd.togleMinMax();
                        }
                        else
                        {
                                wnd.lock();
                        }
                }
        }

        Button
        {
                id: lockBtn

                anchors.top:   parent.top
                anchors.right: parent.right

                text: 'lock'

                onClicked: { wnd.lock(); }
        }
}

PS. На моем KDE 5.6.5 работает, будет ли еще гдето работать - хз

 , , ,

zaz
()

MONO и ASP.Net

Насколько MONO (apache + mod-mono) совместим с ASP.Net ? Я могу написать простенький код (разбор json данных полученых в теле POST запроса, чтение/запись файла, отправка результатов на второй сервер (PUT + json)) который будет работать без модификации и в apche + mod-mono и под виндой на IIS ?

Моно в глаза не видел, на C# и ASP.Net писал (правда мало и давно), нужно сделать демострационный пример для клиентов, а возится с установкой Windows + IIS в виртуалке ради 50 строк на C# охоты нету.

 

zaz
()

3D skype

Жесть конечно, я когда в универе учился то такое только в научной фантастике показывали и это казалось недосягаемой технологией

https://www.youtube.com/watch?v=7d59O6cfaM0

 ,

zaz
()

Oracle command line client

Такой вопрос, есть ли под linux нормальный консольный клиент для подключения к Oracle ? (уровня mysql / psql - ну или хотябы чтоб история была и более мение нормальный вывод строк).

А то мне этот SQLPLUS уже в печенках сидит, а sqldeveloper не всегда есть возможность запустить - да и консоль както по привычней будет ...

 ,

zaz
()

HDMI CEC

Собственно есть ноут с HDMI выходом можно ли както узнать умеет ли он CEC (lspci/lsusb может еще что).

И вообще существуют ли в природе ноутбуки / видио адаптеры / материнки которые из коробки потдерживают HDMI-CEC без дополнительных HDMI-USB адаптеров ?

 ,

zaz
()

Написание/Отладка шейдеров

Есть приложение которое получает по сети кастомный видеопоток (с не стандартным кодеком) и выводит его на экран. Для ускорения процесса отрисовки (в основном маштабирования) прикрутил рендеринг на OpenGL. Есть желание добавить оптимизацию, а именно часть декодера + фильтры перенести с CPU на GPU в шейдеры. Столкнулся с проблемой - очень тяжело дебажится / отлаживатся, может кто посоветовать какойнибудь простенький IDE для ускорения процесса ?

В идеале хотелось бы чтобы в IDE можно было взять любую статическую картинку, загрузить ее в текстуру и отрендерить на прямоугольник (без проектной матрици) с пиксельным шейдером.

 , ,

zaz
()

Laptop энергопотребление и шум

Пришлось сегодня на рабочий годовалый ноут (Lenovo Y50-70 i7-4710HQ@2.50GHz) втулить gentoo (дуалбутом). Ноут и под виндой шумел жутко и грелся как печка, а под линуксом да еще при сборке гетушных пакетов вообще на «взлет пошел», и греется как сковородка. Окозалось что мой CPU хоть и позиционируется как 2.5GHz но при сильной нагрузке он разгоняется аж до 3.5GHz - отсюда шум и разогрев недецкий.

Решил я ноут перевести в более комфортный режим работы, еще года 3-4 назад я для похожей задачи набросал простенький скрипт (cputune), пользуясь случаем его немного окультурил и решил тут выложить - вдруг кому понадобтся, да и кто шел начинает изучать может интересно будет посмотреть.

#!/bin/bash

cpus=(`ls /sys/devices/system/cpu|grep -e 'cpu[0-9]\+'`)
cpu0=${cpus[0]}
cpuN=${#cpus[*]}

min=`cat /sys/devices/system/cpu/${cpu0}/cpufreq/cpuinfo_min_freq`
max=`cat /sys/devices/system/cpu/${cpu0}/cpufreq/cpuinfo_max_freq`

function setGovernor {
        for cpu in ${cpus[*]}; do
                echo "${1}" > "/sys/devices/system/cpu/${cpu}/cpufreq/scaling_governor"
        done
}
function toHZ {
        i=$((${#1} - 1))
        case "${1:$i:1}" in
                'G' ) r=$((${1:0:$i} * 1000000)) ;;
                'M' ) r=$((${1:0:$i} *    1000)) ;;
                *   ) r="${1}" ;;
        esac
        echo -n $r
}

case "${1}" in
        "power" )
                setGovernor "powersave"
        ;;

        "speed" )
                setGovernor "performance"
        ;;

        "max" )
                if [ -z "${2}" ]; then
                        fr=${max}
                else
                        fr=`toHZ ${2}`
                fi
                for cpu in ${cpus[*]}; do
                        echo "${fr}" > "/sys/devices/system/cpu/${cpu}/cpufreq/scaling_max_freq"
                done
        ;;

        "min" )
                if [ -z "${2}" ]; then
                        fr=${min}
                else
                        fr=`toHZ ${2}`
                fi
                for cpu in ${cpus[*]}; do
                        echo "${fr}" > "/sys/devices/system/cpu/${cpu}/cpufreq/scaling_min_freq"
                done
        ;;

        "num" )
                if [ -z "${2}" ]; then
                        n=${cpuN}
                else
                        n=${2}
                fi
                for cpu in ${cpus[*]}; do
                        if [ ${n} -gt 0 ]; then
                                if [ -f "/sys/devices/system/cpu/${cpu}/online" ]; then
                                        echo '1' > "/sys/devices/system/cpu/${cpu}/online"
                                fi
                                ((n --))
                        else
                                echo '0' > "/sys/devices/system/cpu/${cpu}/online"
                        fi
                done
        ;;

        "" )
        ;;

        * )
                echo -n "CAPABILITIES: cpus: ${cpuN}, min freq: ${min}, max freq: ${max}, governors: "
                cat "/sys/devices/system/cpu/${cpu0}/cpufreq/scaling_available_governors"
                echo
        ;;
esac

active=0
for cpu in ${cpus[*]}; do
        if [ -f "/sys/devices/system/cpu/${cpu}/online" ]; then
                st=`cat "/sys/devices/system/cpu/${cpu}/online"`
                if [ "${st}" = "1" ]; then
                        ((active ++))
                fi
        else
                ((active ++))
        fi
done


min=`cat /sys/devices/system/cpu/${cpu0}/cpufreq/scaling_min_freq`
max=`cat /sys/devices/system/cpu/${cpu0}/cpufreq/scaling_max_freq`
echo -n "STATUS: cpus online: ${active}, min freq: ${min}, max freq: ${max}, governor: "
cat "/sys/devices/system/cpu/${cpu0}/cpufreq/scaling_governor"
cat /proc/cpuinfo  | grep 'MHz'

Использование: Посмотреть информацию о CPU:

cputune info

Перевести ЦПУ в энергосберегающий режим:

cputune power

Перевести ЦПУ в «производительный» режим:

cputune speed

Установить верхний предел частоты процесора в 2.5GHz (2500MHz):

cputune max 2500M

Установить нижний предел частоты процессора в 1GHz:

cputune min 1G

Активировать только первые 2 ядра CPU (в моем случае это будет 1 едро + второе виртуальное - гиптрединг):

cputune num 2

Если хотите сбросить какойто параметр в значение по умолчанию - просто не опускает значение. Например активировать все ядра:

cputune num

Убрать верхнее ограничение по частоте:

cputune max

В принципе все довольно просто и очень эффективно получилось, для стандартной работы я делаю:

cputune max 2500M

Ноут работает довольно тихо и быстро.

Если нужно долго работать от батареи то:

cputune max 1G
cputune num 2

Шума нету, не греется, время автономной работы возрастает в разы

 , ,

zaz
()

QWidget aspect ratio

Появилась необходимость собрать демку (linux + X11) для библиотеки которую я разрабатываю. Решил собрать GUI на Qt (не писал под Qt4 уже лет 5 наверное) - в демке есть одно окошко которое отрисовывает графику (вывожу ARGB буффер через QImage).

Пользователь может изменять размер окна вывода (ресайз с минимальным и максимальным размером окна).

Проблема: Как можно в Qt (для X11) установить фиксированое соотношение ширины и высоты виджета ? (например 3:4, 6:10, 1:1, 1:2 и тд) Пробовал через кастомный layout, через перекрытие resizeEvent, перекрытие heightForWidth - ничего не работает (по крайней мере у меня).

Есть у кого рабочий пример ? Или пример как вызвать libX11 вызов для QtWidget (чтобы установит X11 size hint в которых есть aspect ratio) ?

 ,

zaz
()

RAM DD

Существует ли сабж? Суть идеи в чем - на рынке есть довольно много дешовых чипов памяти (RAM) которые не сильно востребованы в виду их низкой производительности. Возникает идея почему бы не сделать сборку на 32G - 64G и прикрутить к ней SATA контроллер. В результате получим чтото типа очень быстрого и надеюсь очень дешового винчестера данные на котором будут обнулятся при каждом выключении питания.

Основная область применения - SWAP + /tmp, /home/*/tmp + всякие tmp разделы для различных СУБД которые переодически создают гигобайты временных файлов при обработке сложных запросов. В принципе для таких целей можно использовать SDD но ожидается что сабж будет более дешовым, более быстрым и более долговечным (RAM чипы не имеют лимита на ко-во перезаписей).

 

zaz
()

«Hello world» глючит

Вот решил накропать Hello/bye world на Ц. Почитал ман по sleep

sleep() makes the calling thread sleep until seconds seconds have elapsed or a signal arrives which is not ignored.

И в соотвецтвии с маном сгенерил код который даже компилится (у меня у вас может и нет):

#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
#include <sys/types.h>
#include <signal.h>

time_t startTime;
void dbg(const char *msg)
{
        printf("[%03i 0x%08x] %s\n", (int)(time(NULL) - startTime), (int)(pthread_self()), msg);
}

void* thread2(void *p)
{
        dbg("Sleep in TH2");
        sleep(20);

        return NULL;
}

void onSigAlarm(int sigNum)
{
        dbg("Sig alaram received");
}

int main(int argc, char* argv[])
{
        pthread_t th2;

        startTime = time(NULL);
        dbg("Hello World");

        signal(SIGALRM, onSigAlarm);

        pthread_create(&th2, NULL, thread2, NULL);
        sleep(1);

        kill(getpid(), SIGALRM);

        dbg("Wait for TH2 ...");
        pthread_join(th2, NULL);

        dbg("bye!");
        return 0;
}
Но проблема в том что строчка
kill(getpid(), SIGALRM);
Нифига не обрывает sleep во втором потоке.
[000 0x9f723700] Hello World
[000 0x9ef81700] Sleep in TH2
[001 0x9f723700] Sig alaram received
[001 0x9f723700] Wait for TH2 ...
[020 0x9f723700] bye!

С другой стороны «Hello/Bye world V2.0.0» работает так как написано в мане.

#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
#include <sys/types.h>
#include <signal.h>

time_t startTime;
void dbg(const char *msg)
{
        printf("[%03i 0x%08x] %s\n", (int)(time(NULL) - startTime), (int)(pthread_self()), msg);
}

void* thread2(void *p)
{
        dbg("Hello from TH2");
        sleep(1);

        dbg("Sending SIGALRM ...");
        kill(getpid(), SIGALRM);

        return NULL;
}

void onSigAlarm(int sigNum)
{
        dbg("Sig alaram received");
}

int main(int argc, char* argv[])
{
        pthread_t th2;

        startTime = time(NULL);
        dbg("Hello World");

        signal(SIGALRM, onSigAlarm);

        pthread_create(&th2, NULL, thread2, NULL);

        dbg("Sleep in TH1");
        sleep(20);

        dbg("Wait for TH2 ...");
        pthread_join(th2, NULL);

        dbg("bye!");
        return 0;
}
[000 0xe6fa6700] Hello World
[000 0xe6fa6700] Sleep in TH1
[000 0xe6804700] Hello from TH2
[001 0xe6804700] Sending SIGALRM ...
[001 0xe6fa6700] Sig alaram received
[001 0xe6fa6700] Wait for TH2 ...
[001 0xe6fa6700] bye!

Поскольку гуглить было жутко влом, я в продакшен проекте поменял sleep на conditional variable (соотвецтвенно kill сменил на нотифай) - но вопрос остался открытым как рулить sleep через SIGALARM для не основного потока ?

 

zaz
()

Как дальше жить ? Или куда идет GCC(C)

Недавно занимался портированием рабочей системы на новый дистр (с целью тестирование и подготовкой будущего возможного апдейта продакшена). Столкнулся с тем что одна из используемых опенсорсных либ (либа уже года 3 как не развивается) не работает при сборке новым GCC с оптимизацией. Проковырялся целый день нашел в чем проблема - синтезировал простенький тест проверил в старых GCC + CLANG все ок, при сборке новым GCC (4.7 +) с -O2 не работает (c -O0 работает). Отписался GCC говорят и не должно работать так как GCC не потдерживает более язык С а работает только с ISO C - а с точки зрения стандарта ISO С код не рабочий. Вот интересно мнение общественности нужна ли потдержка компилятором такого кода (конкретно метода searchDict2):

#include <stdio.h>

struct kv_s
{
        int k;
        int v;
};
typedef struct kv_s kv_t;

struct dict_s
{
        kv_t kv1[1];
        kv_t kv2[1];
        kv_t kv3[1];
        kv_t kv4[1];
        kv_t kv5[1];
        kv_t kv6[1];
        kv_t kv7[1];
        kv_t kv8[1];
};
typedef struct dict_s dict_t;

void initDict(dict_t *dict)
{
        dict->kv1[0].k =  1;
        dict->kv1[0].v = -1;

        dict->kv2[0].k =  2;
        dict->kv2[0].v = -2;

        dict->kv3[0].k =  3;
        dict->kv3[0].v = -3;

        dict->kv4[0].k =  4;
        dict->kv4[0].v = -4;

        dict->kv5[0].k =  5;
        dict->kv5[0].v = -5;

        dict->kv6[0].k =  6;
        dict->kv6[0].v = -6;

        dict->kv7[0].k =  7;
        dict->kv7[0].v = -7;

        dict->kv8[0].k =  8;
        dict->kv8[0].v = -8;
}

int searchDict1(dict_t *dict, int key)
{
        int i;
        kv_t *kvs = dict->kv1;
        for(i=0; i<=6; i++)
        {
                if(key == kvs[i].k)
                {
                        return kvs[i].v;
                }
        }

        return 0;
}


int searchDict2(dict_t *dict, int key)
{
        int i;
        for(i=0; i<=6; i++)
        {
                if(key == dict->kv1[i].k)
                {
                        return dict->kv1[i].v;
                }
        }

        return 0;
}

int main(int argc, const char* argv[])
{
        dict_t dict;
        int res;

        initDict( &dict );

        res = searchDict1(&dict, 4);
        printf("Found1 %i\n", res);

        res = searchDict2(&dict, 4);
        printf("Found2 %i\n", res);

        return 0;
}

$ gcc test.c -O0 -o ./test-O0 && ./test-O0
Found1 -4
Found2 -4

$ gcc test.c -O2 -o ./test-O2 && ./test-O2
Found1 -4
Bus error

$ gcc test.c -O2 -fno-aggressive-loop-optimizations -o ./test-O2-nalo && ./test-O2-nalo
Found1 -4
Found2 -1

 ,

zaz
()

KDE 3.5.6

Hi ALL.
Вот 16 января в GennToo появился сабж,
http://packages.gentoo.org/packages/?category=kde-base;name=kdelibs
хотя на KDE.org упорно молчат.

Уже не первый раз замечено что в портах gentoo новая версия KDE появляется раньше официального релиза - может кто знает в чем причина ?

zaz
()

IPTables + Skype

Всем привет, проблема:
Есть локалка + роутер под линухами для выхода в инет,
По умолчанию все закрыто (и исходящий трафик и входящий)
+ открыт выход на пару корпаротивных серверо, почта и т.д.

Еще ко всему этому нужно открыть народу skype, вопорос как ?

Я посмотрел у Skype отдельно взятой сетки нету, сервера раскиданы где попало, порты тоже непонятные. Узать всякие level7 неохото - потому как геморой (ими еще удобно отсекать трафик а вот наобарот разрешать ...).

Может кто сталкивался с похожим ?
На мой взгляд оптимальный вариант достать список серверов (желательно регулярно обновляемый).

zaz
()

C++ IDE

Ктонибудь может посоветовать нормальный C++ IDE для линукса ?
Что мне нужно:
1. Нормальный редактор кода с подсветкой и форматированием.
2. Нормальный автокомплит (особенно по шаблонам и неймспейсам).
3. Возможность настраивать систему каталогов в проекте так как мне нужно, а не так как хочет IDE. Основная мысль в том что исходники лежат отдельно разбитые на include и src, все для сборки (Makefile + скрипты) отдельно, ресурсы отдельно, ПРОЕКТНЫЕ ФАЙЛЫ IDE отдельно.
4. Использовать свою систему сборки (custom build command), с нормальным парсером сообщений от gcc.

Debuger, Profiller etc - не нужен вообще потому как нужно редко, и есть нормальные внешние.

До недавнего времени жил на VSE, в принципе более мение все было нормально только денег много хотят, а вот блин недавно на свою голову обновился до версии 11.0.1 теперь после каждой копиляции VSE виснит мертвым грузом - откат&#1110;ваться назад тоже вроде как не хочится, вообщем грустно все &#1108;то :(

zaz
()

Realtime backup

Есть севре, на нем крутится куча софта (apache, exim, mysql, postgresql ....), также куча пользователей которы постоянно чтото делают (с почтай файлами базой и тд.) вообщем сервер живет висьма динамично, и данные на винтах меняются постоянно.
Нужно подгодтовить бекап сервер чтоб вслучае чего (например падения бетонной плиты на основной сервер) очень быстро востановить рабочую систему С АКТУАЛЬНЫМИ данными.
Пробывал искать решения для репликации файловых систем (как для БД) но пока ничего не нашел :(
У кого нибудь мысли, советы есть ? А то я начинаю склонятся к мысли что придется писать с 0 самому :(

zaz
()

PCI-E

Сегодня попробовал поднять OpenGL на PCI-E видеокарте и ниче не получилось :(
Пишет: Failed to initialize the GLX module; please check in your X
С AGP раньше никаких проблем небыло :(.

Может кто подскажет хорошую доку по теор части (начиная с компиляния ядра) нужно ли включать DRM в ядре, AGPGART, PCI-E и тд.

# lspci
00:00.0 Memory controller: nVidia Corporation CK804 Memory Controller (rev a3)
00:01.0 ISA bridge: nVidia Corporation CK804 ISA Bridge (rev a3)
00:01.1 SMBus: nVidia Corporation CK804 SMBus (rev a2)
00:02.0 USB Controller: nVidia Corporation CK804 USB Controller (rev a2)
00:02.1 USB Controller: nVidia Corporation CK804 USB Controller (rev a3)
00:04.0 Multimedia audio controller: nVidia Corporation CK804 AC'97 Audio Controller (rev a2)
00:06.0 IDE interface: nVidia Corporation CK804 IDE (rev f2)
00:07.0 IDE interface: nVidia Corporation CK804 Serial ATA Controller (rev f3)
00:08.0 IDE interface: nVidia Corporation CK804 Serial ATA Controller (rev f3)
00:09.0 PCI bridge: nVidia Corporation CK804 PCI Bridge (rev a2)
00:0a.0 Bridge: nVidia Corporation CK804 Ethernet Controller (rev a3)
00:0b.0 PCI bridge: nVidia Corporation CK804 PCIE Bridge (rev a3)
00:0c.0 PCI bridge: nVidia Corporation CK804 PCIE Bridge (rev a3)
00:0d.0 PCI bridge: nVidia Corporation CK804 PCIE Bridge (rev a3)
00:0e.0 PCI bridge: nVidia Corporation CK804 PCIE Bridge (rev a3)
00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration
00:18.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map
00:18.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller
00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
01:00.0 VGA compatible controller: nVidia Corporation GeForce 6200 TurboCache(TM) (rev a1)

# uname -a
Linux moon.od 2.6.16.11
(gentoo)

zaz
()

А у нас такое есть ?

>>> Downloading http://distfiles.gentoo.org/distfiles/linux-2.6.11.tar.bz2
--18:37:48-- http://distfiles.gentoo.org/distfiles/linux-2.6.11.tar.bz2
=> `/usr/portage/distfiles/linux-2.6.11.tar.bz2'
Resolving distfiles.gentoo.org... 216.165.129.135, 156.56.247.195, 140.211.166.134
Connecting to distfiles.gentoo.org[216.165.129.135]:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 37,075,679 [application/x-tar]

100%[=========================================================================&g t;] 37,075,679 1.70M/s ETA 00:00

18:38:15 (1.68 MB/s) - `/usr/portage/distfiles/linux-2.6.11.tar.bz2' saved [37075679/37075679]

А возможно ли такое в России, Украине ... ?

zaz
()

RSS подписка на новые темы