Показаны сообщения с ярлыком Calculate. Показать все сообщения
Показаны сообщения с ярлыком Calculate. Показать все сообщения

воскресенье, 6 июля 2014 г.

Локальный оверлей

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

Для создания локального оверлея нам для начала нужен доступ к исходникам необходимой программы и ebuild файл. Ebuild файл представляет собой инструкции для компилятора и при должном упорстве доступен для написания сознательному линуксоиду. Но скорее всего кто-нибоудь поделится ebuild'ом. И здесь будет рассмотрен случай когда у вас есть ebuild файл для нужного приложения. Написани такого файла самостоятельно - это тема для отдельной заметки.

Для начала определимся с местом нашего оверлея. Пусть это будет /usr/local/overlay/. Создадим необходимые каталоги для служебной информации:

root # mkdir -p /usr/local/portage/{metadata,profiles}

заполним их информацией:

root # echo 'tolstiyman' > /usr/local/portage/profiles/repo_name
root # echo 'masters = gentoo' > /usr/local/portage/metadata/layout.conf

здесь tolstiyman - это имя нашего репозитория.

Чтобы наш оверлей имел приоритет перед всеми остальными нужно изменить переменную PORTDIR_OVERLAY в нашем файле make.conf. Для этого просто выполним команду:

root # echo 'PORTDIR_OVERLAY="/usr/local/portage ${PORTDIR_OVERLAY}"' >> /etc/make.conf

Допустим нам нужно установить программу steam-launcher-1.0.0.47 из категории games-util и у нас есть для этого файл steam-launcher-1.0.0.47.ebuild, который лежит в каталоге /root. Проделаем следующее:

root # mkdir -p /usr/local/portage/games-util/steam-launcher
root # cp /root/steam-launcher-1.0.0.47.ebuild /usr/local/portage/games-util/steam-launcher/steam-launcher-1.0.0.47.ebuild
root # pushd /usr/local/portage/games-util/steam-launcher

Пару слов о команде pushd. Она сохраняет имя текущего каталога для команды popd и переходит в другой каталог. Вобщем шаг не обязательный и позволяет после нужных нам манипуляций вернуться в исходный каталог одной командой (popd).

root # repoman manifest

Утилита repoman предназначена для контроля качества репозитариев ебилдов. В даноом случае она генерирует manifest файл. Более подробно об этой утилите на русском языке можно узнать здесь или здесь.

root # popd

Изменяем права доступа к каталогу с оверлеем.

root # chown -R portage:portage /usr/local/portage

Теперь можно установить пакет

root # emerge -a games-util/steam-launcher

Первоисточник на gentoo-wiki

воскресенье, 5 января 2014 г.

Про оверлеи

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

Оверлеи - это либо репозитории совместимых с Gentoo дистрибутивов, либо набор пакетов, поддерживаемых хорошим человеком, которые отсутствуют в основном дереве.

Вообще-то можно создать каталог для стороннего оверлея и вручную копировать туда ebuild-ы, поддерживая необходимую иерархию каталогов, но есть способ намного проще. Это команда layman. В Calculate она установлена по умолчанию, если же ее нет, то устанавливаем:

root # emerge app-portage/layman

Прописываем в /etc/make.conf строку (адрес можно подсмотреть в /etc/layman/layman.cfg):
File /etc/make.conf
source /var/lib/layman/make.conf
Теперь у нас есть мегапростой и мегаудобный способ для подключения сторонних репозиториев. Несколько наиболее употребительных примеров использования:
root # layman -L - выводит список доступных оверлеев (некоторые, помеченные красной звездочкой, недоступны для использования - обычно из-за неустановленой системы контроля версий, например subversion или mercurial);
root # layman -a rep_name - подключает оверлей rep_name;
root # layman -d rep_name - удаляет оверлей rep_name;
root # layman -l - выводит список подключенных оверлеев;
root # layman -S - обновляет все подключенные оверлеи

И еще одна полезная вещь - поиск по сторонним оверлеям. Для этого есть специальный сайт - gpo.zugaina.org.

воскресенье, 8 декабря 2013 г.

Автоматическая загрузка модулей ядра

После установки VirtualBox, столкнулся с проблемой запуска виртуальной машины. При запуске ВМ ругалась на незагруженный модуль ядра vboxdrv. Можно, конечно, загрузить модуль и вручную:

# modprobe vboxdrv

Но каждый раз делать так ручками, оказывается, лениво, да и модуль мониторинга температуры тоже автоматом не подключался. Поэтому встал вопрос: а как подгружать модули ядра при загрузке системы?

А нужно всего лишь отредактировать файл /etc/conf.d/modules

# nano /etc/conf.d/modules

и дописать в переменную modules требуемые модули ядра (vboxdrv и it87 в моем случае)

modules="vboxdrv it87"

вторник, 10 сентября 2013 г.

Рецепт решения ошибки компиляции ядра из-за bfq

При попытке установить очередное ядро (версии 3.10.9), компиляция прервалась с ошибкой:

make[1]: *** Нет правила для сборки цели `block/bfq-iosched.o', требуемой для `block/built-in.o'.  Останов.
make: *** [block] Ошибка 2


Решение нашлось довольно быстро и оказалось довольно простым. Эти самые правила для сборки находились не там, где должны быть. Поэтому переходим в каталог с исходниками ядра:

# cd /usr/src/linux-3.10.9-calculate/

И уже оттуда копируем нужные файлы в нужное место:

# cp b/block/bfq* block/

Пробуем компилировать ядро - все в порядке, по крайней мере с bfq.

вторник, 23 июля 2013 г.

Заметки о weechat

Weechat - консольный irc-клиент для Linux, BSD, MacOS. Удобный, настраиваемый,мультипротокольный, поддерживает модули и скриптовые расширения на нескольких языках. Установка в Gentoo-подобных дистрибутивах производится командой:
# emerge net-irc/weechat

Запуск клиента производится командой:

$ weechat-curses

В дистрибутиве Calculate Linux клиент weechat идет преднастроенным на соединение с каналом #calculate-ru на сервере freenode. И при запуске weechat автоматически подключается к этому каналу. При подключении к каналу irc вы можете общаться в чате, но не можете видеть ответы на ввод управляющих команд. Для этого нужно переключиться на другой буфер(в моем случае alt+1), с помощью хоткеев alt+left/right_arrows либо F5/F6 на предыдущий/следующий буфер или с помощью сочетания alt+N, где N - номер буфера.

Что же такое буфер? Буфер - это компонент, содержащий данные, которые выводятся на экран. Обычно, переключение между буферами означает переключение между каналами. Получить список буферов можно командой /buffer. В свою очередь окно выводит содержимое буфера на экран. По умолчанию у вас будет одно окно. Получить список окон можно командой /window. Окна можно разделять: /window splith - по горизонтали; /window splitv - по вертикали - таким образом вы сможете в одном окне терминала видеть несколько чатов. Делить окна можно сколько угодно раз. Переключаться между разбитыми окнами можно или клавишами F7/F8 или командами /window up, /window down. Склеить два окна в одно можно командой /window merge. Подробнее - /help window.

Справку по всем командам можно получить с помощью команды /help. Например:
    /help set - справка по настройкам
    /help buffer - справка по работе с буферами
    /help filter - использование фильтров
   
Настройка weechat производится путем правки конфигов в папке ~/.weechat. Также можно все настройки делать из самого weechat с помощью команды /set. Возможны также регулярные выражения. Например, чтобы получить список всех настроек irc, пишем:

/set irc.*

и получаем простыню в моем случае со 144 опциями. Все настройки weechat сохраняются при выходе. Или можно использовать команду /save для немедленного сохранения. Если же вы редактируете конфигурационные файлы, то применить настройки можно командой /reload.

Добавить сервер можно командой /server. Например так

/server add oftc irc.oftc.net/6667

Подробнее в справке - /help server.

Подключиться к серверу можно командой /connect:

/connect oftc

Зайти на канал можно с помощью команды /join:

/join #calculate-ru

Выйти из текущего канала:

/leave

Установить статус away(отсутствия):

/away сообщение

Отправить личное сообщение:

/msg ник сообщение

Выход из программы:

/exit

У weechat много хоткеев. Вот наиболее употребительные из них:
    PageUp - скролл вверх
    PageDown - скролл вниз
    Alt-стрелки(или F5/F6) - навигация между буферами
    F7/F8 - навигация между окнами (если окна разбиты)
    F9/F10 - прокрутка топика
    F11/F12 - прокрутка списка пользователей
    alt+a - перейти в "активный" буфер
    alt+r - удалить все из командной строки
    alt+b - перейти на слово назад
    alt+f - перейти на слово вперед
    alt+u - перейти к непрочитанному сообщению
    ctrl+y - вставить текст из буфера обмена
    ctrl+r - поиск
    tab - завершить текст в строке ввода (как в командной оболочке)
   
Также можно назначить свои клавиши с помощью команды /key. Для поиска клавишных кодов можно воспользоваться комбинацией meta+k(alt+k).На пример, что бы назначить на meta-y (alt-y) команду /buffer close:

/key bind (press meta-k) (press meta-y) /buffer close

Команда должна выглядеть так:

/key bind meta-y /buffer close

Что бы удалить:

/key unbind meta-y

Хотелось бы еще сказать пару слов про фильтры. По умолчанию в чате вы видите все служебные сообщения (о входе и выходе пользователей в/из чата). Отключить отображение этих сообщений можно одной строкой, создав фильтр:
   
/filter add jpk * irc_join,irc_joined,irc_part,irc_quit *

соответственно будут отключены сообщения join, joined, part, quit. Подробнее о фильтрах - /help filter

воскресенье, 31 марта 2013 г.

Производительность fglrx

После обновления проприетарных драйверов для карточек AMD fglrx в KDE перестали работать эффекты на движке OpenGL. Установка движка XRender решала проблему лишь частично. Логика подсказывала, что решение существует и оно было найдено.

Решение оказалось довольно простым. Нужно было сгенерировать конфигурационный файл специальной утилитой aticonfig:

# /opt/bin/aticonfig --initial --input=/etc/X11/xorg.conf

Утилита сделает резервную копию старого /etc/X11/xorg.conf и создаст новый для использования с драйвером fglrx. Путь к утилите нужно указывать полностью, так как у вас вряд ли прописан путь /opt/bin/, как каталог для поиска исполняемых файлов.

Еще было обнаружено, что при запуске утилиты glxinfo количество fps не превышало 60. Проблема заключалась в вертикльной синхронизации, которая ограничивает количество кадров величиной равной частоте обновления монитора.

Запускаем Catalyst Control Center, переходим в раздел 3D --> Дополнительные настройки. Ползунок под названием "Ждать вертикального обновления" передвинуть в крайнее положение "Производительность".

Теперь при запуске glxinfo наблюдается fps порядка 2000. Это несколько бодрит.

четверг, 21 марта 2013 г.

Настройка make.conf

В  Gentoo-like дистрибутивах настройки для всех собираемых программ указаны в файле /etc/make.conf. Здесь указаны глобальные флаги компиляции (уровень оптимизации, процессор, набор инструкций процессора, размер кэша и еще всякое), опции для пакетного менеджера, USE-флаги (расширяют или уменьшают функциональность программ), доступные локализации, архитектура ну и еще немного по мелочи.

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

Содержимое моего /etc/make.conf выглядит приблизительно так:

ACCEPT_LICENSE="*"
source /var/lib/layman/make.conf
CFLAGS="-O2 -march=native -pipe -ffast-math"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j3 -s"
EMERGE_DEFAULT_OPTS="--jobs=2 --load-average=5"
LINGUAS="en ru ru_RU"
USE="-cli -libnotify -gimp -ipod -bluetooth -wifi -cups mmx sse sse2 sse3 3dnow 3dnowext mmxext"
VIDEO_CARDS="vesa nouveau fglrx radeon"
FEATURES="ccache"
CCACHE_DIR="/var/tmp/ccache"
CCACHE_SIZE="3G"
PORTAGE_NICENESS="15"


Строка ACCEPT_LICENSE="*" показывает список допустимых лицензий. Здесь звездочка(*) указывает что допустимы любые лицензии - вероятно, наиболее правильный выбор, если вы не заморачиваетесь правильностью свободы софта.

Строку source /var/lib/layman/make.conf не нужно трогать, оставьте как есть.

Следующие две строки задают настройки компиляции программ, использующих компилятор gcc:

CFLAGS="-O2 -march=native -pipe -ffast-math"
CXXFLAGS="${CFLAGS}"


Первый параметр указывает уровень оптимизации программы. Всего таких уровней существует 5.

-O0    оптимизация отключена

-O(-O1)    включает оптимизацию. Компилятор пытается уменьшить размер кода и ускорить работу программы (увеличивается время компиляции).
Активируются следующие флаги (могут использоваться и другие специфичные флаги): -fauto-inc-dec -fcprop-registers -fdce -fdefer-pop -fdelayed-branch -fdse -fguess-branch-probability -fif-conversion2 -fif-conversion -finline-small-functions -fipa-pure-const -fipa-reference -fmerge-constants -fsplit-wide-types -ftree-builtin-call-dce -ftree-ccp -ftree-ch -ftree-copyrename -ftree-dce -ftree-dominator-opts -ftree-dse -ftree-fre -ftree-sra -ftree-ter -funit-at-a-time
-O2    следующий уровень оптимизации. GCC выполняет почти все поддерживемые оптимизации (кроме ускорения выполнения за счет увеличения кода). Не выполняется раскрутка циклов и подстановка функций. Еще больше увеличивается время компиляции и эффективность кода
Активируются все флаги уровня -O1, а также следующие: -fthread-jumps -falign-functions -falign-jumps -falign-loops -falign-labels -fcaller-saves -fcrossjumping -fcse-follow-jumps -fcse-skip-blocks -fdelete-null-pointer-checks -fexpensive-optimizations -fgcse -fgcse-lm -findirect-inlining -foptimize-sibling-calls -fpeephole2 -fregmove -freorder-blocks -freorder-functions -frerun-cse-after-loop -fsched-interblock -fsched-spec -fschedule-insns -fschedule-insns2 -fstrict-aliasing -fstrict-overflow -ftree-switch-conversion -ftree-pre -ftree-vrp

-O3    максимальный уровень оптимизации. Еще немного увеличивает время компиляции и немного повышает эффективность кода, но может быть и обратный эффект - производительность программы может упасть.
Активируются все флаги уровня -O2, а также следующие: -finline-functions -funswitch-loops -fpredictive-commoning -fgcse-after-reload -ftree-vectorize

-Os    оптимизация по размеру. Компилятор пытается уменьшить размер кода. Активируются в основном те флаги из -O2, которые не увеличивают размер выходного файла.
Отключаются следующие флаги: -falign-functions -falign-jumps -falign-loops -falign-labels -freorder-blocks -freorder-blocks-and-partition -fprefetch-loop-arrays -ftree-vect-loop-version

-Ofast    еще один уровень оптимизации, добавленный в gcc >= 4.6. Как следует из названия, служит для ускорения работы программ.
Активируются все флаги из -O3, а также флаг -ffast-math.

Флаг -ffast-math разрешает компилятору нарушать некоторые ANSI или IEEE правила и/или спецификации в интересах оптимизации кода по скорости выполнения (например, предполагать что параметры функции sqrt - неотрицательные числа). Следует учитывать, что некоторые пакеты могут с этой опцией не собраться.

Флаг -march позволяет оптимизировать код под определенный процессор. Значение флага native предписывает компилятору автоматически определить семейство процессоров - на данном этапе, вероятно, наиболее разумный выбор. Здесь можно указать семейство явно, а можно испльзуя еще десяток-другой флагов вручную настроить процессор более тонко (размер кэшей, наборы инструкций и т. п.), но это потребует на уровень более глубокого погружения в изучение опций компилятора.

Флаг -pipe заставляет компилятор передавать промежуточные данные через конвеер в оперативной памяти (разгружает HDD). Вобщем, нужна почти всегда.

Есть в указании флагов компиляции и свои правила:
    - если флаги противоречат друг другу, то силу имеет флаг указанный последним;
    - опции, начинающиеся с -f, -m, -W можно отключить, добавив префикс no- (например, если есть флаг -f(опция), то отключить его можно так -fno-(опция)).

Строка MAKEOPTS="-j3 -s" задает опции команды make:
    -j3 - задает количество запускаемых копий make, рекомендуемое значение количество_процессоров(ядер, потоков)+1 или удвоенное_количество_процессоров(ядер, потоков)+1;
    -s - уменьшает количество информации, выводимой make - немного ускоряет сборку.

Строка EMERGE_DEFAULT_OPTS="--jobs=2 --load-average=8" задает опции для менеджера пакетов:
    --jobs=2 - количество одновременно собираемых пакетов, ведь часто встречаются пакеты, которые собираются в один поток (вероятно, должен равняться количеству процессоров);
    --load-average=5 - число блокирующих процессов в очереди на исполнение (блокирующий процесс - процесс, ожидающий ресурсов (процессор, дисковая подсистема ввода/вывода, сеть) для продолжения работы; соответственно параметр - это максимальное значение при котором emerge будет запускать дополнительные процессы. Параметр не до конца познан - находится в процессе познания. Система может виснуть при 3 и нормально/удовлетворительно работать при 8.
   
Строка LINGUAS="en ru ru_RU" понятна и описывает доступные локализации. ru_RU нужет для smplayer (может еще для чего), иначе он не знает русского.

Строка USE="-cli -libnotify -gimp -ipod -bluetooth -wifi -cups mmx sse sse2 sse3 3dnow 3dnowext mmxext" - так называемые USE-флаги ("-" отключает флаг, без минуса - флаг включен). Они нужны для управления зависимостями и уменьшают/расширяют функциональность приложений:
    - флаги "-cli" и "-libnotify" - это попытка настроить шрифты, отдельная большая тема (следует заметить, что в Calculate со шрифтами все нормально, но неправильно отображаются некоторые pdf файлы - в основном сервис мануалы и даташиты на какие нибудь микрухи, хотя проще установить acroreader);
    - флаги "-gimp -ipod -bluetooth -wifi -cups" отключают то, что написано - я не пользуюсь GIMP, iPod, у меня нет bluetooth и wi-fi, нет принтера (по идее отвалится также экспорт в pdf, например в libreoffice);
    - флаги "mmx sse sse2 sse3 3dnow 3dnowext mmxext" - это наборы инструкций, наличествующие в моем процессоре.
USE-флагов много и все для чего-нибудь нужны - непаханое поле для настройки. Можно также указывать USE-флаги отдельно для пакета, но не здесь.

Строка VIDEO_CARDS="vesa nouveau fglrx radeon" доступные драйвера видеокарт. Скажем, если у вас встроенное видео intel, то вам не нужны драйвера для карт nvidia и AMD. Здесь:
    - vesa - универсальный драйвер для почти любой видеокарты - медленный но должен работать почти везде;
    - nouveau - свободный драйвер для видеокарт nvidia, разрабатывается сообщесвом, не поддерживает 3D (есть еще проприетарый драйвер - там работает все и вроде бы нормально/удовлетворительно) -  держу для встроенного в материнскую плату видео;
    - fglrx - проприетарный драйвер для карт AMD/ATI, работает нормально, но косяки присутствуют;
    - radeon - свободный драйвер для карт AMD/ATI, разрабатывается сообществом, поддержка 3D хреновая.
   
Для ускорения компиляции можно использовать программу ccache. Она прилично ускоряет обновление, установку программ и полную пересборку системы в случае совпадения исходного кода при повторной компиляции, что происходит в большинстве случаев, так как обычно даже в новых пакетах достаточно много не измененного исходного кода. Для этого добавлены следующие строки:
   
FEATURES="ccache"
CCACHE_DIR="/var/tmp/ccache"
CCACHE_SIZE="3G"


Для начала программу ccache нужно установить:
   
# emerge ccache

Строка CCACHE_SIZE="3G" устанавливает размер кэша программы - обычно достаточно 2 ГБ, по умолчанию установлено 1 ГБ.

Для просмотра статистики кэша компиляции можно воспользоваться командой:
   
# CCACHE_DIR="/var/tmp/ccache" ccache -s
Строка PORTAGE_NICENESS="15" указывает с каким приоритетом должен запускаться emerge - это т. н. фактор уступчивости, чем он выше тем ниже приоритет процесса (выше уступчивость). Диапазон параметра от -20 до 19. Обычно программы запускаются с фактром уступчивости равным нулю (такая себе золотая середина), но emerge в процессе компиляции пакетов может нехило подвешивать систему, поэтому было нагуглено значение 15.

В первом приближении с настройкой /etc/make.conf покончено. Теперь предстоит долгий этап тестирования и поиска "неверных" рекомендаций.

среда, 9 января 2013 г.

Драйвера для AMD Radeon HD6870

На сегодняшний день установка драйверов на видеокарты производства AMD (в девичестве ATI) не является сложным занятием, но немного путанным для непосвященных. Ранее компания ATI считалась "плохой" в Linux среде из-за плохой поддержки. Сегодня ситуация с поддержкой приходит в норму. Не последнюю роль здесь играет покупка ATI компанией AMD.

Существует две версии драйверов для видеокарт AMD: свободный - radeon и проприетарный - fglrx.

Свободный драйвер radeon поддерживается сообществом и лишен поддержки 3D (по крайней мере в юзабельном виде). В дистрибутиве Calculate Linux (как и в Gentoo) этот драйвер содержится в пакете x11-drivers/xf86-video-ati и устанавливается командой(из под рута, конечно):

# emerge x11-drivers/xf86-video-ati

Проприетарный драйвер fglrx поддерживается компанией производителем AMD (распространяется в виде бинарного модуля) и в последних версиях вполне стабилен. Таким образом могу порекомендовать использовать именно его к использованию. Драйвер содержится в пакете x11-drivers/ati-drivers. Касаемо версий: если у вас видеокарта серии HD5xxx или более новая - значит вам нужна последняя версия драйвера (это мой случай), если же видеокарта выпущена ранее серии HD5000 - нужна версия 12.6 (можно, конечно и более раннюю).

Установка последней версии:

# emerge x11-drivers/ati-drivers

Установка версии 12.6:

# emerge =x11-drivers/ati-drivers-12.6

Теперь необходимо указать Х-серверу какие драйвера он должен использовать. В дистрибутиве Calculate есть специальная утилита настройки (не только видео, но и другие параметры системы) cl-console и графичесткая оболочка для него cl-console-gui. В графической оболочке в разделе "Видео" можно выставить видеодрайвер для Х-сервера, разрешение экрана, использовать ли композитный менеджер и разрешение фреймбуфера (это отдельная история - далеко не все разрешения получается использовать, лучше начать с 1024х768 - оно работает практически всегда - и пробовать остальные).

Можно указать видеодрайвер из консоли (консоль - наше все), выполнив команду:

# cl-setup-video --video fglrx

Для работы обеих этих способов необходимо, чтобы был запущен сервер утилит - cl-core:

# cl-core --start

В новых версиях дистрибутива сервер запускается автоматически.

Также некоторые интересные вести есть здесь.

воскресенье, 2 декабря 2012 г.

Удаление старых ядер

Если вы хотябы раз в неделю обновляете систему, то имеете большое количество старых версий ядра, которыми чаще всего не пользуетесь. Имеет смысл иметь в запасе возможнось загрузить предыдущую (рабочую) версию ядра, если на новом ядре что-то перестало работать. Но когда их собирается 5 - 10 штук, тогда имеет смысл подумать о том, как бы почистить ситтему от мусора. И здесь оказывается не все просто, потому что каких-то штатных средств для этого не предусмотрено. Но решение есть и оно довольно несложное - несколько команд в консоли от рута.

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

# emerge -ac

Эта команда выведет список подлежащих удалению (по мнению команды) пакетов. Если вы найдете в этом списке используемые вами программы, то просто внесите их в файл /var/lib/portage/world, чтобы emerge не пытался в будущем удалить их, после чего перезапустите команду emerge -ac и согласитесь с предложением. Например, чтобы занести в /var/lib/portage/world программу media-video/mplayer нужно выполнить команду:

# echo media-video/mplayer >> /var/lib/portage/world

Команда emerge -ac удаляет только пакеты программ, но не трогает установленные в систему ядра и их модули. Вот для этой цели и нужны дополнительные телодвижения. Нужно удалить исходники старых ядер. Например, для удаления всех ядер ветки 3.5 нужно выполнить следующее:

# rm -rf /usr/src/linux-3.5.*

а затем удалить директорию с модулями этих ядер:

# rm -rf /lib/modules/*3.5.*

Если у вас каталог /boot на отдельном разделе (обычно небольшого размера 100 - 500 MB), то большое количество старых ядер может помешать установке нового (тупо не хватет места). Это, наверное, является главной причиной для чистки старых ядер. Поэтому удаляем ненужные файлы из каталога /boot:

# rm -rf /boot/*3.5.*

Неиспользуемые версии ядер удалены, но при загрузке все они как-бы доступны. Чтобы исправить это недоразумение нужно обновить конфиг загрузчика Grub, выполнив команду:

# grub-mkconfig -o /boot/grub/grub.cfg

которая заново создаст файл /boot/grub/grub.cfg и запишет туда все существующие ядра и обнаруженные ОСи.

вторник, 13 ноября 2012 г.

Гибернация в Calculate Linux

Возвращаемся к теме спящего режима под Linux. После установки дистрибутива CLD Calculate Linux я столкнулся с проблемой неработоспособности спящего и ждущего режимов. А именно: комп как-будто бы уходил в сон, но при попытке просыпания тупо зависал не реагируя ни на какие мои действия (кроме, конечно, кнопочки перезагрузки на системнике :-)).

Все эти неприятности продолжались до обновления ядра до версии 3.6.6. Методом проб и ошибок была выявлена причина - ветка ядра 3.5 как-то хреново работает с питанием. По крайней мере 4 редакции были протестированы в процессе обновлений - все корявые. Конечно же правка ядра мне пока не под силу, поэтому я сильно порадовался переходу на ветку 3.6.

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

В Calculate для управления питанием используется pm-utils - набор скриптов для взаимодействия с подсистемой управления питанием ядра. Коллекция скриптов свободно модифицируема и позвляет довльно тонко управлять как всей системы так и отдельных модулей. Но в моем случае всех этих тонкостей не понадобилось. А понадобилось найти основной умолчальный конфиг - /usr/lib/pm-utils/defaults и отредактировать его изменив (или добавив) одну строчку:

# nano /usr/lib/pm-utils/defaults

Оказалось достаточным раскоментировать одну строчку, со вполне понятным названием:

HIBERNATE_MODE="shutdown"

По умолчанию эта опция установлена в "platform", который, по идее, и должен выключать комп, но в моей системе, видимо, какие-то странные настройки и при умолчальном значении происходит перезагрузка.

Мне кажется странным выбор умолчального местоположения конфига, тем более, что в каталоге /etc/pm/config.d/ могут быть расположены дополнительные файлы конфигурации. Но разрабам, конечно же, виднее :-)

По этой ссылке расположено чуть более подробное описание pm-utils.

воскресенье, 7 октября 2012 г.

Проблемы с Х-ами после обновления

В одной из предыдущих заметок был описан процесс обновления системы Calculate Linux. Если во время этого процесса обновляется также и ядро, то необходимо проделать еще дополнительные действия.

В моем случае после обновления перестала загружаться графика. Это произошло потому, что драйвера для моей встроенной видеокарты Nvidia представлены в виде модуля ядра. Модуль был собран для предыдущей (не обновленной) версии ядра и с новым ядром перестал запускаться. В этом случае помогает пересборка модулей ядра, выполняемая командой:

# module-rebuild -X rebuild

Но такой фокус проходит не всегда. Например, для видеокарты intel (драйвера встроены в ядро) нужно пересобрать несколько пакетов: xorg-server, xorg-drivers и xf86-video-intel. Делается это командой:

# emerge -1 xorg-server xorg-drivers xf86-video-intel

Флаг -1 нужен, чтобы не записывать в world имена устанавливаемых пакетов, поскольку эти пакеты уже содержатся в мета-пакетах дистрибутива. 

Переустановка одного только драйвера xf86-video-intel ситуацию не исправляет.

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

пятница, 5 октября 2012 г.

Обновление системы

Для поддержания системы в актуальном состоянии необходимо обновлять установленные программы. Для установки программ (равно как и их обновления) используется программа emerge. Но сначала необходимо обновить локальную базу прорграмм с помощью команды

# eix-sync

Эта команда выполняет последовательно обновление оверлеев, портежей и базы пакетов eix.

По умолчанию в Calculate используется бинарный профиль - он подойдет для тех, кто не любит особенно заморачиваться, поскольку отлично работает. Но настоящий линуксоид хочет получить все. Чтобы узнать какой профиль выбран в нашей системе нужно выполнить команду

# eselect profile list

Она выдаст нумерованный список доступных профилей, где звездочкой помечен выбранный для нашей системы. Бинарные профили помечены "binary". Чтобы изменить профиль выполним команду

# eselect profile set X

где X - номер профиля.

Теперь можно обновлять систему. Запускаем команду

# emerge -uDNa --keep-going world

Флаг -u, собственно, и означает, что мы хотим обновить систему.

Флаг -D (или --deep) заставляет emerge обновлять не только явно установленные нами пакеты, но и их зависимости.

Если мы меняли USE-флаги, то нужно добавить флаг -N (или --newuse). Тогда Portage проверит требует ли изменение устрановки новых пакетов или перекомпиляции существующих.

Флаг -a (--ask) перед обновлением выведет список пакетов и спросит разрешения продолжить установку.

Обычно при установке если какой-нибудь пакет собирается с ошибкой, команда emerge выводит эту ошибку в консоль и завершается. Флаг --keep-going заставляет emerge пересчитать зависимости заново после ошибки и продолжить установку тех пакетов, для которых ошибочный пакет не является необходимым.

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

# revdep-rebuild

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

# dispatch-conf

После запуска программа будет выводить на экран содержимое подлежащего изменению файла с пометками "+", если эта строка добавлена в новом файле и "-", если строка в новом файле удалена. Чтобы согласится с изменениями и использовать новый конфигурационный файл нужно нажать "u", а чтобы пропустить изменение настроек - "z".

Источник здесь.

четверг, 4 октября 2012 г.

Оптимизация Calculate

На днях удалил Debian со своего домашнего копа и установил дистрибутив Calculate Linux 12.0.3 (номер версии не важен - у дистриба непрерывный цикл обновлений). Не потому, что Debian так уж плох, просто Gentoo-подобные дистрибутивы вызывают в моей душе больший трепет.

В этой статье дан своеобразный каркас для проведения оптимизации Gentoo подобного дистрибутива. Это значит, что небольшие изменения будут описаны прямо здесь, а изменения сложные, требующие пояснений, многочисленные и т. п. будут описаны в отдельных статьях. Здесь будут приведены ссылки на эти статьи - своего рода оглавление.

Начнем настройку производительности с инструкции на сайте дистрибутива.

Первым делом прописываем параметр rc_parallel="YES" в файле /etc/rc.conf, что позволит (как обещают разработчики) выиграть несколько секунд при загрузке благодаря "распараллеливанию" запуска процессов.
  
Добавляем PRELINKING="yes" в файл /etc/conf.d/prelink, но там уже все есть :-) Prelink - это механизм предварительного связывания пакетов.

И, наконец, самое главное - флаги компиляции. Это то, в чем вся сила Gentoo-подобных дистрибутивов - возможность влиять на зависимости, размер, доступные функции (и т. п.) устанавливаемого (точнее, компилируемого) ПО. В общем, вся та гибкость которую предоставляет Linux (свободное ПО). Начать стоит с настройки файла /etc/make.conf.

Для повышения быстродействия большое значение имеют параметры жесткого диска HDD. Здесь есть два пути. Первый - настройка таблицы разделов, файловых систем на разделах, и файла /etc/fstab. Второй - настройка параметров жесткого диска с помощью программы hdparm. Если у вас диск SSD, то настройка производится по другим правилам - многое не имеет смысла, что-то работает по другому, присутствуют параметры отсутствующие для HDD.

Следующий не менее важный, но самый сложный этап - настройка ядра.

Получаем слудующее оглавление:

  1. Настройка /etc/make.conf.
  2. Настройка HDD.
  3. Настройка ядра.