24 нояб. 2011 г.

X.org: жесткое задание разрешения дисплея.

Современные версии X.org стали настолько -суровы- умны, что не требуют статически заданного xorg.conf, предпочитая определять оптимальные настройки дисплея динамически. В большинстве случаев оно и правильно. Однако с этим появляется проблема смены "оптимального" режима работы по мнению системы на "оптимальный" режим по мнению пользователя становится проблематичным. Что можно сделать: 
а) во-первых, можно сгенерировать полноценный /etc/X11/xorg.conf, а затем добавить в него нужные разрешения с помощью Modeline. В целях совместимости при наличии файла xorg.conf, настройки из него имеют при конфигурации больший приоритет. Сгенерировать файл можно (при выключенном X-сервере) с помощью команд X -configure или nvidia-xconfig (при соответствующей видеокарте). Первый положит новый файл xorg.conf.new в каталог, откуда был произведет запуск, nvidia-xconfig - сразу в /etc/X11/xorg.conf. После этого его можно править, как в старые добрые времена. 
б) Убрав xorg.conf, разработчики не отломали возможность ручного редактирования параметров запуска X-сервера. Теперь все дополнительные настройки система ищет в каталоге /usr/lib/X11/xorg.conf.d/. Соответственно, если разместить там файл с расширением .conf, то при запуске Xorg настройки из него будут прочитаны и применены (приоритет, опять же, будет выше, чем в случае полностью динамической конфигурации). Приведу пример такого файла, который жестко устанавливает разрешение экрана в 800х600 точек, переписывая оптимальное значение для монитора - 1024x768. Файл находится тут - /usr/lib/X11/xorg.conf.d/10-video.conf (цифрами в начале регулируется приоритет чтения по сравнению с другими файлами в этом каталоге):

Section "Monitor"
    Identifier   "Monitor0"
    VendorName   "Monitor Vendor"
    ModelName    "Monitor Model"
    Modeline "800x600_60.00"   38.25  800 832 912 1024  600 603 607 624 -hsync +vsync
EndSection

Section "Screen"
    Identifier "Screen0"
    Device     "Card0"
    Monitor    "Monitor0"
    SubSection "Display"
        Modes "800x600_60.00"
    EndSubSection
EndSection

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-страницы, заканчивая материалами в Сети) очень стоит, потому что одной неверной командой массив можно запросто убить без возможности восстановления данных на нем. Все перечисленные команды ни в коем случае не являются панацеей, бездумный их ввод может не облегчить ваши страдания, а много-много усложнить жизнь. И я буду не виноват. 
В остальном же - надеюсь, что кого-то изложенные мысли натолкнут на решение собственной проблемы.

22 сент. 2011 г.

Debian + USB ADSL modem

Совершенно внезапно словил "зов из прошлого" - потребовалось завести под Debian-ом старый-старый USB ADSL модем. Так как они все на Conexant-овском чипе, то и заводятся идентично. Вся проблема - найти фирмварь для ядерного модуля (да-да, в ядре уже давно все, как в Греции). Здесь мне помог вот этот ресурс. Более того, там описан и весь процесс установки и настройки сего девайса. В общем, читаем, смотрим, настраиваем. Единственное, что там не описано, на появившийся псевдо-интерфейс (nas0) следует навесить какой-нибудь IP-адрес, иначе pppoe-discovery не сможет корректно отработать.

11 сент. 2011 г.

Отметился в проекте LinuxCounter (LiCo), который, по словам opennet-a, возродился и переписался. Добавил и ссылку на lico-профайл в нижней части страницы блога, рядом с godville-ским информером. Join & Enjoy!
Что делает LinuxCounter? Как можно догадаться из названия, он считает линуксы ;). А именно, пользователей и машины. Таким образом собирается статистика о количестве пользователей различных дистрибутивов (да-да, список дистрибутивов, доступных при заполнении анкеты машины, впечатляет), их географическая привязка, используемое железо и так далее и тому подобное. Обещаются вкусные и красивые графики и отчеты. 
Да и просто почесать свое ЧСВ, как без этого.

Gmail + MTA

Оставлю-ка я это здесь - годный пост о настройке различных МТА для работы с внешним смартхостом (gmail в данном случае). От себя добавлю, что работает акк не только @gmail.com, но и GoogleApps.

5 сент. 2011 г.

NVIDIA Driver problem workaround

При возникновении после обновления системы ошибки в процессе загрузки X-сервера вида
[  1018.694] (II) LoadModule: "nvidia"
[  1018.694] (II) Loading /usr/lib/xorg/modules/drivers/nvidia_drv.so
[  1018.694] (II) Module nvidia: vendor="NVIDIA Corporation"
[  1018.694]     compiled for 4.0.2, module version = 1.0.0
[  1018.694]     Module class: X.Org Video Driver
[  1018.694] ================ WARNING WARNING WARNING WARNING ================
[  1018.694] This server has a video driver ABI version of 11.0 that this
driver does not officially support.  Please check
http://www.nvidia.com/ for driver updates or downgrade to an X
server with a supported driver ABI.
[  1018.694] =================================================================
следует добавить в секцию ServerLayout вашего xorg.conf следующую строку:
Option       "IgnoreABI" "true"

10 авг. 2011 г.

Old Debian iso-releases.

Возникла необходимость в iso-образе "старого" дистрибутива Debian. Оказалось, что на всех основных зеркалах выпилено все, что ниже stable. А там, где не выпилен (хотя бы oldstable), то лежит только репозиторий. И тем не менее "в этих ваших интернетах" ничего не пропадает бесследно. Образы дисков всех релизов, начиная с 3.0_r0, лежат тут.

8 авг. 2011 г.

G+ invites

Кто там еще из желающих не попал в Кругл (aka Google Plus)? Дохрена и еще три инвайта - тут.

28 июл. 2011 г.

HP Proliant RAID Monitoring

Оставлю тут. Годная статейка с примерами на предмет мониторинга состояния RAID-контроллера и массивов на HP Proliant серверах. И тут же прямую ссылку на HP-шную репу с Proliant Support Pack'ом (PSP).

19 июл. 2011 г.

Установка и настройка vnstat + vnstat php frontend

Простенькая последовательность на "не забыть" по установке-настройке простенького же монитора трафика vnstat в Debian Squeeze, и не только.
apt-get install vnstat apache2 libapache2-mod-php5 php5-gd
Настройки в основном умолчальные (/etc/vnstat.conf), правим только интефейс (если хочется несколько, то через запятую):
#Interface "eth0"
Interface "ppp200"
Уводим логи в собственный файл вместо syslog:
#UseLogging 2
UseLogging 1
LogFile "/var/log/vnstatd.log"
Единоразово инициализируем базу:
root@demos:/home/interra/!# vnstat -e -i ppp200
Перезапускаем демон:
root@demos:/home/interra/!# service vnstat restart
Stopping vnStat daemon: vnstatd.
Starting vnStat daemon: vnstatd.
Убеждаемся, что все хорошо:
root@demos:/home/interra/!# cat /var/log/vnstatd.log
[2011.07.19 11:53:47] vnStat daemon 1.10 started.
[2011.07.19 11:53:47] Daemon running with pid 30757.
[2011.07.19 11:53:47] Monitoring: ppp200
Скачиваем веб-морду vnStat PHP Frontend отсюда (на момент написания версия 1.5.1), распаковываем в /var/www/vnstat.
Настройки находятся в файле  /var/www/vnstat/config.php. Для базового запуска достаточно переопределить интерфейсы:
$iface_list = array('ppp200');
$iface_title['ppp200'] = 'Internet';
Получать данные для отображения можно или запросом текущих данных, тогда указывается путь к бинарнику vnstat:
$vnstat_bin = '/usr/bin/vnstat';
или чтением данных из текстового дампа базы, выполненного командой вида vnstat --dumpdb -i $iface > /path/to/data_dir/vnstat_dump_$iface. В этом случае переменная $vnstat_bin комментируется, и описывается переменная $data_dir:
// $vnstat_bin = '/usr/bin/vnstat';
$data_dir = './dumps';
В приведенном примере полный путь к каталогу - /var/www/vnstat/dumps. Важно, чтобы файл с дампом назывался строго vnstat_dump_$iface, где $iface - имя интерфейса, за которым ведется мониторинг. Несколько интерфейсов - несколько файлов, каждый из которых заполняется отдельной командой.
Далее внесем в cron задание на периодическое обновление дампа такого вида, создав файлик в /etc/cron.d/ или вызвав редактор - crontab -e:
*/2 * * * * /usr/bin/vnstat --dumpdb -i ppp200 > /srv/www/vnstat/dumps/vnstat_dump_ppp200
Всегда используем в кроне только абсолютные пути!
Далее остается только перезапустить apache и обратиться браузером по адресу http://адрес_сервера/vnstat

18 июл. 2011 г.

Удаление дубликатов из таблиц (PostgreSQL)

Так случилось, что образовалась в одной из postgresql-ных баз табличка, в которой было две абсолютно одинаковые строки. И еще и без первичного ключа. Забавно то, что pgadmin3 открывает такую табличку только на чтение, потому что нет первичного ключа, соответственно удалить лишнюю строчку там, явно указав ее мышкой, не выходит, а drop-нуть с помощью psql тоже трудно, ведь строчки одинаковые, и любой WHERE их обе зацепляет и отдает DROP'у. В общем, вилы ;) Решение, сильно напоминающее школьно-универский "пузырьковый метод сортировки", подсмотрено тут:
CREATE TABLE foo AS (SELECT DISTINCT * FROM bar); 
DROP TABLE bar; 
ALTER TABLE foo RENAME TO bar;
где foo - новая таблица, bar - таблица с дубликатами.  Оператор SELECT DISTINCT вычленяет только уникальные строки.

10 июл. 2011 г.

Что такое Линукс?

Друг за дружку зацепившись и друг дружкой вдохновившись, пара хорошо известных в узких кругах камрадов устроила ликбез широкой общественности по такому сугубо "теологическому" вопросу, как причины и следствия многообразия дистрибутивов Linux с комментариями. Ссылки вот: две в один конец - раз и два, одна в другой - раз. На мой взгляд, очень даже годные работы с отлично пережеванным материалом, который будет полезен новичкам в качестве, как говорилось выше, ликбеза по данному вопросу, а более искушенным пользователям - для структурирования имеющихся знаний и закладок, по которым можно будет отсылать первую группу. И, конечно же, вмемориз тем и другим ;).

7 июл. 2011 г.

Mediawiki change password

Меняем забытый пароль пользователя собственной wiki:
cd /где/там/у_вас/wiki/maintenance
php changePassword.php --user=example --password=newpassword
 

3 июл. 2011 г.

Firefox + ivi.ru

AdBlock Plus фаерфоксовский настолько суров, что чует рекламу в видеофайлах на music.ivi.ru. Соответственно, блокирует нахрен ;) Дабы можно было что-то там посмотреть, дополнение это надобно выключать.

Windows XP Update Error 0x0000007E

Пришлось третьего дня обновить сильно старый Windows XP SP1 до чуть более свежего Windows XP SP2 (дабы смочь устанвить нужную версию Крипто-Про и Drweb Security Space). Однако скачиваением с офсайта пакета обновлений SP2 и кликанием на кнопку Далее дело не ограничилоась - после упешного с точки зрения установщика процесса был словлен BSoD с ошибкой вида  Stop 0x0000007E. Ошибка, как показал беглый гуглинг, достаточно популярная, удостоенная даже обстоятельной статьи в базе знаний Microsoft.
Однако ни информация оттуда, ни из ряда других подобных "сборников" не облегчала восстановление системы. Решение нашлось уже на исходе маны терпения: сходить в реестр, найти ветку HKLM\SYSTEM\ControlSet001\Services\Intelppm и под корень ее удалить (конечно, забекапив предварительно, на всякий случай). В куцем описании говорилось что-то о том, что сервиспак собран (оптимизирован?) на (для?) процессорах Intel, и поэтому при установке на камешках от AMD (а на сабжевой машинке как раз Sempron) может вызывать BSoD c ошибкой 0x0000007E. Однако, несмотря на скепсис, проблема решилась - винда радостно загрузилась, отрапортовав в свойствах системы, что она теперь - Windows XP Professional Service Pack 2.

Firefox{4,5}: неизвестная ошибка синхронизации

Еще со времени Firefox 4 мучала меня периодически проблема: Firefox Sync не может синхронизироваться, выдавая "неизвестную ошибку". В качестве workaround-а где-то вычитал отмену синхронизации всего, кроме паролей. В пятой версии браузера, к сожалению, проблема осталась. Логично предположить, что в таком случае с самим Sync-плагином (а начиная с 4-ки, уже частью браузера) все хорошо, а проблема где-то в облаке. Так что новый workaround - сходить сюда и, авторизовавшись, удалить все сохраненные данные (Clear your Sync data). Беспокоиться не нужно, удаляются явки-пароли только из мозилловского хранилища, в браузерах ничего не изменится. После удаления жмем Инструменты - Синхронизировать. Все, если теперь глянуть в параметрах в разделе Sync объем используемого пространства в мозилловском облаке (квоты), оно будет снова ненулевым. 
У меня пока полет нормальный, ошибки больше не проявляется.

14 июн. 2011 г.

Скрипт для проверки баланса.


Простенький быдло-скрипт для получения текущего баланса по счету ADSL-интернета ВолгиТелеком:
#!/bin/bash
##
## UTF-8:
## Скрипт для Zabbix, осуществляющий мониторинг состояния лицевого счета
## абонента ОАО Кировский филиал "Ростелеком-Волга" (ADSL).
## Параметр balans выводит текущее состояние счета в виде "0.00" с учетом
## возможности отрицательного баланса. В случае неудачной попытки получения
## баланса выводится значение -1.
## Параметр status используется для получения более полной инфомации. В случае
## ошибки со стороны биллинг-системы выдается номер и описание ошибки. Если ошибок
## нет, выдается текущий баланс.
##

#Учетные данные для проверки
LOGIN=
PASSWD=

#Проверка наличия логина и пароля
if [ -z $LOGIN ] || [ -z $PASSWD ]; then
echo "Enter LOGIN/PASSWD into script"
exit 1
fi

#Работаем во временной директории
cd /tmp

#Запрашиваем страницу аутентификации, вводим учетные данные, получаем параметры для доступа к личному кабинету.
wget --no-check-certificate -q -O 1.html "https://j-cabinet.kirov.ru:4459/pls/base/www.GetHomePage?p_logname=${LOGIN}&p_pwd=${PASSWD}"

#Полное имя пользователя
p_logname=`cat 1.html | egrep -o 'p_logname=([A-Z0-9]+)' | uniq | sed -e s/p_logname\=//`

#Некий хэш пароля
chksum=`cat 1.html | egrep -o 'chksum=([0-9]+)' | uniq | sed -e s/chksum\=//`

# Получаем страницу личного кабинета, извлекаем из нее текущее состояние счета или ошибку.
wget --no-check-certificate -q -O 2.html "https://j-cabinet.kirov.ru:4459/pls/base/www.PageViewer?page_name=KIROV*ADM_CON_INFO&logname=${p_logname}&n3=p_username&v3=$p_username$&n4=p_adm&v4=$p_adm$&chksum=${chksum}" | grep -A 1 dat_sel | egrep -o '[0-9.-]+'

#Баланс
BALANS=`cat 2.html | grep -A 1 dat_sel | egrep -o '[0-9.-]+'`

#Номер ошибки
ERR=`cat 2.html | egrep -o 'W+\-[0-9]+'`

#Описание ошибки
ERRNAME=`iconv -f CP1251 -t UTF-8 2.html | grep WWW | egrep -o '([а-Я]+\s?)+'`

#Удаляем временные файлы.
rm -f {1,2}.html

#Выводим требуемые данные.
case $2 in
        balans)
            if [ -z $BALANS ]; then
                echo -1
            else
                echo "$BALANS"
            fi
        ;;
status)
            if [ -z $ERR ]; then
                echo "Balans now is $BALANS"
            else
                echo "Remote server error: $ERR - $ERRNAME"
            fi
        ;;

        *)
            echo "Usage: vt_check_balans.sh $1 {status|balans}"
esac
Код отформатирован и вставлен с помощью centricle.com. Как выяснилось, сервис Postable теряет некоторые символы (в частности, "+"), что в регулярных выражениях критично. Пробовал хайлатеры кода, не понравилось. Также Blogger умеет сам игнорить парсинг вставленных спецсимволов в html-страничке - достаточно заключить блок текста в теги <pre></pre> - только шрифт при этом изменяется как по форме, так и по кеглю, а разбираться с этим лень. Но так, на будущее, чтобы знать.

UPD:
Для проверки баланса Мегафона можно интегрировать в скрипт следующую строку запроса (предварительно подключив услугу "Сервис-Гид" и разрешив авторизацию внешних программ):
curl -s -k "https://sg.megafonural.ru/ROBOTS/SC_TRAY_INFO?X_Username=${LOGIN}&X_Password=${PASSWD}" | egrep -o '([0-9.-]+)' | sed -e s/\<\BALANCE\>\//
В случае МТС (Бывший "Мультинекс", бывший "ВятКТВ") используется такой запрос:
wget --no-check-certificate -q -O multi.html "https://lk.kirovnet.net/api?key=${KEY}&contract=${CON}"
 где ${KEY} генерируется в личном кабинете, а ${CON} - номер контракта.

27 мая 2011 г.

cups + console

Иногда надо просто подопнуть ушедший по какой-то причине в stop-состояние принтер (в CUPS-е), а открывать браузер и топать на админку или лениво, или сложновыполнимо (например, инет медленный). Консольно эту операцию можно сделать так:
# cupsenable
Для обратной операции есть cupsdisable.

24 мая 2011 г.

Реанимация ext4.

Так случилось, что поимел сразу две напасти с ext4 после некорректного выключения компьютера. Напасть первая:
The superblock could not be read or does not describe a correct ext2 filesystem. If the device is valid and it really contains an ext2 filesystem (and not swap or ufs or something else), then the superblock is corrupt, and you might try running e2fsck with an alternate superblock: e2fsck -b 8193
И конечно, никакого успешного монтирования и доступа к данным. Поломатый superblock можно выцепить из многочисленных резервных копий, разбросанных по диску. Поглядеть номера можно, набрав mke2fs -n и поглядев в соответствующем поле "Superblock backups stored on blocks". Взяв любой адрес блока, нужно отдать его fsck'у (опция -b): e2fsck -b alt_superblock
Напасть вторая - при монтировании раздела имеем ошибку:

EXT4-fs (sda1): bad geometry: block count 19537408 exceeds size of device (19537166 blocks)

Вообще, подобного рода проблемы возникают в случае некорректного изменения размера тома. Однако в моем случае, хоть подобная операция и имела место быть (перенос с помощью clonezilla раздела на раздел), но проявилась не сразу, а после некоторого времени использования. Так или иначе, но в результате информация о размере файловой системы и размере диска стали различаться. Лечением в данном случае будет ручная корректировка оных.
Записываем таблицу разделов в файл:

sfdisk -d /dev/sda > PT.txt
 В полученном файле имеется строчка вида:

/dev/sda1 : start= 2048, size=156297328, Id=7
Так вот размер size= нужно заменить на значение block count (из сообщения об ошибке), увеличенное в 8 раз (блоки -> байты). То есть получится:
/dev/sda1 : start= 2048, size=156299264, Id=7
Далее, модифицируем таблицу разделов непосредственно на HDD:
sfdisk -f /dev/sda -O PT.save < PT.txt
Теперь монтирование  должно пройти успешно. Если есть сомнения в состоянии файловой системы, то смонтировать лучше с опцией -o ro, дабы вытащить требуемые данные, а затем проверив файловую систему fsck'ом.

23 мая 2011 г.

apt-get & aptitude limit rate

Если нужно разово ограничить канал для загрузки пакетов сабжевыми менеджерами, делаем так:
aptitude -o Acquire::http::Dl-limit=100k update
apt-get -o Acquire::http::Dl-limit=100k update
Если хочется на постоянку, так:
echo "Acquire::http::Dl-Limit "100";" >> /etc/apt/apt.conf.d/limit-rate

 

20 мая 2011 г.

Получение загранпаспорта нового образца + gosuslugi.ru

Отвлекусь от темы компьютерной и закину пару килобайт истории из "реаллайфа". Хотя совсем без компьютеров не получится - рассказ будет про получение загранпаспорта нового образца с помощью портала госуслуг.
При получении очень сильно помогла вот эта статья. Добавлю лишь свои ремарки. Поехали.
Сфотографироваться и получить цифровую фотографию со сверхтребованиями (см. ниже). Посещение фотоателье, персонал которого, прочитав и уяснив эти требования, посоветовал все-таки рвануть в местное ФМС, и уточнить, что же им нужно – таки.
На самом деле - нужна обычная фотка для загранпаспорта, разве что фон лучше попросить сделать отличный от белого, им несложно. Более того, нужна лишь фотка в электронном варианте (заданного размера и разширения), поэтому, если удастся договориться о "непечатном варианте", то можно и меньшей денежкой обойтись (у нас в Кирове фотка на ЗП стоит 100 рупий).
Имея фотку, заполнить анкету можно без дальнейших затык. А уже после принятия заявления стоит топать в отдел кадров и в банк.
Оплата в в МЕСТНОМ сбере пошлины. Спасибо навигатору, показания местных жителей сильно разнились, потому что отделений несколько.
На самом деле "разность" отделений Сбербанка тут непричем. Нужно лишь знать реквизиты (в особенности код ОКАТО, который разнится от места к месту, и КОД услуги), тогда платить можно где угодно. Все это выложено на местном сайте ФМС - для Кировской области, к примеру, тут. Однако скачивать квитанции, заполнять их, нести в банк совершенно не стоит, там же в окнах вечные очереди, сегодня сбербанк много где натыкал спецтерминалов для оплаты всего и вся. Пункт уплаты госпошлины там тоже имеется, терминал прерасно знает, где какой ОКАТО и какой код у запрашиваемой услуги. Нужно лишь знать свой район проживания. Пять минут - и квитанция оплачена, чек в кармане.
После того, как заявление приняли, ежедневно (а лучше и не по разу) ходим в кабинет и смотрим на странице статус заявления (уведомления на почту, кроме самого первого, о подаче заявления, не приходят! - хотя обещали поправить). Его сначала примут к исполнению, потом назначат ответственного, поставят в очередь и вышлют приглашение на некоторое время. В зависимости от загруженности местного отдела ФМС, приглашение придет в течение двух-пяти дней. Мне, по-моему, на третий пришло.
Дальше - все просто, приходим в назначенное время, расталкиваем живую очередь "немодернизированных" сограждан, сдаем все документы (в приглашении продублируют, какие надо: пачпорт внутренний + ксерокопия, старый загран (если есть), военник + ксерокопия, заверенную выписку из трудовой), оставляем свой автограф в специальном прямоугольничке, фоткаемся в шайтан-кабине и снова идем домой, ходить в личный кабинет и жмакать статус заявления. Этап посещения ФМС у меня занял ровно семь минут. Этам ожидания готовности пачпорта - 8 дней. А там - снова приглашение прийти тогда-то туда же с пачпортом, еще 7 минут - и вуаля, толстая бордовая книжица в рукаа.
Итого, 29 апреля заявление было подано, 19 мая (это с учетом всех выходных и майских праздников) пачпорт был в моих натруженных руках. Недурно, я считаю. Тем более что общаться пришлось только с а) девушкой в фотоателье и б) сотрудницей ФМС, принимавшей документы и выдававшей готовый паспорт.

5 мая 2011 г.

Can not login to VMWare Server 2 Web-console

Забавно, перестала пускать к себе в веб-консоль VMWare Server 2. Неверный логин-пароль, и все тут. То ли обновилось что неудачно, то ли еще что. Хотя, возможно, первопричина проблемы в том, что не так давно был поменян пароль пользователя, который прописан как администратор vmware. Поменян в LDAP-е (так как авторизация через него вся завернута). Поглядевши в /etc/pam.d/vmware-authd, узрел там ожидаемое:
#%PAM-1.0
auth       required    pam_unix.so shadow nullok
account    required    pam_unix.so
Исправил pam_unix.so на pam_ldap.so - Авторизация тут же прошла успешно. Возможно, у меня не происходит синхронизация локальных паролей с ldap-ными (есть пара пользователей, которые заведены и в системе тоже). ТАк или иначе, можно считать это workaround-ом на случай подобного фейла.

4 мая 2011 г.

Debian Lenny + HPLJm1522MFP + xsane

Потребовалось подружить Debian Lenny и HP LaserJet m1522 MFP. Если с печатью все заработало практически из коробки и без вопросов (с умолчальным в ленни hplip_2.6.8b), то со сканированием возникли проблемы. Во-первых, поддержка сканирования для этой модели принтера реализована только в hplip_2.8.6, поэтому пришлось скачать и поставить (читай, доставить кучу dev-пакетов и скомпилить) свежий hplip. Сканер стал определяться hp-check-ом и scanimage -L, однако сканировать отказывался - hp-scan и xsane в один голос заявляли об ошибке ввода-вывода, плюс в syslog-е имелась фигня подобного рода:
zp python: io/hpmud/hpmud.c 483: invalid device_close state
zp python: hp-scan[8989]: error: Error during device I/O
zp python: io/hpmud/hpmud.c 341: device_cleanup: device uri=hp:/usb/HP_LaserJet_M1522nf_MFP?serial=00VNHTB1FH7B
zp python: io/hpmud/hpmud.c 353: device_cleanup: close device dd=1...
zp python: io/hpmud/hpmud.c 355: device_cleanup: done closing device dd=1
и прочие непотребства.
Пытался ставить разные версии hplip, включать пользователей в разные группы - безуспешно. Решение оказалось внезапным и местами волшебным, поэтому первопричины нижеследующих действий я пояснить не берусь. В одном из многих просмотренных багтрекерах  нашлось предложение подменить библиотеку libhpmud.so. В моем случае имела место такая картина:
ls -l /usr/lib/libhpmud*
-rwxr-xr-x 1 root root    867 Май  4 17:49 /usr/lib/libhpmud.la
lrwxrwxrwx 1 root root     17 Май  4 17:49 /usr/lib/libhpmud.so -> libhpmud.so.0.0.4
lrwxrwxrwx 1 root root     17 Май  4 17:49 /usr/lib/libhpmud.so.0 -> libhpmud.so.0.0.6
-rwxr-xr-x 1 root root 189818 Май  4 17:49 /usr/lib/libhpmud.so.0.0.4
-rwxr-xr-x 1 root root 201843 Май  4 17:34 /usr/lib/libhpmud.so.0.0.6
Поэтому я заменил симлинк  /usr/lib/libhpmud.so -> libhpmud.so.0.0.4 на /usr/lib/libhpmud.so -> libhpmud.so.0.0.6
 mv libhpmud.so libhpmud.so_
 ln -s libhpmud.so.0.0.6 libhpmud.so
Чудесным образом ошибка исчезла и xsane запустился =). Да, возвращаясь к вопросу о группах - следует все же добавить пользователя в lp и scanner.

2 мая 2011 г.

Восстановление работоспособности blueman

В один из дней после обычного для Sid-а aptitude dist-upgrade поломался bluetooth-applet. Точнее, blueman-applet, заменяющий дефолтный при установке сотфины blueman - более функционального и приятного менеджера голубозубых соединений. Сегодня выдалась свободная минутка, поэтому дошли руки поглядеть внимательнее, что сломалось.
Симптоматика следующая - после запуска рабочего стола (и апплета вместе с ним) blueman не может получить доступ к BT-адаптеру, показывая пустой список подключенных устройств, хотя сам адаптер подключен и системой корректно определяется:
delayer@inspire:~$ sudo hciconfig -a
hci0:    Type: BR/EDR  Bus: USB
    BD Address: 00:15:83:35:1D:6F  ACL MTU: 510:8  SCO MTU: 48:10
    UP RUNNING PSCAN ISCAN
    RX bytes:2056 acl:0 sco:0 events:80 errors:0
    TX bytes:4694 acl:0 sco:0 commands:78 errors:0
    Features: 0xff 0xfe 0xff 0xfe 0x98 0x3f 0x79 0x83
    Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
    Link policy: RSWITCH HOLD SNIFF
    Link mode: SLAVE ACCEPT
    Name: 'ISSCEDRBTA'
    Class: 0x5a0104
    Service Classes: Networking, Capturing, Object Transfer, Telephony
    Device Class: Computer, Desktop workstation
    HCI Version: 2.1 (0x4)  Revision: 0x90e
    LMP Version: 2.1 (0x4)  Subversion: 0x316
    Manufacturer: Integrated System Solution Corp. (57)
Такой вот стоит дешевенький донгл без роду-племени (хотя, может и вру, на корпусе логотип Acorp-а есть). Запуск апплета (или любой другой софтинки вида blueman-*) консольно проходил успешно, но с тем же результататом - нужные пункты меню выбирались, но не нажимались, а в логах узрелось нечто вида: "except dbus.DBusServiceUnknownError:". Раскопки этих ваших интернетов привели к workaround-у: а) добавить пользователя в группы dbus и uucp б) запускать апплет через ck-launch-session (некая приблуда ConsoleKit-ная). То бишь проблема, оказывается, с правами доступа. Дальнейший гуглинг вывел на файл /etc/dbus-1/system.d/bluetooth.conf
 <!-- This configuration file specifies the required security policies
     for Bluetooth core daemon to work. -->

<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>

  <!-- ../system.conf have denied everything, so we just punch some holes -->

  <policy user="root">
    <allow own="org.bluez"/>
    <allow send_destination="org.bluez"/>

    <!-- allow root to send to agents -->
    <allow send_interface="org.bluez.Agent"/>
  </policy>

  <!-- allow users at the console, see consolekit or libpam-foreground -->
  <policy at_console="true">
    <allow send_destination="org.bluez"/>
  </policy>

  <!-- allow users of bluetooth group to communicate with hcid -->
  <policy group="bluetooth">
    <allow send_destination="org.bluez"/>
  </policy>

  <policy context="default">
    <deny send_destination="org.bluez"/>
  </policy>

</busconfig>
где описываются политики для демона bluetoothd. Чтение его внутренностей показало, что доступ к демону и иже с ним имеют только а) root (отсюда работоспособность через sudo и ck-launch-session) и б) группа bluetooth.
Таким образом sudo adduser delayer bluetooth с последующим релогином проблему решает.
З.Ы.: XML-файлик удалось беспроблемно вставить в текст после прогона через эту форму.

26 апр. 2011 г.

Отключение ssh fingerprints

В клиенте ssh имеется замечательный механизм защиты от возможных Man-In-The-Middle атак при работе с удаленными хостами. При попытке подключиться к ранее неизвестному хосту впервые считывается его fingerprint
The authenticity of host 'example.com (192.168.0.1)' can't be established.
RSA key fingerprint is 0e:33:94:9b:83:b1:d8:02:81:42:0f:0e:4c:c2:cd:98.
Are you sure you want to continue connecting (yes/no)?
и записывается в файл ~/.ssh/known_hosts
Warning: Permanently added 'example.com,192.168.1.1' (RSA) to the list of known hosts.
Впоследствии при подключениях он проверяется. Если если запомненный и высчитанный фингерпринты не совпадают, соединение сбрасывается (так как, возможно, мы пытаемся подключиться не туда, куда хотели)
:~$ ssh interra@192.168.0.1
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
e5:98:85:24:bd:62:f1:2f:9a:ab:f5:9f:24:e8:88:5c.
Please contact your system administrator.
Add correct host key in /home/delayer/.ssh/known_hosts to get rid of this message.
Offending key in /home/delayer/.ssh/known_hosts:212
RSA host key for 192.168.0.1 has changed and you have requested strict checking.
Host key verification failed.
Однако у меня в локалке это вызывает сильное неудобство, так как в сети часто появляются новые хосты (сервер приехал, настроился, уехал), которые получают одни и те же IP-адреса из заданного пула. И каждый раз приходится удалять запись о старом фингерпринте из known_hosts
Дабы этого не делать, а полностью отключать этот в целом полезный механизм, изменяем настройки ssh следующим образом (глобально - в /etc/ssh/ssh_config; для пользователя - ~/.ssh/config):
Host 192.168.0.*
   StrictHostKeyChecking no
   UserKnownHostsFile=/dev/null
И все, при подключении к хостам сети 192.168.0.0/24 фингерпринт проверяться не будет.

7 апр. 2011 г.

Debian Sid + udev start error

Свежее обновление Sid-а принесло сурприз, иксы начали стартовать без устройств ввода, то есть ни мышки, ни клавы. Исследования системы показали, что виноват в этом udevd, который не может стартовать при загрузке ОС. Причина такого поведения: появление в дистрибутиве каталога /run (откуда такой взялся, пишут, к примеру, тут), в который udev пытается что-то писать (в моем случае, записать файлик root-link-rule), но почему-то не может. А так как X.org сегодня не занимается устройствами ввода сам (отдав это на откуп udev + hal), то он запускается без оных. Workaround-ов два (пока не попилят udevd): или удалить каталог /run (тогда udev начнет работать по старинке и будет писать свои правила в /etc/udev/rules.d/ вместо /run/udev/rules.d/), или добавить в секцию ServerLayout файла xorg.conf директиву Option "AllowEmptyInput" "false".
Также по проблеме есть бага, так что ее пилят. Вроде как даже есть какие-то фиксы (обсуждают тут), но в официальный репозиторий они пока не утекли, ждем-с. ;) Там же предлагаются и иные способы решения проблемы.

6 апр. 2011 г.

win2k8 + http-принтер (CUPS)

Задача: Подключить к серверу Windows 2008 R2 принтер с рабочей станции под управлением Ubuntu 8.04 LTS
Проблема: При попытке настроить подключение через мастер выдается сообщение о невозможности найти принтер по указанному адресу.
Диагноз: Выяснилось, что в win2k8 по каким-то соображениям не установлен клиент для печати по IPP (хотя в во всей остальной линейке виндов, включая win7, он активен).
Лечение: В Панели управления найти пункт Включение и отключение компонентов Windows, далее найти пункт Добавить компоненты и, получив список, выбрать компонент IPP-клиент и установить оный. Затем в Службах перезапустить Диспетчер печати. После этого добавление сетевого принтера пройдет успешно.

27 мар. 2011 г.

RX@Etersoft (ex. NX) Новые сведения.

Много байт утекло с тех пор, когда был написан пост о процессе установки и настройки NX-сервера на сервере с Debian'ом. Не скажу, что кардинально все поменялось, но кое-что освежить стоит.
Итак, на сегодняшний день по-прежнему практически единственным средством реализовать терминальный linux-сервер остается решение от NoMachine. Простота развертывания, защищенность передачи данных сеанса, скромные требования к ширине канала - все это в комплексе и без финансовых  затрат на ПО (при использовании свободных версий, конечно)  реализуется с помощью пары nxserver+nxclient. К тому же клиентская часть кросплатформенна, что во многом имеет определяющее значение.
В своей практике я использую решение от компании "Этерсофт", сейчас это два пакета - сам сервер nx-3.4.0, и их доделки-допилки - rx-etersoft. Выбрать сборку для своего дистрибутива (ссылки даны для Debian 5.0 Lenny) можно там же, поднявшись на пару уровней выше. Установка по сравнению с прошлым постом упростилась - нужно установить эти два пакета и выполнить команду rxsetup (и то и другое, конечно же, от имени суперпользователя). В директории, откуда rxsetup выполнялся, создастся файл rxsetup.log, заглянув в который, можно поглядеть подробности установки и справиться о наличии ошибок. 
Да, в некоторых дистрибутивах в базовой поставке отсутствует netcat и expect, которые используются в работе rx, поэтому их следует установить. Пару раз сталкивался, что отсутствовал пакет binutils, который также необходим для корректной настройки и работы rx-сервера. Таким образом, получатся такая последовательность команд:
delayer@inspire:~$ mkdir rxtemp
delayer@inspire:~$ cd rxtemp
delayer@inspire:~/rxtemp$ wget -c ftp://ftp.etersoft.ru/pub/Etersoft/RX%40Etersoft/1.1.1/Debian/5.0/nx_3.4.0-eter13.3debian_i386.deb
delayer@inspire:~/rxtemp$ wget -c ftp://ftp.etersoft.ru/pub/Etersoft/RX%40Etersoft/1.1.1/Debian/5.0/rx-etersoft_1.1.1-eter8debian_i386.deb
delayer@inspire:~$ su -
inspire:/home/delayer/rxtemp# aptitude update && aptitude install netcat expect binutils
inspire:/home/delayer/rxtemp# dpkg -i nx_3.4.0-eter13.3debian_i386.deb rx-etersoft_1.1.1-eter8debian_i386.deb
inspire:/home/delayer/rxtemp# rxsetup
inspire:/home/delayer/rxtemp# /etc/init.d/freenx-restart
Теперь можно ставить на клиентскую рабочую станцию клиента - или "ванильного" от NoMachine (win, lin), или сборку "community edition" (win), которую усиленно пилят резиденты unixforum-a во главе с dimbor'ом (за что и огромный респект, ибо попилено немеряно). Уточню, что хотя сборки NXClientCE можно взять не только в соотвествующих ветках самого unixforum'а, но и на ftp-сервере "Этерсофта" (там же, где и rx), сама компания к разработке этого продукта отношения не имеет. Это неочевидно, но тем не менее.
Практика использования rx показала, что нет надобности делать nxserver --adduser, все прекрасно и "из коробки" работает с существующими системными (или ldap) пользователями. Авторизация происходит аналогично обычному ssh-логину, с той лишь разницей, что сначала по ключу авторизуется специальный пользователь nx, а от его имени уже происходит дальнейшая авторизация заданного в настройках подключения пользователя. 
В качестве клиента я бы рекомендовал использовать сборку Community Edition, так в ней поправлены многие проблемы с раскладкими, кодировками, буфером обмена, работой в rootless-режиме и много чего еще. Всю биографию NXClientCE можно попытаться осилить - труд "Курощение.." находится тут.
Предложенная связка уже не первый год работает более чем в двух десятках различных организаций Кирова и области, "боевой" опыт использования имеет место быть. Как показывает статистика посещений моей странички, прошлый пост по этой теме практически с момента публикации держится в топе посещаемости относительно всех остальных заметок  Посему тема, выходит, достаточно востребована и популярна.

22 мар. 2011 г.

Basic VS Premium?

Возник вопрос - чем конкретно различаются Win 7 Home Basic и Home Premium. Беглый поиск выдал хорошую ссылку по сабжу, где различия в функционале всей линейки Win 7 представлены в табличной форме.
Опечалило, что даже в Home Premium нет XP Mode, которая меня пару раз спасала. В итоге получается, что единственным критичным (на мой взгляд) недостатком HB является отсутствие поддержки мультитача (многие тачпады его уже умеют), ну и Аэро, да, для эндюзера сие в подавляющем большинстве случаев важно. ;)

18 мар. 2011 г.

Настройка резервного интернет-канала

Задача: Есть некий сферический сервер в вакууме, который занимается раздачей интернетов. Интернетов имеется два: толстый и безлимитный - для хорошей и повседневной жизни, а также хилый и помегабайтный - для годины тяжелой. И хочется простого человеческого счастья - вечного интернета. А именно, пока все хорошо, жить на толстом канале, а если он упал, резво переключиться на хилый, не забыв следить за состоянием основного, дабы возвернуться на него по появлении линка.
Как ни странно, на просторах Сети мне так и не удалось найти простого и доступного решения такой, казалось бы, частой возникающей задачи. Нет, варианты решения присутствуют, например, вот тут есть неплохой скрипт на баше, замечательно комментированный. Можно использовать его, можно упростить или усложнить в зависимости от ситуации, с логикой у меня проблем не возникло, код понятный. В иных местах советуют договориться с провайдерами, прикупить AS у RIPE, затариться цисками, etc.
Однако можно обойтись и одной quagga'ой. Да, это мощнейший инструмент, поддерживающий большинство (если не все) протоколов маршрутизации (OSPF, RIP, RIPng, BGP-4), и использовать его в качестве исключительно монитора состояния аплинка и смены маршрута по умолчанию, возможно, неоптимально. Однако найти более простой инструмент для этого функционала мне не удалось, поэтому будем работать с ней. К тому же, в дальшейшем планируется развитие сети, и OSPF будет очень полезным.
Итак, я не буду углубляться в архитектуру и возможности Quagga, об этом можно почитать как на оффсайте, так и в материалах по ней в Сети. Скажу лишь, что буду использовать только демон zebra, который занимается непосредственно таблицами маршрутизации и умеет следить за состоянием сетевых интерфейсов. Собственно, требуется мониторить состояние (подключено/неактивно) двух интерфейсов (eth200 - "толстый инет", ppp200 - "хилый инет") и при неактивности первого переключаться на второй, а при возвращении линка - восстанавливать первоначальное состояние.
Всех дел - создать zebra.conf следующего содержания:
! -*- zebra -*-
!
! zebra sample configuration file
!
hostname zebra
password zebra
enable password ezebra
!
! Interface's description.
!
interface ppp200
description beeline gprs
link-detect
!
interface eth200
description multinex vlan
link-detect
!
ip route 0.0.0.0/0 23.45.67.89 1
ip route 0.0.0.0/0 ppp200 2
ip route 0.0.0.0/0 null0 255
!
log file /var/log/quagga/zebra.log
Поля hostname, password, enable password заполняются произвольно, смысл понятен из названий. Описания интерфейсов: interface - имя интерфейса, за которым следим, description - его описание (для себя), link-detect - включение слежения за состоянием соединения. Маршруты: описываем множественный маршрут по умолчанию, последняя цифра - метрика (меньше - важнее). Если живы оба интерфейса, прописывается маршрут с меньшим значением метрики.
Далее в /etc/quagga/zebra.conf включаем демон zebra:
zebra=yes
Теперь запускаем кваггу и подключаемся с ней telnet'ом:
/etc/init.d/quagga start
Loading capability module if not yet done.
Starting Quagga daemons (prio:10): zebra.
telnet localhost 2601
Если оба линка активны, то в список статических маршрутов выглядеть примерно так:
zebra> show ip route static
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
       I - ISIS, B - BGP, > - selected route, * - FIB route

S   0.0.0.0/0 [255/0] is directly connected, Null0, bh
S   0.0.0.0/0 [2/0] is directly connected, ppp200
S>* 0.0.0.0/0 [1/0] via 23.45.67.89, eth200
Звездочка показывает, какой маршрут в данный момент используется. Если сейчас выдернуть провод из eth200, звездочка переместится на ppp200. При возвращении линка в eth200 маршрут снова переместится, так как метрика у eth200 выше. В момент запуска зебры этой звездочки может и не быть, если демону не приходилось выбирать маршрут.
P.S.: Данное решение также не лишено недостатков. Так как переключение маршрутов основано на состоянии линка, то при проблемах программного харакактера у провайдера (eth200) активный линк не дает гарантии наличия интернета. С ppp-интерфейсами тут проще, они при потере связи с концентратором падают. Все это стоит иметь в виду при построении своей сети.

16 мар. 2011 г.

MediaTomb и Samsung LNA+

Выяснилось, что при умолчальных настройках DLNA-сервер Mediatomb (в итоге именно на его пал выбор, ибо minidlna ни под каким соусом не кушал у меня .mkv, rygel безбожно тормозил и тоже фыркал на некоторые "матроски", а других я и не знаю)  и LNA+-клиент Samsung'a (LCD-телек пятой серии) знать друг друга не видят. Уж чья реализация протокола кривая, не так и важно. Главное, что лечится добавлением в /etc/mediatomb/config.xml:
<custom-http-headers>
   <add header="X-User-Agent: redsonic"/>
 </custom-http-headers>
Далее оказалось, что при проигрывании медиа-контента товарищ телек ведет себя как телек, а не как медиапроигрыватель, а именно - не дает нажать на паузу и перемотать. Правильнее сказать, не реагирует на нажатия соответствующих кнопок пульта. Это лечится таким образом (в том же config.xml):
<custom-http-headers><add header="X-User-Agent: redsonic"/>
 <add header="transferMode.dlna.org: Streaming"/>
 <add header="contentFeatures.dlna.org: DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01500000000000000000000000000000"/>
</custom-http-headers>

В интернетах встречал строчку с "017...." - так вот с ней пауза-перемотка не работают. Признаться, в такой конфигурации тоже не все гладко: Пауза-Воспроизведение начинают работать, однако перемотка включается не спецклавишами, а центральным крестиком (влево-вправо соответственно), плюс пультовый "ентер" дублирует паузу. Но лучше так, чем никак. К тому же телек дает соответствующую функциональную подсказку, что нажать ;)
И еще один момент напоследок из того, что пока не выветрилось из головы в процессе знакомства с MediaTomb'ом - следующие строки добавляют в значки файлов филмов кадры из этих фильмов.
<ffmpegthumbnailer enabled="yes">
     <thumbnail-size>128</thumbnail-size>
     <seek-percentage>5</seek-percentage>
     <filmstrip-overlay>yes</filmstrip-overlay>
     <workaround-bugs>no</workaround-bugs>
 </ffmpegthumbnailer>
В данном примере кадр берется из точки в 5% от начала фильма. Можно дать другую цифру, получив другой кадр (если к примеру, большая часть фильмов показывается как черные квадраты.
З.Ы.: xml-код вставлен с помощью сервиса QuickEscape.

10 мар. 2011 г.

openfire LSB-init

Недавно зарелизившийся openfire-3.7.0 (да и более старые версии) при установке в среде Debian Lenny/Squeeze складывает в /etc/init.d скрипт запуска "старого образца", который не проходит проверку LSB, о чем ОС неустанно повторяет.
update-rc.d: warning: /etc/init.d/openfire missing LSB information
И если в Lenny на это можно не обращать внимания, то в Squeeze уже подобное несоответствие может вызвать проблему совместимости с dependency based boot, используемой в этом релизе по умолчанию. Полечить можно вручную, почитав, к примеру, тут. Однако, как обычно бывает в мире FOSS, "все уже украдено до нас": имеется патч, LSB-ирующий умолчальный init-script.

27 февр. 2011 г.

Flash + fullscreen

Выяснилась неприятная проблема - в моем Sid'е в Firefox (и в Chrome тоже) невозможно запустить flash-видео в полноэкранном режиме. При попытке развернуть замечательно идущий ролик на полный экран - получаем крах flashplugin'а. Беглый гуглинг показал, что проблема известна и лечится добавлением в прелоад библиотеки /usr/lib/libGL.so.1. Однако оказалось, что такой библиотеки у меня попросту нет. Оказалось, что проприетарные драйверы от NVidia устанавливают собственную версию сей либы, и лежит она по адресу /usr/lib/nvidia/diversions/libGL.so. Таким образом, в моем случае проблему фулскрина флешроликов удалось решить парой символических ссылок:
ln -s /usr/lib/nvidia/diversions/libGL.so /usr/lib/libGL.so
ln -s /usr/lib/nvidia/diversions/libGL.so /usr/lib/libGL.so.1
 

18 февр. 2011 г.

Elastix в Openvz

Метода по созданию openvz-контейнера с Elastix. Годно, проверено на elastix-2.0.3.

12 февр. 2011 г.

МТС Коннект 3 + ZeroCD


Если раньше мтс-ные олени являлись по сути модемами Huawei E1550 и иже с ним, которые сами по себе устройства простые и рулятся usb_modeswitch'ем на раз, то сейчас яичный оператор предлагает более скоростные (до 7,2 Mbit/s) устройства - Huawei E171. Они сложнее и умнее, умеют сразу быть и кардридером, и модемом, и еще чем-то там. Не забыт и приснопамятный ZeroCD. Да, с одной стороны usb_modeswitch (под рукой имеется версия 1.1.0-2 с базой от 20100127-1) в курсе об этом модеме, но с другой - сегодня отсутствует необходимость переключать его из режима ZeroCD в режим 3G-модема, так как они оба доступны сразу и не мешают друг другу. Проблема в том, что мне нужен только модем, а виндовый инсталлятор какого-то там красно-белого софта даром не упал. Но pcmanfm этот "диск" все равно чует и любезно вываливает окошко с предложением смонтировать и открыть.
Однако решение есть, причем достаточно функциональное в отношении всего ряда устройств Huawei точно, и наверняка еще чьих-то других. Как и любой модем, сей дефайс понимает AT команды. И выяснилось, что есть набор команд, позволяющий корректировать список устройств, инициализируемых при вставке "железки". В моем случае это модем, сетевая карта, кард-ридер, зеро-диск.
Так как мне жить мешает только последнее, его и будем вычленять. Делается это забросом в порт устройства (/dev/ttyUSB0, как правило) команды AT^U2DIAG=256, например, таким образом:
 echo -e "AT^U2DIAG=256\r" > /dev/ttyUSB0
Если затем поглядеть в порт, мы должны увидеть попавшую туда команду и ответ устройства:
cat /dev/ttyUSB0
AT^U2DIAG=256
OK
Теперь, если заново воткнуть устройство в usb-порт, zerocd не проинициализируется, однако остальной фунцкионал останется на месте.
Информации конкретно об этом устройстве в Сети как-то маловато, но, очевидно, основная часть параметров AT^U2DIAG для huawei-девайсов совпадает. Можно погуглить без указания конкретной модели. Вот тут, к примеру, табличка есть.

9 февр. 2011 г.

Firefox + отображение исходного кода страницы.

Интересную бодягу удалось пронаблюдать на рабочей станции с Windows Vista на борту. Как обычно, ВНЕЗАПНО!!1. Система стала грузиться вдвое дольше обычного, а Firefox (на других браузерах не проверял) вместо страниц стал отображать их исходный код. То есть кликаешь по ссылке, получаешь на выходе текстовый файл с сорцами страницы по ссылке. Весело ;) Беглый гуглинг подтвердил мысль о некоем недобитом зверье - вот тут, например, об этом обсуждают, не указывая правда, что за зверье такие какашки оставляет. Мои же раскопки в системе выявили лишь (из обсуждаемого в треде) ключ AppInit_DLLs со значением "C:\Windows\system32\nrnpcdh.dll"  в ветке HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows. Ключ почистил, библиотеку поделил. В остальных "злачных" местах (ключи Shell и иже с ним в соседней ветке Winlogon) все вроде осталось без изменений. После ребута проблема ушла. Проблемка, очевидно, свежая, в инетах информации о подобных глюках мало, поэтому надеюсь, что данная статья кому и подможет.

6 февр. 2011 г.

Настройка импорта в Firefox BlockSite

Обчитавшись вот этого (UPD: а также хабра) и помня репутацию всех наших любимых опсосов вообще и МТС в частности (на предмет выуживания денех у населения "относительно честными способами" (с) О. Бендер), озаботился вопросом. Автор сабжевой статьи прилагает список "нехороших" ресурсов. Продублирую:

*.wap.mtsmusic.ru
*.wap. mtsvideo.ru
*.nr.mtsvideo.ru
*.comedy.mtscity.ru
*.univer.mtsvideo.ru
*.liga.mtsvideo.ru
*.free.hentamobile.ru
*.mtsiphone.ru
*.icb.newsmts.ru*
.wap.mtscity.ru
*.wap.mts.ru/redbox
*.freeja.ru
*.win.samsungmobile.ru
*.wapja.ru
*.hiscore-re.rankingames.com
*.free.i-free.ru/mts
*.free.zagruzka.com/mts
*.waprika.ru
*.mtc.nawap.com
*.mts.nawap.com
*.mts.damwap.ru
*.mts.damwap.ru
*.wap.partyfon.ru
*.wap.free.infon.ru
*.mobigamz.russia.zed.com
*.wap.oki-doki.mobi
*.wap.gidwap.ru
*.1124.ru
*.doomcity.ru
*.mts.wapland.ru
*.wapland.ru
*.spywap.ru
*.flirtmob.ru
*.mybeep.ru
*.wapcafe.ru
*.mts18plus.com
*.wap.adultfon.ru
*.mts-olymp.daem.ru
*.tube.ljmob.ru
*video.sport.mts.ru
*.video-u.ru
*.intern.mtsvideo.ru
*.wap.mtsfree.playfon.ru
*.wap.dating.playfon.ru
*.wap.mtsfun.playfon.ru
*.wap.mtstones.playfon.ru
*.funtrack.ru
*.download-funny.ru
*.adultfon.mobi
*.m.ideawidgets.ru
*.m.ideawidgets.ru
*.m.ideawidgets.ru
*.wap.neoline.mobi
*.neoline.mobi
*.wap.tamgam.ru
*.tamgam.ru
Не берусь утверждать истинность как самой статьи, так и полноту представленного списка, но почему то мне в это верится. ;) А если дома интернет планируется получать с помощью МТС-оленя, то хочется себя обезопасить. Может, да, паранойа, но береженого, сами знаете... Итак, что можно сделать. Вариант с блокировкой редиректов со страницы на страницу хорош, но не всегда удобен, да и никто не мешает пользователю самостоятельно кликнуть "нужный" банер, а попасть в "ненужный". Поэтому будем блокировать заданные ресурсы. Для Firefox-а имеется специальное дополнение для этих целей - BlockSite, его и используем. Интерфейс настройки прост и понятен до безобразия - галка включить/выключить, галка, управляющая появелнием warning-ов о попытке залезть "не туда", выбор работы в режиме черного/белого списков, возможность авторизации (для запрета изменения настроек), и собственно список. А вот тут выяснился интересный кось. Оказалось, что если взять файлик со списком сайтов, которые не хочется вбивать ручками, а хочется импортировать, и скормить его BlockSite'у, то мы получим - ничего. Так вот, чтобы заявленную возможность импорта спика ресурсов из текстового файла получить, нужно сделать следующее: в первую строку данного файла сделать запись [BlockSite]. Все, после этой нехитрой манипуляции мы получаем замечательный инструмент блокирования нежелательных ресурсов.

2 февр. 2011 г.

Linux Mint 9 LXDE + неправильное разрешение экрана

Как известно, в свежих ubuntu и родственных дистрибутивах от файла xorg.conf как такового отказались (хотя вроде и вернуться уже не прочь). Так или иначе, подрегулировать неправильно выставляемое автоматикой разрешение экрана привычным образом (через добавлением в xorg.conf вывода gtf с нужными параметрами) не выходит.
Однако копание в недрах дистрибутива (под руку с проблемой попался Linux Mint 9) показало, что не все потеряно  ;). Оказалось, в системе имеется папочка /usr/lib/X11/xorg.conf.d/, внутри которой лежат файлики :
ls -l /usr/lib/X11/xorg.conf.d/
-rw-r--r-- 1 root root 946 2010-03-31 09:15 05-evdev.conf
-rw-r--r-- 1 root root 766 2010-04-16 01:17 10-synaptics.conf
-rw-r--r-- 1 root root 139 2010-04-22 18:48 10-vmmouse.conf
-rw-r--r-- 1 root root 480 2010-04-23 00:55 10-wacom.conf
Посмотрев внутрь, я узрел знакомые очертания разных секций старого доброго конфига X.org-а. А посему созрела мысль - создать тут файлик с описанием нужных мне параметров отображения дисплея (Section "Screen" и Section "Monitor"). Сказано - сделано:
cd /usr/lib/X11/xorg.conf.d/
touch 00-video.conf
Сразу запишем туда параметры дисплея. генеруемые утилитой gtf:
gtf 1366 768 60 >> 00-video.conf
gtf 1600 900 60 >> 00-video.conf
Я делаю для двух разрешений, чтобы понять. какое больше подойдет к моему монитору, но для работы достаточно и одного, конечно же.
Далее приводим созданный файл к следующему виду:
Section "Monitor"
        Identifier   "Monitor0"
        VendorName   "CompaQ"
        ModelName    "CompaQ AIO"
  # 1600x900 @ 60.00 Hz (GTF) hsync: 55.92 kHz; pclk: 119.00 MHz
        Modeline "1600x900_60.00"  119.00  1600 1696 1864 2128  900 901 904 932  -HSync +Vsync
   # 1368x768 @ 60.00 Hz (GTF) hsync: 47.70 kHz; pclk: 85.86 MHz
        Modeline "1368x768_60.00"  85.86  1368 1440 1584 1800  768 769 772 795  -HSync +Vsync
EndSection
Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        SubSection "Display"
                Depth     24
                Modes "1600x900_60.00" "1368x768_60.00"
        EndSubSection
EndSection
 Сейчас достаточно перезапустить X-сервер, в моем случае (я использую LXDE):
/etc/init.d/lxdm restart
Разрешение должно выставиться в 1600 на 900 точек.

LXDE + двойной клик.

Оказалось, что в LXDE (как минимум, при работе с PCmanFM) по умолчанию очень мал интервал двойного клика мышкой (то есть максимальное время между кликами, при котором действие распознается именно как один двойной щелчок, а не два одинарных), по некоторым данным, 250 миллисекунд. В ряде случаев это доставляет неудобство.
Как порешать проблему средствами самой LXDE, я не знаю, однако на просторах сети нашелся простой рецепт: в файл ~/.gtkrc-2.0 вписываем строчку
gtk-double-click-time=1000
 где 1000 - время между кликами в миллисекундах. Если файла нет, создаем и вписываем ;). Далее требуется перезапуск DE.

31 янв. 2011 г.

VPN inside OpenVZ

Возникла задача - установить vpn-подключение (openvpn, keriovpn, неважно) из openvz-контейнера (в нем запущен Debian Lenny). Облом случился в виде невозможности создать tun/tap устройство. Решается внесением следующих изменений в настройки контейнера (в примере его VeID 101):
vzctl set 101 --devices c:10:200:rw --save
vzctl set 101 --capability net_admin:on --save ##возможно только при выключенном контейнере
Несколько изменений вносится и в саму виртуальную ОС:
vzctl exec 101 mkdir -p /dev/net
vzctl exec 101 mknod /dev/net/tun c 10 200
vzctl exec 101 chmod 600 /dev/net/tun
Рецепт подсмотрен здесь.

30 янв. 2011 г.

bind9 + форвардинг отдельной зоны.

Для многих это покажется элементарщиной и вопросом, достойным гневного "RTFM!", но тем не менее, вполне может пригодиться. Задачка следующая: сказать шлюзному DNS-серверу (в роли которого выступает bind9), что заданную зону (в моем случае .vpn) спрашивать у отдельного DNS-сервера, а не ходить за ней к провайдеру, который ни сном ни духом. Делается это просто: в файл /etc/bind/named.conf.local добавляем следующие строки:
zone "vpn" {
    type forward;
    forwarders { dns-server-ip; };
    };
где  dns-server-ip, конечно, адрес сервера, знающего всю правду о зоне .vpn. После этого перезапускаем bind и проверяем работоспособность nslookup-ом.
Для реверсивного разрешения (при условии, что на удаленном сервере оно настроено) действия аналогичны:

zone "xxx.168.192.in-addr.arpa" {
    type forward;
    forwarders { dns-server-ip; };
    };
xxx.168.192 - обратная запись айпишников, в которые разрешаются dns-ки зоны vpn.

27 янв. 2011 г.

Win2k3 autologin

Включение автологина в Windows 2k3. Возможно, работает в других версиях, не проверял.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

Create the string DefaultPassword with the value set as your password
Make sure string DefaultUserName exists and that the value is set to your username
Найдено тут.

21 янв. 2011 г.

К вопросу о WinXP Home Edition.

В отличие от XP Pro, хомяк не имеет по умолчанию шар C$, admin$, а также не пускает к себе по сети никого, кроме гостей (точнее, всех с правами гостя), поэтому удаленно поставить софт (тот же антивирус касперского или доктор веб средствами админкита) проблематично. Однако решение есть, пусть и не совсем тривиальное - тут.

17 янв. 2011 г.

Планировщик Windows 2008, ошибка 2147943645.

Я не win-админ, но встречаться с серверными виндами иногда приходится. Запишу, дабы не забыть. Кось (фича?) win2k8R2: при создании задания планировщика по умолчанию задание запускается только от зарегистрированного в системе пользователя (не в смысле, что пользователь должен существовать, а в смысле, что он должен быть залогинен). В случае, если эта галка не стоит (ставится в свойствах задания во вкладке Общие - Выполнять вне зависимости от регистрации пользователя), то задание от имени незалогиненного в момент срабатывания триггера планировщика пользователя не выполняется, а в журнал валится ошибка:
Планировщику заданий не удается запустить задачу "такую-то" для пользователя "такого-то". Дополнительные сведения: значение ошибки: 2147943645.
Предлагаемое в форумах Technet'а решение - выставить вышеописанную галку и до кучи поставить галку "Выполнить с наивысшими правами", расположенную там же.

5 янв. 2011 г.

Сортировка и отображение по умолчанию в LXDE.

Дано: pcmanfm-0.9.8-1.
Проблема: При открытии файлы/папки отображаются в виде значков и сортируются по типу. Установка умолчаний работает до ребута.
Задача: Прибить гвоздями новые умолчания - сортировка по имени и отображение в подробном виде.
Решение:
sudo nano /usr/share/lxde/pcmanfm/LXDE.conf
Привести секцию [ui] к виду:
[ui]
always_show_tabs=1
hide_close_btn=0
win_width=1024
win_height=768
view_mode=3  ## подробный вид
show_hidden=0
sort_type=0
sort_by=2 ## сортировка по имени
PROFIT!