Broadcom 4313 и Ubuntu 13.10

Прикупил я с год назад ноут Lenovo B590 и в целом все с ним нормально, за исключением проблем с Wi-Fi.

Стандартные драйвера от Ubuntu 13.04 встали нормально, но сеть не цеплял. В то время рецептом была установка bcmwl-kernel-source более старой версии, от Ubuntu 12.04 (5.XX вместо последней 6.20). Замечательно это все исправляло до примерно осени, когда обновилось ядро до 3.11 и совместимость с ним пропала. Некоторое время просидел на текущем bcmwl-kernel-source благо он стал к тому времени получше работать, но и с ним сигнал ловился плохо, и с некоторыми точками на стандарте 802.11n отказывался работать вообще.

Недавно это задрало и решил как-то это дело исправить. Выяснилось, что теперь можно поставить broadcom-sta-dkms (кажется, это тот самый старый драйвер, о котором упоминал раньше, но в новой обертке), однако и он не собрался под новое ядро. На этот раз нашел к нему патч: http://www.mindwerks.net/wp-content/uploads/2013/10/wl_3.10.patch Применяем его находясь примерно в /usr/src/broadcom-sta-5.100.82.112, делаем dpkg-reconfigure broadcom-sta-dkms и перегружаемся, и все работает замечательно (вместо перезагрузки можно выгрузить старый модуль, загрузить новый, но на тот момент у меня не хватило воли сделать это правильно).

Вероятно, в новых версиях ядра все снова отвалится, будем решать этот вопрос снова.

Как вариант, можно поменять сетевуху на одну из следующих:

  • WLAN, Non-Intel 1x1 11bgn + BT4.0 Combo, Broadcom 4313 + 20702 20200100, 20200101
  • WLAN, Non-Intel 2x2 11abgn + BT4.0 Combo, Broadcom 43228 + 20702 20200098, 20200099
  • WLAN, Intel 2x2 11bgn + BT4.0 Combo, Jackson Peak 1 20200078 (это что-то типа INTEL 2230 WIRELESS-N WIFI MINICARD LC 20200078 4W3765)
  • WLAN, Non-Intel 1x1 11bgn, Broadcom BCM4313 1x1 BGN MOW 20200102
  • WLAN, Non-Intel 1x1 11bgn, Realtek bgn 1x1 HMC WLAN Stockton 20200016 (это скорее всего Realtek 8188 или что-то подобное)

Из этих нас, очевидно интересуют Intel и Realtek. Intel стоит 1-1.5тыр в юлмарте, Realtek можно попробовать наковырять в Алтыне за 500р.

Для использования остальных железок пишут, что придется перепрошивать биос. Скорее всего, это не сложно.

Тестирование правил мониторинга

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

  • “Если места на диске осталось меньше 1Гб, должен прийти алерт от мониторинга”
  • “Если сервис у нас лежит, должен прийти алерт от мониторинга”
  • “При входе на сайт нас должно перекидывать на https”

и т.д.

Задачу “внешнего” тестирования, наверное, может помочь решить https://github.com/gauntlt/gauntlt, а вот как писать спеки для заббикса?

Зачем это нужно? Допустим, мы правим какой-то триггер, и в нем ошиблись — написали вместо гигабайтов байты. Когда мы об этом узнаем? Только уже когда проблема возникла. Для этого и нужно тестирование — создав аварийную ситуацию на тестовом сервере мы сможем узнать, правильно ли работает правило.

Никому не встречался инструмент для решения такой задачи?

RubyVsPython

Я уже где-то в твиттере писал свои впечатления от первого знакомства с python после ruby, сегодня пришла очередная волна впечатлений, запишу их здесь.

Стандартная поставка:

  • В Python практически все нужные для жизни вещи есть в стандартных библиотеках, и они нормального качества, в том смысле, что ими можно пользоваться без проблем.
  • В Ruby стандартная библиотека довольно жуткая, и всегда хочется использовать вместо нее какой-то гем, который делает то же самое, но проще и удобнее.

Использование модулей:

  • В Python при установке новых модулей они с высокой вероятностью по зависимостям ничего не вытянут. Ну пару других модулей максимум.
  • В Ruby почти всегда гем зависит от довольно большого количества других гемов. От этого и dependency hell вероятнее, и вообще это неудобно, если программирование на ruby — не твое основное занятие.

Названия модулей:

  • Мне показалось, что в Python модули чаще называются сообразно тому, что они делают, по названию модуля почти всегда можно понять для чего он.
  • В Ruby очень популярно давать гемам всякие странные названия, которые прикольно звучат, но по которым сразу и не догадаешься о чем они. Соответственно, их сложнее искать.

Интерфейсы:

  • Многие альтернативные модули (см., например, json) в Python делают ту же вещь, с тем же интерфейсом, но с другой реализацией. Т.е. часто можно менять одно на другое вообще с минимальными изменениями кода.
  • В Ruby очень любят плодить интерфейсы.

Выводы:

  • Для системных скриптов, да и шире, системного программирования удобнее использовать Python, а также когда программирование не твое основное занятие.
  • Для установки приложения на большое количество разных хостов удобнее Python. (Предыдущий пункт — частный случай этого). Шелл в этом смысле еще удобнее, но на нем приходится писать много лишнего если пишешь что-то мало мальски сложное.
  • Для веб-приложений можно использовать то, к чему больше привык.

Продолжение, я думаю, последует.

LinkedIn Invitations

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

Чтобы написать человеку, который хочет тебя добавить в контакты, жмем на кнопку с конвертом в правом верхнем углу (на нем выскакивает оповещение), потом выбираем “Invitations”. В выпадающем списке около кнопки “Accept” выбираем Reply.

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

Suspend to Disk

В убунту криво работает suspend to disk, настроить его можно несколькими способами: * стандартный ядерный — у меня толком не заработал * tuxonice — работает отлично, но только если не зависнет во время засыпания при освобождении памяти. Зависает когда много всего запущено. Например, очень часто виснет при запущенном броузере. * uswsusp — поставил только что. Навскидку работает более менее нормально, но: * проверку MD5 нужно отключить, иначе ругается на несовпадение контрольных сумм (тем не менее, при этом показывает одинаковые суммы) * шифрование образа не работает, т.к. uswsusp не умеет работать с plymouth * сразу после просыпания комп усиленно работает диском и тормозит. Похоже, вытаскивает страницы памяти из свапа.

Т.е. по ощущениям засыпание на диск становится не "более медленным и надежным засыпанием", а "выключением с полным сохранением сессии".

Буду рад советам как это все исправить.

Как включать hibernate в меню и как настраивать tuxonice я уже не помню, запишу для uswsusp, чтобы не забыть.

  • Ставим uswsusp.
  • Правим /etc/uswsusp.conf. Это также можно сделать и при помощи dpkg-reconfigure uswsusp, но вручную по-моему удобнее.
  • Создаем /etc/initramfs-tools/conf.d/resume, в котором пишем RESUME=/dev/sda1. Здесь sda1 — диск со свапом. Это нужно для срабатывания просыпания при загрузке.
  • Каждый раз при изменении этих файлов запускаем sudo update-initramfs -u. Без этого изменения останутся у нас на диске и не попадут в initrd.
  • Строчку в /etc/grub/default добавлять НЕ надо. Это понадобилось бы, если бы мы не пользовались initramfs-tools.
  • Создаем /etc/pm/config.d/00sleep_module с содержимым SLEEP_MODULE="uswsusp". Это нужно, чтобы использовался uswsusp при вызовах pm-hibernate.
  • У нас теперь должно заработать засыпание при помощи команды sudo s2disk

Ubuntu 13.XX и WiFi Broadcom

Если у вас в ноутбуке WiFi чип Broadcom (у меня BCM4313), вы наверняка уже слышали про проблемы с ним в Ubuntu 13.XX

Для 13.04 решением было установить bcmwl-kernel-source из 12.10 (версии 5.100 вместо 6.20) и поставить его на холд.

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

Ansible – беглый обзор

Бегло прошелся по докам к Ansible. Попробую сравнить с Chef и Puppet, с которыми у меня есть хороший опыт работы.

Интересная штука, но своеобразная.

Read on →

PHPMyAdmin и Yandex SafeBrowsing

Иногда случается ситуация, когда Yandex SafeBrowsing помечает сайт как содержащий Troj/JSRedir-MH, причем, VirusTotal говорит, что сайт чистый по всем базам, кроме Yandex SafeBrowsing. В интернетах эту тему обсуждают много где, часто у людей эта проблема регулярно появляется и исчезает сама, в итоге приходят к выводу, что у яндекса что-то глючит.

Как выяснилось, Yandex скорее всего таким образом реагирует на PHPMyAdmin. Проверьте, не установлен ли он у вас.

Причем, для того, чтобы яндекс среагировал на него, у человека, открывшего PHPMyAdmin в броузере должно быть установлено приложение, использующее Yandex SafeBrowsing — например, Яндекс.Бар, или Яндекс.Браузер.

Вывод: если вы пользуетесь PHPMyAdmin, или вообще занимаетесь поддержкой сайтов, продукты Яндекса лучше не использовать.

Redshift через месяц

Месяц назад я поставил себе redshift, т.к. работать было невозможно — глаза болели.

Прошел месяц и можно говорить о результатах. Глаза, конечно, устают, но уже не так — можно просидеть за компьютером много часов подряд, а глаза не болят. Когда в комнате темно я дополнительно еще включаю USB-лампу, чтобы видно было клавиатуру.

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

Upstart Limits

Как всем известно, чтобы установить лимиты ресурсов для сервиса, запускаемого через Upstart нужно править соответствующий скрипт запуска, а лимиты, установленные в /etc/security/limits.conf не действуют. Однако я не встречал в доках упоминание о том, что эти лимиты применяются только после остановки и последующего запуска сервиса, но не применяются при рестарте.

Проиллюстрирую примером.

Read on →