пятница, 21 августа 2015 г.

Очередные будни айтишников

Если вдруг кто пропустил, у меня вчера было День Рождения. Если кто забыл или не знал, можете поздравлять. :)

Хотя чем может заниматься такой красноглазый как я, в свой день рождения? Правильно! Драйверами в ядре. :) Поскольку нагрузка на новом месте пока упала и появилось достаточно много свободного времени, решил заняться парочкой багов на своём рабочем лаптопе дабы не скучать. Первая проблема — не работали клавиши для отключения Wi-Fi и изменения яркости подсветки экрана. Заняться для начала решил именно второй проблемой, поскольку я что-то про эту тему уже знал и откуда копать понимание имелось.
Про некоторые особенности работы ACPI, связанные с подсветкой в Linux даже писал уже, но тут проблема оказалась зарыта гораздо глубже. После изучения весьма добротно написанной вики и некоторого копания в Интернете, решение нашлось достаточно быстро. Им оказалась опция ядра "acpi_osi=" без каких-либо параметров. Если почитать этот занимательный файл, то станет ясно, что мы в данном случае принудительно сказали ядру какую таблицу ACPI мы будет подсовывать BIOS/EFI для того, чтобы управлять питанием. Связано это с тем, что стандарты ACPI весьма нечёткие и ядру нередко приходится заниматься угадыванием (помимо этого, на данные стандарты очень часто забивают, в угоду Windows), каким образом он будет управлять питанием устройств. В данном случае мы попросту отключили это угадывание и берём некие условно-стандартные значения. В результате, в лаптопе не только заработали клавиши управления подсветкой экрана, но и стал корректно включаться-отключаться Wi-Fi по нажатию клавиши.

Но это только одна проблема. Вторая проблема заключалась в самой карте Wi-Fi. В лаптопе используется MTK7630E. В mainline этого драйвера нет. Есть лишь код не очень хорошего качества, выложенный на github. Данный драйвер изначально написан для LTS версии ядра 3.14, но без проблем собирается и на более новых. В частности, версии 4.1.6. И вот с ним выяснилась проблема. Если включить в настройках NetworkManager автоматическое подключение к сети, ОС наглухо виснет почти сразу после начала сеанса. Не спасает даже Magic SysRQ. Если не ставить — может совершенно непредсказуемо проработать час, два или десять минут. В качестве ближайшего решения — закомментировать или выкинуть из драйвера функцию Set_BtDump_Proc(), в файле rt2x00/rt2800lib.c. Так как она, похоже, на новых версиях ядра пытается вызывать метод, которого уже не существует. Да и сама функция на самом деле чисто отладочная и, в общем-то, ненужная в обычной жизни. Но это планирую протестировать позднее, пока не изучу работу данного драйвера на ядре 3.14. Поскольку на нём всё работает хорошо (вроде бы). О результатах попозже расскажу.

Примерно так и развлекаюсь, да.

воскресенье, 9 августа 2015 г.

Вот это хорошее, годное обновление

Под мой плеер с месяц назад вышла прошивка, в которой добавлена поистине полезная фича — режим DAC. Он был и ранее, собственно. Но работал только с Windows. При попытке задействовать его в Linux, он определялся в ядре крайне странным образом и не работал, разумеется. Теперь появился отдельный пункт включения DAC для MacOS/Linux. Только что проверил — работает. Очень, очень полезная штука. Я уж и не знаю чего желать более.

понедельник, 3 августа 2015 г.

Хозяйке на заметку: Восстанавливаем RabbitMQ после некорректного выключения

Дано: нода с RabbitMQ, которую крайне неаккуратно потушили. Нода не стартует, на любые попытки стартовать выдаёт нечто невразумительное вроде:

[root@rabbitmq4 ~]# rabbitmqctl status
Status of node rabbit@rabbitmq4 ...
Error: unable to connect to node rabbit@rabbitmq4: nodedown

DIAGNOSTICS
===========

attempted to contact: [rabbit@rabbitmq4]

rabbit@rabbitmq4:
  * connected to epmd (port 4369) on rabbitmq4
  * epmd reports: node 'rabbit' not running at all
                  no other nodes on rabbitmq4
  * suggestion: start the node
И тому подобное. В логах в лучшем случае будет что-то типа:
Crash dump was written to: erl_crash.dump
init terminating in do_boot (timeout_waiting_for_tables)
При этом никакой rabbitmqctl force_boot и тому подобное не поможет. Делаем следующее. Идём в /var/lib/rabbitmq/mnesia и копируем базу оттуда в сухое, тёплое место. Старую базу в mnesia/ удаляем. Далее, выполняем: service rabbitmq-server restart. Именно перезапуск, а не старт и не останов. Иначе не поднимается демон. Далее, проверяем ps-ом, что кролик стартанул. После чего делаем: systemctl rabbitmq-server stop. Далее, возвращаем базу на место, удалив то, что RabbitMQ сгенерил в каталоге mnesia/ при повторном перезапуске. Далее, как обычно: service rabbitmq-server start. Если всё сделано верно, то нода в рабочем состоянии появится в management-консоли.

воскресенье, 2 августа 2015 г.

Windows 10, мимоходом

Установил этот ваш Windows 10. На реальное оборудование. Хвалёный диспетчер устройств не смог завести мою беспроводную двухдиапазонную интеловскую карточку. Драйвер поставился, но работать отказывается наглухо. Про проблему MS известно уже больше полугода и ноль реакции. Под линуксом, шо характерно, всё отлично работает и работало. Драйверы, если верить сайту Intel и диспетчеру задач - свежайшие.
Распиаренные виртуальные рабочие столы тоже есть. Дико убогие после Linux. Нет возможности перенести запущенное приложение, нет возможности управления окнами, которыми я реально пользуюсь в KDE.
Реально приходится отключать тонны галочек, персонализирущих мне рекламу, собирающую нажатия клавиш и т.п. Настройка раскладки клавиатуры засунута в какую-то глубочайшую даль. Обновления ОС реально неотключаемы. Можно лишь отсрочить загрузку. Причём даже в профессиональной версии. Народ где-то писал, что с помощью реестра и такой-то матери это поведение можно изменить, но пока не проверял.

Ещё смешнее то, что создание загрузочной флешки возможно только с помощью фирменной утилиты, которая выкачивает образ из Сети, а затем раскатывает образ на диск. Все описанные в Интернете способы записи iso на флешку элементарно не работают.

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

Технологически продвинутая ОС, да. Попытаюсь этим попользоваться хотя бы пару недель, ради интереса.