О Linux, NVidia и всех, всех, всех…

в 9:15, , рубрики: linux, Разработка под android

… кто думает, что в Linux медом намазано или почему Linux еще далеко для десктопной системы среднестатистической кухарки.

В конце 2012, замучавшись с долбаной регистрацией на нелицензионной Win7, решил переползти на Ubuntu. Коллега посоветовал 12.04. Опыт общения с Linux уже был: знал как настраивать сетевые интерфейсы (причем в стародавние времена, когда на wifi только начало что то появляться), делать сборки, rpm-пакеты, slax «для бабуши» со звонками по Skype, програмирование некоторах клиентов с графикой на QT, web «для небогатых» и т.д. и т.п. Как видите, знание в большинстве своем поверхностные. А тут решил совсем перелезть.

Переход тем более уже давно был подготовлен заранее. Даже в основе лежал не переход на новую ОС, а мобильность. Собственно офисом редко пользуюсь, в основном Google.Docs. Особенно если на работе что то делаешь и что б не забыть на всякие флэшки копировать. Есть пара удобств даже по хранению секретных данных (как-нибудь об этом еще в одной статье напишу), но сейчас написать эту статью меня подвиг вопрос в Q&A.

Так как стар становлюсь и всего не упомнишь, завел в Доксе документ, в котором пишу что такого делал в системе, чтоб потом можно было повторить или пометить «никогда не повторять». С видеокартой имел секс после первого обновления в кернеле. Примерно через три или четыре месяца Nvidia обратила внимание на Linux и сделала возможность скачивать со своего сайта свои проприетарные драйвера. Read.me [first], как и многие из вас я не читал, хотя при установке драйвера ее показывает на экране. А зря. В тексте стоит фраза, что если у вас измениеня в кернел, то драйвер нужно сразу же переустановить. Иначе будет поздно. И в один момент эта кака и произошла. А дальше привожу уже выдержки из моего журнальчика:

смена драйвера.

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

Для любого ручного удаления в неграфической консоли через sudo или root-а нужно сначало остановить X-server.

в U12.04 это делается через /etc/init.d/lightdm stop. В других версиях нужно искать другие команды.

Если установлен проприетарный nvidia драйвер, то его удалять собственной утилитой nvidia-uninstall. Иначе получаем список всех возможных пакетов драйверов dpkg -l|grep nvidia. Удаляем только драйвера и не коммоновские и желательно не текущей конфигурации (обычно это какой-нибудь nvidia-174 или nvidia-experimental-310).

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

Драйвер будет запускаться самый примитивный, поддерживающий самые низкие параметры.

далее входим в утилиту settings->Additional Drivers. Смотрим, есть ли какой то запущенный драйвер? Если да, то останавливаем его! Должен остаться только один! И выбираем нужный драйвер и устанавливаем его. При этом он может рухнуть с креш-рапортом. Перезагружаем компьютер и повторяем операцию. Как только получилась установить без проблем, переходим в неграфическую консоль, соединяемся с правами root, останавливаем X-сервер и делаем новый xorg.conf:

$>Xorg -configure

$>rm /root/xorg.conf.new /etc/X11/xorg.conf

Включаем всю графическую периферию, какую есть — если несколько мониторов, то они должны быть подключены и активированны и перегружаем машину.

Если установка была неудачной, то там же Adittionals выбираем другой драйвер и повторяем операции с xorg.conf (с остановкой сервера и прочим). Если в результате загрузка не происходит — повторяем опять сначала, с удалением пакетов вручную.

Проверяется правильность установки Settings->Settings Manager->Display. Там должны быть перечислены все подключенные дисплеи и списке разрешений должен быть и максимально возможное для основного дисплея.

OpenGL в эмуляторе Android:

1) пробовал установить это

sudo apt-add-repository ppa:mj-casalogic/ironhide
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install ironhide

что то скачивает и компилирует ядро.

потом в консоли от лица пользователя но с sudo запустил ironhide-configuration.

сделал так же советы отсюда.

скрипт правильными путями и запуском эмулятора (для теста) лежит в android-sdk/emugpu.sh

Запускается криво и потом рушится.

Здесь советуют установить драйвер прориетарный 304, но там в списке нет моей модели. Да и затрахался уже переустанавливать тысячу раз.

И так работало еще долго, пока я не стал пробовать включать звук через HDMI (кстати, так и не удалось) и не наступило очередное обновление кернела. Все работало как и раньше в смысле общего вида.

Но вот месяц назад обнаружил, что эмулятор Андроида уже не запускался. Пошарившись в сети и ненайдя ничего подходящего начал грешить на X-Server — у него в логе стояло, что сервер рушится при обращении к какой то библиотеке. А потом обнаружил интересную закономерность: при запуске ранее установленного профиля в VirtualBox с «Android for x86» отображалось все хорошо, но стоило только вызвать меню конфигурации и X-Server перезапускался. Такая же кака повторялась и с графической настройкой от Nvidia в закладках OpenGL. И тут опять пришлось включать поиск и снова выдержки из моих записок:

Долго мучался — не мог запустить эмулятор андроида. Обнаружил, что эмулятор для x86 на VirtualBox хотя и запускается, но не может пустить в настройки конфигурации виртуальной машины: X-Server тотчас же перегружается, в логе пишет что проблема при обращении к одной из функций в одной из библиотек. Догадался, что рога растут от настроек OpenGL. Запустил утилиту “NVidia X Server Setting”. Все отображается красиво, только призаходе в параметры настроек OpenGL программулина падает, хотя сервер не трогает.

Ну чтож, полез на сайт NVidia.com и скачал свежий драйвер для моей карты с версией 319.60. Старый драйвер имел версию 304.80. Скрипт сразу перекинул в /root чтоб не имет проблем с указанием длинных путей, остановил x-сервер (service lightdm stop) и начал установку. После перезагрузки обнаружил, что х не стартует. Поэксперементировал с в кернел/без с поддержкой openGL32/без. Ничего не помогает.

Тогда в консоли попробовал воспользоваться утилитой nvidia-install. У нее обнаружились интересные ключики. В часности -a --update: тогда она лезет на ftp-сервер nvidia и ищет свежие драйвера. Тут она, кстати, сообщила, что утилита от версии 304.80, текущий драйвер установленный 319.60, но на ftp нашелся подхлдящий доступный 319.32. Как не трудно догадаться, я согласился обновиться. Не помогла никакая игра с ключами и вопросами во время установки, но в один момент показала процесс загрузки и запуск модуля bumblebee отмеченным как filed. Это “жжжж” неспроста, подумал я. Для запуска X решил откатиться назад. Запуск утилиты nvidia-uninstall сообщил мне, что неплохо бы восстановить конфигурацию, запустив nvidia-xconfig --restore-original-backup. Что я и сделал.

После рестарта все прекрасно загрузилось со старым драйвером 304.80. “NVidia X Server Setting” отображала теперь закладки OpenGL без проблем, но писала что сервер GL/CLX на запущен. На всякий случай зашел в synaptic проверил, что все библиотеки установленны и для безопасности обновил их. Заодно и посмотрел и установил дополнительные ран-тайм библиотеки к подлючей bumblebee.

После перезагрузки компа выяснилось, что драйвер nvidia совсем помер. Нет больше настройки “NVidia X Server Setting”, поддержка нескольких мониторов ушла в небытие, а все консольные утилиты nvidia-* просто исчезли. Остановив X-сервер запустил самый первый скачанный скрипт с версией 319.60. После перезагрузки запустился новый драйвер, а все эмуляторы прекрасно заработали даже с поддержкой OpenGL.

Автор: svd71

Источник

Поделиться

* - обязательные к заполнению поля