25 окт. 2011 г.

Проблемы с snb-hda-intel

Периодически при установке этих ваших линуксов на свежие материнские платы, на которых поголовно ставятся звуковые чипы от intel (используется модуль ядра snd-hda-intel), часто вылазит ошибка alsa следующего содержания:
Mixer hw:0 load error: Invalid argument
 Так как мне, как правило, функциональность звуковой подсистемы некритична (но отключать напрочь в BIOS-е тоже не вариант), то я использую в таких случаях следующий workaround: 
echo -e "##error_fix \noptions snd-hda-intel model=generic \n" >> /etc/modprobe.d/alsa-base.conf

21 окт. 2011 г.

xrandr + gnome-settings-daemon

В свежем LMDE (хотя, не уверен, что проблема mint-специфичная), при работе с многомониторной конфигурацией возникает баг - gnome-settings-daemon не может договориться с xrandr-модулем xorg-а по поводу двух запущенных копий X-ов и не запускается. В итоге слетают все настройки рабочей среды, что, хоть и не критично, но печально. Насколько я понимаю, патча пока нет. Workaround предлагается тут. Если в двух словах, в исходниках демона комментируется одна проблемная строчка и пересобирается пакет, который затем ставится вместо штатного.

18 окт. 2011 г.

Firefox google search

Оставлю здесь "ванильный" XML-файл поискового дополнения для поиска в Google. Он нужен для выпиливания разных custom search engine-ов, которыми грешат всякие linuxmint-ы и иже с ними. 
cat google.xml
<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
<ShortName>Google</ShortName>
<Description>Google Search</Description>
<InputEncoding>UTF-8</InputEncoding>
<Image width="16" height="16">data:image/png;base64,AAABAAEAEBAAAAEAGABoAwAAFgAAACgAAAAQAAAAIAAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs9Pt8xetPtu9FsfFNtu%2BTzvb2%2B%2Fne4dFJeBw0egA%2FfAJAfAA8ewBBegAAAAD%2B%2FPtft98Mp%2BwWsfAVsvEbs%2FQeqvF8xO7%2F%2F%2F63yqkxdgM7gwE%2FggM%2BfQA%2BegBDeQDe7PIbotgQufcMufEPtfIPsvAbs%2FQvq%2Bfz%2Bf%2F%2B%2B%2FZKhR05hgBBhQI8hgBAgAI9ewD0%2B%2Fg3pswAtO8Cxf4Kw%2FsJvvYAqupKsNv%2B%2Fv7%2F%2FP5VkSU0iQA7jQA9hgBDgQU%2BfQH%2F%2Ff%2FQ6fM4sM4KsN8AteMCruIqqdbZ7PH8%2Fv%2Fg6Nc%2Fhg05kAA8jAM9iQI%2BhQA%2BgQDQu6b97uv%2F%2F%2F7V8Pqw3eiWz97q8%2Ff%2F%2F%2F%2F7%2FPptpkkqjQE4kwA7kAA5iwI8iAA8hQCOSSKdXjiyflbAkG7u2s%2F%2B%2F%2F39%2F%2F7r8utrqEYtjQE8lgA7kwA7kwA9jwA9igA9hACiWSekVRyeSgiYSBHx6N%2F%2B%2Fv7k7OFRmiYtlAA5lwI7lwI4lAA7kgI9jwE9iwI4iQCoVhWcTxCmb0K%2BooT8%2Fv%2F7%2F%2F%2FJ2r8fdwI1mwA3mQA3mgA8lAE8lAE4jwA9iwE%2BhwGfXifWvqz%2B%2Ff%2F58u%2Fev6Dt4tr%2B%2F%2F2ZuIUsggA7mgM6mAM3lgA5lgA6kQE%2FkwBChwHt4dv%2F%2F%2F728ei1bCi7VAC5XQ7kz7n%2F%2F%2F6bsZkgcB03lQA9lgM7kwA2iQktZToPK4r9%2F%2F%2F9%2F%2F%2FSqYK5UwDKZAS9WALIkFn%2B%2F%2F3%2F%2BP8oKccGGcIRJrERILYFEMwAAuEAAdX%2F%2Ff7%2F%2FP%2B%2BfDvGXQLIZgLEWgLOjlf7%2F%2F%2F%2F%2F%2F9QU90EAPQAAf8DAP0AAfMAAOUDAtr%2F%2F%2F%2F7%2B%2Fu2bCTIYwDPZgDBWQDSr4P%2F%2Fv%2F%2F%2FP5GRuABAPkAA%2FwBAfkDAPAAAesAAN%2F%2F%2B%2Fz%2F%2F%2F64g1C5VwDMYwK8Yg7y5tz8%2Fv%2FV1PYKDOcAAP0DAf4AAf0AAfYEAOwAAuAAAAD%2F%2FPvi28ymXyChTATRrIb8%2F%2F3v8fk6P8MAAdUCAvoAAP0CAP0AAfYAAO4AAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAA</Image>
<Url type="application/x-suggestions+json" method="GET" template="http://suggestqueries.google.com/complete/search?output=firefox&amp;client=firefox&amp;hl={moz:locale}&amp;q={searchTerms}"/>
<Url type="text/html" method="GET" template="http://www.google.com/search">
  <Param name="q" value="{searchTerms}"/>
  <Param name="ie" value="utf-8"/>
  <Param name="oe" value="utf-8"/>
  <Param name="aq" value="t"/>
  <!-- Dynamic parameters -->
  <Param name="rls" value="{moz:distributionID}:{moz:locale}:{moz:official}"/>
  <MozParam name="client" condition="defaultEngine" trueValue="firefox-a" falseValue="firefox"/>
</Url>
<SearchForm>http://www.google.com/</SearchForm>
</SearchPlugin>
Его нужно положить в директорию searchplugins внутри каталога с настройками профиля (.mozilla/firefox/profile.name/searchplugins, к примеру)
Также могут пригодиться (мне, по крайней мере) xml-ки для Яндекса и Яндекс.словарей:
cat yandex.xml 
<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
<ShortName>Яндекс</ShortName>
<Description>Воспользуйтесь Яндексом для поиска в Интернете.</Description>
<InputEncoding>UTF-8</InputEncoding>
<Image width="16" height="16">data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAB50lEQVQ4T43SvWsacRgH8OcPCITSLRQ6BSRL1gxZTNZQsgYC3QKunVoMnTKFhBQSnDqIUa5gxNbBCgriC4pv50sJ1lIR5SROpRVbz+O4b5/flbvedekJH+557nvfH8chdbvdIFMYPAgBICdqt9uKpmnw8huNRuDnX8J5QKvVgmEYnqiqClmWwZ113kmger0OXdf/Wv6EIb0BTo+AgB94ceDKJ5MJuHPOMwlUqVSwWq1sevQaxqvn0O5l6HdvgaMdV75cLtFoNMC9Xd6JisWiedNiPNuB9l4yZ+1jEvBvuXJBURRwL8YzUT6fx2KxsGHrKdQPCXNW794Bvieu3CLegrsnlM1mMZ/PbfqeH6vToDkvb2+Bx49cuWU2m4G7bUqn0xiPx7ZpqYRf29v4cXyMxf4+tLU1V24ZDAbgbptSqRSGw6HL9OwM37n4bXPTvP6bC7lcDtw9oWQyiX6/b/vMH1XZ2MAoEMDXqytM+QBnLtRqNXAvxjNRPB5Hr9ez9Q8PMfD50OM/2P3FBb7wAc680+mIMri3yzuRJEloNpsmORTCJy7INzd/9stLc7dyIZPJgDvnPJNA0WgU1WrVkxJ/4FgsBu6s804CRSKRh0KhgHK5/F+JRAL8fJBnslA4HH7NHhg8CDnLwm8IYz560xw92AAAAABJRU5ErkJggg==</Image>
<Url type="application/x-suggestions+json" method="GET" template="http://suggest.yandex.net/suggest-ff.cgi">
  <Param name="part" value="{searchTerms}"/>
</Url>
<Url type="text/html" method="GET" template="http://yandex.ru/yandsearch">
  <Param name="text" value="{searchTerms}"/>
  <Param name="from" value="fx3"/>
  <Param name="clid" value="46510"/>
</Url>
<Url type="application/x-moz-keywordsearch" method="GET" template="http://yandex.ru/yandsearch">
  <Param name="stype" value="first"/>
  <Param name="clid" value="46511"/>
  <Param name="text" value="{searchTerms}"/>
</Url>
<SearchForm>http://www.yandex.ru/</SearchForm>
</SearchPlugin>
cat yandex-slovari.xml
<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
<ShortName>Яндекс.Словари</ShortName>
<Description>Поиск словарных статей и определений: БСЭ, Даль, Брокгауз и более 20 других словарей. Перевод на 5 языков.</Description>
<InputEncoding>UTF-8</InputEncoding>
<Image width="16" height="16">data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAByUlEQVQ4T43S/0sacRzH8fd/0D/U37DCYMW2GusHKWqwUTNN6QumtbBhNM1WaTltZllUUoeVmMwKJSxtiVQKzdCgHyJijAheve+gKKLrDh5wb+79/Nz9cOTbPtWzAoMC9ljuHz1Ent8nhejhFXh40fzOGXhf++gAVySH1XRJEWGviAne56aMZxLRSCiLxcSJYt7oMbjpF9/OM9FgMA1/LCdxhY9gChzAOPs8Mz+3LqXBXTk3RP2BHUyGs5IuXwr5s0vIXdnCBUaEP+DOyw1R99QWHCv7knZ3UjYWr1Dyr7Rr9sfBrZp0zgisC7uSlvE4ciX5L0jlz6VdC385t0n6PByCZiwC9cAymr+v412fgDe9T9X0LKP+WxgfHTGYpuPo8W2D2yQ1WoOo7vQjkS3JvnklkYfp1+a9TzYB3KqprncWKp0H/69vZA8wTcXQ/XNDovkRwoevc16+J3prnEaVzo145lT2gEA0gw7XGgzOVbw3z4C7cp6JXnd60GSZQ+UXJ161jD9L1TYBjS2IBksA3Eg/kmFUIFLpJ9HuCCqisS2iyuAGN2U8k4gqdK5i69A8tPaFF9UaveB9Pd/THarQOjtYkUEB+8NYdAuWfAWMUZVknwAAAABJRU5ErkJggg==</Image>
<Url type="application/x-suggestions+json" method="GET" template="http://suggest-slovari.yandex.ru/suggest-os">
  <Param name="part" value="{searchTerms}"/>
</Url>
<Url type="text/html" method="GET" template="http://slovari.yandex.ru/search.xml">
  <Param name="text" value="{searchTerms}"/>
  <Param name="from" value="fx3"/>
</Url>
<SearchForm>http://slovari.yandex.ru/</SearchForm>
</SearchPlugin>
Все файлы вытащены из официальной linux-сборки Firefox 7.0.1.

15 окт. 2011 г.

Ubuntu 11.10 + последствия обновления.

После обновления до текущего актуального релиза Ubuntu - 11.10 aka Oneiric Ocelot, кто в танке, - случилось две беды. 
Беда первая - отвал вайфая (через который это обновление и проходило) на broadcom-овском чипе. Косяк старый, видел его еще при обновлении-установке 10.04. Лечится переустановкой (или установкой) пакета b43-firmware-installer (да, придется найти способ подключиться к сети через проводной интерфейс или 3G-modem, так как этот пакет тянет из инета файлы прошивок).
Беда вторая поковарнее - после ребута система подвисает в процессе загрузки, plymooth-овский экран пишет что-то про конфигурацию сети, потом про слишком долгое ожидание этой конфигурации, затем про попытку (безуспешную в итоге) загрузить систему без полной поддержки сети. Причем пишет по-басурмански, зараза, несмотря на вроде как полную локализацию всего остального. Как выяснилось - это баг. Народ по этому поводу тусит, к примеру, тут и тут. Пока предлагается следующий workaround:
  • перейти в консоль (ctrl+alt+f1), залогиниться, получить права суперпользователя (sudo -s)
  • создать (если не существует) каталоги  /run и /run/lock
sudo -s
mkdir -p /run/lock
  • переместить содержимое /var/run в /run, а /var/lock в /run/lock
mv /var/run/* /run/
mv  /var/lock/* /run/lock/
  • удалить  /var/run и /var/lock
rm  /var/run
rm /var/lock
  • создать символические ссылки на внось созданные каталоги вместо удаленных каталогов
ln -s /run /var/run
ln -s /run/lock /var/lock
  • перезагрузиться

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

4 окт. 2011 г.

HP LJ Pro M1132 и mdadm - две проблемы по цене одной.

"Сегодня мы многое поняли..." (с) Стэн Марш
Во-первых, для принтера HP LJ Pro M1132 замечательно подходит драйвер foo2xqx с ppd-файлом от HP LJ M1120. В случае локального usb-подключения необходимости в этой альтернативе нет (да и сканер с ним не подцепится), лучше и правильнее использовать комплект hplip версии 3.10.4 и свежее (согласно этой странице). Но с расшаренными по smb устройствами hplip не работает (для подключения hplip-принтера в CUPS используется путь вида hp://, а при smb:// бакенд, вызываемый ppd-файлом, с треском падает), поэтому приходится искать обходные пути.
Во-вторых, после развала mdadm-массива (RAID1), в случае возникновения ошибки вида md0: no devices found после его восстановления и пересборки, следует обновить ваш initrd командой update-initramfs -t -u. Таким образом полностью методология действий у меня вышла такая (в случае замены сбойного диска, в иных случаях некоторые пункты могут быть опущены):
- узнать, который из дисков отпал (у здорового состояние active sync):
# mdadm --detail /dev/md0
- отломать сбойный диск:
# mdadm /dev/md0 --fail /dev/sdb1
# mdadm /dev/md0 --remove /dev/sdb1
- заменить hdd (пусть новый встал в тот же слот - буква не меняется), добавить новый диск в массив:
# mdadm /dev/md0 --add /dev/sdb1
- наблюдать за процессом сборки:
# mdadm --detail /dev/md0
# cat /proc/mdstat
- обновить initramfs:
# update-initramfs -t -u
Дополнительно стоит отметить, что в случае загрузки с livecd для работы с массивом его нужно собрать (так как init-система ливника знать о нем не может). Для этого нужно:
- собрать информацию о массиве в конфиг:
# mdadm --examine --scan --config=mdadm.conf > /etc/mdadm/mdadm.conf
(если не ошибаюсь, mdadm --detail --scan > /etc/mdadm/mdadm.conf ведет себя аналогично)
- собрать и запустить массив:
# mdadm --assemble --scan
или, если есть необходимость, явно перечислить, что и куда собирается: 
# mdadm --assemble /dev/md0 /dev/sda1 /dev/sdb1
Конечно, сами разделы должны понимать, что они raid-разделы (то есть иметь md superblock):
# mdadm --detail /dev/sda1
Оговорюсь, что покурить документацию по mdadm (начиная от man-страницы, заканчивая материалами в Сети) очень стоит, потому что одной неверной командой массив можно запросто убить без возможности восстановления данных на нем. Все перечисленные команды ни в коем случае не являются панацеей, бездумный их ввод может не облегчить ваши страдания, а много-много усложнить жизнь. И я буду не виноват. 
В остальном же - надеюсь, что кого-то изложенные мысли натолкнут на решение собственной проблемы.