LINUX.ORG.RU

Сообщения xstream

 

Как настроить linux, чтобы ноут работал дольше?

Народ, кто-нибудь замарачивался с настройкой/компиляцией ядра и программ для более экономного потребления энергии? Есть Asus 1215B. Производители пишут, что в винде от батареи он работает до 8 часов, по факту же на Arch Linux в среднем держит 4 часа. Понятное дело хотелось бы что-бы он работал дольше. Так вот что для это нужно сделать? Поделитесь, пожалуйста, секретами оптимизации энергопотребления.

xstream
()

Аппаратное декодирование Radeon HD 6320 + VDPAU

НЕ РАБОТАЕТ!

Прочитал новости, что начиная с linux 3.10 в ядро входят открытые драйвера для радеонов с поддержкой UVD. Обновился до 3.10, поставил libvdpau, libva, libva-vdpau-driver, прописал export VDPAU_DRIVER=r600, export LIBVA_DRIVER_NAME=vdpau. Запускаю vainfo, а там:

libva info: VA-API version 0.34.0
libva info: va_getDriverName() returns 0
libva info: User requested driver 'vdpau'
libva info: Trying to open /usr/lib/dri/vdpau_drv_video.so
libva info: Found init function __vaDriverInit_0_33
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.34 (libva 1.2.1)
vainfo: Driver version: Splitted-Desktop Systems VDPAU backend for VA-API - 0.7.4
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            :	VAEntrypointVLD
      VAProfileMPEG2Main              :	VAEntrypointVLD

А где же поддержка H.264 и MPEG-4 ??? Плейеры соответственно тоже не декодируют через видюху.

А ещё в dmesg пишет:

[drm] initializing kernel modesetting (PALM 0x1002:0x9806 0x1043:0x84E3).
[drm] Loading PALM Microcode

хотя вот здесь http://wiki.gentoo.org/wiki/Radeon написано, что для моей видюхи (Radeon HD 6320) он должен загружать прошивку SUMU. Глюк железа или ядра? На других дистрах (ubuntu 13.04, 13.10) тоже пишет PALM.

Кто подскажет, что я делаю не так? У кого-нибудь получилось запустить на радеоне аппаратное декодирование через vdpau?

Дистр: ArchLinux Девайс: Asus EEE PC 1215B

xstream
()

Таймаут при чтении из серийного порта

Всем привет. Помогите, пожалуйста, разобраться с таймаутами при работе с серийным портом (/dev/ttyS0). Устанавливаю я него примерно так:

struct termios tconf;
tcgetattr(fd, &tconf);
tconf.c_cc[VTIME] = timeout / 100;
tcsetattr(fd, TCSANOW, &tconf);
Если параметр timeout меньше 2500 мс, тогда тайумаут работает как надо. Если же это значение выставить выше 2500 мс, тогда он перестает нормально работать и, скажем, при значении в 10 сек, read() может ожидать данных с устройства и 30 и 40 сек, а только потом возвращает полученный байт. Причем байт доступен в устройстве практически моментально. Не знаю чего он там ещё ждёт. В чём может быть проблема? Мне нужны таймауты до 120 с. Сейчас вместо tcsetattr() использую select(), но это костыль.

xstream
()

Установка старого софта на новый линукс (LD_ASSUME_KERNEL)

Собственно, нужно запустить старую софтину, скомпилированную еще под linux-2.4, на новом дистре линукса (желательно Ubuntu 8.04).

Сразу оговорюсь, софтина старая и обновлений у нее нет. Компьютер на котором она должна работать новый и старые дистрибьютивы на нем не запускаются.

Для того чтобы запустить старую прогу на ядре 2.6 раньше делали так:

export LD_ASSUME_KERNEL=4.2.1

но это действует только на ядрах до 2.6.15 включително, однако последнее такое ядро стояло на Ubuntu 6.06 (на Ubuntu 8.04 стоит 2.6.24-16).

Вопрос №1: Можно ли как-нибуть воспользоваться LD_ASSUME_KERNEL на новых ядрах, моложе 2.6.15?

Когда ничего не получилось с LD_ASSUME_KERNEL, решил собрать на Ubuntu 8.04 ванильное ядро linux-2.6.15.7. Ничего не получилось. Ядро скомпилиться скомпилилось, но не запустилось. При создании initrd пишет:

# mkinitramfs -o initrd.img-2.6.15.7 2.6.15.7 W: udev hook script requires at least kernel version 2.6.17 W: not generating requested initramfs for kernel 2.6.15.7

а при запуске пишет:

Kernel panic - not syncing:VFS:Unable to mount root fs on unknown-block(3,4)

Вопрос №2: Как сделать поддержку devfs для этого initrd?

>>>

xstream
()

Запись файлов на usb-flash с ошибками

При копировании файлов на флэшку или с нее, файлы получаются битыми. Картинки, архивы, видео, ничего не открывается после этого. На флэшке файловая система FAT32. Пробывал разные флэшки, проблема со всеми, т.е. получается проблема в ОС. С дисков и из сети файлы копируются вроде нормально (на разделы и с FAT32 и c ext3).

Дистр: Ubuntu 7.10
Ядро то, что было в нем, ничего не пересобирал: 2.6.22-14-generic

Подскажи, в чем может быть проблема???
Я уже боюсь чего-нить на флешке носить :(

>>>

xstream
()

Тормозит мышка

Т.е. не совсем тормозит, а есть задержка между нажатием кнопки на мыши и реакцией на это нажатие. В перемещении курсора задержек нет.
Например, если мне надо перетащить окно, то я нажимаю на заголовок и начинаю тащить, но при этом если я сразу же потащу, то окно может не захватиться. Нужно нажать и подождать с секунду. То же самое с выделением. Если нажать на рабочем столе и сразу же потащить, то выделение начнется не с того места, где я нажал, а чуть дальше.
Как думаете, в чем проблема и как ее решить?

>>>

xstream
()

Python vs. Jython - кто быстрее ?

Решил проверить на сколько Jython медленее Python. И какого же было мое удивление, когда оказалось, что все в точностью да наоборот. Jython в 3 раза (!) БЫСТРЕЕ Python.

Вот резулютаты тесвот:

$ cat > t2p69.py
f = open("t2p69.out", "w", 0)
f.write(str(2**999999))
f.close()

$ time python t2p69.py

real 1m33.730s
user 1m34.110s
sys 0m0.020s

$ time jython t2p69.py

real 0m29.990s
user 0m31.930s
sys 0m1.760s

Система:
python-2.5.1
jython-2.2
jre-6u2
CentOS 3.8
Linux 2.4.21-47.ELsmp #4 SMP Thu Sep 7 14:30:30 MSD 2006 x86_64 x86_64 x86_64 GNU/Linux

Сервер: 8x AMD Dual Core Opteron 875, 2.2 ГГц, 32Gb

P.S.: Понимаю, что тесты не охти, но все-таки хоть что-то они да показывают. Если предложите свои тесты, то с удовольствием проверю на них.

xstream
()

GTK: создание нового окна в новом потоке

Такая проблема:

У меня есть основное окно (main_window). При нажатии в нем на кнопку вызывается новый поток. В свою очередь в какой-то момент (например глабальная переменная становится True) в этом потоке создается новое окно (win2). Так вот, когда это окно содалось оно не обновляется и ни на что не реагирует. И при завершеении потока это окно (win2) уничножается. А мне надо чтобы оно оставалось до тех пор пока я его сам не уничтожу.

Как мне это сделать?

Вот пример программы реазизующей это:

<pre>
#include "stdio.h"
#include "gtk/gtk.h"
#include "windows.h"

void * thread_func(void * data) {
// Создаем новое окно (в потоке)
GtkWidget * win2 = gtk_window_new(GTK_WINDOW_TOPLEVEL);
GtkWidget * lab2 = gtk_label_new("Label");
GtkWidget * btn2 = gtk_button_new_with_label("Button");
GtkWidget * vbox = gtk_vbox_new(FALSE, 0);

gtk_box_pack_start(GTK_BOX(vbox), lab2, TRUE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(vbox), btn2, TRUE, TRUE, 0);
gtk_container_add(GTK_CONTAINER(win2), vbox);
gtk_window_present (win2);

gtk_widget_show_all(win2);

// Делаем цикл, чтобы еще задержаться в потоке
int i;

for (i = 0; i < 10; i++) {
printf(" %d thread helloo\n", i);
Sleep(500);
}
}

void btn1_click() {
DWORD tid;
printf("ctreaed new thread\n\n");
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)thread_func, (LPVOID)NULL, 0, &tid);
}

int main(int argc, char **argv)
{
GtkWidget *main_window;
GtkWidget *btn1;
GtkWidget *lab1;

g_thread_init(NULL);
gdk_threads_init();

gtk_init(&argc, &argv);

// Создаем главное окно
main_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(G_OBJECT(main_window), "destroy",
G_CALLBACK(gtk_main_quit), NULL);

btn1 = gtk_button_new_with_label("Create window in new thread");
// При нажатии на кнопку запускается новые поток
g_signal_connect(G_OBJECT(btn1), "clicked",
G_CALLBACK(btn1_click), NULL);

gtk_container_add(GTK_CONTAINER(main_window), btn1);
gtk_widget_show_all(main_window);

gdk_threads_enter();
gtk_main();
gdk_threads_leave();

return 0;
}
</pre>

xstream
()

Версии

Народ! Подскажите, что обозначают числа в названии версии a.b.c.d.

Например 2.6.16.8

мне кажется, что это расшифровывается так

2 - версия 6 - релиз 16 - не знаю 8 - билд

Исправте меня, если что не так. И если можно дайте коментарии поподробнеею. В каких случаю и какие версии (числа) прибавляются?

xstream
()

Как установать Cairo ?

У меня стоит Gtk+ 2.6, но она не включат в себя Cairo. Я установил Cairo2 1.2, но при компиляции ( gcc clock.c main_clock.c -o main_clock `pkg-config --cflags --libs gtk+-2.0 cairo` ) все равно выдает ошибку:

clock.c: In function `egg_clock_face_expose': clock.c:55: warning: assignment makes pointer from integer without a cast /tmp/ccPzGDVs.o(.text+0x1dc): In function `egg_clock_face_expose': : undefined reference to `gdk_cairo_create' collect2: ld returned 1 exit status

Я так понял что ему нужен GtkCairo. Однако deb пакета я не нашел, а исходники из cvs у меня не захотели ставиться. На команду automake он отвечает:

configure.in: no proper invocation of AM_INIT_AUTOMAKE was found. configure.in: You should verify that configure.in invokes AM_INIT_AUTOMAKE, configure.in: that aclocal.m4 is present in the top-level directory, configure.in: and that aclocal.m4 was recently regenerated (using aclocal). configure.in: required file `./install-sh' not found configure.in: required file `./mkinstalldirs' not found configure.in: required file `./missing' not found Makefile.am: required file `./INSTALL' not found gtkcairo/Makefile.am:1: Libtool library used but `LIBTOOL' is undefined gtkcairo/Makefile.am:1: gtkcairo/Makefile.am:1: The usual way to define `LIBTOOL' is to add `AC_PROG_LIBTOOL' gtkcairo/Makefile.am:1: to `configure.in' and run `aclocal' and `autoconf' again. gtkcairo/Makefile.am: required file `./depcomp' not found /usr/share/automake-1.7/am/depend2.am: am__fastdepCC does not appear in AM_CONDITIONAL /usr/share/automake-1.7/am/depend2.am: AMDEP does not appear in AM_CONDITIONAL /usr/share/automake-1.7/am/depend2.am: am__fastdepCC does not appear in AM_CONDITIONAL /usr/share/automake-1.7/am/depend2.am: AMDEP does not appear in AM_CONDITIONAL

xstream
()

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