понедельник, 18 октября 2010 г.

Выяснить время последней синхронизации portage

Совершенно случайно наткнулся на возможность узнать, когда последний раз происходила синхронизация дерева portage.
# genlop -r

Выведет не только последнюю дату, но и все предыдущие, т.е. лог синхронизаций.
Чтобы сузить диапазон дат, можно воспользоваться опциями --date дважды, т.е. начало и конец диапазона (даты пишутся в формате mm.dd.yy).

суббота, 16 октября 2010 г.

Отключение режима обнаружения TV драйвером NOUVEAU

Перешел на использование open-source драйвера Nouveau для карт Nvidia. Действовал по этой инструкции: http://en.gentoo-wiki.com/wiki/Nouveau. На рабочей машине все прошло замечательно, особо порадовала скорость переключения в текстовую консоль и обратно в иксы. На домашней же обнаружился странный глюк - разрешение текстовой консоли устанавливалось нормально - 1680х1050, но надписи занимали только верхнюю левую часть экрана.

dmesg об этом писал следующее:
[drm] nouveau 0000:01:00.0: 64 MiB GART (aperture)
[drm] nouveau 0000:01:00.0: Allocating FIFO number 0
[drm] nouveau 0000:01:00.0: nouveau_channel_alloc: initialised FIFO 0
[drm] nouveau 0000:01:00.0: Initial CRTC_OWNER is 0
[drm] nouveau 0000:01:00.0: Saving VGA fonts
[drm] nouveau 0000:01:00.0: Detected a DVI-I connector
[drm] nouveau 0000:01:00.0: Detected a VGA connector
[drm] nouveau 0000:01:00.0: Detected a TV connector
[drm] nouveau 0000:01:00.0: Setting dpms mode 3 on vga encoder (output 0)
[drm] nouveau 0000:01:00.0: Setting dpms mode 3 on tmds encoder (output 1)
[drm] nouveau 0000:01:00.0: Setting dpms mode 3 on vga encoder (output 2)
[drm] nouveau 0000:01:00.0: Setting dpms mode 3 on TV encoder (output 3)
[drm] nouveau 0000:01:00.0: Load detected on output B
[drm] nouveau 0000:01:00.0: allocated 1680x1050 fb: 0x49000, bo f7070800
[drm] nouveau 0000:01:00.0: Setting dpms mode 0 on vga encoder (output 2)
[drm] nouveau 0000:01:00.0: Output VGA-1 is running on CRTC 0 using output C
[drm] nouveau 0000:01:00.0: Setting dpms mode 0 on TV encoder (output 3)
[drm] nouveau 0000:01:00.0: Output TV-1 is running on CRTC 1 using output B
Console: switching to colour frame buffer device 90x36


Т.е. драйвер обнаружил подключение по TV-out и установил текстовое разрешение по минимальному устройству - телевизору. Однако физическое обследование видеокарты не показало наличие телевизора. Оно и понятно - телевизора у меня нет вообще. В списках рассылки обнаружил упоминание патча, с помощью которого можно принудительно отключить подключение TV: http://lwn.net/Articles/383198/, а потом и сам патч: http://kerneltrap.org/mailarchive/git-commits-head/2010/4/1/31359, присутствующий в ядре с версии 2.6.34-rc4. Из кода видно, что вводится новый параметр модуля - tv_disable.

Поскольку модуль nouveau у меня вкомпилирован в ядро, то параметры ему передаются через строку инициализации ядра (в моем случае в /boot/grub/menu.lst):
kernel /boot/vmlinuz root=/dev/sda1 nouveau.tv_disable=1

вторник, 5 октября 2010 г.

Удаленное использование Sysrq

В Linux есть специальные комбинации для непосредственного управления ядром. Перечень этих комбинаций (это комбинации Alt, Sysrq и еще одной клавиши) найти легко. Но как передать команду ядру, находясь в удаленной сессии, например по ssh?

Ответ есть в документации к ядру (в файле Documentation/sysrq.txt) - достаточно просто отправить символ нужной клавиши в /proc/sysrq-trigger. Например:
# echo s > /proc/sysrq-trigger
SysRQ : Emergency Sync