Инструменты пользователя

Инструменты сайта



// Linux, ThinkPad T530 и miniDP (displayport)

На Thinkpad T530 есть два порта для подключения внешних мониторов: VGA и miniDP (Display Port). Если ноутбук с дискретной графикой, то DP разведён на дискретную карту nVidia, соответственно без шаманства графику туда не выведешь.

Используйте данную ссылку только для ознакомительных целей! Подробности под катом.

Полное и законченное описание подключения и вывода по ссылке:
http://www.unixreich.com/blog/2013/linux-nvidia-optimus-on-thinkpad-w520w530-with-external-monitor-finally-solved/




Если коротко, то в современных реалиях от туда нужно брать только часть информации. К примеру:

  1. Теперь не нужно отказываться от bbswitch как средств сбережения питания в настройках Bumblebee.
  2. Не нужно принудительно оставлять запущенным X-сервер на дискретной карте

Это всё при условии современного intel-virtual-outputs. Т.е. рекомендацию по сборке оного из статьи выше взять нужно:

sudo apt-get install xorg-dev git autoconf automake libtool
git clone git://anongit.freedesktop.org/xorg/driver/xf86-video-intel
cd xf86-video-intel 
./autogen.sh 
cd tools
make 
sudo cp intel-virtual-output /usr/bin/ 
sudo chmod +x /usr/bin/intel-virtual-output

В сухом остатке - у нас всё будет работать практически при дефолтной установке Bumblebee. Но ложка дёгтя есть. Или, даже, пара.

Дело в том, что для того, что бы optirun работал без подключенного физического монитора в новых версиях Bumblebee в конфиге /etc/bumblebee/xorg.conf.nvidia появилась строка:

Option "UseDisplayDevice" "none"

Всё хорошо, но она мешает работе intel-virtual-output: он запускается без ошибок, но монитор, покдлюченный к miniDP порту в упор не видит4). Коментируешь строку, перезапускаешь - всё работает. Понять - какой вариант использовать и как это сделать автоматически, я пока не знаю. Точнее задумка есть: при подключении монитора к miniDP прилетает ACPI эвент, мол монитор есть. Если монитор подключен, то optirun будет работать. Проблема в том, что при отключении ничего не прилетает. Так бы было возможно настроить обработчик acpid и подменять конфигурационные файлы.

В сухом остатке: нужно всегда выбирать, или работаем с внешним монитором, тогда конфиг без этой строки. Или работает без внешнего монитора, тогда конфиг с этой строкой. В противном случае, что-то откажется работать: или optirun без подключенного монитора, или монитор через intel-virtual-outputs.

В рекомендациях Bumblebee ещё говорят включить эти опции при работе с внешним монитором, я их решил не игнорировать:

# в секции ServiceLayout
Option "AutoAddDevices" "true"

# в секции Device
Option "UseEDID" "true"

Есть ещё мнение, что с intel-virtual-outputs где-то кешируются и не перенстраиваются параметры монитора, поэтому переключение другого монитора требует рестарта иксов. Проблема пока не проверена.

Всё выше проверено на стеке Xorg lts-vivid и lts-wily в Linux Mint 17.3. Ядро 4.6.3.

К слову, утилита intel-virtual-outputs поставляется вместе с драйверами для карты Intel в этих стеках. На lts-vivid она не работает, на lts-wily - работает. Но лучше собирать самому.

При изменении стека обязательно нужно выбрать Mesa в качестве альтернативы для OpenGL:

sudo update-alternatives --config i386-linux-gnu_gl_conf
sudo update-alternatives --config x86_64-linux-gnu_gl_conf
sudo ldconfig

иначе не будет ни технологии Optimus, не OpenGL даже для встроенной видео карты: альтернатива nvidia имеет куда больший приоритет.

2016-08-26: к слову, помимо отсутствия Optimus и вообще OpenGL у вас может начать валиться Cinnamon с сообщением в ~/.xsession-errors:

(cinnamon:2813): Clutter-CRITICAL **: Unable to initialize Clutter: <тут может быть любой текст>

Он вообще как-то странно относится к драйверам nVidia5), а тут ещё подстава: драйвера одни (точнее реализации OpenGL), а карта вообще другая.

Столкнулся после обновления на Mint 18 с 17.3, путём превращения системы в фарш и лепки пельменей из неё обратно.

Ещё, модули ядра, если вздумали попробовать свежие драйвера nVidia из линейки 367, то крайне желательно создать файл /etc/modprobe.d/bumblebee-367.conf с таким, примерно, содержимым:

# 367
blacklist nvidia-367
blacklist nvidia-367-updates
blacklist nvidia-experimental-367

# Workaround to make sure nvidia-uvm is removed as well
remove nvidia rmmod nvidia_uvm nvidia_drm nvidia_modeset nvidia
softdep nvidia_367 post: nvidia_367_modeset nvidia_367_drm nvidia_367_uvm

что бы появилась возможность у Bumblebee выгружать все части nVidia.

Кроме того, стоит запретить работу gpu-manager и снести /etc/X11/xorg.conf, который генерируется им:

echo manual | sudo tee /etc/init/gpu-manager.override
sudo service gpu-manager stop
sudo rm -f /etc/X11/xorg.conf

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

Стоить отметить, что за год стабильность работы значительно улучшилась. А если придумать способ автоматической подмены конфигурации Xorg для Bumblebee, то ещё и работает без привbлегий root.

Материалы:

4)
поправочка: ошибка всё же есть, если запускать с ключём -f от программа сразу завершает свою работу, а без данного ключа - не остаётся в режиме демона

// Пакетирование отладочной информации в deb

Всё достаточно просто. В control добавляем описание нового пакета, вроде:

Package: ffmpeg-real-dbg
Section: libdevel
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: debug symbols for ffmpeg libraries
 This package contains the debug symbols for FFmpeg lubraries.
 .
 This is the real ffmpeg. The libraries are installed to the /opt/ffmpeg/lib.

А в rules что-то вроде:

override_dh_strip:
       dh_strip --dbg-package=ffmpeg-real-dbg

Главное, что бы имя пакета соответствовало. Естественно, при сборке нужно обеспечить что бы при компиляции отладочная информация вообще создавась. В случае real-ffmpeg от samrog131 нужно добавить

--enable-debug=3

к ./configure

Подробнее: http://askubuntu.com/questions/182703/how-and-why-to-create-dbg-dev-doc-packages

// Nvidia Optimus

Дошли руки до включения данной фичи на моём ноутбуке. Всё оказалось не просто, а очень просто, в случае Linux Mint 16, всё делаем по инструкции: http://help.ubuntu.ru/wiki/bumblebee для Linux Mint 16 смотрим на версии убунты 13.10, для будущего Linux Mint 17 - 14.04.

За более детальными настройками: https://wiki.archlinux.org/index.php/Bumblebee_%28%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%29

Если коротко:

  1. Включаем в биосе Nvidia Optimus, у меня стоит предупреждение, что тема только для Windows 7 и 8, тупо игнорим
  2. После перезагрузке в выводе
    lspci -nn | grep VGA

    наблюдаем две строки, а не одну, как обычно.

  3. Ставим дрова nvidia (проприетарные):
    sudo apt-get install nvidia-319-updates nvidia-settings-319-updates
  4. Ставим бамблбее:
    sudo apt-get install bumblebee bumblebee-nvidia primus primus-libs-ia32
  5. Ребутимся (а может и не нужно, но у меня на этом шаге Optimus был выключен в биосе, так что один фиг нужно было включить, но перелогиниться нужно точно, так как текущий пользователь был включён в группу bumblebee, что бы иметь возможность вызывать optirun).
  6. Профит!

После загрузки смотрим вывод

optirun --status

видим, что всё ок. А приложения запускаем:

optirun [аргументы] <приложение> [аргументы приложения]

Для самых нетерпеливых, можно сравнить вывод двух команд:

glxinfo
optirun glxinfo

// Quake IV в Linux

Если при старте вылазит такое:

...using GL_NV_blend_square
...using GL_ARB_texture_compression
X..GL_EXT_texture_compression_s3tc not found
Fatal Error: Texture compression unavailable
Shutting down SDL subsystem
--------------- BSE Shutdown ----------------
---------------------------------------------
idRenderSystem::Shutdown()
Sys_Error: Texture compression unavailable

Нужно сделать следующее:

  1. Устанавливаем driconf, для deb-based: apt-get install driconf
  2. Запускаем его от простого пользователя
  3. На вкладке «Image Quality» включаем параметр «Enable S3TC texture compression even if software support is not available»

Всё, радуемся игре.

// Калькулятор X11 Modeline

Да, времена, когда нужно было считать модлайны, дабы выжать из своего монитора и видюхи максимум уже прошли (вздох, вспомнив пару ADI Microscan 4V и S3 Trio 64V+). Но если вас настигла проблема или вдруг, как мне, для тестов, потребовалось нестандартное разрешение экрана, то вот простой калькулятор: http://www.arachnoid.com/modelines/

Ниже по тексту идёт теория, а так же информация о том, куда нужно вставлять полученный модлайн. Про калькулятор написал, что простой. Не хороший, а простой. Почему так? А потому, что очень много тонких настроек скрыто, по сути, вы задаёте жалемое разрешение и частоту обновления. Ну а для более тонкой настройки есть и другие, типа: http://xtiming.sourceforge.net/cgi-bin/xtiming.pl

В оффлайне, аналогами этих калькуляторов, пожалуй будут: gtf и xvidtune

Первая прячется в пакете (debian-based) xserver-xorg-core, вторая в пакете x11-xserver-utils.

Пользоватся gtf так же просто как первым описанным калькулятором, просто передаём ей разрешение и частоту на вход, получаем результат:

$ gtf 800 480 60

  # 800x480 @ 60.00 Hz (GTF) hsync: 29.82 kHz; pclk: 29.58 MHz
  Modeline "800x480_60.00"  29.58  800 816 896 992  480 481 484 497  -HSync +Vsync

Второй, в интерактивном режиме тюнинм.

// Android SDK/NDK в Linux Mint

Просто последовательность действий - на память (брать из PPA не хотелось). Как качать NDK, SDK и Android Studio я расписывать не буду. Распаковку всего этого добра произвёл в ~/Android. Имена директорий привёл к виду (или переименованием или созданием необходимых симлинков):

  • android-sdk
  • android-ndk
  • android-studio

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

Итак…

Необходимое

  1. Ставим OpenJDK: sudo apt-get install openjdk-7-jdk libswt-cairo-gtk-3-jni libswt-cairo-gtk-3-jni ant
  2. В ~/.profile или ~/.bashrc_profile прописываем:
    export ANDROID_HOME=$HOME/Android/android-sdk
    export ANDROID_NDK=$HOME/Android/android-ndk
    # For compability
    export NDK_HOME=$ANDROID_NDK
    export ANDROID_SWT=/usr/share/java
    export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$ANDROID_NDK:$HOME/Android/android-studio/bin
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ANDROID_HOME/tools/lib
  3. Переходим в ~/Android/android-studio/bin и выполняем:
    ln -s studio.sh android-studio
  4. Добавляем следующие параметры в studio.vmoptions и studio64.vmoptions (предварительно сделайте резервные копии, пригодятся при обновлениях):
    -Dswing.aatext=true
  5. На этом шаге можно перелогиниться, вызвать android и поставить платформы, утилиты, потом запустить Android Studio и сделать необходимые настройки.

Опциональное

Ярлыки в меню

FIXME относительные пути к иконкам не воспринимаются, поэтому иконки не отображаются, только текст.

  1. Создаём файл: ~/.local/share/applications/android-sdk.desktop со следующим содержимым:
    [Desktop Entry]
    Encoding=UTF-8
    Name=Android SDK
    Comment=Android Sofware Development Kit
    Exec=android
    Icon=~/Android/android-sdk/tools/apps/SdkController/res/drawable-xhdpi/ic_launcher.png
    Terminal=false
    Type=Application
    Categories=IDE;Development;

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

  2. Извлекаем иконку Android Studio:
    unzip -o lib/resources.jar artwork/icon_AS_128.png

    Вызываем команду из корня android-studio

  3. Создаём файл: ~/.local/share/applications/android-studio.desktop:
    [Desktop Entry]
    Version=1.0
    Type=Application
    Name=Android Studio
    Exec=android-studio %f
    Icon=~/Android/android-studio/artwork/icon_AS_128.png
    Comment=Develop with pleasure!
    Categories=Development;IDE;
    Terminal=false
    StartupNotify=true
    StartupWMClass=jetbrains-android-studio
    MimeType=application/x-extension-iml;

Автодополнение BASH

Автодополнение для команд android, adb, emulator, fastboot и repo.

  1. Идём в ~/Android
  2. Забираем последнюю версию скрипта (предполагаю, что git уже установлен):
    git clone https://github.com/mbrubeck/android-completion.git
  3. Создаём файл ~/.bash_completion и помещаем в него:
    . $HOME/Android/android-completion/android
    . $HOME/Android/android-completion/repo
  4. Перелогиниваемся

// Infinality в Linux Mint & Ubuntu

Готовый PPA: https://launchpad.net/~no1wantdthisname/+archive/ppa описание там же.

UPD: ломает загрузку минта в графику к чертям собачьим. НЕ ИСПОЛЬЗОВАТЬ

UPD2: мужики нашли workaround: http://forums.linuxmint.com/viewtopic.php?f=208&t=136307. Не пробовал

UPD3: применил решение из UDP2, только поместил в более логичное место: ~/.profile. Система работает. А то смотреть без слёз на рендеринг шрифтов в QtCreator'е было нельзя.

UPD4: Сохраню тут для потомков и собственного удобства:

# move infinality-settings out of system profile
sudo mv /etc/profile.d/infinality-settings.sh /etc/infinality-settings.sh
 
# make execute by everyone
sudo chmod a+rx /etc/infinality-settings.sh

а уже вызов /etc/infinality-settings.sh добавить в ~/.profile

Хотя в той же теме на форуме, сказано, что исправлено в mdm (его вообще мог зафейлить любой косяк в /etc/profile.d/*): https://github.com/linuxmint/mdm/commit/ee1a28b3c295c283aa94b890658d78be25e31bb7 и доступно всё это в Mint 17.2 'Rafaela'. Альтернативной апдейту: отредактировать /etc/init/mdm.conf согласно патчу.

// LyX в Linux Mint и русский

Что бы в LyX начали сходу работать русский нужно поставить пакеты: texlive-lang-cyrillic и cm-super. Точнее даже не так: набивать тексты вы сможете сразу, а вот генерировать PDF - только после установки пакетов.

// ps2pdf и отрицательное смещение сверху

Если при преобразовании PS в PDF на выходе наблюдается отрицательное смещение (как бы часть листа срезана) сверху, то стоит попробовать явно задать формат страницы при преобразовании:

ps2pdf -sPAPERSIZE=a4 input.ps output.pdf

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

// Мысли о DPI

Точнее о DPI6) мониторов.

Очень вяло задавался вопросом, почему на моём маленьком, слабеньком, не сильно дорогом Asus EeePC 1000HA изображение на мониторе отличное, почти все шрифты выглядят нормально, а почти на всех новых, рабочих мониторах с диагональю 24 дюйма и фулхд разрешением, полная беда, что в Linux, что в Windows.

Да, можно покрутить ручки fontconfig или поставить mactype, но всё равно: на нетбуке же я не крутил!

6)
Dots Per Inch [точек на дюйм] - мера разрешающей способности чего либо: монитора, принтера и т.п.

// Logitech Unifying и Linux

Кратко: Logitech Unifying Receiver приёмник у беспроводных устройств Logitech к одному которому можно слинковать до 6 устройст. При этом устройство, с которым вместе идёт приёмник уже заранее слинковано с ним и работает из коробки.

Проблема в том, что бы добавить новое устройство. Для этого нужен софт, и софт этот -есть- был только под Windows и под Mac OS X. Хорошо, что слинковав устройства на одном компе можно было использовать их на остальных без проблем. Но, согласитесь, не удобно.

// Mime тип для GPX

Столкнулся с тем, что в файловых менеджерах в уютненьком Арчике GPX файлы отображаются просто как «Документ XML», соответственно если назначишь для открытия какую программу, это распространяется на все XML файлы.

Выход: сделать описание Mime типа

Рассмотрю вариант индивидуальный для пользователя, общесистемно - домашнее задание.

Шаг первый, создаём файл $HOME/.local/share/mime/packages/application-gpx+xml.xml:

application-gpx+xml.xml
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
    <mime-type type="application/gpx+xml">
        <comment>Geoinformation data (waypoints, tracks and so on) in GPX format</comment>
        <glob-deleteall/>
        <glob pattern="*.gpx"/>
    </mime-type>
</mime-info>

Для ленивых, качаем в одну команду:

wget -O $HOME/.local/share/mime/packages/application-gpx+xml.xml http://htrd.su/wiki/_export/code/zhurnal/2012/07/07/mime_tip_dlja_gpx?codeblock=0

После чего выполняем команду:

update-mime-database $HOME/.local/share/mime

Усё.

Для быстрого просмотра удобна программа Viking, в Арчике есть в стандартных репозиториях.

// luakit: проблема со скролингом по PgUp/PgDown

Проблема странная, проявляется не сразу: вроде при запуске всё отлично работает, потом бац, перестаёт, при этом выводится сообщение слудющего содержания:

Error: in bind call: /home/user/.config/luakit/webview.lua:341: attempt to perform arithmetic on local 'p' (a nil value)

Решение проблемы нашёл тут: https://github.com/mason-larobina/luakit/issues/68, нормальный рабочий вариант получается этот: https://github.com/mason-larobina/luakit/issues/68#issuecomment-5528890

// Однооконный Dia

Достаточно запустить:

dia --integrated

теперь вполне можно пользоваться.

Ну и чуть ярости: ну какого чёрта не вынести это в настройки!?

// Ищем замену OziExplorer на Linux

Решил таки переопубликовать свою статью в OpenSource (http://osa.samag.ru/info/OpenSource068.zip) и у себя в блоге. В журнале статья называется: «QLandKarte GT как замена OziExplorer в GNU/Linux», здесь же публикую под оригинальным.