<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3294045657797660908</id><updated>2011-12-23T15:52:01.014+07:00</updated><category term='кровавая гебня'/><category term='courier'/><category term='gentoo'/><category term='acpi'/><category term='postfix'/><category term='fedora'/><category term='interfaces'/><category term='low memory'/><category term='eeepc'/><category term='vimrc'/><category term='3G'/><category term='linux bash shell script pmacct traffic траффик'/><category term='goodby microsoft'/><category term='pppd'/><category term='shell'/><category term='Linux virtual disk'/><category term='nginx'/><category term='mts'/><category term='internet'/><category term='script'/><category term='windows'/><category term='freebsd'/><category term='мтс'/><category term='Sony Ericsson'/><category term='grub2'/><category term='vim'/><category term='compiz'/><category term='usplash'/><category term='мобильный'/><category term='интернет'/><category term='bind'/><category term='humor'/><category term='system'/><category term='shell script'/><category term='boot'/><category term='Debian'/><category term='php'/><category term='modem'/><category term='apt'/><category term='ssh'/><category term='chroot'/><category term='bash'/><category term='book'/><category term='Knoppix'/><category term='shell-cript'/><category term='text'/><category term='dns'/><category term='Linux'/><category term='на заметку'/><category term='EDGE'/><category term='drupal'/><category term='network'/><category term='LiveCD'/><category term='Линукс'/><category term='GPRS'/><category term='vista'/><title type='text'>cppmm's Tech blog</title><subtitle type='html'>Разные, на мой взгляд, интересные замечания, связанные с компьютерами в частности и техникой вообще.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://cppmm.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://cppmm.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Anton "cppmm" Kropachev</name><uri>http://www.blogger.com/profile/05815356399793900372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://bp0.blogger.com/_LiQ6ICkCjiM/SHPbwTA2tbI/AAAAAAAAAQw/QWV70OspyLA/S220/003.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>30</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3294045657797660908.post-4009903548692357305</id><published>2011-02-26T10:55:00.005+06:00</published><updated>2011-02-26T14:00:33.094+06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nginx'/><category scheme='http://www.blogger.com/atom/ns#' term='drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Ошибка Drupal и ImageCache при использовании nginx в качестве проксирующего web-сервера</title><content type='html'>Есть у меня под присмотром один сервер. Сервер это находится чёрт знает где, а компания, которая предоставляет его довольно жадная. На сервере около 20-ти разнообразных сайтов и на всё про всё 192 метра оперативки. Вот, недавно нагрузка окончательно стала добивать его, поэтому было решено воткнуть nginx как фронтенд как установленному там апачу(изначально не сделал так, потому как там не полноценный сервер, где что хочу, то и творю, а выделенный в chroot на FreeBSD). Собрал, поставил, настроил. Всё хорошо, нагрузка упала, но через некоторое время на части сайтов(те, что с Drupal, как раз) не отображались уменьшенные изображения залитых после перехода на связку nginx+apache картинок.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Долго пытался понять, в чём дело, перепроверил все, связанные с файлами настройки nginx, но так и не мог понять, в чём проблема. В итоге, взялся смотреть, что вообще происходит на сервере при загрузке любого изображения на проблемных сайтах. И выяснилось, что всё нормально работает, картинки загружаются и даже вполне себе доступны по прямому пути, а не отображаются только превьюшки. Тут и выяснилось, что проблема не в самом nginx, а в php'шном модуле ImageCache и Drupal'е. Я не знаю, кто этот костыль придумывал и откуда у него руки, но работает эта штука по такой вот схеме:&lt;br /&gt;1. Картинка загружается, в базе создаётся соответствующая запись, но превьюшки ещё нет.&lt;br /&gt;2. Пользователь заходит на страницу, где должна быть превьюшка, движок видит, что её нету по ссылке, перехватывает на себя 404-ую ошибку и с помощью ImageCache генерит превьюшку, которая тут же замечательно отображается.&lt;br /&gt;3. Превьюшка сохраняется на диске, поэтому в дальнейшем заново ничего генерить не надо.&lt;br /&gt;Это же только вдуматься надо. Создавать обычный контент, провоцируя критическую для такого случая ошибку! &lt;br /&gt;Почему нельзя было сгенерить превьюшку сразу, я не знаю. Видимо, это показалось разработчикам слишком уж &lt;i&gt;обычно&lt;/i&gt;, что ли. Не знаю, как по-другому сказать. И, честно говоря, не знаю, кто придумал такое решение разработчики drupal'а или imagecache. Разбираться было лень - не люблю ни друпал, ни всё, что связано с php.&lt;br /&gt;Разумеется, при использовании nginx как проксирующего сервера и настройке грамотной отдачи статики без привлечения апача, он пытался отдавать превьюшки сам. Но ведь их нет. Апач-то с php никакого запроса не получали. И drupal с imagecache ничего не сгенерировали. И потому вместо превьюшек nginx честно отдавал 404.&lt;br /&gt;В общем, решилось дело добавлением вот такого вот костыля в описание каждого виртхоста с drupal'ом и imagecache:&lt;br /&gt;&lt;pre&gt;location @d_ic_hook {&lt;br /&gt;&amp;nbsp; proxy_pass              http://sitename:8080;&lt;br /&gt;&amp;nbsp; proxy_set_header        Host   $host;&lt;br /&gt;&amp;nbsp; proxy_set_header        X-Real-IP  $remote_addr;&lt;br /&gt;&amp;nbsp; proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;&lt;br /&gt;}&lt;br /&gt;location ~* $images {&lt;br /&gt;&amp;nbsp; root /path/to/site/root;&lt;br /&gt;&amp;nbsp; error_page 404 = @d_ic_hook;&lt;br /&gt;&amp;nbsp; proxy_cache_valid 404 1m;&lt;br /&gt;}&lt;/pre&gt;Т.е. я вместо того, чтобы выдать свою обычную nginx'овскую 404-ую ошибку, принудительно перенаправляю любую 404-ую ошибку на апач, а тот уже отрабатывает её так, как ему нужно.&lt;br /&gt;Превьюшки появились, пользователи довольны, а я ещё раз для себя на всякий случай отметил как делать не надо, если надумаю писать какую-нибудь программу или скрипт.&lt;br /&gt;&lt;br /&gt;UPD: Грамотные люди подсказывают, что виноват именно ImageCache.&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294045657797660908-4009903548692357305?l=cppmm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppmm.blogspot.com/feeds/4009903548692357305/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://cppmm.blogspot.com/2011/02/drupal-imagecache-nginx-web.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/4009903548692357305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/4009903548692357305'/><link rel='alternate' type='text/html' href='http://cppmm.blogspot.com/2011/02/drupal-imagecache-nginx-web.html' title='Ошибка Drupal и ImageCache при использовании nginx в качестве проксирующего web-сервера'/><author><name>Anton "cppmm" Kropachev</name><uri>http://www.blogger.com/profile/05815356399793900372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://bp0.blogger.com/_LiQ6ICkCjiM/SHPbwTA2tbI/AAAAAAAAAQw/QWV70OspyLA/S220/003.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294045657797660908.post-6804634262881921993</id><published>2011-01-15T01:36:00.003+06:00</published><updated>2011-01-15T01:58:37.114+06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dns'/><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='bind'/><title type='text'>Управление зонами в BIND9</title><content type='html'>Давно обещал немного рассказать про организацию своей домашней сети. Надеюсь, в дальнейшем это выльется в цикл статей.&lt;br /&gt;Начнём с DNS.&lt;br /&gt;У меня стоит отдельный роутер и разумеется внутри сети используются так называемые серые ip-адреса. Когда компов мало, можно ходить на них по ip, но я админ ленивый, а потому стараюсь всегда упростить себе жизнь. Ещё один минус связи исключительно по ip-адресам - скрипты. Ну, например, укажу я монтирование удалённого диска в скрипте по ip-адресу, а через пару месяцев захочется мне этот ip сменить(мало ли чего, всякое бывает). Придётся в скрипте править. А если таких скриптов много? Возникает проблема. Чтобы такого не было, лучше настроить связь между компами по именам, тогда при смене ip одного из компов, будет достаточно лишь поправить запись в DNS.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Немного скучной истории. Изначально, когда интернет был маленький, а количество компов в сети исчислялось едва ли сотнями, а не как сейчас миллионами, соответсвие имя-адрес просто записывалось в файл /etc/hosts, которым и обменивались все компьютеры. В этом файле должны были содержаться записи для всех имеющихся в сети компов. С разрастанием интернета и увеличением количества участников сети, файл это стал неимоверно разбухать. Да и обмен становился проблематичным - в одном месте кто-то добавил адрес, в другом, кто-то добавил другой, получается в сети ходят уже две версии файла, которые надо объединять. Сначала пытались распространять его централизовано, а потом поняли, что так дальше не пойдёт и была придумана нынешняя система доменных имён.&lt;br /&gt;В славном американском университете Беркли(давшем нам много хорошего, среди прочего ОС FreeBSD) разработали новую систему обмена информацией о именах компьютеров и написали сервер BIND(&lt;i&gt;Berkeley Internet Name Domain&lt;/i&gt;). Суть заключается в том, что теперь специальный сервер хранит соответствия имён и адресов в свое базе, следит за обновлениями и по мере надобности отдаёт эту информацию приложениям. Помимо этого, демон named(основная часть сервера BIND) отвечает на запросы удалённо, благодаря чему, нет надобности держать копию базы имён на каждом компе - достаточно одного сервера для работы, например, сети организации. Ну или в моём случае домашней сети.&lt;br /&gt;На данный момент для поддержки DNS(&lt;i&gt;Domain Name System&lt;/i&gt;)&amp;nbsp; в мире существует 13 корневых DNS-серверов, несколько зеркал каждого из них и бесчисленное множество кеширующих/авторитетных и других серверов, разбросанных по всему миру.&lt;br /&gt;Помимо BIND существуют другие реализации сервера доменных имён, но BIND считается стандартом де-факто. В замечательной книге "&lt;a href="http://www.books.ru/shop/books/499617"&gt;Руководство администратора Linux&lt;/a&gt;", например, приводится такая таблица:&lt;br /&gt;&lt;b&gt;Таблица 15.1. Некоторые популярные реализации DNS&lt;/b&gt;&lt;br /&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;                 &lt;td&gt;&lt;b&gt;Название&lt;/b&gt;&lt;/td&gt;                 &lt;td&gt;&lt;b&gt;Автор&lt;/b&gt;&lt;/td&gt;                 &lt;td&gt;&lt;b&gt;Источник&lt;/b&gt;&lt;/td&gt;                 &lt;td&gt;&lt;b&gt;Комментарии&lt;/b&gt;&lt;/td&gt;         &lt;/tr&gt;&lt;tr&gt;                 &lt;td&gt;BIND&lt;/td&gt;                 &lt;td&gt;ISC&lt;/td&gt;                 &lt;td&gt;&lt;a href="http://isc.org/"&gt;isc.org&lt;/a&gt;&lt;/td&gt;                 &lt;td&gt;Авторитетная и кеширующая&lt;/td&gt;         &lt;/tr&gt;&lt;tr&gt;                 &lt;td&gt;NSD&lt;/td&gt;                 &lt;td&gt;NLnet Labs&lt;/td&gt;                 &lt;td&gt;&lt;a href="http://www.nlnetlabs.nl/"&gt;www.nlnetlabs.nl&lt;/a&gt;&lt;/td&gt;                 &lt;td&gt;Только авторитетная&lt;/td&gt;         &lt;/tr&gt;&lt;tr&gt;                 &lt;td&gt;PowerDNS&lt;/td&gt;                 &lt;td&gt;PowerDNS BV&lt;/td&gt;                 &lt;td&gt;&lt;a href="http://www.powerdns.com/"&gt;www.powerdns.com&lt;/a&gt;&lt;/td&gt;                 &lt;td&gt;Только авторитетная&lt;/td&gt;         &lt;/tr&gt;&lt;tr&gt;                 &lt;td&gt;djbdns(tinydns)&lt;/td&gt;                 &lt;td&gt;Dan Gernstein&lt;/td&gt;                 &lt;td&gt;&lt;a href="http://tinydns.org/"&gt;tunydns.org&lt;/a&gt;&lt;/td&gt;                 &lt;td&gt;Не согласована с некоторыми документами RFC&lt;/td&gt;         &lt;/tr&gt;&lt;tr&gt;                 &lt;td&gt;Microsoft DNS&lt;/td&gt;                 &lt;td&gt;Microsoft&lt;/td&gt;                 &lt;td&gt;&lt;a href="http://microsoft.com/"&gt;microsoft.com&lt;/a&gt;&lt;/td&gt;                 &lt;td&gt;Виновата в неисчислимых грехах&lt;/td&gt;         &lt;/tr&gt;&lt;tr&gt;                 &lt;td&gt;ANS, CNS&lt;/td&gt;                 &lt;td&gt;Nominum&lt;/td&gt;                 &lt;td&gt;&lt;a href="http://www.nominum.com/"&gt;www.nominum.com&lt;/a&gt;&lt;/td&gt;                 &lt;td&gt;Авторитетная и кеширующая&lt;/td&gt;         &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Я решил не уходить далеко от стандартов и воспользоваться BIND.&lt;br /&gt;Итак, что нужно. Установить bind.&lt;br /&gt;У меня сервер на debian, поэтому действуем стандартно:&lt;br /&gt;&lt;blockquote&gt;apt-get install bind9&lt;/blockquote&gt;Стандартное расположение конфигов Debian мне в данном случае не очень нравится, поэтому я полностью переписал свой named.conf. Да, понимаю, что не православно, но&amp;nbsp; привычка сильнее меня.&lt;br /&gt;Итак, конфиг:&lt;br /&gt;// This is the primary configuration file for the BIND DNS server named.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;acl localnet {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10.0.0.0/24;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 127.0.0.1/32;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;options {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; directory "/var/cache/bind";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; version "root@cppmm.net.ru";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; auth-nxdomain no;&amp;nbsp;&amp;nbsp;&amp;nbsp; # conform to RFC1035&lt;br /&gt;// На каких адресах слушать.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listen-on {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10.0.0.11;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 127.0.0.1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 109.124.35.175;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; allow-query {&lt;br /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; localnet;&lt;br /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;};&lt;br /&gt;// Описание настроек для "себя"&lt;br /&gt;view "local" {&lt;br /&gt;// Те, кому отдаются данные из описанного ниже.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; match-clients {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; localnet;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; recursion yes;&lt;br /&gt;// Стандартные зоны&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; zone "." {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type hint;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; file "/etc/bind/all_db/db.root";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; zone "localhost" {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type master;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; file "/etc/bind/all_db/db.local";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; zone "127.in-addr.arpa" {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type master;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; file "/etc/bind/all_db/db.127";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; zone "0.in-addr.arpa" {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type master;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; file "/etc/bind/all_db/db.0";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; zone "255.in-addr.arpa" {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type master;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; file "/etc/bind/all_db/db.255";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;// Моя зона для внутреннего доступа&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; zone "cppmm.net.ru" IN {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type master;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; file "/etc/bind/local/db.cppmm.net.ru";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;};&lt;br /&gt;// Описание настроек для "мира"&lt;br /&gt;view "inter" {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; match-clients {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; any;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; recursion no;&lt;br /&gt;// зона для которой мой мастер является мастером.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; zone "cppmm.net.ru" IN {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type master;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; file "/etc/bind/inter/db.cppmm.net.ru";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; allow-transfer {&lt;br /&gt;// здесь перечислены серверы, которые являются слейвом для моей зоны&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 22.33.44.55;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 33.44.55.66;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;// Зона, для которой мой сервер является слейвом, т.е. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; zone "sitename.ru" {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type slave;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; file "/etc/bind/inter/db.sitename.ru";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; masters {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 11.22.33.44;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;// Ещё одна зона, для которой мой сервер является слейвом, но уже в домене .рф &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; zone "XN--H1AEBJVHAXXD5A.XN--P1AI" {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type slave;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; file "/etc/bind/inter/db.XN--H1AEBJVHAXXD5A.XN--P1AI";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; masters {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 11.22.33.44;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;// Далее идут описаний других зон, для которых мой сервер является слейвом.&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;Ну, стандартные настройки - на каком порту слушать, кому отвечать и прочее - это, я думаю и так понятно. Самое интересное в данной конфигурации - это view - представления для разных клиентов. Проще говоря, в зависимости от того, кто именно спрашивает, я отдаю разные данные. Таким образом, весь мир получает информацию о моём домене с реальным ip-адресом, а мои домашние компьютеры ходят друг к другу по именам в сетке с серыми ip(ниже покажу файл зоны).&lt;br /&gt;Отдельно поясню по поводу мастеров и слейвов. По RFC за каждую доменную зону в интернете должно отвечать минимум два сервера - мастер и слейв. На мастере собственно находятся данные о домене, а слейв просто дублирует их, забирая периодически у мастера базу зоны. Сделано так для отказоустойчивости. Если один сервер по каким-либо причинам выпадет из сети, второй будет отдавать информацию. Причём по RFC серверы должны быть в разных ip-сетях, а лучше далеко друг от друга физически. Поэтому мы с друзьями-админами и помогаем друг-другу - они ставят свои серверы слейвом к моей зоне, а я свой настраиваю для поддержки их зон. Кстати, для примера я оставил запись для новых доменов в .рф. Вот так в действительности выглядит то, что потом трансформируется в кириллицу(&lt;i&gt;запись из конфига не резолвится, потому что я не знаю, хочет ли хозяин домена, чтобы домен распиарили или нет; я исправил там несколько символов на случайные&lt;/i&gt;). Костыль знатный. &lt;br /&gt;Теперь о файлах зоны. Как видно, в самом конфиге никаких соответствий имя-адрес нет. Есть только описания зон и ссылки на соответствующие файлы. Итак, зона cppmm.net.ru для мира:&lt;br /&gt;;&lt;br /&gt;; BIND reverse data file for broadcast zone&lt;br /&gt;;&lt;br /&gt;$TTL 20m&lt;br /&gt;$ORIGIN net.ru.&lt;br /&gt;cppmm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3600&amp;nbsp;&amp;nbsp;&amp;nbsp; SOA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ns1.cppmm.net.ru.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hostmater.cppmm.net.ru. (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2010111500&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7200&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1800&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 604800&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7200 )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3600&amp;nbsp;&amp;nbsp;&amp;nbsp; NS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ns1.cppmm.net.ru.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3600&amp;nbsp;&amp;nbsp;&amp;nbsp; NS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ns2.someserver.org.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3600&amp;nbsp;&amp;nbsp;&amp;nbsp; MX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10 mail.cppmm.net.ru.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3600&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 109.124.35.175&lt;br /&gt;&lt;br /&gt;$ORIGIN cppmm.net.ru.&lt;br /&gt;mail&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 109.124.35.175&lt;br /&gt;ns1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 109.124.35.175&lt;br /&gt;redmine&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 109.124.35.175&lt;br /&gt;www&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 109.124.35.175&lt;br /&gt;&lt;br /&gt;Некоторые пояснения. Все строки, начинающиеся с точки с запятой - это комментарии.&lt;br /&gt;$TTL - время жизни данных в кеше для кеширующих DNS-серверов. Стоит 20 минут - примерно стандарт. Больше часа ставить обычно не рекомендуют. А чаще всего эту опцию вообще не используют, так как настройки кеширующих dns-серверов обычно это значение перебивают своим.&lt;br /&gt;$ORIGIN - это "старшая" зона. Например, для linux.org старшая зона - org.&lt;br /&gt;Далее непосредственно описание домена.&lt;br /&gt;ns1.cppmm.net.ru. - это имя мастер-сервера для этой зоны.&lt;br /&gt;hostmater.cppmm.net.ru. - это адрес администратора зоны. Первая точка при запросе заменяется на @, таким образом получается e-mail администратора: hostmaster@cppmm.net.ru&lt;br /&gt;Особо стоит обратить внимание на ключик 2010111500. Это значение последнего изменения файла зоны. Слейв-сервер при запросе в первую очередь смотрит на него. Если оно равно хранящемуся в его базе, то зона повторно не стягивается. Если же значение стало больше, зона обновляется. Создано это для того, чтобы серверы зря не гоняли постоянно файлы зон, нагружая при этом сеть.&lt;br /&gt;Записи NS - это мастер и слейв-dns, обслуживающие зону. Запись MX - это почтовый сервер для этой зоны(цифра 10, перед ним означает приоритет - можно выставить несколько почтовых серверов и назначить им разные приоритеты, тогда, если главный почтовый сервер с наивысшим приоритетом выйдет из строя, почта будет доставлено на запасной).&lt;br /&gt;Ну а в самом низу идёт непосредственно список имён этой зоны и ip-адресов, в которые они резолвятся(так называемые A-записи). &lt;br /&gt;Вот и всё. Но такая настройка хороша для внешнего мира, а для внутренней сети всё несколько иначе. Итак, вот описание этой же зоны cppmm.net.ru, но для локальной сети:&lt;br /&gt;;&lt;br /&gt;; BIND reverse data file for broadcast zone&lt;br /&gt;;&lt;br /&gt;$TTL 20m&lt;br /&gt;$ORIGIN net.ru.&lt;br /&gt;cppmm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3600&amp;nbsp;&amp;nbsp;&amp;nbsp; SOA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ns1.cppmm.net.ru.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hostmater.cppmm.net.ru. (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2010110901&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7200&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1800&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 604800&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7200 )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3600&amp;nbsp;&amp;nbsp;&amp;nbsp; NS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ns1.cppmm.net.ru.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3600&amp;nbsp;&amp;nbsp;&amp;nbsp; MX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10 mail.cppmm.net.ru.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3600&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10.0.0.11&lt;br /&gt;&lt;br /&gt;$ORIGIN cppmm.net.ru.&lt;br /&gt;damned&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10.0.0.10&lt;br /&gt;mail&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10.0.0.11&lt;br /&gt;moonchild&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10.0.0.11&lt;br /&gt;ns1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10.0.0.11&lt;br /&gt;redmine&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10.0.0.11&lt;br /&gt;skynet&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10.0.0.12&lt;br /&gt;vault13&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10.0.0.1&lt;br /&gt;www&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10.0.0.11&lt;br /&gt;frontier&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10.0.0.13&lt;br /&gt;&lt;br /&gt;Всё очень похоже. Только для локлаьной сети мне не нужен слейв. Ну и разумеется, все адреса серые. В итоге сам сервер доступен по адресу 10.0.0.11 и имени moonchild.cppmm.net.ru&lt;br /&gt;Основной комп:&lt;br /&gt;10.0.0.10 - damned.cppmm.net.ru&lt;br /&gt;Ещё один комп:&lt;br /&gt;10.0.0.13 - frontier.cppmm.net.ru&lt;br /&gt;Ноут:&lt;br /&gt;10.0.0.12 - skynet.cppmm.net.ru&lt;br /&gt;Wi-fi-роутер:&lt;br /&gt;10.0.0.1 - vault13.cppmm.net.ru&lt;br /&gt;&lt;br /&gt;Плюс к этому, как можно заметить, некоторым ip-адресам присвоено несколько имён(на внешней зоне тоже). Удобно.&lt;br /&gt;Изначально я хотел сделать короткие имена, без домена, но потом отказался от этой идеи, потому как в своей сетке я часто провожу разнообразные опыты и короткие имена мне будут мешать. Как-нибудь объясню, почему. Возможно, в одной из следующих статей цикла.&lt;br /&gt;А по поводу настройки DNS - это всё.&lt;br /&gt;Больше информации можно найти в документации к серверу BIND9 и в книгах:&lt;br /&gt;&lt;a href="http://www.books.ru/shop/books/499617"&gt;Руководство администратора Linux&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.books.ru/shop/books/447326"&gt;Linux. Руководство администратора сети&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.books.ru/shop/books/552030"&gt;DNS и BIND&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294045657797660908-6804634262881921993?l=cppmm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppmm.blogspot.com/feeds/6804634262881921993/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://cppmm.blogspot.com/2011/01/bind9.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/6804634262881921993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/6804634262881921993'/><link rel='alternate' type='text/html' href='http://cppmm.blogspot.com/2011/01/bind9.html' title='Управление зонами в BIND9'/><author><name>Anton "cppmm" Kropachev</name><uri>http://www.blogger.com/profile/05815356399793900372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://bp0.blogger.com/_LiQ6ICkCjiM/SHPbwTA2tbI/AAAAAAAAAQw/QWV70OspyLA/S220/003.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294045657797660908.post-4464254379802082022</id><published>2010-12-26T08:33:00.000+06:00</published><updated>2010-12-26T08:33:46.742+06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><title type='text'>Весёлый hddtemp.</title><content type='html'>ВНИМАНИЕ: Диск /dev/sdb не включен в базу данных поддерживаемых приводов.&lt;br /&gt;ВНИМАНИЕ: Но с использованием распространенных параметров он что-то выдает.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Понимаю, что ничего необычного в этом выводе нет, но всё же как-то бросается в глаза фраза "он что-то выдаёт". :) Звучит настораживающе.&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294045657797660908-4464254379802082022?l=cppmm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppmm.blogspot.com/feeds/4464254379802082022/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://cppmm.blogspot.com/2010/12/hddtemp.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/4464254379802082022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/4464254379802082022'/><link rel='alternate' type='text/html' href='http://cppmm.blogspot.com/2010/12/hddtemp.html' title='Весёлый hddtemp.'/><author><name>Anton "cppmm" Kropachev</name><uri>http://www.blogger.com/profile/05815356399793900372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://bp0.blogger.com/_LiQ6ICkCjiM/SHPbwTA2tbI/AAAAAAAAAQw/QWV70OspyLA/S220/003.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294045657797660908.post-4765410238954465913</id><published>2010-12-21T01:32:00.000+06:00</published><updated>2010-12-21T01:32:24.268+06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='usplash'/><category scheme='http://www.blogger.com/atom/ns#' term='Debian'/><category scheme='http://www.blogger.com/atom/ns#' term='grub2'/><category scheme='http://www.blogger.com/atom/ns#' term='boot'/><title type='text'>Украшаем процесс загрузки в Debian GNU/Linux</title><content type='html'>Вот &lt;a href="http://welinux.ru/post/4756/"&gt;тут&lt;/a&gt; для welinux.ru описал, как настроил у себя заставку grub2 и usplash на нетбуке под управлением Debian GNU/Linux.&lt;br /&gt;А вот &lt;a href="http://www.youtube.com/watch?v=uYw3votpwYo"&gt;тут&lt;/a&gt; можно посмотреть, как оно выглядит.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294045657797660908-4765410238954465913?l=cppmm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://welinux.ru/post/4756/' title='Украшаем процесс загрузки в Debian GNU/Linux'/><link rel='replies' type='application/atom+xml' href='http://cppmm.blogspot.com/feeds/4765410238954465913/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://cppmm.blogspot.com/2010/12/debian-gnulinux.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/4765410238954465913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/4765410238954465913'/><link rel='alternate' type='text/html' href='http://cppmm.blogspot.com/2010/12/debian-gnulinux.html' title='Украшаем процесс загрузки в Debian GNU/Linux'/><author><name>Anton "cppmm" Kropachev</name><uri>http://www.blogger.com/profile/05815356399793900372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://bp0.blogger.com/_LiQ6ICkCjiM/SHPbwTA2tbI/AAAAAAAAAQw/QWV70OspyLA/S220/003.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294045657797660908.post-1767067934970002360</id><published>2010-10-30T17:27:00.000+07:00</published><updated>2010-10-30T17:27:47.345+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Мои пакеты для debian.</title><content type='html'>Обзавёлся недавно доменом, поднял небольшой сервер и теперь балуюсь со всякими настройками. Пока что там особо ничего интересного нет, но один из планируемых разделов - собранные(или портированные) мной пакеты для debian. Пока что не оформлено в виде отдельного репозитария, в дальнейшем организую, с учётом архтектур и версий дистрибутива(заранее скажу, что поддерживать буду только stable и oldstable для архитектур i386 и x86_64). Пока доступно по адресу http://cppmm.net.ru/debian_packages/&lt;br /&gt;Из планов на будущее, поднять небольшую вику с используемыми мной типичными конфигами и скриптами.&lt;br /&gt;На данный момент скорость почти никакая - всё на стадии разработки, в дальнейшем ситуация улучшится.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294045657797660908-1767067934970002360?l=cppmm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppmm.blogspot.com/feeds/1767067934970002360/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://cppmm.blogspot.com/2010/10/debian.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/1767067934970002360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/1767067934970002360'/><link rel='alternate' type='text/html' href='http://cppmm.blogspot.com/2010/10/debian.html' title='Мои пакеты для debian.'/><author><name>Anton "cppmm" Kropachev</name><uri>http://www.blogger.com/profile/05815356399793900372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://bp0.blogger.com/_LiQ6ICkCjiM/SHPbwTA2tbI/AAAAAAAAAQw/QWV70OspyLA/S220/003.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294045657797660908.post-2610353945433188222</id><published>2010-09-30T11:00:00.001+07:00</published><updated>2010-09-30T11:15:19.643+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='acpi'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Debian'/><category scheme='http://www.blogger.com/atom/ns#' term='eeepc'/><title type='text'>Автоматическое изменение яркости экрана Asus EeePC 701 4G в Debian</title><content type='html'>Я обычно работаю на своём нетбуке с яркостью, поднятой на максимум. Но при переходе в режим работы от батареи это даёт очень неслабую нагрузку на неё. Fn-клавиши, конечно, работают, но постоянно повышать/понижать яркость руками лень. Вот я и решил поковырять acpi на предмет автоматизации процесса. В принципе, ничего сложного.&lt;br /&gt;Из man acpid можно узнать принципы работы acpi-скриптов. В /etc/acpi/events/ лежат файлы событий формата&lt;br /&gt;event=событие&lt;br /&gt;action=скрипт, который выполняется на это событие&lt;br /&gt;Чтобы узнать, на какое именно событие реагировать, можно воспользоваться функцией acpi_listen.&lt;br /&gt;В моём случае результат её работы выглядит так при выдёргивании блока питания из розетки:&lt;br /&gt;[root@skynet ~]# acpi_listen &lt;br /&gt;ac_adapter AC0 00000080 00000000&lt;br /&gt;battery BAT0 00000080 00000001&lt;br /&gt;hotkey ATKD 00000051 0000001e&lt;br /&gt;battery BAT0 00000080 00000001&lt;br /&gt;ac_adapter AC0 00000080 00000000&lt;br /&gt;и вот так при подключении:&lt;br /&gt;[root@skynet ~]# acpi_listen &lt;br /&gt;ac_adapter AC0 00000080 00000001&lt;br /&gt;battery BAT0 00000080 00000001&lt;br /&gt;hotkey ATKD 00000050 0000001c&lt;br /&gt;battery BAT0 00000080 00000001&lt;br /&gt;ac_adapter AC0 00000080 00000001&lt;br /&gt;Так как мне надо всего лишь сменить яркость, я не стал заморачиваться на параметры и указал реагировать просто на любые изменения в ac_adapter&lt;br /&gt;Итоговый файл события у меня выглядит так:&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;[root@skynet ~]# cat /etc/acpi/events/auto_brightness &lt;br /&gt;# /etc/acpi/events/auto_brightness&lt;br /&gt;# Called when ac off and we need to switch brightness down or up when ac on.&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;event=ac_adapter.*&lt;br /&gt;action=/etc/acpi/auto_brightness.sh&lt;/blockquote&gt;Теперь надо написать непосредственно скрипт, меняющий яркость взависимости от того, есть питание или нет. Здесь есть два пути - смотреть напрямую в /proc и парсить то, что там имеется или воспользоваться готовой функцией из acpi-support. Я выбрал второй вариант. Для тех, кому больше по душе первый, текущее положение адаптера отображается в /proc/acpi/ac_adapter/AC0/state&lt;br /&gt;&lt;br /&gt;Я же использую функцию getState() из /usr/share/acpi-support/power-funcs. Она при вызове передаёт переменной STATE либо значение AC, либо BATTERY в зависимости от режима работы нетбука.&lt;br /&gt;Осталось только найти способ менять яркость. Тут тоже всё просто. Пробежался быстро по тем же acpi'шным скриптам и выяснил, что уровень яркость указывается в /sys/class/backlight/eeepc/brightness. От 1 до 15, где 15 - максимально яркое, 1 соответсвенно тусклое.&lt;br /&gt;Итоговый скрипт получился такой:&lt;br /&gt;[root@skynet ~]# cat /etc/acpi/auto_brightness.sh &lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;. /usr/share/acpi-support/power-funcs&lt;br /&gt;&lt;br /&gt;getState&lt;br /&gt;&lt;br /&gt;if [ "$STATE" = "AC" ]&lt;br /&gt;then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo 15 &amp;gt; /sys/class/backlight/eeepc/brightness&lt;br /&gt;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo 1 &amp;gt; /sys/class/backlight/eeepc/brightness&lt;br /&gt;fi&lt;/blockquote&gt;Всё. Рестартим acpid и радумаемся.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294045657797660908-2610353945433188222?l=cppmm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppmm.blogspot.com/feeds/2610353945433188222/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://cppmm.blogspot.com/2010/09/asus-eeepc-701-4g-debian.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/2610353945433188222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/2610353945433188222'/><link rel='alternate' type='text/html' href='http://cppmm.blogspot.com/2010/09/asus-eeepc-701-4g-debian.html' title='Автоматическое изменение яркости экрана Asus EeePC 701 4G в Debian'/><author><name>Anton "cppmm" Kropachev</name><uri>http://www.blogger.com/profile/05815356399793900372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://bp0.blogger.com/_LiQ6ICkCjiM/SHPbwTA2tbI/AAAAAAAAAQw/QWV70OspyLA/S220/003.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294045657797660908.post-8414358192793103580</id><published>2010-08-29T18:21:00.002+07:00</published><updated>2010-08-29T18:22:55.364+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vista'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='fedora'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Userfrendly OS</title><content type='html'>Я &lt;a href="http://welinux.ru/post/3967/"&gt;тут&lt;/a&gt; рассказывал, как ставил Fedora 13 на ноут для тестов. Протестил, всё отлично работает. но хозяевам нужна была на этом компе Vista, которая шла вместе с ноутом. Вот, небольшая оценка времени, затраченного на обустройстов первой и второй системы.&lt;br /&gt;Тестовая площадка - ноутбук MSI PR200&lt;br /&gt;Обновления и установка софта зависят от скорости интернета - 256 кбит/с&lt;br /&gt;--&lt;br /&gt;Fedora GNU/Linux 13&lt;br /&gt;Время установки - 30 минут(получаем вполне юзабельную систему, в которой есть всё, кроме офиса и проигрывания mp3).&lt;br /&gt;Настройка сети(wi-fi) - 5 минут.&lt;br /&gt;Настройка дополнительных репозитариев - 10 минут.&lt;br /&gt;Полное обновление системы - 40 минут.&lt;br /&gt;Установка нужного софта(проприетарные кодеки, skype, OO.o, разные программы для тестирования железа) - 10 минут.&lt;br /&gt;Настройка панелей, рюшечек, компиза и прочего - 20 минут.&lt;br /&gt;Итого - 1 час 55 минут до полностью рабочей системы.&lt;br /&gt;--&lt;br /&gt;Windows Vista Home Basic&lt;br /&gt;Время установки - 1 час(получаем систему, в которой не работает ничего кроме блокнота с разрешением 800х600, без звука, без сети).&lt;br /&gt;Установка драйверов - 30 минут на скачивание на другом компе(сеть не поднялась из коробки), 30 минут на установку(с учётом перезагрузок). Камера не завелась, bluetooth не завёлся, звук не завёлся. Ещё +30 минут на танцы с бубном.&lt;br /&gt;Настройка сети(wi-fi) - 15 минут(оказалось не так просто найти, где же прописывать сети со скрытым SSID и вспоминать, какое же шифрование TKIP или AES - все три мои linux-машины, это автоматом определяют).&lt;br /&gt;Базовое обновление(только обновления безопасности и важные багфиксы) - 3 часа(причём после того, как всё скачалось и устанавливается - ноут неюзабелен).&lt;br /&gt;Установка нужного софта(кодеки, firefox, skype, OO.o, разная мелочь) - 30 минут(разумеется установка не автоматическая, надо сидеть и периодически нажимать "Далее").&lt;br /&gt;Итого - 6 часов 15 минут.&lt;br /&gt;--&lt;br /&gt;Выводы делайте сами.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294045657797660908-8414358192793103580?l=cppmm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppmm.blogspot.com/feeds/8414358192793103580/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://cppmm.blogspot.com/2010/08/userfrendly-os.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/8414358192793103580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/8414358192793103580'/><link rel='alternate' type='text/html' href='http://cppmm.blogspot.com/2010/08/userfrendly-os.html' title='Userfrendly OS'/><author><name>Anton "cppmm" Kropachev</name><uri>http://www.blogger.com/profile/05815356399793900372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://bp0.blogger.com/_LiQ6ICkCjiM/SHPbwTA2tbI/AAAAAAAAAQw/QWV70OspyLA/S220/003.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294045657797660908.post-1921574863961274755</id><published>2010-08-13T00:53:00.000+07:00</published><updated>2010-08-13T00:53:35.678+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nginx'/><title type='text'>Пара слов о nginx.</title><content type='html'>После нескольких обсуждений и разговоров написал небольшую ознакомительную &lt;a href="http://welinux.ru/post/3879/"&gt;статью о nginx для welinux.ru&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294045657797660908-1921574863961274755?l=cppmm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppmm.blogspot.com/feeds/1921574863961274755/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://cppmm.blogspot.com/2010/08/nginx.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/1921574863961274755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/1921574863961274755'/><link rel='alternate' type='text/html' href='http://cppmm.blogspot.com/2010/08/nginx.html' title='Пара слов о nginx.'/><author><name>Anton "cppmm" Kropachev</name><uri>http://www.blogger.com/profile/05815356399793900372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://bp0.blogger.com/_LiQ6ICkCjiM/SHPbwTA2tbI/AAAAAAAAAQw/QWV70OspyLA/S220/003.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294045657797660908.post-4237129940926191649</id><published>2010-06-04T10:20:00.000+07:00</published><updated>2010-06-04T10:20:23.077+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='interfaces'/><category scheme='http://www.blogger.com/atom/ns#' term='Debian'/><title type='text'>﻿Настройка атоматического выбора wi-fi сети в Debian.</title><content type='html'>Есть у меня одна замечательная вещь - Asus EeePC. И, так как тут имеется wi-fi карта, не пользоваться услугами беспроводной связи просто грех. Но хорошо, когда сеть одна. А что, если их много и надо в одном месте включать одну, в другом другую? И при этом всякие графические монструозные комбайны ставить не хочется. Как быть? Настроить имеющиеся в Debian'е инструменты работы с сетью. Это на самом деле намного проще, чем может показаться на первый взгляд.&lt;br /&gt;Управление сетевыми интерфейсами осуществляется в Debian'е через файл /etc/network/interfaces и скрипт /etc/init.d/networking. Для нас важен файл настроек. Если заглянуть в его man, то можно найти замечательный параметр mapping. Эта опция даёт возможность создавать разные логические интерфейсы на одном физическом и автоматически выбирать нужный по определённым параметрам. Проще говоря - что-то типа профилей. Для выбора надо набросать небольшой скриптик и прописать условия.&lt;br /&gt;Итак, к делу.&lt;br /&gt;Условие определения логического интерфейса могут быть любые. Мне лично удобно по mac-адресу(логичнее, конечно, кажется по SSID, но мне этот вариант не подходит, потому что на всех, настроенных мной точках, я выставляю опцию SSID Broadcast в off, поэтому увидеть его стандартными средствами, не подключившись проблематично, но если у вас не так, то разумеется определение профиля по SSID более правильный выбор). Логика работы проста - при поднятии интерфейса, система сканирует сеть, смотрит, какая из знакомых ей точек доступна и подключается к ней. Основную работу за нас будет делать небольшой скрипт. Примеры таких скриптов можно глянуть в /usr/share/doc/ifupdown/examples/ . Там же лежат примеры настройки файла interfaces. У меня скрипт получился такой:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;#!/bin/sh&lt;br /&gt;#&lt;br /&gt;# Auto wi-fi choise.&lt;br /&gt;&lt;br /&gt;iface="$1"&lt;br /&gt;ifconfig=$(which ifconfig)&lt;br /&gt;iwlist=$(which iwlist)&lt;br /&gt;which=""&lt;br /&gt;&lt;br /&gt;# Проверка на случай, если wi-fi карта выключена.&lt;br /&gt;if [ ! "$(grep $iface /proc/net/dev)" ]; then exit 1; fi&lt;br /&gt;&lt;br /&gt;# Без этого не получится просканировать сеть.&lt;br /&gt;$ifconfig $iface up&lt;br /&gt;&lt;br /&gt;# Собственно выбор.&lt;br /&gt;while read mac scheme; do&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ "$which" ]; then continue; fi&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ "$($iwlist $iface ap | grep $mac)" ]; then which="$scheme"; fi&lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;# Передача выбора системным скриптам и выход.&lt;br /&gt;if [ "$which" ]; then echo $which; exit 0; fi&lt;br /&gt;exit 1&lt;/blockquote&gt;&lt;br /&gt;Как можно заметить, несмотря на простоту, в скрипте есть несколько особенностей. Первая - ему по умолчанию в качестве первого аргумента передаётся имя интерфейса. Вторая - он читает построчно заданные в настройках параметры. Третья - он должен вернуть выбранное логическое имя интерфейса и код выхода(0 - всё хорошо, работаем, 1 - ошибка, выходим). Если первое и последнее - понятно, то второе требует небольшого пояснения. Скрипту передаются параметры, заданные в interfaces. Последним параметром обязательно должно быть имя логического интерфейса. И всё, что делает скрипт, в конечном счёте направлено на то, чтобы это имя вернуть на stdout. Как видно, в моём случае я сканирую воздух, и, если попадается знакомый mac, тут же выбираю соответствующее ему имя. Если знакомых нет, разумеется подключение прерывается. Маки и имена указаны в interfaces. Для тех, кто будет использовать выборку по SSID, надо будет сделать что-то типа iwlist $iface scanning | grep $ssid.&lt;br /&gt;И наконец, запись в interfaces:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;mapping ath0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; script /usr/local/sbin/awfc.sh&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; map 11:22:33:44:55:66&amp;nbsp;&amp;nbsp;&amp;nbsp; ath0-home&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; map AA:BB:CC:DD:EE:FF&amp;nbsp;&amp;nbsp;&amp;nbsp; ath0-tmp&lt;br /&gt;&lt;br /&gt;allow-hotplug ath0&lt;br /&gt;# Домашняя сетка&lt;br /&gt;iface ath0-home inet dhcp&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; wireless-essid&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; HomeNet&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; wpa-ssid&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; HomeNet&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; wpa-psk&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; *********&lt;br /&gt;# моё любимое кафе с wi-fi&lt;br /&gt;iface ath0-tmp inet dhcp&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; wireless-essid&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; TMPNet&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;Я для примера показал две точки, но их на самом деле может быть сколько угодно. Главное соблюдать формат записи - map mac-адрес логическое_имя. Разумеется, параметры для каждой из точек могут совершенно любыми.&lt;br /&gt;И последний штрих. Дело в том, что по умолчанию при загрузке /etc/init.d/networking стартует достаточно рано относительно других сервисов. Оно понятное дело нужно, когда у меня сервер со всякими sshd, apache и прочими радостями. Но на нетбуке это совершенно лишнее. А из-за такой "спешки" не успевают подгрузиться все нужные для работы выбирающего скрипта части. А именно, не инициализировался до конца интерфейс, поэтому команда iwlist не возвращала ожидаемого результата. Я решил это просто - двумя командами перенёс загрузку сети с ранних этапов на стандартные, вместе с основными частями системы:&lt;br /&gt;&lt;br /&gt;# update-rc.d -f networking remove&lt;br /&gt;# update-rc.d networking defaults&lt;br /&gt;&lt;br /&gt;Всё. При загрузке, если я нахожусь в зоне действия знакомой сети, нетбук автоматом к ней подключится. Если я не выключал нетбук и перешёл от одной знакомой сети к другой, достаточно рестартануть сеть и всё будет отлично.&lt;br /&gt;Именно за такие простые и удобные вещи я и люблю Linux вообще и Debian в частности.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294045657797660908-4237129940926191649?l=cppmm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppmm.blogspot.com/feeds/4237129940926191649/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://cppmm.blogspot.com/2010/06/wi-fi-debian.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/4237129940926191649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/4237129940926191649'/><link rel='alternate' type='text/html' href='http://cppmm.blogspot.com/2010/06/wi-fi-debian.html' title='﻿Настройка атоматического выбора wi-fi сети в Debian.'/><author><name>Anton "cppmm" Kropachev</name><uri>http://www.blogger.com/profile/05815356399793900372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://bp0.blogger.com/_LiQ6ICkCjiM/SHPbwTA2tbI/AAAAAAAAAQw/QWV70OspyLA/S220/003.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294045657797660908.post-7467245869042900784</id><published>2010-03-18T16:11:00.000+06:00</published><updated>2010-03-18T16:11:30.610+06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='кровавая гебня'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Дискриминация по национальному признаку или баним страны.</title><content type='html'>Так получилось, что понадобилось прикрыть доступ к серверу из некоторых стран. Понимаю, что &lt;a href="http://lurkmore.ru/%D0%9A%D1%80%D0%BE%D0%B2%D0%B0%D0%B2%D0%B0%D1%8F_%D0%B3%D0%B5%D0%B1%D0%BD%D1%8F"&gt;кровавая гебня&lt;/a&gt; и всё такое, но задача есть, надо сделать.&lt;br /&gt;Вот &lt;a href="http://www.maxmind.com/app/geolitecountry"&gt;здесь&lt;/a&gt; находим архивчик с базой IP-адресов и их национальной принадлежностью. Далее за нас работает небольшой скрипт:&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;#!/bin/bash&lt;br /&gt;#&lt;br /&gt;TMPDIR=/tmp/geoiptban&lt;br /&gt;IP_BBASE=$TMPDIR/bbase.csv&lt;br /&gt;IP_EBASE=$TMPDIR/ebase.csv&lt;br /&gt;DB_ZIP=$TMPDIR&lt;br /&gt;PERL=/usr/bin/perl&lt;br /&gt;FILE_BCOUNTRY=$1&lt;br /&gt;COUNTRY_DB_URL=http://geolite.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip&lt;br /&gt;mkdir -p $TMPDIR&lt;br /&gt;# Стягиваем и распаковываем базу айпишников.&lt;br /&gt;wget -q -O $DB_ZIP $COUNTRY_DB_URL&lt;br /&gt;unzip -p $DB_ZIP &amp;gt; $IP_BBASE&lt;br /&gt;# Убираем лишние символы из базы, для простоты обработки.&lt;br /&gt;if [ -e "$IP_BBASE" ] &lt;br /&gt;then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cp $IP_BBASE $IP_EBASE &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $PERL -pi -e 's/"//g' $IP_EBASE&lt;br /&gt;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "Source ip-base-file not found."&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit 0;&lt;br /&gt;fi&lt;br /&gt;# Обработка базы. Форматируем базу сперва в вид диапазонов ip-адресов, а потом в список подсетей.&lt;br /&gt;# Получившиеся подсети скармливаем iptables'у.&lt;br /&gt;if [ -e "$FILE_BCOUNTRY" ]&lt;br /&gt;then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for country in $(cat ${FILE_BCOUNTRY})&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; grep $country $IP_EBASE | awk -F "," '{print $1," - ",$2}' &amp;gt; $TMPDIR/$country.il&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for ((i=1;i&amp;lt;=$(wc -l ${TMPDIR}/${country}.il | awk '{print $1}');i++))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ipcalc $(head -n ${i} ${TMPDIR}/${country}.il | tail -n 1) | grep -v deaggregate &amp;gt;&amp;gt; $TMPDIR/$country.nl&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; done&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; done&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for country_network_list in $(ls ${TMPDIR} | grep nl)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for ((i=1;i&amp;lt;=$(wc -l ${TMPDIR}/$country_network_list | awk '{print $1}');i++))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iptables -t filter -A INPUT -s $(head -n ${i} ${TMPDIR}/$country_network_list | tail -n 1) -j DROP&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; done&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; done&lt;br /&gt;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "List of blocked countries not found."&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit 0;&lt;br /&gt;fi&lt;br /&gt;rm -rf $TMPDIR&lt;/blockquote&gt;Для определения списка стран, которые надо забанить используется файл, в котором просто перечисляются их коды:&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;[root@gateway ~]# cat country_list &lt;br /&gt;RU US GB&lt;/blockquote&gt;Запускается скрипт очень просто:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;[root@gateway ~]# ./geoiptban.sh country_list&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294045657797660908-7467245869042900784?l=cppmm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppmm.blogspot.com/feeds/7467245869042900784/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://cppmm.blogspot.com/2010/03/blog-post.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/7467245869042900784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/7467245869042900784'/><link rel='alternate' type='text/html' href='http://cppmm.blogspot.com/2010/03/blog-post.html' title='Дискриминация по национальному признаку или баним страны.'/><author><name>Anton "cppmm" Kropachev</name><uri>http://www.blogger.com/profile/05815356399793900372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://bp0.blogger.com/_LiQ6ICkCjiM/SHPbwTA2tbI/AAAAAAAAAQw/QWV70OspyLA/S220/003.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294045657797660908.post-1730914178182303360</id><published>2010-01-29T08:39:00.001+06:00</published><updated>2010-01-29T08:40:30.262+06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gentoo'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Gentoo</title><content type='html'>&lt;div style="text-align: center;"&gt;Наконец собрался написать про Gentoo.&lt;/div&gt;Давно хотел попробовать этото дистрибутив в работе. Я его, конечно, пробовал до этого, но так, мельком. Пару раз ставил, пару раз настраивал, но со временем забрасывал. Потом так получилось, что пришлось повозиться с уже установленной системой, которую надо было довести до ума. Как это всегда бывает, система попалась полумёртвая и восстанавливать её приходилось долго и непросто. Но в процессе этого восстановления я открыл для себя некоторые довольно интересные вещи. Тогда-то и появилась мысль взяться за этот дистрибутив серьёзно. Порывшись в куче старого железа был извлечён винт на сосрок гигов, закуплено кофе и запланированы пару спокойных ночей. В итоге - ура. На компе в качестве второй системы(рядом с родным Debian Lenny) стоит Gentoo. Но как-то всё тоже выходило неудачно. То иксы криво стартовали, то софт при компиляции ошибки выдавал, то ещё какие-нибудь косяки и никак не хватало времени довести до ума. Но за несколько дней до Нового Года, наконец, время позволило взяться за Gentoo серьёзно...&lt;br /&gt;И вот, в новый 2010 год я вошёл, имея на компе стабильную gentoo с kde4.&lt;br /&gt;Как у меня всегда бывает, вышло несовсем гладко. То забывал нужный драйвер в ядро вкомпилить, то USE-флаги криво выставлял, но так или иначе, сейчас могу сказать честно: новой системой я доволен.&lt;br /&gt;А теперь несколько подробностей.&lt;br /&gt;Ну, во-первых:&lt;br /&gt;&lt;b&gt;[cppmm@damned ~]$ uname -a&lt;br /&gt;Linux damned 2.6.31-gentoo-r6-cppmm-v7 #1 SMP Fri Jan 29 07:25:45 NOVT 2010 x86_64 AMD Athlon(tm) 64 X2 Dual Core Processor 5600+ AuthenticAMD GNU/Linux&lt;/b&gt;&lt;br /&gt;Да, как можно заметить, нормальное ядро удалось собрать только с седьмой попытки. И тут дело исключительно в моей невнимательности. Собственно, последняя пересборка понадобилась потому что неправильно были выставлены опции кодировок для файловой система FAT, из-за чего флешки либо монтировались криво, либо вообще отказывались подключаться.&lt;br /&gt;Впечатления от системы хорошие. Когда говорят, что gentoo работает быстро - можете смело верить. Это действительно так. Например, даже со стандартным init'ом загрузка до рабочего стола проходит буквально за несколько секунд. При этом, я решил попробовать не старую добрую крысу(xfce4), а kde. И если раньше у меня было впечатление, что кеды - это что-то монструзно-торзмонутое, то тут всё совсем не так. Весь софт прямо сказать летает. Кроме всего прочего, раз уж стоят кеды, я&amp;nbsp; решил и софт использовать исключительно qt'шный.&lt;br /&gt;Плеер: По-умолчанию в kde4 идёт JuK. Штука до безобразия простая, малофункциональная(даже по моим меркам). Немного повспоминав мандривовскую молодость было принято решение поставить amarok... Я даже не ожидал, насколько он стал хорош! Ну, старых проблем с кодировками тегов у меня быть не могло - все теги давно сконвертированы в utf. А вот интерфейс порадовал. Теперь он действительно удобен. Один раз задав пути к библиотеке, я забыл про мучительный поиск нужной песни и добавление её руками. Так же очень порадовала фишка с прикрученной википедией. Да-да. Когда я запускаю песню, amarok автоматом идёт в инет на википедию, и стягивает описание исполнителя. Ну и кроме этого он ещё откуда-то вытягивает текст песни и обложку. Если с описанием - это так, свистелки, то текст песни оказался как нельзя кстати. Очень удобно. Выглядит это всё примерно так:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_LiQ6ICkCjiM/S2JFjOfVlII/AAAAAAAAAwI/kpkB4MK1bbQ/s1600-h/002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/_LiQ6ICkCjiM/S2JFjOfVlII/AAAAAAAAAwI/kpkB4MK1bbQ/s320/002.png" width="320" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&amp;nbsp;С видео-проигрывателем получилось практически так же. Дефолтный dragonplayer как-то неинтересн. Но память подсказала, что был когда-то неплохой kaffeine. Он тоже стал удобнее и функциональнее. Кушает всё, работает с dvd-меню и вообще в принципе устраивает во всём. Один раз, правда, он отказался играть хороший фильм(точнее, фильм играл, а вот звука не было). Поставил SMPlayer(фронтенд к mplayer), но тот тоже отказался. Попытка воспроизвести этот же фильм на другой системе, а потом и на другом компе показала, что проблема не в плеерах, а в самом фильме. :)&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Теперь о интернет-приложениях. Вот что, по-моему, осталось таким же, как и много лет назад, так это konqueror. Как был кривоват, так и остался. :)&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Пришлось компилять firefox. Всё бы хорошо, но gtk-ашная лиса смотрится в qt-окружении убого. Но, это лечится. Нужно сперва поставить x11-themes/gtk-engines-qtcurve, который несколько облагораживает гткшный софт. А для совсем эстетов, у лисы есть замечательный плагин Personas. Там есть множество разнообразных тем и украшений. И теперь моя лиса выглядит так:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&amp;nbsp;&lt;a href="http://3.bp.blogspot.com/_LiQ6ICkCjiM/S2JHkhCAYWI/AAAAAAAAAwQ/npC0valKgcQ/s1600-h/003.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/_LiQ6ICkCjiM/S2JHkhCAYWI/AAAAAAAAAwQ/npC0valKgcQ/s320/003.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&amp;nbsp;В качестве jabber-клиента был оставлен старый-добрый psi. А точнее, его модификация psi+(кстати, вот тут вот и проявляется одна из фишек гентушных портажей - при помощи простейших манипуляций, я ставлю софт нужной мне версии с нужным мне функционалом, не заморачиваясь сборкой пакета).&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Единственное, что пока не радует, это irc-клиент. Привычный xchat как-то тут не понравился, но я решил попробовать что-нибудь kde'шное, а именно kvirc. Не, клиент очень неплохой. Но настроек у него.... Тьма! До сих пор до конца ещё не донастроил. :) Но работать можно.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Остальное всё использую родное kde'шное, не особо заморачиваясь.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;На обслуживание системы много времени не уходит. Я это, в принципе, и раньше знал, но повторюсь для особо упёртых. Если один раз всё настроить, в дальнейшем обновления можно делать на автомате. Главное не допускать глупых ошибок. К примеру, если хочется изменить USE-флаги у какого-либо приложение, не стоит это делать на лету. Для этого есть специальный файлик в /et/portage/. Там же, кстати, можно очень удобно маскировать ненужные пакеты, управлять зависимостями и вообще делать со своей системой всё, что душе угодно.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;В дальнейших планах разобраться с написанием своих ebuild'ов для сборки собственных пакетов(например, недавно вышел vacuum im 1.0.0 - очень хочется попробовать, но в репах пока его нет).&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Разумеется, этот переход на домашнем десктопе совершенно не значит, что я резко переметнулся из стана Debian'щиков в gentoo'шники. Нет. На нетбуке всё тот же lenny. Ну и на рабочем компе ничего не изменится в ближайшее время. А то, что лучшей системой для серверов является debian меня вряд ли кто-нибудь когда-нибудь переубедит. Всё это просто значит, что linux'ы бывают разные и многие из них хороши. А если есть желание разобраться и какие-то базовые знания, то пойдёт любой дистрибутив(за исключением всяких ubuntu :)).&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;И на последок общий вид рабочего стола:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_LiQ6ICkCjiM/S2JKklGC5vI/AAAAAAAAAwY/os9Y5GH1J8Y/s1600-h/001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/_LiQ6ICkCjiM/S2JKklGC5vI/AAAAAAAAAwY/os9Y5GH1J8Y/s320/001.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294045657797660908-1730914178182303360?l=cppmm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppmm.blogspot.com/feeds/1730914178182303360/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://cppmm.blogspot.com/2010/01/gentoo.html#comment-form' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/1730914178182303360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/1730914178182303360'/><link rel='alternate' type='text/html' href='http://cppmm.blogspot.com/2010/01/gentoo.html' title='Gentoo'/><author><name>Anton "cppmm" Kropachev</name><uri>http://www.blogger.com/profile/05815356399793900372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://bp0.blogger.com/_LiQ6ICkCjiM/SHPbwTA2tbI/AAAAAAAAAQw/QWV70OspyLA/S220/003.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_LiQ6ICkCjiM/S2JFjOfVlII/AAAAAAAAAwI/kpkB4MK1bbQ/s72-c/002.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294045657797660908.post-3644826768280313030</id><published>2009-11-17T10:31:00.000+06:00</published><updated>2009-11-17T10:31:03.218+06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='apt'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Debian'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Запись устанавливаемых зависимостей для пакета в Debian.</title><content type='html'>Часто приходится ставить софт "на посмотреть". Т.е. поставил, один-два раза запустил и удалил. Вроде бы ничего страшного - apt-get наш спаситель, но нередко бывает, что пакет при установке притягивает за собой толпы библиотек по зависимостям, и при удалении этого пакета все библиотеки остаются в системе. Часть из них, конечно, можно вычистить с помощью apt-get autoremove, но большая часть всё-таки остаётся. Я обычно в таких случаях записывал себе куда-нибудь список пакетов, устанавливаемых с нужным мне софтом и потом сносил его руками. Вот, решил этот процесс немного автоматизировать скриптом. Ничего особенного, просто небольшая экономия времени.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: #666666; font-style: italic;"&gt;#!/bin/bash&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666; font-style: italic;"&gt;#&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #007800;"&gt;INST_BASE&lt;/span&gt;=&lt;span style="color: black; font-weight: bold;"&gt;/&lt;/span&gt;var&lt;span style="color: black; font-weight: bold;"&gt;/&lt;/span&gt;cache&lt;span style="color: black; font-weight: bold;"&gt;/&lt;/span&gt;apt&lt;span style="color: black; font-weight: bold;"&gt;/&lt;/span&gt;Inst&lt;br /&gt;&lt;span style="color: #007800;"&gt;INST_PROG&lt;/span&gt;=&lt;span style="color: black; font-weight: bold;"&gt;/&lt;/span&gt;usr&lt;span style="color: black; font-weight: bold;"&gt;/&lt;/span&gt;bin&lt;span style="color: black; font-weight: bold;"&gt;/&lt;/span&gt;&lt;span style="color: #c20cb9; font-weight: bold;"&gt;apt-get&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #666666; font-style: italic;"&gt;# Функция вывода ошибки в случае использования неправильных аргументов&lt;/span&gt;&lt;br /&gt;f_argerror&lt;span style="color: #7a0874; font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;)&lt;/span&gt; &lt;span style="color: #7a0874; font-weight: bold;"&gt;{&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #7a0874; font-weight: bold;"&gt;echo&lt;/span&gt; &lt;span style="color: red;"&gt;"depends_store.sh: Пропущен операнд."&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #7a0874; font-weight: bold;"&gt;echo&lt;/span&gt; &lt;span style="color: red;"&gt;"Попробуйте &lt;span style="color: #000099; font-weight: bold;"&gt;\"&lt;/span&gt;depends_store.sh -h&lt;span style="color: #000099; font-weight: bold;"&gt;\"&lt;/span&gt; для получения более подробного описания."&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #666666; font-style: italic;"&gt;# Функция записи данныхх о зависимостях с проверкой на наличие этих данных.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666; font-style: italic;"&gt;# Если данные имеются, вызывается функция их вывода.&lt;/span&gt;&lt;br /&gt;f_install&lt;span style="color: #7a0874; font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;)&lt;/span&gt; &lt;span style="color: #7a0874; font-weight: bold;"&gt;{&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &lt;span style="color: black; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #7a0874; font-weight: bold;"&gt;[&lt;/span&gt; &lt;span style="color: #660033;"&gt;-e&lt;/span&gt; &lt;span style="color: maroon;"&gt;${INST_BASE}&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;${OPTARG}&lt;/span&gt; &lt;span style="color: #7a0874; font-weight: bold;"&gt;]&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &lt;span style="color: black; font-weight: bold;"&gt;then&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #7a0874; font-weight: bold;"&gt;echo&lt;/span&gt; &lt;span style="color: red;"&gt;"Данные о зависимостях для данного пакета уже присутсвуют."&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; f_show&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #7a0874; font-weight: bold;"&gt;exit&lt;/span&gt; &lt;span style="color: black;"&gt;0&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &lt;span style="color: black; font-weight: bold;"&gt;fi&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &lt;span style="color: maroon;"&gt;${INST_PROG}&lt;/span&gt; &lt;span style="color: #660033;"&gt;-s&lt;/span&gt; &lt;span style="color: #c20cb9; font-weight: bold;"&gt;install&lt;/span&gt; &lt;span style="color: maroon;"&gt;${OPTARG}&lt;/span&gt; &lt;span style="color: black; font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: #c20cb9; font-weight: bold;"&gt;grep&lt;/span&gt; Inst &lt;span style="color: black; font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: #c20cb9; font-weight: bold;"&gt;cut&lt;/span&gt; &lt;span style="color: #660033;"&gt;-d&lt;/span&gt; &lt;span style="color: red;"&gt;' '&lt;/span&gt; &lt;span style="color: #660033;"&gt;-f&lt;/span&gt; &lt;span style="color: black;"&gt;2&lt;/span&gt; &lt;span style="color: black; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: maroon;"&gt;${INST_BASE}&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;${OPTARG}&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &lt;span style="color: #7a0874; font-weight: bold;"&gt;echo&lt;/span&gt; &lt;span style="color: black; font-weight: bold;"&gt;`&lt;/span&gt;&lt;span style="color: #c20cb9; font-weight: bold;"&gt;cat&lt;/span&gt; &lt;span style="color: maroon;"&gt;${INST_BASE}&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;${OPTARG}&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;`&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #666666; font-style: italic;"&gt;# Функция удаления данных о зависимостях.&lt;/span&gt;&lt;br /&gt;f_remove&lt;span style="color: #7a0874; font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;)&lt;/span&gt; &lt;span style="color: #7a0874; font-weight: bold;"&gt;{&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &lt;span style="color: #c20cb9; font-weight: bold;"&gt;rm&lt;/span&gt; &lt;span style="color: maroon;"&gt;${INST_BASE}&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;${OPTARG}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #666666; font-style: italic;"&gt;# Функция вывода данных о зависимостях.&lt;/span&gt;&lt;br /&gt;f_show&lt;span style="color: #7a0874; font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;)&lt;/span&gt; &lt;span style="color: #7a0874; font-weight: bold;"&gt;{&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &lt;span style="color: #7a0874; font-weight: bold;"&gt;echo&lt;/span&gt; &lt;span style="color: black; font-weight: bold;"&gt;`&lt;/span&gt;&lt;span style="color: #c20cb9; font-weight: bold;"&gt;cat&lt;/span&gt; &lt;span style="color: maroon;"&gt;${INST_BASE}&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;${OPTARG}&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;`&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #666666; font-style: italic;"&gt;# Функция вывода списка пакетов, для которых есть записи о зависимостях.&lt;/span&gt;&lt;br /&gt;f_list&lt;span style="color: #7a0874; font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;)&lt;/span&gt; &lt;span style="color: #7a0874; font-weight: bold;"&gt;{&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &lt;span style="color: #7a0874; font-weight: bold;"&gt;echo&lt;/span&gt; &lt;span style="color: black; font-weight: bold;"&gt;`&lt;/span&gt;&lt;span style="color: #c20cb9; font-weight: bold;"&gt;ls&lt;/span&gt; &lt;span style="color: maroon;"&gt;${INST_BASE}&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;`&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #666666; font-style: italic;"&gt;# Функция вывода справки.&lt;/span&gt;&lt;br /&gt;f_help&lt;span style="color: #7a0874; font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;)&lt;/span&gt; &lt;span style="color: #7a0874; font-weight: bold;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;echo&lt;/span&gt; &lt;span style="color: red;"&gt;"Использование: depends_store.sh КЛЮЧ [ПАКЕТ]"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;echo&lt;/span&gt; &lt;span style="color: red;"&gt;" &amp;nbsp;-i ПАКЕТ &amp;nbsp; &amp;nbsp; &amp;nbsp;записать данные о зависимостях для пакета"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;echo&lt;/span&gt; &lt;span style="color: red;"&gt;" &amp;nbsp;-r ПАКЕТ &amp;nbsp; &amp;nbsp; &amp;nbsp;удалить данные о зависимостях для пакета"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;echo&lt;/span&gt; &lt;span style="color: red;"&gt;" &amp;nbsp;-s ПАКЕТ &amp;nbsp; &amp;nbsp; &amp;nbsp;показать данные о зависимостях для пакета"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;echo&lt;/span&gt; &lt;span style="color: red;"&gt;" &amp;nbsp;-l&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; вывести список пакетов, для которых записаны данные о зависимостях"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;echo&lt;/span&gt; &lt;span style="color: red;"&gt;" &amp;nbsp;-h&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; показать эту справку и выйти"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #666666; font-style: italic;"&gt;# Проверка на наличие аргументов коммандной строки.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #7a0874; font-weight: bold;"&gt;[&lt;/span&gt; &lt;span style="color: #007800;"&gt;$#&lt;/span&gt; &lt;span style="color: #660033;"&gt;-eq&lt;/span&gt; &lt;span style="color: red;"&gt;"0"&lt;/span&gt; &lt;span style="color: #7a0874; font-weight: bold;"&gt;]&lt;/span&gt; &lt;br /&gt;&lt;span style="color: black; font-weight: bold;"&gt;then&lt;/span&gt;&lt;br /&gt;&amp;nbsp; f_argerror&lt;br /&gt;&lt;span style="color: black; font-weight: bold;"&gt;fi&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #666666; font-style: italic;"&gt;# Проверка на наличие директории для хранения данных о пакетах и создание таковой в случае отсутсвия.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #7a0874; font-weight: bold;"&gt;[&lt;/span&gt; &lt;span style="color: black; font-weight: bold;"&gt;!&lt;/span&gt; &lt;span style="color: #660033;"&gt;-e&lt;/span&gt; &lt;span style="color: maroon;"&gt;${INST_BASE}&lt;/span&gt; &lt;span style="color: #7a0874; font-weight: bold;"&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-weight: bold;"&gt;then&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &lt;span style="color: #c20cb9; font-weight: bold;"&gt;mkdir&lt;/span&gt; &lt;span style="color: #660033;"&gt;-p&lt;/span&gt; &lt;span style="color: maroon;"&gt;${INST_BASE}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-weight: bold;"&gt;fi&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #666666; font-style: italic;"&gt;# Перебор параметров командной строки.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;getopts&lt;/span&gt; &lt;span style="color: red;"&gt;":i:r:s:lh"&lt;/span&gt; Option&lt;br /&gt;&lt;span style="color: black; font-weight: bold;"&gt;case&lt;/span&gt; &lt;span style="color: #007800;"&gt;$Option&lt;/span&gt; &lt;span style="color: black; font-weight: bold;"&gt;in&lt;/span&gt;&lt;br /&gt;&amp;nbsp; i&lt;span style="color: #7a0874; font-weight: bold;"&gt;)&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; f_install&lt;br /&gt;&amp;nbsp; &lt;span style="color: black; font-weight: bold;"&gt;;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; r&lt;span style="color: #7a0874; font-weight: bold;"&gt;)&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; f_remove&lt;br /&gt;&amp;nbsp; &lt;span style="color: black; font-weight: bold;"&gt;;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; s&lt;span style="color: #7a0874; font-weight: bold;"&gt;)&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; f_show&lt;br /&gt;&amp;nbsp; &lt;span style="color: black; font-weight: bold;"&gt;;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; l&lt;span style="color: #7a0874; font-weight: bold;"&gt;)&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; f_list&lt;br /&gt;&amp;nbsp; &lt;span style="color: black; font-weight: bold;"&gt;;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; h&lt;span style="color: #7a0874; font-weight: bold;"&gt;)&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; f_help&lt;br /&gt;&amp;nbsp; &lt;span style="color: black; font-weight: bold;"&gt;;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &lt;span style="color: black; font-weight: bold;"&gt;*&lt;/span&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;)&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; f_argerror&lt;br /&gt;&amp;nbsp; &lt;span style="color: black; font-weight: bold;"&gt;;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-weight: bold;"&gt;esac&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;exit&lt;/span&gt; &lt;span style="color: black;"&gt;0&lt;/span&gt;&lt;/code&gt; &lt;br /&gt;&lt;br /&gt;Скрипт до безобразия простой, так что всё должно быть понятно из комментариев. :) Получился такой себе небольшой костыль над apt-get.&lt;br /&gt;Работать с ним просто.&lt;br /&gt;Нашли нужный пакетик, сказали на него ./depends_store.sh -i и всё запомнилось в базе. Поработали с пакетом, сделали apt-get purge `./depends_store.sh -s имя_пакета` &amp;amp;&amp;amp; ./depends_store.sh -r имя_пакета и забыли о нём.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294045657797660908-3644826768280313030?l=cppmm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppmm.blogspot.com/feeds/3644826768280313030/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://cppmm.blogspot.com/2009/11/debian.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/3644826768280313030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/3644826768280313030'/><link rel='alternate' type='text/html' href='http://cppmm.blogspot.com/2009/11/debian.html' title='Запись устанавливаемых зависимостей для пакета в Debian.'/><author><name>Anton "cppmm" Kropachev</name><uri>http://www.blogger.com/profile/05815356399793900372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://bp0.blogger.com/_LiQ6ICkCjiM/SHPbwTA2tbI/AAAAAAAAAQw/QWV70OspyLA/S220/003.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294045657797660908.post-6045639305736429102</id><published>2009-09-27T11:13:00.003+07:00</published><updated>2009-09-27T11:16:31.957+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='freebsd'/><category scheme='http://www.blogger.com/atom/ns#' term='на заметку'/><category scheme='http://www.blogger.com/atom/ns#' term='courier'/><category scheme='http://www.blogger.com/atom/ns#' term='postfix'/><title type='text'>На заметку. Грабли обновления курьера.</title><content type='html'>После обновления из портов courier-authdaemon во FreeBSD, всегда сбиваются права на файл&lt;br /&gt;/var/run/authdaemond.&lt;br /&gt;Если postfix настроен на авторизацию через курьеровский authdaemon, после обновления он ругнётся вот так:&lt;br /&gt;postfix: warning: SASL authentication failure: cannot connect to Courier authdaemond: Permission denied&lt;br /&gt;Надо Просто дать исполнение на этот файл.&lt;br /&gt;chmod o+x /var/run/authdaemond&lt;br /&gt;Третий раз уже на эти грабли наступаю.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294045657797660908-6045639305736429102?l=cppmm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppmm.blogspot.com/feeds/6045639305736429102/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://cppmm.blogspot.com/2009/09/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/6045639305736429102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/6045639305736429102'/><link rel='alternate' type='text/html' href='http://cppmm.blogspot.com/2009/09/blog-post.html' title='На заметку. Грабли обновления курьера.'/><author><name>Anton "cppmm" Kropachev</name><uri>http://www.blogger.com/profile/05815356399793900372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://bp0.blogger.com/_LiQ6ICkCjiM/SHPbwTA2tbI/AAAAAAAAAQw/QWV70OspyLA/S220/003.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294045657797660908.post-1761456399949122810</id><published>2009-09-17T13:05:00.010+07:00</published><updated>2009-09-17T15:10:09.932+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='vimrc'/><title type='text'>Мой vimrc</title><content type='html'>Вот, добрались руки упорядочить свой .vimrc&lt;br /&gt;Пока что маленький и скромный, но со временем, думаю, функций добавится.&lt;br /&gt;&lt;div id="code" style="background-color:#ffffff; color:#000000"&gt;&lt;font face="monospace"&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;&amp;nbsp;1 &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;quot; Подсветка синтаксиса&lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;&amp;nbsp;2 &lt;/font&gt;syntax on&lt;br /&gt;&lt;font color="#00ffff"&gt;&amp;nbsp;3 &lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;&amp;nbsp;4 &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;quot; Отключить режим совместимости с Vi&lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;&amp;nbsp;5 &lt;/font&gt;set nocompatible&lt;br /&gt;&lt;font color="#00ffff"&gt;&amp;nbsp;6 &lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;&amp;nbsp;7 &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;quot; Включить нормальную работу Backspace&lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;&amp;nbsp;8 &lt;/font&gt;set backspace=indent,eol,start&lt;br /&gt;&lt;font color="#00ffff"&gt;&amp;nbsp;9 &lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;10 &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;quot; История команд - 50&lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;11 &lt;/font&gt;set history=50&lt;br /&gt;&lt;font color="#00ffff"&gt;12 &lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;13 &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;quot; Вставка новой строки Enter'ом без перехода в режим вставки.&lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;14 &lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;15 &lt;/font&gt;map &amp;lt;CR&amp;gt; o&amp;lt;Esc&amp;gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;16 &lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;17 &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;quot; Автоопределение файлов&lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;18 &lt;/font&gt;filetype plugin on&lt;br /&gt;&lt;font color="#00ffff"&gt;19 &lt;/font&gt;filetype indent on&lt;br /&gt;&lt;font color="#00ffff"&gt;20 &lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;21 &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;quot; Всегда показывать положение курсора&lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;22 &lt;/font&gt;set ruler&lt;br /&gt;&lt;font color="#00ffff"&gt;23 &lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;24 &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;quot; Показывать текущую команду&lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;25 &lt;/font&gt;set showcmd&lt;br /&gt;&lt;font color="#00ffff"&gt;26 &lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;27 &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;quot; Показывать режим работы&lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;28 &lt;/font&gt;set showmode&lt;br /&gt;&lt;font color="#00ffff"&gt;29 &lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;30 &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;quot; Поиск в реалтайме&lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;31 &lt;/font&gt;set incsearch&lt;br /&gt;&lt;font color="#00ffff"&gt;32 &lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;33 &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;quot; Хоткей Ctrl+n включает нумерацию строк, а Ctrl+b отключает.&lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;34 &lt;/font&gt;map &amp;lt;C-n&amp;gt; &amp;lt;Esc&amp;gt;:set number&amp;lt;CR&amp;gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;35 &lt;/font&gt;map &amp;lt;C-b&amp;gt; &amp;lt;Esc&amp;gt;:set nonumber&amp;lt;CR&amp;gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;36 &lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;37 &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;quot; Быстрое сохранение на &amp;lt;F2&amp;gt; во всех режимах&lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;38 &lt;/font&gt;imap &amp;lt;F2&amp;gt; &amp;lt;Esc&amp;gt;:w&amp;lt;CR&amp;gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;39 &lt;/font&gt;map &amp;lt;F2&amp;gt; &amp;lt;Esc&amp;gt;:w&amp;lt;CR&amp;gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;40 &lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;41 &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;quot; Выход без сохранения на &amp;lt;F10&amp;gt; во всех режимах&lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;42 &lt;/font&gt;imap &amp;lt;F10&amp;gt; &amp;lt;Esc&amp;gt;:q!&amp;lt;CR&amp;gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;44 &lt;/font&gt;map &amp;lt;F10&amp;gt; &amp;lt;Esc&amp;gt;:q!&amp;lt;CR&amp;gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;45 &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;quot; Вставка из буфера мыши&lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;46 &lt;/font&gt;map &amp;lt;S-Insert&amp;gt; &amp;lt;Middlemouse&amp;gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;47 &lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;48 &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;quot; При вводе открывающей фигурной скобки автоматом вводится и закрывающая.&lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;49 &lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;50 &lt;/font&gt;inoremap { {&amp;lt;CR&amp;gt;}&amp;lt;Esc&amp;gt;O&lt;br /&gt;&lt;font color="#00ffff"&gt;51 &lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;52 &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;quot; При вводе закрывающей скобки подсвечивает открывающую&lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;53 &lt;/font&gt;set showmatch&lt;br /&gt;&lt;font color="#00ffff"&gt;54 &lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;55 &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;quot; Выключить любые звонки-мигалки&lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;56 &lt;/font&gt;set novisualbell&lt;br /&gt;&lt;font color="#00ffff"&gt;57 &lt;/font&gt;set t_vb=&lt;br /&gt;&lt;font color="#00ffff"&gt;58 &lt;/font&gt;&lt;font color="#0000ff"&gt;" Удаление от текущей позиции до конца строки по Ctrl+e&lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;59 &lt;/font&gt;map &amp;lt;C-e&amp;gt; &amp;lt;Esc&amp;gt;d$&lt;br /&gt;&lt;/font&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294045657797660908-1761456399949122810?l=cppmm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppmm.blogspot.com/feeds/1761456399949122810/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://cppmm.blogspot.com/2009/09/vimrc.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/1761456399949122810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/1761456399949122810'/><link rel='alternate' type='text/html' href='http://cppmm.blogspot.com/2009/09/vimrc.html' title='Мой vimrc'/><author><name>Anton "cppmm" Kropachev</name><uri>http://www.blogger.com/profile/05815356399793900372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://bp0.blogger.com/_LiQ6ICkCjiM/SHPbwTA2tbI/AAAAAAAAAQw/QWV70OspyLA/S220/003.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294045657797660908.post-5942079647039504373</id><published>2009-07-12T23:35:00.004+07:00</published><updated>2009-07-13T00:10:08.421+07:00</updated><title type='text'>Lynksys, dd-wrt, vpn и локальные маршруты.</title><content type='html'>Есть некая локальная сеть. Довольно крупная, поэтому адреса локальных ресурсов занимают довольно большое количество подсетей.  А выход в интернет осуществляется через vpn-подключение. И понадобился способ выпустить локальную сеть(офиса, или несколько домашних компов - неважно) в инет, при этом, чтобы локальные ресурсы были доступны напрямую, а не по vpn-каналу.&lt;br /&gt;Конечно, это проще простого решается с помощью роутера с Linux, но каждому желающему такой роутер не поставишь. Вот и вспомнилась мне железка, с которой в своё время уже приходилось работать - Linksys WRT54-GL и свободная прошивка dd-wrt.&lt;br /&gt;&lt;br /&gt;Что нам понадобится.&lt;br /&gt;1. Сам Linksys WRT54-GL.&lt;br /&gt;2. Список локальных сетей(в моём случае, его можно взять с сайтов местных провайдеров).&lt;br /&gt;3. Прошивки dd-wrt последней версии(на момент написания этой заметки - 24) mini и standart. Всегда можно взять с официального сайта &lt;a href="http://www.dd-wrt.com/"&gt;dd-wrt&lt;/a&gt;.&lt;br /&gt;4. Немного времени.&lt;br /&gt;&lt;br /&gt;Настройка:&lt;br /&gt;1. Прошивка устройства.&lt;br /&gt;В этот раз почему-то lynksys не захотел прошиваться сразу. Упорно был сбой при попытки запихнуть в него standart-версию. Решается просто. Сперва вшивается mini, а потом standart.&lt;br /&gt;2. Настройка сети.&lt;br /&gt;На вкладке Basic Setup для wan-интерфейса выставляем режим Static IP. Там прописывается ip-адрес, выдаваемый Вам провайдером и маску подсети.  Шлюз не ставить!&lt;br /&gt;Для Router IP, выставляем адрес и маску сети, по которому Linksys будет доступен в домашней локалке. И снова шлюз не ставить. Тут же надо указать dns-сервер, выданный провом.&lt;br /&gt;Далее, по желанию. Я лично настроил раздачу адресов по локалке с помощью dhcp. Здесь всё.&lt;br /&gt;Теперь решаем проблему, на которой затыкается большинство, судя по гуглу. Шлюз провайдера и vpn-сервер находятся в разных подсетях. Если указать default gateway, то vpn потом не будет работать. Если же его не указывать, то он и не подключиться. Но что мешает прописать отдельный маршрут к vpn-серверу через шлюз? Итак, идём на вкладку Setup -&gt; Advanced Routing и добавляем нужный маршрут.&lt;br /&gt;3. Настройка vpn.&lt;br /&gt;Вкладка Services -&gt; PPTP.&lt;br /&gt;Ставим enable для PPTP Client, где и прописываем адрес vpn-сервера, логин и пароль. Если нужно, то опции шифрования.&lt;br /&gt;4. Добавление маршрутов.&lt;br /&gt;Последний штрих. Добавляем маршруты локальной сети.&lt;br /&gt;Вкладка Administration -&gt; Commands.&lt;br /&gt;Все маршруты вписываем в поле commands в виде:&lt;br /&gt;ip route add xx.xx.xx.xx/xx via yy.yy.yy.yy&lt;br /&gt;Думаю, ясно, что это. Одно уточнение. Маска должна быть указана именно в виде битов, а не привычным для многих квартетным форматом - Linksys его не понимает.&lt;br /&gt;&lt;br /&gt;Всё готово. Единственный ньюанс - внесение изменений в случае смены маршрутов в локалке. На роутере с linux у меня это решено простым скриптом, который по крону скачивает файл с маршрутами с сайта провайдера, и в соответсвии с ним вносит изменения в таблицу маршрутов. Вот, следующим шагом, думаю запихать этот скрипт в linksys(придётся немного переделать, потому как dd-wrt это всё-таки не полноценный linux).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294045657797660908-5942079647039504373?l=cppmm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppmm.blogspot.com/feeds/5942079647039504373/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://cppmm.blogspot.com/2009/07/lynksys-dd-wrt-vpn.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/5942079647039504373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/5942079647039504373'/><link rel='alternate' type='text/html' href='http://cppmm.blogspot.com/2009/07/lynksys-dd-wrt-vpn.html' title='Lynksys, dd-wrt, vpn и локальные маршруты.'/><author><name>Anton "cppmm" Kropachev</name><uri>http://www.blogger.com/profile/05815356399793900372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://bp0.blogger.com/_LiQ6ICkCjiM/SHPbwTA2tbI/AAAAAAAAAQw/QWV70OspyLA/S220/003.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294045657797660908.post-7620389001464352849</id><published>2009-06-01T12:25:00.003+07:00</published><updated>2009-06-01T15:22:23.502+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='freebsd'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='chroot'/><title type='text'>ssh-доступ в chroot для FreeBSD.</title><content type='html'>Есть у меня тут один web-сервер. Крутится на FreeBSD. И понадобилось организовать ssh-достп для программистов, чтобы они могли работать с разрабатываемыми сайтами напрямую. Но при этом было жёсткое условие - кроме своей рабочей директории программисты не должны видеть ничего, находящегося в системе.&lt;br /&gt;Гугл штука хорошая, много рассказал, но там были всякие решения типа установки патченных версий sshd на другом порту или ограниченного доступа по sftp. Ограниченного доступа слишком мало, а патчить и плодить на сервере нестандартные вещи я не люблю.&lt;br /&gt;В конце концов было выработано такое решение.&lt;br /&gt;1. Создаём дерево chroot.&lt;br /&gt;# mkdir /usr/chroot/&lt;br /&gt;# mkdir /usr/chroot/bin&lt;br /&gt;# mkdir /usr/chroot/dev&lt;br /&gt;# mkdir /usr/chroot/etc&lt;br /&gt;# mkdir /usr/chroot/home&lt;br /&gt;# mkdir /usr/chroot/lib&lt;br /&gt;# mkdir /usr/chroot/libexec&lt;br /&gt;# mkdir /usr/chroot/sbin&lt;br /&gt;# mkdir /usr/chroot/tmp&lt;br /&gt;# mkdir /usr/chroot/usr&lt;br /&gt;# mkdir /usr/chroot/var&lt;br /&gt;# mkdir /usr/chroot/var/run&lt;br /&gt;2. Копируем нужные команды и библиотеки.&lt;br /&gt;У меня для /usr/chroot/bin - это: bash cat cp id ls mc mkdir mv rm scp sh svn&lt;br /&gt;И для /usr/chroot/sbin - ldconfig&lt;br /&gt;Список команд полностью зависит от ваших потребностей.&lt;br /&gt;Теперь надо положить туда все библиотеки, необходимые для работы этих команд. Сразу же небольшое уточнение. Так как список команд и библиотек относительно небольшой, я не стал заморачиваться с фряшной системой расположения их по дереву(/usr/local/bin), а сложил всё в корне.&lt;br /&gt;Для того, чтобы определить, какие библиотеки нам нужны, воспользуемся утилитой ldd. Для удобства, я это делал так:&lt;br /&gt;# ldd /usr/local/bin/bash | grep -v \/usr\/local\/bin\/bash | cut -f 2 -d \&gt; | cut -f 1 -d \(&lt;br /&gt;/lib/libncurses.so.7&lt;br /&gt;/usr/local/lib/libintl.so.8&lt;br /&gt;/usr/local/lib/libiconv.so.3&lt;br /&gt;/lib/libc.so.7&lt;br /&gt;Это список необходимого для bash. Для остального по аналогии. Все эти библиотеки копируем в /usr/chroot/lib&lt;br /&gt;Кроме этого, надо добавить симлинки типа libintl.so -&gt; libintl.so.8&lt;br /&gt;# ln -s libintl.so.8 linintl.so&lt;br /&gt;И скопировать дополнительные *.a и *.la файлы. Подробнее надо смотреть для каждой отдельной библиотеки. В итоге мы должны получить что-то такое:&lt;br /&gt;# ls /usr/chroot/lib/ | grep intl&lt;br /&gt;libintl.a&lt;br /&gt;libintl.la&lt;br /&gt;libintl.so&lt;br /&gt;libintl.so.8&lt;br /&gt;Разумеется, так надо сделать для каждой необходимой библиотеки.&lt;br /&gt;Ну и разумеется нужно скопировать основную фряшную утилиту, отвечающую за подгрузку библиотек:&lt;br /&gt;# cp /libexec/ld-elf.so.1 /usr/chroot/libexec/ld-elf.so.1&lt;br /&gt;3. Дополнительный компоненты для работы утилит.&lt;br /&gt;Одних библиотек мало. У примеру, тому же mc надо ещё кучу всего. Тут, к сожалению, невозможно как-то заранее предсказать, что именно понадобится. В каждом отдельном случае надо читать документацию на программу и гуглить, если выдаёт ошибки. Для mc надо дополнительно скопировать полностью директории /usr/share/misc/ и /usr/local/share/mc/ в соответствующие места в chroot'е.&lt;br /&gt;Так же для него понадобятся файлы termcap и shells в /usr/chroot/etc&lt;br /&gt;В /usr/chroot/tmp надо будет создать директорию mc-root&lt;br /&gt;4. Теперь подгатавливаем пользователя.&lt;br /&gt;# adduser&lt;br /&gt;Создаём обычного пользователя, только в качестве shell'a указываем ему путь к вот такому скрипту:&lt;br /&gt;#!/usr/local/bin/bash&lt;br /&gt;#&lt;br /&gt;/usr/local/bin/sudo /usr/sbin/chroot /usr/chroot /bin/bash&lt;br /&gt;Скрипту даём права на исполнение. Если не установлен пакет sudo, ставим и в /usr/local/etc/sudoers(можно воспользоваться командой visudo, если vim не страшен) добавляем строку имя_нашего_пользователя ALL=(ALL) NOPASSWD: /usr/sbin/chroot. Если править этот файл руками, надо не забыть после правки убрать права на запись, потому как sudo будет ругаться.&lt;br /&gt;Командой passwd задаём для него пароль.&lt;br /&gt;5. Монтируем устройства.&lt;br /&gt;# mount -t devfs devfs /usr/chroot/dev&lt;br /&gt;Готово.&lt;br /&gt;Теперь логнинясь по ssh этим пользователем, человек попадает в chroot, из которого выхода нет.&lt;br /&gt;Но этот голый chroot мне не нужен. Мне нужен доступ к определённым проектам. Я сделал так:&lt;br /&gt;Отмонтировал devfs. Далее:&lt;br /&gt;# cd /usr/chroot&lt;br /&gt;# tar -cjvf /usr/backups/chroot.tar.bz2 ./&lt;br /&gt;# cd /path/to/www_project&lt;br /&gt;# tar -xjvf /usr/backups/chroot.tar.bz2&lt;br /&gt;# mount -t devfs devfs /path/to/www_project/dev&lt;br /&gt;И последнимс штрихом создание нового файла chroot.sh для конкретного пользователя с новым путём вместо /usr/chroot.&lt;br /&gt;Теперь программер имеет доступ по ssh к сайту и не больше.&lt;br /&gt;Решение пока сырое. Работаю над автоматизацией создания всего этого, плюс над созданием общего для всех chroot.sh, берущего конечную директорию из конфига(собственно, сделать это просто, но руки не доходят - много работы).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294045657797660908-7620389001464352849?l=cppmm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppmm.blogspot.com/feeds/7620389001464352849/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://cppmm.blogspot.com/2009/06/ssh-chroot-freebsd.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/7620389001464352849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/7620389001464352849'/><link rel='alternate' type='text/html' href='http://cppmm.blogspot.com/2009/06/ssh-chroot-freebsd.html' title='ssh-доступ в chroot для FreeBSD.'/><author><name>Anton "cppmm" Kropachev</name><uri>http://www.blogger.com/profile/05815356399793900372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://bp0.blogger.com/_LiQ6ICkCjiM/SHPbwTA2tbI/AAAAAAAAAQw/QWV70OspyLA/S220/003.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294045657797660908.post-8703251539662393294</id><published>2009-05-14T15:36:00.004+07:00</published><updated>2009-05-14T15:43:24.341+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='на заметку'/><category scheme='http://www.blogger.com/atom/ns#' term='shell script'/><title type='text'>На заметку.</title><content type='html'>Замена во всех файлах в поддиректориях одного слова на другое.&lt;br /&gt;find ./ -type f | xargs perl -pi -e 's/oneword/anotherword/g'&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294045657797660908-8703251539662393294?l=cppmm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppmm.blogspot.com/feeds/8703251539662393294/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://cppmm.blogspot.com/2009/05/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/8703251539662393294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/8703251539662393294'/><link rel='alternate' type='text/html' href='http://cppmm.blogspot.com/2009/05/blog-post.html' title='На заметку.'/><author><name>Anton "cppmm" Kropachev</name><uri>http://www.blogger.com/profile/05815356399793900372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://bp0.blogger.com/_LiQ6ICkCjiM/SHPbwTA2tbI/AAAAAAAAAQw/QWV70OspyLA/S220/003.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294045657797660908.post-1262023140227446731</id><published>2009-04-29T18:44:00.003+07:00</published><updated>2009-06-03T19:20:24.012+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Debian'/><category scheme='http://www.blogger.com/atom/ns#' term='eeepc'/><title type='text'>Debian GNU/Linux 5.0 Lenny и Eee PC 701 4G</title><content type='html'>&lt;span style="font-family:arial;"&gt;Как можно понять из заглавия, не хватило у меня терпения на Xandros. Очень уж много там надо убирать лишнего и ставить своего. Конечно, не поспоришь, разработчики постарались на славу: для обычного неподготовленного пользователя Eee PC с Linux в стандартной настройке - это очень и очень удобно. Всё просто и понятно - ничего лишнего. Напоминает даже не ноутбук(путь и маленький), а какой-то большой КПК с его менюшками, стандартными кнопочками и т.д. Но если начать копать глубже, менять что-то, то нарываешься на множество раздражающих вещей. То сделать нельзя, это не получится, сюда смотреть не желательно, туда вообще не надо и т.д. Кеды, которые я туда поставил, быстро надоели. Да и подглючивали немного. Снести половину софта пакетный менеджер не дал, ругнувшись на зависимости(или предлагал снести слишком много). Последнее, что меня добило - это в режиме "Полноценного рабочего стола"(читай KDE) при загрузке нетбук не спрашивает логина с паролем. Нужно переключаться в стандартный режим. И, да. Добавлять других пользователей помимо стандартного бесполезно. Залогиниться не получится. Автоматом идёт загрузка в стандартного пользователя. В принципе, я нашёл, кто отвечает за такую загрузку, где идёт управление пользователями, но исправлять это и приводить систему в нормальный вид мне было уже неохота. Зачем, если можно поставить нормальную систему, которая 100% хорошо работает.&lt;/span&gt;&lt;br /&gt;&lt;a style="font-family: arial;" href="http://eeepc.debian.net/debian/images/"&gt;Отсюда&lt;/a&gt;&lt;span style="font-family:arial;"&gt; берём образ инсталятора. Заливаем его на флешку:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;dd if=debian-eeepc.img of=/dev/sda&lt;/blockquote&gt;&lt;br /&gt;И грузимся с флешки(при старте нетбука надо нажимать Esc, чтобы выбрать загрузочное устройство).&lt;br /&gt;Далее идёт обычная всем знакомая установка Debian из сети. К слову, wi-fi-карточка определилась сразу и даже замечательно подхватила ключ шифрования. А так же без проблем прописались настройки прокси-сервера с авторизацией. В этот раз я впервые в жизни выбрал reiserfs и пункт "Окружение рабочего стола"(а так же выбрал пункт "Для ноутбуков"). Всё прошло замечательно.&lt;br /&gt;Теперь на моём нетбуке Debian. Скинув туда бекапы моих отточенных временем конфигов, я получил привычную рабочую систему. При этом не пришлось настраивать ничего. С питанием работает нормально, заряд батареи показывает адекватно. Жаловаться нечего.&lt;br /&gt;Единственное, что я ещё не проверял - web-камеру. По-моему не определилась. Но точно не знаю.&lt;br /&gt;Вот &lt;a href="http://wiki.debian.org/DebianEeePC/HowTo/Install"&gt;man по установке&lt;/a&gt;(дублировать здесь не вижу смысла).&lt;br /&gt;&lt;br /&gt;Updated: web-камера работает. Надо было просто включить её в /sys.&lt;br /&gt;echo 1 &gt; /sys/devices/platform/eeepc/camera&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: arial;"&gt;&lt;/span&gt;&lt;span style="font-family: arial; color: black; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294045657797660908-1262023140227446731?l=cppmm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppmm.blogspot.com/feeds/1262023140227446731/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://cppmm.blogspot.com/2009/04/debian-gnulinux-50-lenny-eee-pc-701-4g.html#comment-form' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/1262023140227446731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/1262023140227446731'/><link rel='alternate' type='text/html' href='http://cppmm.blogspot.com/2009/04/debian-gnulinux-50-lenny-eee-pc-701-4g.html' title='Debian GNU/Linux 5.0 Lenny и Eee PC 701 4G'/><author><name>Anton "cppmm" Kropachev</name><uri>http://www.blogger.com/profile/05815356399793900372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://bp0.blogger.com/_LiQ6ICkCjiM/SHPbwTA2tbI/AAAAAAAAAQw/QWV70OspyLA/S220/003.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294045657797660908.post-8183098660250893990</id><published>2009-04-28T18:14:00.001+07:00</published><updated>2009-04-28T18:17:48.679+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><title type='text'>На заметку.</title><content type='html'>рекурсивное удаление всех файлов в директории и её поддиректориях:&lt;br /&gt;&lt;blockquote&gt; find ./ -type f -delete&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294045657797660908-8183098660250893990?l=cppmm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppmm.blogspot.com/feeds/8183098660250893990/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://cppmm.blogspot.com/2009/04/blog-post_28.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/8183098660250893990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/8183098660250893990'/><link rel='alternate' type='text/html' href='http://cppmm.blogspot.com/2009/04/blog-post_28.html' title='На заметку.'/><author><name>Anton "cppmm" Kropachev</name><uri>http://www.blogger.com/profile/05815356399793900372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://bp0.blogger.com/_LiQ6ICkCjiM/SHPbwTA2tbI/AAAAAAAAAQw/QWV70OspyLA/S220/003.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294045657797660908.post-2673510116278392133</id><published>2009-04-28T17:10:00.004+07:00</published><updated>2009-04-28T17:17:13.177+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell-cript'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Скрипт работы с cd/dvd-дисками в консоли.</title><content type='html'>&lt;span style="font-family:arial;"&gt;Вот, роясь на просторах винта, откопал старый скрипт для записи/очистки и т.д. дисков в консоли. Писал во времена, когда не признавал почти никаких GUI-приложений.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;#!/bin/bash&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;#&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;TMPFILE=/home/cppmm/wtmp/cdrom.iso&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# Определение действия.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;case $1 in&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    wr)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        FUNC="f_write"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    ;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    cp)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        FUNC="f_copy"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    ;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    cl)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        FUNC="f_clear"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    ;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    ch)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        FUNC="f_check"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    ;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    wi)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        FUNC="f_write_iso"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    ;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    help)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        FUNC="f_help"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    ;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    *)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        FUNC="f_help"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    ;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;esac&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;shift&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# Определение параметров.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;until [ -z $1 ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;do&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    if [ "$1" = "-d" ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        DIR="$2"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        shift&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    fi&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    if [ "$1" = "-s" ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        SPEED="$2"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        shift&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    fi&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    if [ "$1" = "-o" ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        ODISK="$2"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        shift&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    fi&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    if [ "$1" = "-i" ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        IDISK="$2"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        shift&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    fi&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    if [ "$1" = "-f" ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        ISO="$2"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        shift&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    fi&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    shift&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;done&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# Функйия проверки наличия переменных и оповещения.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;f_var_check() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    case "$1" in&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        v_help)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            echo "Для справки: cd.sh help"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            exit 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        ;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        v_dir)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            if [ -z "$DIR" ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            echo "Нужно указать директорию, подготовленную для записи."&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            f_var_check v_help&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            fi&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        ;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        v_odisk)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            if [ -z "$ODISK" ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            echo "Нужно указать устройство, производящее запись."&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            f_var_check v_help&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            fi&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        ;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        v_idisk)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            if [ -z "$IDISK" ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            echo "Нужно указать устройство, с которого производится копирование."&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            f_var_check v_help&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            fi&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        ;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        v_speed)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            if [ -z "$SPEED" ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                SPEED="4"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                echo "Скорость записи не установленна. По-умолчанию 4"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                echo "Продолжить? [Y/n]: "&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                read ANSWER&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                case $ANSWER in&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                    [nN])&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                        f_var_check v_help&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                    ;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                    *)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                    ;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                esac&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            fi&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        ;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        v_eject)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            eject -r /dev/${ODISK}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            echo "Вставьте записываемый диск и нажмите Enter."&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            read ready&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            eject -t /dev/${ODISK}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        ;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        v_iso)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            if [ -z "$ISO" ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            echo "Укажите файл образа."&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            f_var_check v_help&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            fi&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        ;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;esac&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# Функция записи дирректории на диск.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;f_write() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    f_var_check v_odisk&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    f_var_check v_dir&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    f_var_check v_speed&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    mkisofs -V "Disk" -l -J -R -v -o ${TMPFILE} ${DIR}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    f_var_check v_eject&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        cdrecord -v -dev=/dev/${ODISK} -speed=${SPEED} ${TMPFILE}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        rm -f ${TMPFILE}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# Функция копирования диска.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;f_copy() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        f_var_check v_odisk&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        f_var_check v_idisk&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        f_var_check v_speed&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        dd if=/dev/${IDISK} of=${TMPFILE} bs=2048&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        f_var_check v_eject&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        cdrecord -v -dev=/dev/${ODISK} -speed=${SPEED} ${TMPFILE}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        rm -f ${TMPFILE}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# Функция очистки диска.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;f_clear() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    f_var_check v_odisk&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    cdrecord dev=/dev/${ODISK} -blank=all&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# Функция проверки размера будующего образа.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;f_check() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    f_var_check v_dir&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    echo "Размерв байтах:"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    expr `mkisofs -print-size -quiet $DIR` \* 2084&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# Функция записи iso-образа.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;f_write_iso() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    f_var_check v_odisk&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    f_var_check v_iso&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    f_var_check v_speed&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    cdrecord -v -dev=/dev/${ODISK} -speed=${SPEED} ${ISO}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# Функция помощи.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;f_help() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    echo "    Использование: cd.sh ДЕЙСТВИЕ ОПЦИИ"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    echo "        Действия:"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    echo "        wr    запись директории на диск."&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    echo "        cp    копирование с диска на диск."&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    echo "        cl    очистка диска."&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    echo "        ch    проверка размера будущего образа диска из директории."&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    echo "        wi    запись на диск образа."&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    echo "        Опции:"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    echo "        -d    Директория, подготовленная для записи."&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    echo "        -f    Файл ISO."&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    echo "        -i    Исходный диск."&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    echo "        -o    Диск, подготовленный для записи."&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    echo "        -s    Скорость записи."&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$FUNC&lt;/span&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294045657797660908-2673510116278392133?l=cppmm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppmm.blogspot.com/feeds/2673510116278392133/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://cppmm.blogspot.com/2009/04/cddvd.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/2673510116278392133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/2673510116278392133'/><link rel='alternate' type='text/html' href='http://cppmm.blogspot.com/2009/04/cddvd.html' title='Скрипт работы с cd/dvd-дисками в консоли.'/><author><name>Anton "cppmm" Kropachev</name><uri>http://www.blogger.com/profile/05815356399793900372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://bp0.blogger.com/_LiQ6ICkCjiM/SHPbwTA2tbI/AAAAAAAAAQw/QWV70OspyLA/S220/003.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294045657797660908.post-1333172937604545797</id><published>2009-04-24T12:42:00.002+07:00</published><updated>2009-04-24T12:43:00.880+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='eeepc'/><title type='text'>Asus Eee Pc 701 4G</title><content type='html'>&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;Ещё давно, прочитав на каком-то техническом сайте о том, что прогнозируется появления такой железки, мне почему-то сразу захотелось с ней поиграться. Тем более было анонсировано, что на борту устанавливается Linux. И вот, через несколько лет с того момента, я, наконец, приобрёл себе этот нетбук. Специально остановился на младшей модели из линейки, потому как характеристики железа тут всё-равно круче, чем у моего первого компа, а как плюс идёт более длительное время работы.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;Итак, знакомство.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;" &gt;Первый взгляд снаружи.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;В Томске найти поначалу не удавалось. Различные версии Eee PC встречал, но все они были старших моделей и все они были с виндой. Дошло то дого, что я, отчаявшись найти нетбук тут, начал искать его в online-магазинах. Затея с треском провалилась: во всех магазинах стояла пометка, нет на складе, а на письма с просьбой уточнить, можно ли заказать, либо вообще не было ответа, либо фраза "Нет и не будет". В конце концов я уже договорился с одним замечательным человеком из Москвы, знакомым по linux-форуму, что он там его купит и вышлет мне и буквально на следующий день увидел в одном из местных компьютерных магазинов желаемую машинку. Был даже выбор из разных моделей, но я всё-таки взял младшую. Единственный минус - цвет: первоначально хотел чёрный, но пришлось взять белый с розовой крышкой. :) Ну это, в принципе, не важно.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;" &gt;Первый взгляд изнутри.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;Стандартный интерфейс напоминает больше какой-то КПК, а не полноценный ноутбук. Я перепробовал много разных оконных менеджеров, но тут сперва даже немного растерялся. Какие-то вкладки, какие-то кнопочки... Всё предельно просто и понятно, но неинтересно. Первый вопрос, который у меня возник - где же терминал? :) Гугл сказал, что он вызывается по Alt+Ctrl+T. Уже лучше. Так же играясь с настройками и бегая по менюшкам наткнулся на неработающую web-камеру. Оказалось, надо было в BIOS опцию "OS Installation" переключить в значение Finished. Так же удивил набор программ. В качестве проигрывателя аудиофайлов используется amarok(ага, т.е. там KDE), а мессенджера Pidgin(или всё-таки Gnome?). Остальной софт такой же раношёрстный, но, в принципе, приемлемый - полный комплект OpenOffice.org, Firefox в качестве браузера, набор каких-то простеньких игрушек и т.д. В общем, стандартная комплектация. И тут я нахоже первый момент, которыймне совершенно не понравился в стандартном интерфейсе - невозможность устанавливать свои программы. Так же нет привычного списка открытых окон(читай панели задач). Ну и вообще, как-то не привык я пользоваться чужими настройками. Хочу своё.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;" &gt;Копаем глубже.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;Стандартная документация ничего внятного по поводу используемой DE и её смены ничего не сказала, поэтому в руки берётся гугл и начинается штурм.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;Итак, на борту:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;ОС: Xandros Linux специально допиленный для Eee PC.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;WM: IceWM, с какой-то Asus'овской утилитой управления рабочим столом.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;Первое, что удаётся найти - это возможность включить панель задач с кнопкой меню.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;Копируем системный файл с настройками IceWM в домашнюю директорию и выставляем опцию TaskBarShowStartMenu в значение 1:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:verdana;" &gt;$ cat /etc/X11/icewm/preferences &gt; /home/user/.icewm/preferences&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;Ребутаемся(или рестартим иксы, кому как удобнее) и радуемся работающей панельке.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;Стало немного удобнее, но хотелось бы большего. В конце концов, поискав ещё немного в гугле, выясняется, что можно подключить нормальные человеческие репозитарии и поставить любой, нужный для работы софт. Так как Xandros основан на Debian, правим /etc/apt/sources.list(надо быть осторожным, потому что из всех, найденных мной в инете адресов репозитариев, половина не работала). Да, править надо с правами root'а. Это либо через sudo, либо, сделава sudo passwd и потом su.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;Дальше, как обычно.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:verdana;" &gt;# apt-get update&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:verdana;" &gt;# apt-get dist-upgrade&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;Вот тут и натыкаемся на первые грабли. Причём, судя по интернету не я первый. Видимо, из-за того, что пакетов много и все разные, получаем конфликт - keyboardmap-data не может установиться из-за мешающего ему пакета keyboardmap-data-ru-ru. Решилось удалением последнего спомощью apt-get remove и повторным запуском apt-get dist-upgrade.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;В большинстве обзоров и статей предлагается в качестве стандартного DE использовать кеды. Я решил не выделяться пока и пошёл по проторенной дорожке:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:verdana;" &gt;# apt-get install advanced-desktop&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;Это мета-пакет с KDE и всем, что ему надо.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;После установки, на вкладке настроек рабочего стола, выбираем пункт "Быстрое выключение" и там жмём на "Полноценный рабочий стол". После ребута мы видим KDE. :)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;Ну а потом всё пошло совсем просто. Первым делом я удалил всё, что мне не нужно - игры, pidgin, amarok, половину OO.o, оставив только Writer и Calc и там ещё что-то по мелочи, полюбовался проделанной работой и установил набор, любимого мной софта: psi, xchat, audacious и т.д. Как практически в любом дистрибутиве понадобилось поставить кодеки. Через некоторое время у меня была полностью рабочая система, настроенная так, как мне нужно.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;" &gt;Итоги знакомства и первые впечатления.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;Понравилось. После первого взгляда на xandros возникла идея сразу же его снести и поставить родной Debian. Пока что повременю. Да и к тому же надо разобраться с организацией файловой системы. Из-за некоторых особеннойстей работы с SSD-флешками(которая тут вместо винта) файловая система устроена несколько необычно - подробнее распишу, когда сам разберусь.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;Батарейка, как и обещали, держит неплохо. Полноценного теста ещё не проводил, но, к примеру, 5-минутный клип на полном экране с максимальной яркостью и громкостью, работающим в фоне apt-get'ом, Firefox-ом, Psi и ещё парой терминалов, включённым wi-fi не отобрал у батареи ни одного процента заряда.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;К слову о скорости работы и многозадачности - никаких тормозов. Ни у каждого так хорошо полноценные десктопы работают.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;Остался только один минус, с которым пока не успел разобраться. При подключении флешек и SD-карт постоянно выскакивает противное окошко с предложением открыть флешку в файловом менеджере или ещё в чём-нибудь. Отвечает за это некий usbstorageapplet, который даже если убить его по kill -9 всё равно каким-то процессом воскрешается. Почему нельзя было сделать автомонтирование как у всех нормальных людей с помощью udev без привлечения лишних приблуд - не понимаю. Но скоро с этим разберусь. :)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;Отдельно хочется отметить сайты:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="font-family: arial; color: rgb(0, 0, 0);" href="http://eeeusers.org/"&gt;eeeusers.org&lt;/a&gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt; и &lt;/span&gt;&lt;a style="font-family: arial; color: rgb(0, 0, 0);" href="http://eee-pc.ru/"&gt;eee-pc.ru&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;тут можно найти достаточно много грамотной документации.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294045657797660908-1333172937604545797?l=cppmm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppmm.blogspot.com/feeds/1333172937604545797/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://cppmm.blogspot.com/2009/04/asus-eee-pc-701-4g.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/1333172937604545797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/1333172937604545797'/><link rel='alternate' type='text/html' href='http://cppmm.blogspot.com/2009/04/asus-eee-pc-701-4g.html' title='Asus Eee Pc 701 4G'/><author><name>Anton "cppmm" Kropachev</name><uri>http://www.blogger.com/profile/05815356399793900372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://bp0.blogger.com/_LiQ6ICkCjiM/SHPbwTA2tbI/AAAAAAAAAQw/QWV70OspyLA/S220/003.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294045657797660908.post-6646537827590910694</id><published>2009-04-10T15:22:00.002+07:00</published><updated>2009-04-10T15:29:58.401+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux virtual disk'/><title type='text'>Монтирование образов жёстких дисков.</title><content type='html'>При работе с виртуальной машиной(qemu или VirtualBox) создаётся отдельный образ жёсткого диска со своей таблицей раздела и своими файловыми системами. Иногда нужно что-то быстро оттуда скопировать. Наладка сети между виртуальной машиной и хост-компом не всегда удобно, потому как если копировать надо много, занимает очень много времени. Расшаренные общие директории тоже не выход, так как для этого нужно устанавливать дополнительное ПО в хост-системе. Но выход есть.&lt;br /&gt;Сперва надо переконвертировать образ диска в формат raw(как это сделать, надо смотреть в документации к используемой вирт-машине).&lt;br /&gt;Далее подключаем образ к loop-устройству:&lt;br /&gt;&lt;blockquote&gt;# losetup /dev/loop0 disk_image.raw&lt;/blockquote&gt;&lt;br /&gt;Разбиваем его на разделы:&lt;br /&gt;&lt;blockquote&gt;# kpartx -av /dev/loop0&lt;/blockquote&gt;&lt;br /&gt;Проверяем, как всё прошло:&lt;br /&gt;&lt;blockquote&gt;# ls -alF /dev/mapper&lt;br /&gt;brw-rw—- 1 root disk 253, 4 2007-11-24 14:56 loop0p1&lt;br /&gt;brw-rw—- 1 root disk 253, 5 2007-11-24 14:56 loop0p5&lt;/blockquote&gt;&lt;br /&gt;И, собственно, монтируем:&lt;br /&gt;&lt;blockquote&gt;# mount /dev/mapper/loop0p1 /mnt/&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Решение взято &lt;a href="http://linuxp2p.net/blog/2009/01/mount-raw-file-image/"&gt;отсюда&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294045657797660908-6646537827590910694?l=cppmm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppmm.blogspot.com/feeds/6646537827590910694/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://cppmm.blogspot.com/2009/04/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/6646537827590910694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/6646537827590910694'/><link rel='alternate' type='text/html' href='http://cppmm.blogspot.com/2009/04/blog-post.html' title='Монтирование образов жёстких дисков.'/><author><name>Anton "cppmm" Kropachev</name><uri>http://www.blogger.com/profile/05815356399793900372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://bp0.blogger.com/_LiQ6ICkCjiM/SHPbwTA2tbI/AAAAAAAAAQw/QWV70OspyLA/S220/003.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294045657797660908.post-3263301389678012749</id><published>2009-03-16T04:06:00.004+06:00</published><updated>2009-03-16T04:18:51.602+06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='compiz'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Debian'/><title type='text'>Compiz в xfce4. Debian GNU/Linux 5.0 Lenny</title><content type='html'>После обновления с Etch сменилось ядро. Соответственно, отпали дрова на видеокарту(если они были установлены не из стандартного репозитария). И как следствие отпал compiz.&lt;br /&gt;Лечение.&lt;br /&gt;1. Ставим драйвера: &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;apt-get install nvidia-glx nvidia-kernel-2.6.26-1-686 &lt;/span&gt;&lt;br /&gt;Учитывайте, что ядро у вас может быть другое.&lt;br /&gt;2. Обновляем компиз(на всякий случай ;):&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;apt-get --reinstall install compiz compiz-core&lt;/span&gt;&lt;br /&gt;3. Прописываем автостарт:&lt;blockquote&gt;&lt;br /&gt;$ &lt;span style="font-weight:bold;"&gt;cat ~/.config/autostart/compiz.desktop &lt;/span&gt;&lt;br /&gt;[Desktop Entry]&lt;br /&gt;Name=No Name&lt;br /&gt;Encoding=UTF-8&lt;br /&gt;Version=1.0&lt;br /&gt;Exec=/usr/bin/compiz --replace --fast-filter&lt;br /&gt;X-GNOME-Autostart-enabled=true&lt;br /&gt;$ &lt;span style="font-weight:bold;"&gt;cat ~/.config/autostart/compiz_start.desktop &lt;/span&gt;&lt;br /&gt;[Desktop Entry]&lt;br /&gt;Encoding=UTF-8&lt;br /&gt;Version=0.9.4&lt;br /&gt;Type=Application&lt;br /&gt;Name=compiz_start&lt;br /&gt;Comment=Запуск декораций окон&lt;br /&gt;Exec=/usr/bin/gtk-window-decorator --replace&lt;br /&gt;StartupNotify=false&lt;br /&gt;Terminal=false&lt;/blockquote&gt;&lt;br /&gt;Заметьте, что без второго файла работать толком не получится.&lt;br /&gt;Вот, собственно и всё. Старая схема, работавшая в Etch теперь не поможет. Многие описания в гугле говорят, что всё делается проще с использованием файла /etc/xdg/xfce4-session/xfce4-session.rc, но у меня почему-то ни один wm стартовать оттуда не захотел.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294045657797660908-3263301389678012749?l=cppmm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppmm.blogspot.com/feeds/3263301389678012749/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://cppmm.blogspot.com/2009/03/compiz-xfce4-debian-gnulinux-50-lenny.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/3263301389678012749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/3263301389678012749'/><link rel='alternate' type='text/html' href='http://cppmm.blogspot.com/2009/03/compiz-xfce4-debian-gnulinux-50-lenny.html' title='Compiz в xfce4. Debian GNU/Linux 5.0 Lenny'/><author><name>Anton "cppmm" Kropachev</name><uri>http://www.blogger.com/profile/05815356399793900372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://bp0.blogger.com/_LiQ6ICkCjiM/SHPbwTA2tbI/AAAAAAAAAQw/QWV70OspyLA/S220/003.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294045657797660908.post-2043178566366337589</id><published>2009-03-12T17:18:00.011+06:00</published><updated>2009-03-16T17:40:44.988+06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='shell-cript'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Debian'/><title type='text'>Смена локали. Debian.</title><content type='html'>До недавнего времени использовал везде исключительно koi8-r. Но, всё течёт, всё изменяется. Решил перейти на utf-8.&lt;br /&gt;Сама смена локали порблем не вызывает - dpkg-reconfigure locales и всё. С этим просто. Но дело в том, что имена всех файлов остаются в koi8-r. Тут пришлось немного поковыряться.&lt;br /&gt;Первое, за что взялся - за колекцию музыки. Есть такая замечательная утилита EasyTag. Давно пользуюсь ей(все теги у меня уже давно в UTF). Она же умеет менять имена файлов в соответствии с тегами.&lt;br /&gt;А вот для всех остальных файлов пришлось наваять маленький скриптик.&lt;br /&gt;Для начала, копирую все файлы, которые надо переименовать в отдельную директорию. Далее, создаю временный файл с листингом этой директории:&lt;br /&gt;&lt;blockquote&gt;ls -1 tmpdir/ &gt; tmpfile&lt;br /&gt;&lt;/blockquote&gt;Этот файл надо слегка обработать. ls добавляет туда неотображаемые символы, которые в скрипте обрабатывать мне показалось сложновато.  Я их просто убрал с помощью vim. В командном режиме:&lt;br /&gt;&lt;blockquote&gt;%s/\e\[0m//g&lt;br /&gt;&lt;/blockquote&gt;Теперь собственно скрипт:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;#&lt;br /&gt;STRN=$2&lt;br /&gt;&lt;br /&gt;for((i=1;i&lt;=$STRN;i++)) do   &lt;br /&gt;# Получаем каждое определённое имя файла в UTF по очереди.   &lt;br /&gt;UTFNAME=`cat tmpfile | iconv -f koi8-r -t utf-8 | tail -n ${i} | head -n 1`   &lt;br /&gt;# Получаем каждое отдельное текущее имя файла   &lt;br /&gt;KOI8NAME=`ls -1 ${1} | tail -n ${i} | head -n 1`   &lt;br /&gt;rename ${1}"${KOI8NAME}"  new/"$UTFNAME"&lt;br /&gt;done&lt;/blockquote&gt;&lt;br /&gt;Число STRN - количество файлов из листинга. Это число можно получить с помощью cat -n tmpfile. Директорию new создал руками. Всё. После отработки скрипта(в качестве первого аргумента даём ему tmpdir, а второго -количество файлов), в new будут лежать все наши файлики с именами в utf-8.&lt;br /&gt;&lt;br /&gt;P.S. Перемещать файлы, предназначенные для переименования во временную директорию надо только с помощью cp! Никаких mc.&lt;br /&gt;&lt;br /&gt;Update: В обсуждении этого способа на &lt;a href="http://welinux.ru"&gt;welinux.ru&lt;/a&gt; подсказали, что есть утилита convmv. Вердикт - гуглите, перед тем, как браться за что-то! :)&lt;br /&gt;&lt;br /&gt;Update2: Оказывается всё ещё проще. В Debian есть пакет, специально предназначенный для смены локали на utf-8: utf8-migration-tool&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294045657797660908-2043178566366337589?l=cppmm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppmm.blogspot.com/feeds/2043178566366337589/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://cppmm.blogspot.com/2009/03/debian.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/2043178566366337589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/2043178566366337589'/><link rel='alternate' type='text/html' href='http://cppmm.blogspot.com/2009/03/debian.html' title='Смена локали. Debian.'/><author><name>Anton "cppmm" Kropachev</name><uri>http://www.blogger.com/profile/05815356399793900372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://bp0.blogger.com/_LiQ6ICkCjiM/SHPbwTA2tbI/AAAAAAAAAQw/QWV70OspyLA/S220/003.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294045657797660908.post-8630275234746178357</id><published>2009-02-10T10:00:00.007+06:00</published><updated>2009-02-10T18:00:31.884+06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EDGE'/><category scheme='http://www.blogger.com/atom/ns#' term='modem'/><category scheme='http://www.blogger.com/atom/ns#' term='GPRS'/><category scheme='http://www.blogger.com/atom/ns#' term='интернет'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='Линукс'/><category scheme='http://www.blogger.com/atom/ns#' term='мтс'/><category scheme='http://www.blogger.com/atom/ns#' term='3G'/><category scheme='http://www.blogger.com/atom/ns#' term='mts'/><category scheme='http://www.blogger.com/atom/ns#' term='мобильный'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Debian'/><category scheme='http://www.blogger.com/atom/ns#' term='pppd'/><title type='text'>Мобильный интернет в Debian GNU/Linux.</title><content type='html'>Так уж получилось, что последнее время к "нормальному" интернету доступа нет. Поэтому приходится пользоваться мобильными технологиями(как-никак на дворе 21-ый век).&lt;br /&gt;Итак, путь первый - выход через мобильный телефон.&lt;br /&gt;У меня Sony Ericsson k320i. usb-шнурок шёл в комплекте. При подключении к компьютеру телефон спрашивает, в каком режиме ему работать: передача файлов или режим телефона. В данном случае выбираем второе. Перед подключением я запустил &lt;span style="font-weight: bold;"&gt;tail -f /var/log/messages&lt;/span&gt; и получил такие строки:&lt;br /&gt;&lt;blockquote&gt;Feb 10 10:06:51 damned kernel: usb 2-3: new full speed USB device using ohci_hcd and address 3&lt;br /&gt;Feb 10 10:06:51 damned kernel: usb 2-3: configuration #1 chosen from 1 choice&lt;br /&gt;Feb 10 10:06:52 damned kernel: cdc_acm 2-3:1.1: ttyACM0: USB ACM device&lt;br /&gt;Feb 10 10:06:52 damned kernel: cdc_acm 2-3:1.3: ttyACM1: USB ACM device&lt;br /&gt;Feb 10 10:06:52 damned kernel: usbcore: registered new driver cdc_acm&lt;br /&gt;Feb 10 10:06:52 damned kernel: drivers/usb/class/cdc-acm.c: v0.25:USB Abstract Control Model driver for USB modems and ISDN adapters&lt;/blockquote&gt;Отсюда видно, что у меня появилось два новых устройства: /dev/ttyACM0 и /dev/ttyACM1. Дальше всё просто:&lt;br /&gt;Создаём файлы настройки pppd(обязательно должен быть установлен пакет ppp).&lt;blockquote&gt;&lt;br /&gt;# cat /etc/ppp/chap-secrets&lt;br /&gt;mts     *       mts&lt;br /&gt;# cat /etc/ppp/pap-secrets&lt;br /&gt;mts     *       mts&lt;br /&gt;# cat /etc/ppp/options | grep -v "#"&lt;br /&gt;asyncmap 0&lt;br /&gt;auth&lt;br /&gt;crtscts&lt;br /&gt;lock&lt;br /&gt;hide-password&lt;br /&gt;modem&lt;br /&gt;debug&lt;br /&gt;proxyarp&lt;br /&gt;lcp-echo-interval 30&lt;br /&gt;lcp-echo-failure 4&lt;br /&gt;noipx&lt;br /&gt;# cat /etc/ppp/peers/mts | grep -v "#"&lt;br /&gt;user "mts"&lt;br /&gt;connect "/usr/sbin/chat -v -f /etc/chatscripts/mts"&lt;br /&gt;/dev/ttyACM0&lt;br /&gt;noipdefault&lt;br /&gt;usepeerdns&lt;br /&gt;defaultroute&lt;br /&gt;persist&lt;br /&gt;noauth&lt;br /&gt;# cat /etc/ppp/chat/mts&lt;br /&gt;ABORT BUSY&lt;br /&gt;ABORT 'NO CARRIER'&lt;br /&gt;""&lt;br /&gt;ATZ OK&lt;br /&gt;AT+CGDCONT=1,"IP","internet.mts.ru" OK&lt;br /&gt;ATDT*99***1#&lt;br /&gt;CONNECT ""&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Как видно, я использую mts. Основные параметры, типа номера дозвона, точки доступа, логина, пароля и т.д., можно узнать у мобильного оператора, так что с этим проблем быть не должно. Что касается того, что у меня продублированы логин с паролем и в chap, и в pap - это потому, что я так и не узнал, какой именно тип авторизации надо использовать, и для верности прописал оба. Хуже не будет. Ну и самое главное - это устройство модема, которое я узнал из messages.&lt;br /&gt;В принципе, всё.&lt;br /&gt;Подключение идёт командой &lt;span style="font-weight: bold;"&gt;pppd call mts&lt;/span&gt;. Я для удобства сделал скриптик:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;sudo /usr/sbin/pppd call mts&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;и добавил пользователя в &lt;span style="font-weight: bold;"&gt;/etc/sudoers&lt;/span&gt;, чтобы не логиниться под рутом каждый раз для выхода в инет.&lt;br /&gt;Скорость, конечно, оставляет желать лучшего, но жить можно.&lt;br /&gt;Но постоянно включать/выключать телефон со временем надоедат. Да и ко всему прочему денег много уходит, если пользоваться таким интернетом постоянно, а подключенный мной тариф "Ночной безлимитный" неудобен тем, что работать приходится только ночью. Поэтому было решено купить GPRS-модем.&lt;br /&gt;&lt;br /&gt;Путь второй. ZTE MF626 USB Modem.&lt;br /&gt;&lt;br /&gt;Тут всё чуть сложнее. Дело в том, что эта замечательная железка, сразу не определилась. В голове промелькнули мысли о пересборке ядра, но как всегда, гугл спас. Довольно быстро нашлась ссылка: &lt;a href="http://ru.gentoo-wiki.com/wiki/MF626"&gt;http://ru.gentoo-wiki.com/wiki/MF626&lt;/a&gt;.&lt;br /&gt;Беглый просмотр не обрадовал. Однако, после прочтения &lt;a href="http://www.gentoo.ru/node/12140"&gt;треда&lt;/a&gt;, из которого появилась эта статья, стало немного проще.&lt;br /&gt;Сперва, запускаю, как обычно &lt;span style="font-weight:bold;"&gt;tail -f /var/log/messages&lt;/span&gt; и подключаю  модем. Как и предсказано в статье, он определяется, как ZeroCD:&lt;br /&gt;&lt;blockquote&gt;Feb 10 09:17:40 damned kernel: usb 1-1: new high speed USB device using ehci_hcd and address 5&lt;br /&gt;Feb 10 09:17:40 damned kernel: usb 1-1: configuration #1 chosen from 1 choice&lt;br /&gt;Feb 10 09:17:40 damned kernel: scsi6 : SCSI emulation for USB Mass Storage devices&lt;br /&gt;Feb 10 09:17:45 damned kernel:   Vendor: ZTE       Model: USB SCSI CD-ROM   Rev: 2.31&lt;br /&gt;Feb 10 09:17:45 damned kernel:   Type:   CD-ROM                             ANSI SCSI revision: 00&lt;br /&gt;Feb 10 09:17:45 damned kernel: sr1: scsi3-mmc drive: 0x/52x cd/rw xa/form2 cdda tray&lt;br /&gt;Feb 10 09:17:45 damned kernel: sr 6:0:0:0: Attached scsi generic sg2 type 5&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Если тут же заглянуть в &lt;span style="font-weight:bold;"&gt;dmesg&lt;/span&gt;, видно, что в устройствах он называется /dev/sr1 (на других машинах может быть иначе). Пробую &lt;span style="font-weight:bold;"&gt;eject /dev/sr1&lt;/span&gt;.&lt;br /&gt;В messages вижу следующее:&lt;br /&gt;&lt;blockquote&gt;Feb 10 09:19:57 damned kernel: usb 1-1: USB disconnect, address 5&lt;br /&gt;Feb 10 09:20:02 damned kernel: usb 1-1: new high speed USB device using ehci_hcd and address 6&lt;br /&gt;Feb 10 09:20:02 damned kernel: usb 1-1: configuration #1 chosen from 1 choice&lt;br /&gt;Feb 10 09:20:02 damned kernel: scsi7 : SCSI emulation for USB Mass Storage devices&lt;br /&gt;Feb 10 09:20:07 damned kernel:   Vendor: ZTE       Model: MMC Storage       Rev: 2.31&lt;br /&gt;Feb 10 09:20:07 damned kernel:   Type:   Direct-Access                      ANSI SCSI revision: 02&lt;br /&gt;Feb 10 09:20:07 damned kernel: sd 7:0:0:0: Attached scsi removable disk sdb&lt;br /&gt;Feb 10 09:20:07 damned kernel: sd 7:0:0:0: Attached scsi generic sg2 type 0&lt;/blockquote&gt;&lt;br /&gt;Т.е. выходит, что всё определилось без пересборки ядра или изменений внутренних настроек модема, предложенных в статье. В очередной раз говорю про себя "спасибо" разработчикам debian(а меня только недавно на gentoo сманивали).&lt;br /&gt;Смотрим, как именно определилось с помощью &lt;span style="font-weight:bold;"&gt;cat /proc/bus/usb/devices&lt;/span&gt;&lt;blockquote&gt;&lt;br /&gt;T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  6 Spd=480 MxCh= 0&lt;br /&gt;D:  Ver= 2.00 Cls=00(&gt;ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1&lt;br /&gt;P:  Vendor=19d2 ProdID=0031 Rev= 0.00&lt;br /&gt;S:  Manufacturer=ZTE, Incorporated&lt;br /&gt;S:  Product=ZTE CDMA Technologies MSM&lt;br /&gt;S:  SerialNumber=1234567890ABCDEF&lt;br /&gt;C:* #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=500mA&lt;br /&gt;I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=none&lt;br /&gt;E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms&lt;br /&gt;E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms&lt;br /&gt;I:  If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=none&lt;br /&gt;E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms&lt;br /&gt;E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms&lt;br /&gt;I:  If#= 2 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage&lt;br /&gt;E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms&lt;br /&gt;E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms&lt;br /&gt;I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=none&lt;br /&gt;E:  Ad=84(I) Atr=03(Int.) MxPS=  64 Ivl=2ms&lt;br /&gt;E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms&lt;br /&gt;E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms&lt;/blockquote&gt;&lt;br /&gt;Устройство мы видим, но драйвер ещё не подгружен.&lt;br /&gt;Подгружаю: &lt;span style="font-weight:bold;"&gt;modprobe usbserial vendor=0x19d2 product=0x031&lt;/span&gt;&lt;br /&gt;Параметры vendor и product указаны в выводе предыдущей команды. В принципе, для данного модема они есть и в статье с гентушной вики.&lt;br /&gt;В messages видно, что устройства создались:&lt;br /&gt;&lt;blockquote&gt;Feb 10 09:43:00 damned kernel: usbcore: registered new driver usbserial&lt;br /&gt;Feb 10 09:43:00 damned kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for generic&lt;br /&gt;Feb 10 09:43:00 damned kernel: usbserial_generic 1-1:1.0: generic converter detected&lt;br /&gt;Feb 10 09:43:00 damned kernel: usb 1-1: generic converter now attached to ttyUSB0&lt;br /&gt;Feb 10 09:43:00 damned kernel: usbserial_generic 1-1:1.1: generic converter detected&lt;br /&gt;Feb 10 09:43:00 damned kernel: usb 1-1: generic converter now attached to ttyUSB1&lt;br /&gt;Feb 10 09:43:00 damned kernel: usbserial_generic 1-1:1.3: generic converter detected&lt;br /&gt;Feb 10 09:43:00 damned kernel: usb 1-1: generic converter now attached to ttyUSB2&lt;br /&gt;Feb 10 09:43:00 damned kernel: usbcore: registered new driver usbserial_generic&lt;br /&gt;Feb 10 09:43:00 damned kernel: drivers/usb/serial/usb-serial.c: USB Serial Driver core&lt;/blockquote&gt;&lt;br /&gt;Отлично. В статье(и особенно в исходном треде) много говорилось про сложности работы с этими устройствами, однако для меня оказалось важным только одно: для основной работы используется именно третий интерйес, т.е. /dev/ttyUSB2.&lt;br /&gt;Поэтому в настройках pppd создаю такой файл:&lt;br /&gt;&lt;blockquote&gt;# cat /etc/ppp/peers/mts_modem | grep -v "#"&lt;br /&gt;user "mts"&lt;br /&gt;connect "/usr/sbin/chat -v -f /etc/chatscripts/mts"&lt;br /&gt;/dev/ttyUSB2&lt;br /&gt;noipdefault&lt;br /&gt;usepeerdns&lt;br /&gt;defaultroute&lt;br /&gt;persist&lt;br /&gt;noauth&lt;/blockquote&gt;&lt;br /&gt;Все остальные настройки совершенно такие же, как и при подключении через телефон.&lt;br /&gt;Всё. Готово. Теперь, скомандовав &lt;span style="font-weight:bold;"&gt;pppd call mts_modem&lt;/span&gt;, я оказываюсь в интернете. Никаких проблем с разрывами соединения, описанных в статье, у меня не было. Поэтому и окончательное доведение до ума вышло проще. Достаточно ограничиться созданием правил в udev(обращаю внимание, что правила немного отличаются от приведённых в статье):&lt;br /&gt;&lt;blockquote&gt;# cat /etc/udev/rules.d/z80_usb_modem.rules&lt;br /&gt;&lt;br /&gt;SUBSYSTEMS=="usb", ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="2000", RUN+="/usr/bin/eject /dev/sr1"&lt;br /&gt;SUBSYSTEMS=="usb", ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0031", RUN+="/sbin/modprobe usbserial vendor=0x19d2 product=0x031"&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;И изменении в скрипте для запуска инета mts на mts_modem.&lt;br /&gt;Система: Debian GNU/Linux Etch 4.0r6&lt;br /&gt;# uname -a&lt;br /&gt;Linux damned 2.6.18-6-k7 #1 SMP Fri Dec 12 17:19:09 UTC 2008 i686 GNU/Linux&lt;br /&gt;&lt;br /&gt;Дополнение.&lt;br /&gt;Так как модем остаётся подключённым к системе постоянно, нет надобности стартовать соединение вручную, поэтому я решил написать небольшой скрипт:&lt;br /&gt;&lt;blockquote&gt; # cat /etc/init.d/gprs_inet.sh&lt;br /&gt;#! /bin/sh&lt;br /&gt;&lt;br /&gt;PATH=/sbin:/bin&lt;br /&gt;&lt;br /&gt;start () {&lt;br /&gt;  echo "Starting GPRS Internet Connection..."&lt;br /&gt;  /usr/bin/eject /dev/sr1 2&gt;/dev/null&lt;br /&gt;# Задержка нужна, потому как между отключением ZeroCD и стартом &lt;br /&gt;# собственно модема, проходит время.&lt;br /&gt;  /bin/sleep 10&lt;br /&gt;  /usr/sbin/pppd call mts_modem&lt;br /&gt;  echo "GPRS Connection Established."&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;stop () {&lt;br /&gt;  echo "Stoping GPRS Connection..."&lt;br /&gt;  /usr/bin/killall pppd 2&gt;/dev/null&lt;br /&gt;  echo "GPRS Connection is stopped."&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;case "$1" in&lt;br /&gt;        start)&lt;br /&gt;                start&lt;br /&gt;        ;;&lt;br /&gt;        restart)&lt;br /&gt;                stop&lt;br /&gt;                start&lt;br /&gt;        ;;&lt;br /&gt;        stop)&lt;br /&gt;                stop&lt;br /&gt;        ;;&lt;br /&gt;  *)&lt;br /&gt;        echo "Usage: gprs_inet.sh [start|restart|stop]" &gt;&amp;2&lt;br /&gt;        exit 0&lt;br /&gt;        ;;&lt;br /&gt;esac&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Этот скрипт сохраняется в /etc/init.d/ и добавляется в загрузку/останов с помощью команды &lt;span style="font-weight:bold;"&gt;update-rc.d gprs_inet.sh defaults&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294045657797660908-8630275234746178357?l=cppmm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppmm.blogspot.com/feeds/8630275234746178357/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://cppmm.blogspot.com/2009/02/debian-gnulinux.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/8630275234746178357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/8630275234746178357'/><link rel='alternate' type='text/html' href='http://cppmm.blogspot.com/2009/02/debian-gnulinux.html' title='Мобильный интернет в Debian GNU/Linux.'/><author><name>Anton "cppmm" Kropachev</name><uri>http://www.blogger.com/profile/05815356399793900372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://bp0.blogger.com/_LiQ6ICkCjiM/SHPbwTA2tbI/AAAAAAAAAQw/QWV70OspyLA/S220/003.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294045657797660908.post-4618276448920329440</id><published>2009-01-20T02:41:00.003+06:00</published><updated>2009-01-20T03:00:37.401+06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='text'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='Sony Ericsson'/><category scheme='http://www.blogger.com/atom/ns#' term='shell script'/><category scheme='http://www.blogger.com/atom/ns#' term='book'/><title type='text'>Книги на телефоне.</title><content type='html'>Являюсь счастливым обладателем телефона Sony Ericsson k320i.&lt;br /&gt;Отличная модель, к слову. Устраивает во всём.&lt;br /&gt;Так как практически вся библиотека хранится в цифре, а читать хочется не только за компом, решил обзавестись читалкой на телефоне.&lt;br /&gt;Ставить какие-нибудь java-книги и т.д. очень не хотелось. К тому же почти сразу появилась идея читать с помощью встроенного броузера. Но сразу же столкнулся с проблемой оперативной памяти. Броузер на телефоне не мог открывать большие файлы. Надо их как-то резать. Сперва ещё планировал каждый из маленьких текстовых файлов форматировать в html, однако оказалось, что встроенный броузер понимает txt(правда только в кодировке utf-8). В итоге решилось всё простым скриптом:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;% cat textrebuild.sh&lt;br /&gt;#!/bin/bash&lt;br /&gt;#&lt;br /&gt;# Разбиваем исходный файл на куски по 20000 байт.&lt;br /&gt;split -b 20000 -d $1;&lt;br /&gt;# Удаляем исходный файл&lt;br /&gt;rm -f $1;&lt;br /&gt;# Все кусочки переименовываем в файлы &lt;br /&gt;# вида x&lt;порядковый номер&gt;.txt&lt;br /&gt;# и перекодируем в utf-8, удаляя исходные.&lt;br /&gt;FLIST=`ls ./ | grep -v textrebuild.sh`&lt;br /&gt;a=0&lt;br /&gt;for i in $FLIST&lt;br /&gt;do&lt;br /&gt;       a=`echo "${a} + 1" | bc`;&lt;br /&gt;       cat $i | iconv -f koi8-r -t utf-8 &gt; x${a}.txt;&lt;br /&gt;       rm -f $i&lt;br /&gt;done&lt;/blockquote&gt;&lt;br /&gt;Вот и всё. Работает всё просто. Натравливаем скрипт на обычный текстовый файл с книгой и получаем на выходе кучу маленьких текстовых файлов в юникоде. Всё это потом скидывается на телефон через usb и читается по порядку в соответствии с порядковым номером.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294045657797660908-4618276448920329440?l=cppmm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppmm.blogspot.com/feeds/4618276448920329440/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://cppmm.blogspot.com/2009/01/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/4618276448920329440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/4618276448920329440'/><link rel='alternate' type='text/html' href='http://cppmm.blogspot.com/2009/01/blog-post.html' title='Книги на телефоне.'/><author><name>Anton "cppmm" Kropachev</name><uri>http://www.blogger.com/profile/05815356399793900372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://bp0.blogger.com/_LiQ6ICkCjiM/SHPbwTA2tbI/AAAAAAAAAQw/QWV70OspyLA/S220/003.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294045657797660908.post-3968815355258690793</id><published>2008-11-23T13:42:00.004+06:00</published><updated>2008-11-24T17:56:08.305+06:00</updated><title type='text'>Создание LiveCD с помощью LiveCD. Часть вторая.</title><content type='html'>Итак, попытка №2.&lt;br /&gt;&lt;br /&gt;В этот раз я, как и планировал, файл для создания моей фс сделал больше. Почти 9 гигов. Разбить его отдельно на два раздела не вышло. Оказывается, так нельзя, поэтому снова swap подключался отдельным файлом. Единственное различие, что его я тоже увеличил. Сделал гиг(как оказалось потом, не зря).&lt;br /&gt;Копирование базовой системы прошло удачно.&lt;br /&gt;Далее в инструкции предлагается не совсем понятная конструкция&lt;br /&gt;&lt;blockquote&gt;cd /cdrom; find . -size -10000k -type f -exec cp -p --parents '{}' /mnt/hda1/knx/master/ \;&lt;/blockquote&gt;&lt;br /&gt;Разумно рассудив, что непонятные скрипты(особенно, если вспомнить пресловутутю строчку на perl, убивающую систему) это не Ъ, я скопировал содержимое исходного CD руками:&lt;br /&gt;&lt;blockquote&gt;# cd /cdrom ; cp -Rp ./* /mnt/mylivecd/knoppix/master/ &lt;/blockquote&gt;&lt;br /&gt;Теперь начинаем формировать свой дистрибутив. Переходим в окружение нашей будущей системы:&lt;br /&gt;&lt;blockquote&gt;# chroot /mnt/mylivecd/knoppix/source/KNOPPIX&lt;/blockquote&gt;&lt;br /&gt;Для нормальной работы монтируем proc:&lt;br /&gt;&lt;blockquote&gt;# mount -t proc /proc proc&lt;/blockquote&gt;&lt;br /&gt;У меня ругнулось, что не может в mtab прописаться, но примонтировалось, поэтому особо не разбирался. После этого инструкция предлагает настроить сеть. Честно говоря, не знаю, почему так поздно, потому как я её включил ещё с самого начала. Поэтому сразу же перехожу непосредственно к настройке системы.&lt;br /&gt;С помощью команд &lt;span style="font-weight:bold;"&gt;apt-get update&lt;/span&gt;, &lt;span style="font-weight:bold;"&gt;apt-cache search&lt;/span&gt;, &lt;span style="font-weight:bold;"&gt;dpkg -l&lt;/span&gt;, &lt;span style="font-weight:bold;"&gt;apt-get remove&lt;/span&gt; и &lt;span style="font-weight:bold;"&gt;apt-get install&lt;/span&gt; собираем нужный набор пакетов(подробности о командах в соответствующих манах). Я первым делом посмотрел в /etc/apt/sources.list и отключил непонятные источники со странными названиями и unstable ветку Debian, оставив только testing, security-апдейты и non-free-репозитарии. Остальное всё исключительно на вкус и цвет собирающего. Я удалил всё, что связано с kde, почти всё из гнома(gconf, к примеру пришлось оставить, потому как его в зависимостях требует xchat), доустановил несколько нужных мне программ. Особо стоит отметить обновление. В инструкции советуют не использовать apt-get upgrade, предупреждая, что после этого система может не загрузиться. Так как было уже далеко заполночь, а посмотреть на свой LiveCD хотелось сегодня, я не стал экспериментировать. Из-за этого обновлять некоторые пакеты(тот же iceweasel) приходилось, используя опцию apt-get --reinstall.&lt;br /&gt;Когда с выбором пакетов закончено, убираем лишнее, командуя:&lt;br /&gt;&lt;blockquote&gt;# deborphan | xargs apt-get -y remove&lt;/blockquote&gt;&lt;br /&gt;и чистим остальное:&lt;br /&gt;&lt;blockquote&gt;# COLUMNS=200 dpkg -l |grep ^rc |awk '{print $2} ' | xargs dpkg -P&lt;br /&gt;# apt-get clean &lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Всё. Здесь закончили. Отмонтируем proc(может ругнуться на то, что устройство занято; лечится нажатем Tab после umount /proc - тогда система покажет, что там лишнее примонтировано и сначала убиваем его, а потом и сам proc).&lt;br /&gt;Выходим из окружения:&lt;br /&gt;&lt;blockquote&gt;# exit&lt;/blockquote&gt;&lt;br /&gt;Теперь небольшая доработка напильником. Я хотел, чтобы система как имнимум по умолчанию подхватывала мой xorg.conf и настройки сети.&lt;br /&gt;Как я уже описывал, флешка у меня отформатирована в ext2 и на ней находится раздел /home.&lt;br /&gt;Я попытался научить систему монтировать её при старте. Вот тут я допустил небольшую ошибку. Толком не разобравшись в скриптах, я дописал несколько строчек в /mnt/mylivecd/knoppix/source/KNOPIIX/etc/init.d/knoppix-autoconfig&lt;br /&gt;Как выяснилось потом, неправильно. :)&lt;br /&gt;Кроме этого я в /mnt/mylivecd/knoppix/source/KNOPPIX/etc/init.d/ создаю скрипт cppmm-config.sh, с простым содержанием:&lt;br /&gt;&lt;blockquote&gt;#!/bin/bash&lt;br /&gt;/home/knoppix/cppmm-start.sh&lt;/blockquote&gt;&lt;br /&gt;В /home/knoppix/cppmm-start.sh тоже всё просто:&lt;br /&gt;&lt;blockquote&gt;#!/bin/bash&lt;br /&gt;echo "Hello, World!"&lt;/blockquote&gt;&lt;br /&gt;На скрипт в init.d делаю символическую ссылку /etc/rcS.d/S45cppmm-config&lt;br /&gt;По задумке, этот скриптик будет вызван после монтирования дисков и перед стартом иксов.&lt;br /&gt;Решение пришло уже только потом, о чём ниже я и напишу.&lt;br /&gt;Мы на финишной прямой. Создаём сжатую файловую систему KNOPPIX:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;# mkisofs -R -U -V "MyLiveCD" -publisher "cppmm" -hide-rr-moved -cache-inodes -no-bak -pad /mnt/mylivecd/knoppix/source/KNOPPIX | nice -5 /usr/bin/create_compressed_fs - 65536 &gt; /mnt/mylivecd/knoppix/master/KNOPPIX/KNOPPIX&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Вот здесь и припомнился гиг свопа. Запущенный на второй консоли top, показывал постоянную загрузку проца не меньше 80-ти процентов, а использование свопа за несколько минут с пары десятков килобайт выросло до почти 700-та метров. По времени всё это заняло около полутора часов на моей машине.&lt;br /&gt;Обновляем её md5-хеш:&lt;br /&gt;&lt;blockquote&gt;rm -f /mnt/mylivecd/knoppix/master/KNOPPIX/md5sums; find -type f -not -name md5sums -not -name boot.cat -not -name isolinux.bin -exec md5sum '{}' \; &gt;&gt; /mnt/mylivecd/knoppix/master/KNOPPIX/md5sums&lt;/blockquote&gt;&lt;br /&gt;И непосредственно создаём образ диска, ради которого всё и затевалось:&lt;br /&gt;&lt;blockquote&gt;mkisofs -pad -l -r -J -v -V "KNOPPIX" -no-emul-boot -boot-load-size 4 -boot-info-table -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat -hide-rr-moved -o /mnt/mylivecd/knoppix/mylivecd.iso /mnt/mylivecd/knoppix/master&lt;/blockquote&gt;&lt;br /&gt;Вот и готов. Там же из-под LiveCD запускаю новоиспечённый образ с помощью, поставляемого с knoppix'ом qemu&lt;br /&gt;&lt;blockquote&gt;# qemu -no-kqemu -boot d -cdrom /mnt/mylivecd/knoppix/mylivecd.iso&lt;/blockquote&gt;&lt;br /&gt;Ура! Стартует.&lt;br /&gt;Не в силах больше ждать, записываю болванку, перегружаюсь и пытаюсь загрузиться уже на реальном компе. И тут сраз уже вижу, где просчитался. Всё грузится, как обычно, но вместо ожидаемого Hello, World! получаю ошибку о том, что в /home/knoppix никакого скрипта не найдено...&lt;br /&gt;Поковырявшись и прогнав скрипты knoppix'а через bash -x понимаю, что править один из них и руками вписывать монтирование флешки - было опрометчиво. Но тут же меня осенило, что смонтировать можно с помощью тех же уровней загрузки(rc0, rc1 и т.д.).&lt;br /&gt;Однако времени уже было 9 утра, потому перебирать заново образ почему-то стало лень. :)&lt;br /&gt;Единственное, что сделал, это руками примонтировал флешку и посмотрел, как ведёт себя новоиспечённый LiveCD. Отлично! Кодеки на mp3/avi/и подобное подхватились. Софт, который я себе навыбирал работает отлично. Осталось только допилить внешний вид fluxbox, вписать в настройках пользователя нормальные шрифты и написать вменяемый скрипт для автостарта сети и подбрасывания конфига иксов. А так как этот скрипт находится на флешке, для изменений даже на уровне системы, мне уже не придётся каждый раз пересобирать весь образ LiveCD.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294045657797660908-3968815355258690793?l=cppmm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppmm.blogspot.com/feeds/3968815355258690793/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://cppmm.blogspot.com/2008/11/livecd-livecd_23.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/3968815355258690793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/3968815355258690793'/><link rel='alternate' type='text/html' href='http://cppmm.blogspot.com/2008/11/livecd-livecd_23.html' title='Создание LiveCD с помощью LiveCD. Часть вторая.'/><author><name>Anton "cppmm" Kropachev</name><uri>http://www.blogger.com/profile/05815356399793900372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://bp0.blogger.com/_LiQ6ICkCjiM/SHPbwTA2tbI/AAAAAAAAAQw/QWV70OspyLA/S220/003.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294045657797660908.post-5414446782192534765</id><published>2008-11-22T06:01:00.008+06:00</published><updated>2008-11-23T13:51:43.833+06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='low memory'/><category scheme='http://www.blogger.com/atom/ns#' term='Knoppix'/><category scheme='http://www.blogger.com/atom/ns#' term='goodby microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='LiveCD'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='system'/><title type='text'>Создание LiveCD с помощью LiveCD.</title><content type='html'>На данный момент у меня такая ситуация, что родной компьютер с родным Debian'ом находится далеко. А железка, за которой приходится работать с виндой, что меня совсем не радует. А снести винду нельзя. Но выход, вроде бы как найден. LiveCD. Однако не всё так просто. Под рукой оказался только LiveCD knoppix 5.1.1. Свою флешку на 512Mb я отформатировал под ext2, и перенёс туда все настройки из /home, сохранив туда так же нужный мне xorg.conf и параметры сети(/etc/network/interfaces). Но всё-таки неудобно. Во-первых, постоянно грузиться в консольный режим, руками копировать настройки сети и иксов в соответствующие диры, а потом стартовать это всё после каждой загрузки со временем надоедает. Во-вторых, не радует отсутствие кодеков для прослушивания музыки и просмотра фильмов(knoppix, как и большинство других дистров борется за чистоту лицензии, а потому в стандартной поставке этих вещей нет). В-третьих, набор программ. Нет моего psi, для jabber'а; iceweasel почему-то только из второй ветки; не установлен flash-plugin и т.д. и т.п.&lt;br /&gt;Так как мы, линуксоиды - народ суровый, было принято решение собрать свой собственный LiveCD, который бы по-умолчанию при старте монтировал бы флешку, стягивал настройки иксов и сети, сразу же запускал бы эти иксы с моей конфигурацией и обладал бы нужным мне надором софта...&lt;br /&gt;Полчаса общения с гуглом и попадается такая вот ссылка: &lt;a href="http://www.knoppix.net/wiki/Knoppix_Remastering_Howto_Russian"&gt;http://www.knoppix.net/wiki/Knoppix_Remastering_Howto_Russian&lt;/a&gt;&lt;br /&gt;Итак, попытка №1.&lt;br /&gt;Переписывать всю доку не буду, стану останавливаться лишь на ключевых местах.&lt;br /&gt;Нужен раздел. Причём раздел, отформатированный в файловую систему linux и размером не меньше 3-ёх гигов, как указано в мане. Не долго думая, монтирую виндовый диск(ntfs, благо пятый knoppix спокойно читает и пишет на эту недофс):&lt;br /&gt;&lt;blockquote&gt;# mkdir /mnt/win&lt;br /&gt;# mount -t ntfs /dev/hda1 /mnt/win -o iocharset=koi8-r,uid=1000,gid=1000,rw&lt;/blockquote&gt;&lt;br /&gt;iocharset даёт мне возможность не путаться с русскими названиеми файлов, uid и gid назначают владельца для вновь примонтированного раздела, rw разрешает чтение/запись&lt;br /&gt; Создаю забитый нулями файл размером 3 гига:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;# touch /mnt/win/myfilesystem&lt;br /&gt;# dd if=/dev/zero of=/mnt/win/myfilesystem bs=1M count=3072&lt;/blockquote&gt;&lt;br /&gt;Как известно, для линухи - всё файл. В том числе и блочные устройства(винт, cdrom и т.д.). Раз так, значит и наоборот, потому работаю с этим файлом, как с обычным винтом. Для начала разбиваю на разделы:&lt;br /&gt;&lt;blockquote&gt;# fdisk /mnt/win/myfilesystem&lt;/blockquote&gt;&lt;br /&gt;Сперва надо будет перейти в расширенный режим меню и создать цилиндры. После этого записать результат. Потом заново открываем фал fdisk'ом и, собственно, создаём раздел. Я не стал особо заморачиваться и на весь файл сделал один primary раздел. О том, как это делает подробно написано в man fdisk.&lt;br /&gt;Наш "диск готов". Форматируем его(я выбрал обычную ext2, потому как этот раздел нужен только на время создания LiveCD, а потом не вижу смысла тратить место на жруналирование и другие навороты).&lt;br /&gt;&lt;blockquote&gt;# mke2fs /mnt/win/myfilesystem&lt;/blockquote&gt;&lt;br /&gt;Теперь можно его примонтировать, и создать рабочую директорию.&lt;blockquote&gt;&lt;br /&gt;# mkdir /mnt/mylivecd&lt;br /&gt;# mount -t ext2 -o loop /mnt/win/myfilesystem /mnt/mylivecd&lt;br /&gt;# mkdir /mnt/mylivecd/knoppix&lt;/blockquote&gt;&lt;br /&gt;Так как в доке было сказано, что потребуется не менее гига оперативы в сумме(собственно ОЗУ + своп), создаю файл подкачки(на моём компе всего 512 метров памяти, поэтому, чтобы было с запасом сделал 750-ти метровый swap):&lt;br /&gt;&lt;blockquote&gt;# dd if=/dev/zero of=/mnt/mylivecd/knoppix/swapfile bs=1M count=750&lt;br /&gt;# mkswap swapfile &lt;br /&gt;# swapon swapfile&lt;/blockquote&gt;&lt;br /&gt;Далее действую по инструкции. Создаю рабочие директории:&lt;blockquote&gt;&lt;br /&gt;# mkdir -p /mnt/mylivecd/knoppix/master/KNOPPIX&lt;br /&gt;# mkdir -p /mnt/mylivecd/knoppix/source/KNOPPIX&lt;/blockquote&gt;&lt;br /&gt;Копирую туда исходную систему:&lt;br /&gt;&lt;blockquote&gt;# cp -Rp /KNOPPIX/* /mnt/mylivecd/knoppix/source/KNOPPIX&lt;/blockquote&gt;&lt;br /&gt;Вот тут-то и наступаем на первые грабли. Получаем ошибку о том, что недостаточно места на диске. После проверки выясняется, что как всегда виноват оказался я сам. Инструкцию надо было &lt;span style="font-weight:bold;"&gt;сначала&lt;/span&gt; прочитать до конца, а потом браться за дело. Оказалось, дока несколько устаревшая и описывает процесс создания своего диска на основе knoppix 3.4. Видимо, с тех времён дистр несколько разросся. Проще говоря, 3-ёх гигов мало. Примерный подсчёт показал, что надо бы не менее 4,5. А так как на виндовом разделе у меня было свободно всего 4,4, пришлось всё отложить до лучших времён(до завтра ;)).&lt;br /&gt;&lt;br /&gt;Итак, небольшой вывод. Больше всего я боялся за то, что возникнут проблемы с таким нагромождением примонтированныходна из другой фс. Оказалось, это не так страшно и жить можно. Единственное, что я решил на следующий раз, это файл "псевдодиска" разбить на два раздела с самого начала, один под рабочий, второй под swap.&lt;br /&gt;Кроме этого с моим количеством памяти приходится экономить. С самого начала я выбрал загрузку knoppix'а в fluxbox(по умолчанию kde). В процессе работы не желательно iceweasel(утечки в памяти для этого замечательного броузера, к сожалению, уже давно стали притчей во языцех).&lt;br /&gt;Кроме этого я настоятельно рекомендую забыть про всеми любимую konsole и по старинке работать в rxvt. Надёжнее.&lt;br /&gt;&lt;br /&gt;В общем, надеюсь, завтра всё выйдет более удачно.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294045657797660908-5414446782192534765?l=cppmm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppmm.blogspot.com/feeds/5414446782192534765/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://cppmm.blogspot.com/2008/11/livecd-livecd.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/5414446782192534765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/5414446782192534765'/><link rel='alternate' type='text/html' href='http://cppmm.blogspot.com/2008/11/livecd-livecd.html' title='Создание LiveCD с помощью LiveCD.'/><author><name>Anton "cppmm" Kropachev</name><uri>http://www.blogger.com/profile/05815356399793900372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://bp0.blogger.com/_LiQ6ICkCjiM/SHPbwTA2tbI/AAAAAAAAAQw/QWV70OspyLA/S220/003.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294045657797660908.post-2000980151931780181</id><published>2008-08-11T21:45:00.008+07:00</published><updated>2009-09-16T13:57:37.922+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux bash shell script pmacct traffic траффик'/><title type='text'>Подсчёт траффика в Linux с помощью pmacctd.</title><content type='html'>&lt;h3&gt; Система подсчёта траффика &lt;/h3&gt; &lt;p&gt;Учётная система работает на основе утилиты pmacctd. Утилита записывает весь, проходящий через интерфес траффик и скидывает это всё в лог-файл. После этого скрипты сортируют получившийся дамп по адресам клиентов, разделяет по дням недели и месяцам, а так же создаёт бекап дампа. Адреса клиентов система берёт из основного конфига прокси-сервера. &lt;/p&gt; &lt;a name=".D0.A1.D0.BA.D1.80.D0.B8.D0.BF.D1.82_.D0.B7.D0.B0.D0.BF.D1.83.D1.81.D0.BA.D0.B0.2C_.D0.BE.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.B0_.D0.B8_.D1.81.D1.87.D0.B8.D1.82.D1.8B.D0.B2.D0.B0.D0.BD.D0.B8.D1.8F_.D0.B0.D0.B4.D1.80.D0.B5.D1.81.D0.BE.D0.B2_.D0.BA.D0.BB.D0.B8.D0.B5.D0.BD.D1.82.D0.BE.D0.B2_.D1.83.D1.87.D1.91.D1.82.D0.BA.D0.B8"&gt;&lt;/a&gt;&lt;h4&gt; Скрипт запуска, останова и считывания адресов клиентов учётки &lt;/h4&gt; &lt;p&gt;Находится в /etc/ini.d/ Отрабатывает с параметром start при старте системы и параметром stop, при останове. После добавления нового пользователя, надо делать /etc/ini.d/pmacct restart &lt;/p&gt; &lt;pre&gt;&lt;/pre&gt;&lt;blockquote&gt;&lt;pre&gt;#!/bin/sh&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;## Глобальные переменные&lt;br /&gt;### Пути к утилитам, по которым скрипт может обращаться. Не обязательная переменная, но для подстраховки не помешает.&lt;br /&gt;PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin&lt;br /&gt;### Расположение собственно исполняемого файла утилиты pmacctd&lt;br /&gt;DAEMON=/usr/sbin/pmacctd&lt;br /&gt;### Имя работающего демона&lt;br /&gt;NAME=pmacctd&lt;br /&gt;### Описание.&lt;br /&gt;DESC="traffic accounting system"&lt;br /&gt;### Директория для хранения настроек учётной системы.&lt;br /&gt;CONFDIR=/etc/pmacct&lt;br /&gt;### Директория для хранения логов.&lt;br /&gt;LOGDIR=/var/log/pmacctd&lt;br /&gt;### Инклудим конфиг.&lt;br /&gt;. $CONFDIR/pmacctd.conf&lt;br /&gt;&lt;br /&gt;### Проверяем наличие исполняемого файла демона. Если отсутствует, завершаем работу.&lt;br /&gt;test -x $DAEMON || exit 0&lt;br /&gt;&lt;br /&gt;### Функция останова.&lt;br /&gt;stop () {&lt;br /&gt; killall -INT $NAME&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;### Функция старта.&lt;br /&gt;start () {&lt;br /&gt;#### Вытягиваем из конфига прокси-сервера имена и ip-адреса пользователей и сохраняем из в файл stat.conf в директории конфигов.&lt;br /&gt;     grep 255.255.255.255 /etc/squid/squid.conf | grep -v 127.0.0.1 | grep -v '#' | awk '{print $2, $4}' | cut -f 1 -d / &gt; $CONFDIR/stat.conf&lt;br /&gt;#### Собственно запускаем демона в фоновом режиме и складываем всю статистику по траффику в файл pmacctd.log в лог-директории.&lt;br /&gt;     $DAEMON -c $PRIMITIVE -i $INTERFACE -r $INTERVAL -P print &gt;&gt; $LOGDIR/pmacctd.log &amp;amp;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;### Меню выбора используемой функции из первого аргумента после скрипта.&lt;br /&gt;case "$1" in&lt;br /&gt;start)&lt;br /&gt;     echo -n "Starting $DESC: "&lt;br /&gt;     start&lt;br /&gt;     echo "$NAME."&lt;br /&gt;     ;;&lt;br /&gt;stop)&lt;br /&gt;     echo -n "Stopping $DESC: "&lt;br /&gt;     stop&lt;br /&gt;     echo "$NAME."&lt;br /&gt;     ;;&lt;br /&gt;restart)&lt;br /&gt;     echo -n "Restarting $DESC: "&lt;br /&gt;     stop&lt;br /&gt;     sleep 1&lt;br /&gt;     start&lt;br /&gt;     echo "$NAME."&lt;br /&gt;     ;;&lt;br /&gt;*)&lt;br /&gt;     N=/etc/init.d/$NAME&lt;br /&gt;     echo "Usage: $N {start|stop|restart}" &gt;&amp;amp;2&lt;br /&gt;     exit 1&lt;br /&gt;     ;;&lt;br /&gt;esac&lt;br /&gt;&lt;br /&gt;exit 0&lt;br /&gt;&lt;/pre&gt; &lt;div class="editsection" style="float: right; margin-left: 5px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a name=".D0.A1.D0.BA.D1.80.D0.B8.D0.BF.D1.82_.D1.81.D0.BA.D0.B8.D0.B4.D1.8B.D0.B2.D0.B0.D0.BD.D0.B8.D1.8F_.D0.B5.D0.B6.D0.B5.D0.B4.D0.BD.D0.B5.D0.B2.D0.BD.D0.BE.D0.B9_.D1.81.D1.82.D0.B0.D1.82.D0.B8.D1.81.D1.82.D0.B8.D0.BA.D0.B8"&gt;&lt;/a&gt;&lt;h4&gt;&lt;/h4&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Конфиг.&lt;/h4&gt; &lt;p&gt;&lt;br /&gt;Значения берутся из man pmacctd.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;blockquote&gt;PRIMITIVE=src_host,dst_host&lt;br /&gt;INTERFACE=eth0&lt;br /&gt;INTERVAL=1&lt;/blockquote&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt; Скрипт скидывания ежедневной статистики &lt;/h4&gt; &lt;p&gt;Запуск скрипта прописан в файле /etc/crontab: &lt;/p&gt; &lt;pre&gt;&lt;blockquote&gt;01 4    * * *   root    /usr/sbin/pmacctdaily&lt;/blockquote&gt;&lt;br /&gt;&lt;/pre&gt; &lt;p&gt;Он отрабатывает автоматически каждый день в 04:01:00 по времени сервера. &lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;blockquote&gt;#!/bin/bash&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;## Конфигурационная директория&lt;br /&gt;CONFDIR=/etc/pmacct&lt;br /&gt;## Лог-директория&lt;br /&gt;LOGDIR=/var/log/pmacctd&lt;br /&gt;## Текущая дата в формате ддммгггг&lt;br /&gt;DATE=`date +%d%m%Y`&lt;br /&gt;&lt;br /&gt;## Вычисление пользовательских ip-адреса.&lt;br /&gt;USERSIP=`cat $CONFDIR/stat.conf | awk '{print $2}'`&lt;br /&gt;&lt;br /&gt;## Останов учётной системы для того, чтобы она не обращалась к логам во время работы с ними данного скрипта.&lt;br /&gt;/etc/init.d/pmacct stop &gt;/dev/null&lt;br /&gt;## Создание директории для траффика за сутки до текущей даты&lt;br /&gt;mkdir $LOGDIR/$DATE 2&gt;/dev/null&lt;br /&gt;&lt;br /&gt;## Пока в памяти лежат пользовательские ip-адреса, обработать каждый из них по-очереди.&lt;br /&gt;for i in $USERSIP&lt;br /&gt;     do&lt;br /&gt;#### Вычисляем количество бит в каждой следующей записи из лога, в которой упоминается текущий ip-адрес&lt;br /&gt;             BYTES=`grep -w $i $LOGDIR/pmacctd.log | awk '{print $16}'`&lt;br /&gt;             ALLBYTES=0&lt;br /&gt;##### Прибавляем каждое новое вычисленное количество битов к переменной ALLBYTES&lt;br /&gt;             for b in $BYTES&lt;br /&gt;                     do&lt;br /&gt;                             ALLBYTES=$((ALLBYTES+b))&lt;br /&gt;                     done&lt;br /&gt;##### Вычисляем имя пользователя с текущим ip-адресом&lt;br /&gt;             USERNAME=`grep -w $i $CONFDIR/stat.conf | awk '{print $1}'`&lt;br /&gt;#### Скидываем в файл с именем текущего пользователя значение переменной ALLBYTES&lt;br /&gt;             echo $ALLBYTES &gt; $LOGDIR/$DATE/$USERNAME&lt;br /&gt;     done&lt;br /&gt;&lt;br /&gt;##### Архивируем общий лог и сохраняем его в директорию с файлами статистики пользователей за сутки.&lt;br /&gt;gzip $LOGDIR/pmacctd.log&lt;br /&gt;mv $LOGDIR/pmacctd.log.gz $LOGDIR/$DATE/&lt;br /&gt;Запускаем учётную систему.&lt;br /&gt;/etc/init.d/pmacct start &gt;/dev/null&lt;/blockquote&gt;&lt;br /&gt;&lt;/pre&gt; &lt;p&gt;В общей сложности при нынешней нагрузке скрипт отрабоатывает примерно за 10-15 секунд. Чем больше будет пользователей и траффика, тем больше понадобится времени, но для того, чтобы дойти хотя бы до минуты выполнения, надо увеличить объёмы в несколько раз. &lt;/p&gt; &lt;div class="editsection" style="float: right; margin-left: 5px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a name=".D0.A1.D0.BA.D1.80.D0.B8.D0.BF.D1.82_.D1.81.D0.BA.D0.B8.D0.B4.D1.8B.D0.B2.D0.B0.D0.BD.D0.B8.D1.8F_.D0.B5.D0.B6.D0.B5.D0.BC.D0.B5.D1.81.D1.8F.D1.87.D0.BD.D0.BE.D0.B9_.D1.81.D1.82.D0.B0.D1.82.D0.B8.D1.81.D1.82.D0.B8.D0.BA.D0.B8"&gt;&lt;/a&gt;&lt;h4&gt; Скрипт скидывания ежемесячной статистики &lt;/h4&gt; &lt;p&gt;Запуск скрипта прописан в файле /etc/crontab: &lt;/p&gt; &lt;pre&gt;&lt;blockquote&gt;01 5    1 * *   root    /usr/sbin/pmacctdmonthly&lt;/blockquote&gt;&lt;br /&gt;&lt;/pre&gt; &lt;p&gt;Он отрабатывает автоматически каждый первый день месяца в 05:01:00 по времени сервера. &lt;/p&gt; &lt;pre&gt;&lt;blockquote&gt;#!/bin/bash&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;### Конфигурационная директория&lt;br /&gt;CONFDIR=/etc/pmacct&lt;br /&gt;### Лог-директория&lt;br /&gt;LOGDIR=/var/log/pmacctd&lt;br /&gt;### Текущий месяц в формате мм&lt;br /&gt;MONTH=`date +%-m`&lt;br /&gt;### Текущий год в формате гггг&lt;br /&gt;YEAR=`date +%Y`&lt;br /&gt;Временная директория&lt;br /&gt;TMPDIR=/tmp/pmacctd&lt;br /&gt;&lt;br /&gt;## Так как скрипт выполняется первого числа, а нам надо сделать статистику за предыдущий месяц, делаем проверку, не первое ли сегодня января и присваиваем переменным месяца и года нужные нам значения.&lt;br /&gt;#### Отдельное примечание. Из-за того, что в bash по умолчанию числа, начинающиеся с 0, автоматически считаются числами восьмеричой системы счисления,&lt;br /&gt;#### приходится делать более сложную проверку, сравнивая значения месяцев, как строки, и только потом присваивать им какие-либо значения.&lt;br /&gt;if [[ $MONTH == 01 ]]&lt;br /&gt;       then&lt;br /&gt;               LASTMONTH=12&lt;br /&gt;               LASTYEAR=$((YEAR-1))&lt;br /&gt;       else&lt;br /&gt;               if [[ $MONTH == 11 || $MONTH == 12 ]]&lt;br /&gt;                       then&lt;br /&gt;                               LASTMONTH=$((MONTH-1))&lt;br /&gt;                               LASTYEAR=$YEAR&lt;br /&gt;                       else&lt;br /&gt;                               LASTMONTH=$((MONTH-1))&lt;br /&gt;                               LASTMONTH=0$LASTMONTH&lt;br /&gt;                               LASTYEAR=$YEAR&lt;br /&gt;               fi&lt;br /&gt;&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;## Создаём директорию вида ммгггг для хранения статистики за месяц.&lt;br /&gt;mkdir $LOGDIR/$LASTMONTH$LASTYEAR&lt;br /&gt;## Считываем все директории с файлам посуточной статистики за прошедший месяц.&lt;br /&gt;DIR=`ls $LOGDIR | grep $LASTMONTH$LASTYEAR`&lt;br /&gt;for i in $DIR&lt;br /&gt;     do&lt;br /&gt;#### Поочереди, в каждой из этих директорий находим файлы по именам пользователей&lt;br /&gt;             USERNAME=`ls $LOGDIR/$i/`&lt;br /&gt;             for n in $USERNAME&lt;br /&gt;                     do&lt;br /&gt;######  Во временной директории создаём файл с несуммированной статистикой на каждого пользователя.&lt;br /&gt;                             BYTES=`cat $LOGDIR/$i/$n`&lt;br /&gt;                             echo $BYTES &gt;&gt; $TMPDIR/$n&lt;br /&gt;                     done&lt;br /&gt;     done&lt;br /&gt;&lt;br /&gt;#### Суммируем статистику из временной директории на каждого пользователся,&lt;br /&gt;#### Складываем её в вышесозданную директорию и&lt;br /&gt;#### удаляем временные файлы.&lt;br /&gt;&lt;br /&gt;for i in $DIR&lt;br /&gt;       do&lt;br /&gt;               USERNAME=`ls $LOGDIR/$i/ | grep -v gz`&lt;br /&gt;               for nn in $USERNAME&lt;br /&gt;                       do&lt;br /&gt;                               ALLBYTES=0&lt;br /&gt;                               BYTES=`cat $TMPDIR/$nn`&lt;br /&gt;                               for b in $BYTES&lt;br /&gt;                                       do&lt;br /&gt;                                               ALLBYTES=$((ALLBYTES+b))&lt;br /&gt;                                               echo $ALLBYTES &gt; $LOGDIR/$LASTMONTH$LASTYEAR/$nn&lt;br /&gt;                                       done&lt;br /&gt;                       done&lt;br /&gt;       done&lt;br /&gt;rm -rf $TMPDIR&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/pre&gt; &lt;p&gt;В итоге в Лог-директории мы получаем каталог с номером прошедшего месяца и года вида ммгггг, в котором лежат файлы, имя каждого из которых - это имя пользователя, а содержимое - траффик за прошедший месяц. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294045657797660908-2000980151931780181?l=cppmm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppmm.blogspot.com/feeds/2000980151931780181/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://cppmm.blogspot.com/2008/08/linux-pmacctd.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/2000980151931780181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/2000980151931780181'/><link rel='alternate' type='text/html' href='http://cppmm.blogspot.com/2008/08/linux-pmacctd.html' title='Подсчёт траффика в Linux с помощью pmacctd.'/><author><name>Anton "cppmm" Kropachev</name><uri>http://www.blogger.com/profile/05815356399793900372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://bp0.blogger.com/_LiQ6ICkCjiM/SHPbwTA2tbI/AAAAAAAAAQw/QWV70OspyLA/S220/003.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294045657797660908.post-7399046587487742272</id><published>2007-07-19T04:09:00.000+07:00</published><updated>2007-07-19T04:12:24.580+07:00</updated><title type='text'>Настройка протокола связи turbocell</title><content type='html'>&lt;p&gt;&lt;b&gt;1. Введение.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt; Сейчас довольно сильно распространенны разнообразные Wi-Fi устройства, применяемые для связи в тех местах, где нет возможности(или очень дорого) протянуть кабель. По поводу настройки связи по протоколам IEEE 802.11 a/b/g написанно довольно много документации, но мне по работе недавно пришлось столкнуться с настройкой протокола TurboCell(программная "надстройка" для устройств, разработанных для IEEE 802.11 a/b/g, реализующаяя маркерный протокол доступа и гарантирующая стабильную связь в тех условиях, в которых ресурсы 802.11 a/b/g уже исчерпаны). Проще говоря, этот протокол даёт возможность "выжать больше" из того же оборудования по сравнению с 802.11 a/b/g. Однако при настройке я столкнулся снекоторыми проблемами, а информации в интернете по этому поводу, как оказалось, практически нет. Поэтому я решил описать процедуру настройки. &lt;/p&gt;  &lt;p&gt;  &lt;b&gt;2. Получение драйверов и прошивки.&lt;/b&gt;&lt;/p&gt;   &lt;p&gt; Я использую такую схему связи:&lt;br /&gt; Устройство RG+KN-105 Outdoor на базе pcmcia-карточки Orinoco Silver в качестве Точки Доступа.&lt;br /&gt; Компьютер с установленной ОС Linux(подробнее дальше) и pcmcia-карточкой Orinoco в качестве клиента.&lt;br /&gt;Так как этот протокол является закрытым, прошивку для ТД и ключи для работы драйверов придётся покупать. Вам должны предоставить файл прошивки xxx.bin и ключ к нему xxx.lkf для устройства. Для клиента - исходные тексты драйверов wavelan2_cs-TC1.04.tar.gz и 20-ти значный ключ. Всё кроме драйверов генерируется при помощи MAC-адресов карточек. Связываться надо с представителями компании KarlNet Inc (ныне Terabeam/Proxim). &lt;/p&gt;  &lt;p&gt;&lt;b&gt; 3. Прошивка устройства.&lt;/b&gt;&lt;/p&gt;   &lt;p&gt; Для прошивки Вам понадобится утилита "TeraBeam Configurator and Management Program", разработанная под Windows, но прекрасно работающая под wine(если у Вас, как и у меня в качестве Desktop-системы используется Linux).&lt;br /&gt; Итак, непосредственно процедура прошивки:&lt;br /&gt;    а) сбрасываем устройство к заводским настройкам(в моём случае надо было зажать кнопку reset при отключенном питании и потом включить устройство в сеть, после чего несколько секунд подождать пока все индикаторы устройства не успокоятся);&lt;br /&gt;    б) запустив утилиту, идём в File -&gt; Open Config/Bin File -&gt; Отвечаем Ok во всплывшем окне -&gt; Выбираем файл прошивки (xxx.bin) -&gt; Жмём Import License Key -&gt; Выбираем фал ключа(xxx.lkf) -&gt; Отвечаем Ok во всех окнах после этого.&lt;br /&gt;Если всё прошло успешно, мы возвращаемся к главному окну утилиты. Теперь File -&gt; Upload Software -&gt; Scan -&gt; Выбираем устройство(ip-адрес запоминаем, либо меняем на тот, который Вам нравится) -&gt; Во всех окнах жмём Ok и ждём.&lt;br /&gt;После всего этого устройство должно быть готово к работе с протоколом TurboCell. Для настройки запускаем ту же утилиту, вводим в поле под "Enter an IP address or select from above" адрес указанный при прошивке, ждём появления надписи &lt;указанный_Вами_ip-адрес&gt; is online и нажимаем Configure Remote. Остальные настройки на Ваше усмотрение кроме одного замечания: В Interface Setup, в настройках интерфейса 802.11(у меня второй) нужно указать режим TurboCell Base Station и ISP Base Station, иначе связи не будет(во всяком случае у меня не вышло и информации о том, что у кого-то получилось запустить это в другом режиме у меня нет).&lt;br /&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt; 4. Установка драйверов.&lt;/b&gt;&lt;/p&gt;   &lt;p&gt; Драйвера для Linux мне удалось запустить только с ядром 2.4.2. С другими ядрами модуль wavelan_cs2 получающийся после сборки не подгружается из-за ошибок в совместимости. Я использовал систему Debian Sarge 3r1, указывая при установке, что мне требуется ядро 2.4.27. После установки я скачал и собрал ядро 2.4.2. Главное замечание при сборке - правильно указать параметры pcmcia. В качестве примера я использовал дефолтный конфиг ядра из RedHat Linux 7.1. Также для сборки драйверов понадобится компилятор gcc только из второй ветки(старше нельзя).&lt;br /&gt;Далее тянем из инета драйвера для pcmcia (я использовал pcmcia-cs-3.1.30.tar.gz). Распаковываем их куда-нибудь, а уже в корень директории с этими драйверами распаковываем wavelan2_cs-TC1.04.tar.gz. Конфигурим при помощи make config pcmcia-драйвера и запускаем скрипты ./Build и ./Install.&lt;br /&gt; Драйвера готовы.&lt;/p&gt;   &lt;p&gt;&lt;b&gt; 5. Настройка и запуск.&lt;/b&gt;&lt;/p&gt;   &lt;p&gt; Для настройки правим файл /etc/pcmcia/config.opts, добавляя в него строку:&lt;br /&gt;module "wavelan2_cs" opts "protocol=1 channel=1 port_type=3 nwid=0 license=12345678901234567890 pp=password station_name=name", где nwid, pp и channel должны совпадать с соответствующими параметрами на ТД, station_name ставится на Ваше усмотрение, а license - 20-ти значный ключ, выданный Вам продавцом лицензии. Остальное всегда остаётся таким, как у меня указанно.&lt;br /&gt;Рестартуем pcmcia и связь должна появиться. Маленькое замечание. wireless-tools можно не ставить. iwconfig не отображает практически ничего связанного с TurboCell, т.е. ни наличия/отсутствия сигнала, ни действующих ключей, ничего кроме канала и имени клиентской точки.&lt;/p&gt;   &lt;p&gt;&lt;b&gt; 6. P.S.&lt;/b&gt;&lt;/p&gt;   &lt;p&gt; Описание получилось коротким, но на самом деле надо быть готовым ко множеству проблем. Не знаю, как и когда писались эти драйвера, но всё, что здесь описанно, я изучал на протяжении долгого времени методом проб и ошибок. В более новых версиях linux могут возникнуть проблемы с binutils - придётся менять на более старую версию, про gcc я уже говорил(я использовал 2.96). Так же могут возникнуть проблемы с модулями, если в Вашем дистрибутиве нельзя при установке выбрать ядро из ветки 2.4.х. В общем, пробуйте. Эту статью не следует воспринимать, как руководство к действию, это всего лишь описание удавшейся и работающей конфигурации.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294045657797660908-7399046587487742272?l=cppmm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppmm.blogspot.com/feeds/7399046587487742272/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://cppmm.blogspot.com/2007/07/turbocell.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/7399046587487742272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294045657797660908/posts/default/7399046587487742272'/><link rel='alternate' type='text/html' href='http://cppmm.blogspot.com/2007/07/turbocell.html' title='Настройка протокола связи turbocell'/><author><name>Anton "cppmm" Kropachev</name><uri>http://www.blogger.com/profile/05815356399793900372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://bp0.blogger.com/_LiQ6ICkCjiM/SHPbwTA2tbI/AAAAAAAAAQw/QWV70OspyLA/S220/003.jpg'/></author><thr:total>1</thr:total></entry></feed>
