<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.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"><id>tag:blogger.com,1999:blog-7800991272705950027</id><updated>2009-12-21T13:42:14.018+09:00</updated><title type="text">Propheta</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.propheta.ru/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://www.propheta.ru/search/label/IT" /><link rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/-/IT/-/IT?start-index=26&amp;max-results=25" /><author><name>Князь</name><uri>http://www.blogger.com/profile/11218942243308963007</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>135</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/propheta-it" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry><id>tag:blogger.com,1999:blog-7800991272705950027.post-2737383919626244018</id><published>2009-12-06T23:02:00.003+09:00</published><updated>2009-12-06T23:09:18.990+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="IT" /><category scheme="http://www.blogger.com/atom/ns#" term="статья" /><category scheme="http://www.blogger.com/atom/ns#" term="microsoft" /><title type="text">Инноватор ли Microsoft?</title><content type="html">David A. Wheeler&lt;br /&gt;26 марта 2001 c небольшими изменениями на 11 сентября 2006  &lt;p&gt;&lt;strong&gt;Введение&lt;/strong&gt;&lt;br /&gt;Джим Оллчин, (&lt;em&gt;бывший исполнительный &lt;a href="http://en.wikipedia.org/wiki/Jim_Allchin"&gt;директор&lt;/a&gt; MS – прим. перев.&lt;/em&gt;) пытается убедить правительство США, что программное обеспечение (ПО) с открытыми исходными кодами (или, по крайней мере, Общественная публичная лицензия – General Public License) это угроза для США и интеллектуальной собственности. При этом одним из его аргументов служит утверждение, что ПО с открытым исходным кодом представляет собой угрозу для инноваций. В своих последних “судебных разбирательствах”, Microsoft также использует аргумент “инноваций” в качестве оправдания для своих собственных (хорошо известных и признанных судом незаконными) методов ведения бизнеса.&lt;br /&gt;Однако после изучения приводимых ими доказательств, я сделал вывод, что Microsoft в реальности &lt;strong&gt;&lt;em&gt;НЕ&lt;/em&gt;&lt;/strong&gt; является  инноватором, поэтому ее претензии на отмену решений суда, потому что “они инноваторы” явно не обоснованны. Суд определил, что методы ведения бизнеса Microsoft незаконны: популярность ее продуктов  вызвана отнюдь не инновациями, а тем, что она “подсаживает” клиентов на свой продукт (ведь без клиентов не будет прибыли) &lt;a href="http://www.groklaw.net/article.php?story=20071023002351958"&gt;[*]&lt;/a&gt;. Однако это не делает из Microsoft новатора, по крайней мере, в области IT-технологий. Нет ничего плохого в том, что какая-то компания не является новатором. Но для отмены судебных решений о наказании за незаконную деятельность и накладывании новых  ограничений на конкурентов через суд (&lt;em&gt;как они это любят делать – прим. перев.&lt;/em&gt;), должны быть серьезные доказательства наличия инноваций.&lt;br /&gt;Ниже я приведу доказательства того, что:&lt;br /&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Ни одна из ключевых инноваций программного обеспечения не является собственной разработкой компании Microsoft;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Все важные продукты Microsoft в основном представляют собой копии существовавших ранее продуктов, и &lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Существующие ключевые технологии Microsoft также не являются инновационными.&lt;/strong&gt;&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Microsoft не является новатором, и поэтому она не должна использовать термин “инновации” ни для защиты собственных интересов, ни в качестве аргумента для убеждения других в том, что ПО с открытым исходным кодом (ОSS) представляет собой угрозу для процесса создания инноваций (поскольку для подтверждения этого нет никаких серьезных доказательств).&lt;br /&gt;Но для начала мы должны определить термин “инновация”. “Инновацией” не является простое комбинирование  нескольких функций в одном продукте – это описывается термином “интеграция” и не требует каких-либо “инноваций”, а только серьезного объема работы. В частности, если компания интегрирует функции в один продукт для того, чтобы препятствовать своим клиентам использовать конкурирующие продукты (хорошо известная практика Microsoft) – то это “хищничество”, а не инновации.&lt;br /&gt;“Инновация” – это не конечный продукт, хотя некий продукт может реализовать или иметь в своем составе какие-то инновации. Новая реализация какого-то продукта, созданная для того, чтобы, например, сделать то же самое, но на другом компьютере (системе, архитектуре), также не является инновацией. Инновация – &lt;em&gt;это новая идея&lt;/em&gt;. И в данном контексте, имеется в виду что это новая идея в технологиях ПО.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Microsoft никогда не являлась разработчиком своего основного программного обеспечения&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Ну что ж, давайте попробуем определить понятие “наиболее важные (ключевые) технические нововведения в области программного обеспечения” и увидеть, автором каких из них является Microsoft. Несколько лет назад я заинтересовался темой того, “что являлось наиболее важными инновациями в программном обеспечении”, и поэтому составил собственный список различных событий, имеющих отношение к компьютерному миру. Я использовал множество различных источников, чтобы не упустить ничего важного. Например, я использовал &lt;a href="http://translate.googleusercontent.com/translate_c?hl=ru&amp;amp;u=http://www.computer.org/50/history&amp;amp;rurl=translate.google.com&amp;amp;usg=ALkJrhjDsKTA21k7blrBYh3-0F_sfpBYxw"&gt;информацию из архива истории компьютеров IEEE&lt;/a&gt; (&lt;a href="http://en.wikipedia.org/wiki/Institute_of_Electrical_and_Electronics_Engineers"&gt;IEEE &lt;/a&gt;- институт инженеров электрики и электроники – прим. перев.),  &lt;a href="http://translate.googleusercontent.com/translate_c?hl=ru&amp;amp;u=http://vlmp.museophile.com/computing.html&amp;amp;rurl=translate.google.com&amp;amp;usg=ALkJrhitGfgqyePhMNqR1FX4jy16z8c-6g"&gt;виртуальный музей вычислительной техники&lt;/a&gt; и &lt;a href="http://translate.googleusercontent.com/translate_c?hl=ru&amp;amp;u=http://info.isoc.org/guest/zakon/Internet/History/HIT.html&amp;amp;rurl=translate.google.com&amp;amp;usg=ALkJrhikxc5Fwz93INWcA902G64zGNcW0g"&gt;интернет-хронологию Гоббса&lt;/a&gt;. Я не обнаружил существования общепринятого списка наиболее важных инноваций в программном обеспечении, поэтому возможно, что это самый точный список. Понятно, что до 1975 года у Microsoft не могло быть никаких инноваций, так как они тогда только появились, но я хотел создать список ключевых инновационных технологий в ПО вообще, потому что так нагляднее можно увидеть, что именно они собой представляют. Таким образом становится очевидно, что то, что некоторые принимают за инновации Microsoft, на самом деле существовало задолго до ее появления.&lt;br /&gt;Мои результаты (список основных инноваций в программном обеспечении), приведены &lt;a href="http://www.dwheeler.com/innovation/innovation.html"&gt;здесь&lt;/a&gt; (&lt;em&gt;чуть позже постараюсь осилить перевод и его – прим. перев.&lt;/em&gt;). Список интересен тем, что он включает в себя графический пользовательский интерфейс, текстовые процессоры и многое другое, что мы принимаем сегодня как должное. &lt;strong&gt;Ничего&lt;/strong&gt; из приведенного там не было создано Microsoft. Проще говоря, &lt;strong&gt;нет никаких доказательств&lt;/strong&gt; того, что Microsoft когда-либо создавала какие-либо важные инновации в ПО.&lt;br /&gt;Некоторые из приведенных инноваций являются необходимыми для создания продуктов, однако этот уровень  достигается каждым программистом, разрабатывающим какой-либо продукт (независимо от того, создаются проприетарные продукты или свободное/открытое ПО). И, наоборот, некоторые из приведенных инноваций (например, TCP/IP и World Wide Web) первоначально были реализованы и распространялись как свободное/открытое ПО. Если вы хотите увидеть реальные инновации, то свободное/открытое ПО имеет лучший послужной список по количеству инноваций, чем программное обеспечение Microsoft. &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Продукты Microsoft не инновационны&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Ниже я привел то, что я понимаю как ключевые продукты Microsoft, и обнаружил, что ни один из них не является принципиально инновационным, либо это просто новая реализация уже существующих продуктов:&lt;/p&gt; &lt;ol&gt;&lt;li&gt;Бейсик/BASIC: Microsoft появилась в 1975 году, но сам BASIC  был изобретен еще в 1964 году, да и то был лишь еще одним из многих языков программирования.&lt;/li&gt;&lt;li&gt;В 1981 г Microsoft выпустила MS-DOS. Данное название было просто новым именем данным Microsoft для QDos – “Quick and Dirty Operating System” (”Операционная система сделанная кое-как, на скорую руку, дешево и сердито” – прим. перев.), написанной Тимом Патерсоном из Seattle Computer Products за 6 недель незадолго до этого. Патерсон написал QDos с помощью купленного им руководства для CP/M и использовал это руководство в качестве основы для своей собственной программы, поэтому QDos сама по себе не несла ничего нового. Когда IBM вела c Microsoft переговоры относительно нового ПО для своих новых PC, Microsoft быстро купила QDos и переименовала его, что и позволило ей заключить сделку с IBM (это отражено в фильме “Пираты Кремниевой долины” – прим. перев.). Естественно, такое понятие операционной системы устарело уже в 1981 году, так что MS-DOS никак не тянет на инновацию. Позже, Microsoft добавила в нее такие функции, как поддержка каталогов, но они так же не были чем-то новым и их идея была взята из другой операционной системы (UNIX).&lt;/li&gt;&lt;li&gt;Windows: В 1983 году Microsoft объявила, что она будет заниматься разработкой Windows. Windows 1.0 была окончательно выпущена ноября 1985 года (с двухлетним опозданием), но она работала очень плохо и имела мало приложений. Так было пока не наступило 22 мая 1990 года, когда была выпущена Windows 3.0, которая получила всеобщую поддержку и признание. Интерфейс Windows сильно напоминал интерфейс Apple Macintosh, который, в свою очередь, напоминал интерфейс Xerox PARC, который напоминал оригинальное изобретение Дугласа Энгельбарта, сделанное еще в 1968 году (графический интерфейс с использованием мыши). Поскольку Windows являлась копией Macintosh, который также базировался на основе более ранних работ, Windows также не может считаться инновацией.&lt;/li&gt;&lt;li&gt;Windows NT/2000: В Microsoft Windows NT наконец-то появилась (с ограничениями) возможность многопользовательской работы и возможность защиты памяти, что позволяло использовать ее для работы в качестве сервера, однако это было сделано с обильным заимствованием идей из уже существовавших VAX VMS и UNIX-систем (которые также не были первыми из подобных операционных систем). &lt;/li&gt;&lt;li&gt;Word: Это просто еще один текстовый процессор, который Microsoft начала разрабатывать в 1983 году. Lexitron и Linolex разработали в 1972 году первую экран-ориентированную систему обработки текстов, уже существовавшую до Microsoft и точно также им предшествовал WordStar (1979).&lt;/li&gt;&lt;li&gt;Excel: табличный процессор, реализованный существенно позже своих предшественников -  VisiCalc (1978) и Lotus 1-2-3.&lt;/li&gt;&lt;li&gt;Access: Еще одна система баз данных. Поскольку она является реляционной, основная инновация которую она она воплощает – это модель Кодда, которая была разработана в 1970 году (Microsoft тогда еще не существовало).&lt;/li&gt;&lt;li&gt;Internet Explorer (IE): Internet Explorer не является оригинальной разработкой Microsoft, он всего лишь слегка расширенный в возможностях старый веб-браузер NCSA Mosaic. По меньшей мере, до версии 5.5. выбрав пункт меню “Неlp”-”About” можно было увидеть, он основан на NCSA Mosaic. NCSA Mosaic (TM) был разработан в Национальном центре суперкомпьютерных приложений (NCSA) при университете Иллинойса в Урбана-Шампейн (the University of Illinois at Urbana-Champaign). Распространялся данный браузер по лицензионному соглашению со Spyglass, Inc. Резюме – веб-браузеры (и IE) не являются инновацией Microsoft.&lt;/li&gt;&lt;li&gt;Active Directory: это еще одна  реализация Lightweight Directory Access Protocol (LDAP), который восходит к концу 80-х годов (задолго до “Active Directory”), с собственным вариантом MIT Kerberos от Microsoft. Резюме, тоже никаких серьезных инноваций.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Есть, конечно, и другие продукты Microsoft, просто я не могу их все перечислить в столь короткой статье. Но конечно, если Майкрософт когда-нибудь создаст какой-нибудь свой собственный инновационный продукт, то он мог бы стать одним из лучших в ряду себе подобных. Вместо этого, мы находим, что основные продукты Microsoft – это большей частью реализации ранее существовавших продуктов. Нет ничего плохого в попытке повторного воссоздания таких же продуктов чуть лучше и дешевле, чем кто либо другой, а пользователи даже рады видеть данный тип конкуренции! Однако, это НЕ инновации.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Технологии Microsoft не инновационные&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Даже если весь продукт не является инновационным в целом, он может включать в себя (реализовывать) некоторые инновации. Ведь так или иначе разработчики все равно привносят какие-то инновации; грубо говоря, разработчик тщательно продумывает каждую деталь и наверняка привносит в работу свои идеи.&lt;br /&gt;Итак, давайте взглянем на некоторые технологии от Microsoft, и посмотрим, есть ли у них какие-либо инновации, которые значительно лучше, чем у других компаний или в свободном/открытом ПО:&lt;/p&gt; &lt;ol&gt;&lt;li&gt;COM/DCOM: Это основные механизмы коммуникации в Windows, которые позволяют программам находить, вызывать друг друга и поддерживать “компонентное программирование”. Однако, это просто еще одна реализация удаленного вызова процедур (RPC), конечно же не первая, и к тому же COM даже не может работать по  сети!&lt;/li&gt;&lt;li&gt;SMB/CIFS: Протокол Microsoft для обмена файлам и работы с принтерами. Но не они изобрели его. Дополнительные сведения об этом приведены здесь &lt;/li&gt;&lt;li&gt;. NET: Часто бывает затруднительно прийти к соглашению об определении .NET, что затрудняет его анализ. Наилучшее описание я нашел здесь – Sean Wilson’s “.NET – So What? (в оригинале приведена нерабочая ссылка – прим. перев.) Здесь говорится: “.Net – общее название для огромного количества различных инициатив Microsoft, включающее в себя несколько направлений: средства разработки, серверы, клиенты, веб-служб XML. Приложения исполняются внутри “.NET Framework”, которая по существу является аналогом Java (поддержка загрузки кода с использованием промежуточного формата). .NET Framework целенаправленно разработан для поддержки нескольких языков программирования, что не являлось целью разработки Java. Но в то же время инфраструктура Java также поддерживает несколько языков и разные устаревшие технологии (такие, как UCSD p-код и ANDF), которые были специально разработаны для этого много лет назад. В начале своей статьи он говорит, что .NET не особенно инновационен по идеям… Многие из заложенных в него идей уже были реализованы ранее и прекрасно известны.&lt;/li&gt;&lt;li&gt;Сводные таблицы: В 1986 году Пито Саласу пришла в голову идея сводных таблиц в электронных таблицах, когда он работал в Lotus Development Corporation Group. Они были продемонстрированы в 1987 году, и программы, в которых они были реализованы (ныне Lotus Improv) были выпущен в 1988 году. Lotus Improv был выпущен для Windows в 1993 году. В Excel сводных таблиц не было до релиза Excel 97. (Source: “Pivot Table Data Crunching” by Bill Jelen and Michael Alexander). &lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Некоторые могут заметить, что у Microsoft имеются некоторые патенты. К сожалению, патенты на программное обеспечение, не свидетельствуют об инновациях, а говорят только о том, что заявитель имеет достаточно денег, чтобы представить многие патентные заявки. База данных существующих работ в области программного обеспечения, используемая патентными экспертами, является неадекватной, причем экспертам в данной области, как правило, платят меньше, чем остальным (что снижает их количество и квалификацию), патентные эксперты имеют очень мало времени для рассмотрения каждой заявки на патент и большой соблазн просто принять заявку (с незначительными изменениями), чем отклонять запрос как некорректный. В результате, часто предоставляются патенты в области программного обеспечения на уже существующие или очевидные идеи. Действительно, &lt;a href="http://translate.googleusercontent.com/translate_c?hl=ru&amp;amp;u=http://news.com.com/Supreme%2BCourt%2Bloosens%2Bpatent%2Bobviousness%2Btest/2100-1014_3-6180220.html&amp;amp;rurl=translate.google.com&amp;amp;usg=ALkJrhgwjVnAD_v8gzVlKHaVYlzA7PrXzQ"&gt;США в 2007 году решение Верховного суда усилило внутренние правила проверки патентов на “очевидность”&lt;/a&gt;, потому что многие патенты были предоставлены на очевидные идеи, в результате чего действие таких патентов, вероятно, неосуществимо. Даже если вы и примете такую неправдоподобную идею о том, что патенты на программное обеспечение отражают инновации и захотите сравнить количество идей с разработчиками свободного/бесплатного ПО, то станет ясно, почему многие лидеры в области свободного ПО сильно озадачены вопросами применения патентов. Это наводит на мысль о том, что подсчет патентов из сообщества свободного ПО по-прежнему не позволит провести беспристрастное сравнение количества идей (потому что там не принято патентовать идеи и поэтому нельзя использовать патенты как сравнительный показатель количества идей – прим. перев.). Многие страны не позволяют патентовать идеи в ПО, но в США это возможно, а также там существует целый ряд организаций, которые противостоят идее патентов на ПО. Более подробную информацию о проблемах с патентами на программное обеспечение, можно посмотреть на сайте таких организаций, как &lt;a href="http://translate.googleusercontent.com/translate_c?hl=ru&amp;amp;u=http://progfree.org/&amp;amp;rurl=translate.google.com&amp;amp;usg=ALkJrhjHssqn9F9VhQDZPzbTRbOC03t20Q"&gt;League for Programming Freedom (Лига за свободу программирования)&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Заключение&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Я показал, что:&lt;/p&gt; &lt;ol&gt;&lt;li&gt;&lt;strong&gt;Ни одна из существующих инноваций программного обеспечения не была предложена Microsoft,&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Ключевые продукты Microsoft – в основном копии существующих продуктов, и&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Ключевые технологии Microsoft не являются инновационными.&lt;/strong&gt;&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Microsoft всегда “висели на хвосте” у тех, кто является реальными инноваторами. Возможно, Microsoft имеет талант в мелочах, но нет абсолютно никаких доказательств того, что они более талантливы, чем какая-либо другая группа разработчиков.&lt;/p&gt; &lt;p&gt;Я не считаю плохой компанию, которая не является инновационной. В конце концов, цель Microsoft (или любой другой компании) – зарабатывание денег для своих акционеров, а не создание инноваций. Но утверждать, что вы инноватор, если вы им не являетесь – лицемерно. Оправдание незаконных действий во имя инноваций, когда этих инноваций не было — лицемерно вдвойне. И, если этот аргумент является центральным для убеждения правительства в том, что ему не следует поощрять свободное/открытое ПО, то простой анализ быстро приводит к выводу о его (аргумента) неправильности.&lt;/p&gt; &lt;p&gt;Только Microsoft, кажется, считает, что свободное/бесплатное ПО является основной проблемой для компьютерной индустрии. Множество ключевых нововведений пришли из сообщества свободного/бесплатного ПО, включая практически весь Интернет, поэтому очевидно, что такое ПО стимулирует инновации, а не наоборот. С другой стороны, свободное ПО получило в настоящее время широкое признание, и тому есть много причин. Например, многие крупные компании (такие как IBM, HP и Sun) осуществляют поддержку открытых проектов. Даже аналогичные Microsoft компании, продающие проприетарное программное обеспечение, такие как Oracle, находят способы, чтобы взаимодействовать со свободными проектами.&lt;/p&gt; &lt;p&gt;В этом контексте, заявление Оллчина:”меня волнует поддержка правительством ПО с открытым исходным кодом и я не думаю, что у нас есть достаточно грамотных политиков, чтобы понимать данную угрозу”, имеет скрытый подтекст.&lt;/p&gt; &lt;p&gt;Вместо этого создается ощущение, что Microsoft просто не хочет изменить свою бизнес-модель с учетом изменяющихся условий окружающей среды и желаний своих клиентов. Это слишком плохо, ведь ничто не мешает Microsoft изменить свой подход к ведению бизнеса. Ну что ж, многие ранее существовавшие монополии сделали ту же ошибку. Я не против Microsoft и я не против проприетарного программного обеспечения. Более того, я рад похвалить Microsoft или любую другую компанию, если она делает хорошие и правильные вещи. Однако, меня беспокоит, когда любая организация делает такие явно неправдоподобные заявления. И тем более неправильно, что Microsoft оправдывает свои незаконные действия, претендуя на инновации, которых у них никогда не было.&lt;/p&gt; &lt;p&gt;(c) Copyright by &lt;a href="http://dwheeler.com/"&gt;D. Wheeler&lt;/a&gt;&lt;br /&gt;Перевод &lt;a href="http://kelerus.livejournal.com/5756.html"&gt;А. Чернышев&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Источник: &lt;a href="http://freeschool.altlinux.ru/?p=2340#more-2340" rel="nofollow"&gt;freeschool.altlinux.ru&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7800991272705950027-2737383919626244018?l=www.propheta.ru' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.propheta.ru/feeds/2737383919626244018/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=7800991272705950027&amp;postID=2737383919626244018" title="Комментарии: 7" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/2737383919626244018" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/2737383919626244018" /><link rel="alternate" type="text/html" href="http://www.propheta.ru/2009/12/microsoft.html" title="Инноватор ли Microsoft?" /><author><name>Князь</name><uri>http://www.blogger.com/profile/11218942243308963007</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="15117379851453659769" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7800991272705950027.post-3870865086254967870</id><published>2009-12-01T20:25:00.011+09:00</published><updated>2009-12-03T19:51:14.161+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="freebsd" /><category scheme="http://www.blogger.com/atom/ns#" term="firewall" /><category scheme="http://www.blogger.com/atom/ns#" term="IT" /><category scheme="http://www.blogger.com/atom/ns#" term="заметка" /><category scheme="http://www.blogger.com/atom/ns#" term="net" /><title type="text">Аналог reply-to из PF в IPFW</title><content type="html">Нашел &lt;a href="http://nuclight.livejournal.com/124348.html" rel="nofollow"&gt;интересную статью&lt;/a&gt; с описанием работы межсетевого экрана &lt;code&gt;IPFW&lt;/code&gt;. В частности, упомянута реализация действия, аналогичного &lt;code&gt;reply-to&lt;/code&gt; из &lt;code&gt;PF&lt;/code&gt;:&lt;br /&gt;&lt;span style="font-size:24pt"&gt;«&lt;/span&gt;&lt;br /&gt;Тот факт, что на самом деле "перепрыгивание" выполняется на параметры действия, позволяет использовать это для интересных вещей. В частности, с использованием появившегося во FreeBSD 6.2 параметра &lt;code&gt;tag&lt;/code&gt; на каждый пакет можно навешивать внутриядерный тег, что в применении со &lt;code&gt;skipto&lt;/code&gt; позволяет сделать, к примеру, запоминание, с какого шлюза пришел входящий пакет на машине с каналами к двум разным провайдерам, и ответные пакеты отправлять в тот канал, откуда они пришли (допустим, у вашей машины только один IP-адрес, и сделать &lt;code&gt;fwd&lt;/code&gt; на базе внешнего адреса не получится), т.е. реализовать аналог &lt;code&gt;reply-to&lt;/code&gt; из &lt;code&gt;PF&lt;/code&gt;:&lt;br /&gt;&lt;pre class="number"&gt;ipfw add 100 skipto 300 tag 1 in recv $ext_if1 keep-state&lt;br /&gt;ipfw add 200 skipto 300 tag 2 in recv $ext_if2 keep-state&lt;br /&gt;ipfw add 300 allow { recv $ext_if1 or recv $ext_if2 }  # входящие снаружи&lt;br /&gt;ipfw add 400 allow in recv $int_if  # разрешить ответы на внутреннем проходе&lt;br /&gt;ipfw add 500 fwd $gw1 tagged 1      # остались ответы на внешнем интерфейсе,&lt;br /&gt;ipfw add 600 fwd $gw2 tagged 2      # зарулим их куда надо&lt;/pre&gt;&lt;span style="font-size:24pt"&gt;»&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7800991272705950027-3870865086254967870?l=www.propheta.ru' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.propheta.ru/feeds/3870865086254967870/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=7800991272705950027&amp;postID=3870865086254967870" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/3870865086254967870" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/3870865086254967870" /><link rel="alternate" type="text/html" href="http://www.propheta.ru/2009/12/reply-to-pf-ipfw.html" title="Аналог reply-to из PF в IPFW" /><author><name>Князь</name><uri>http://www.blogger.com/profile/11218942243308963007</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="15117379851453659769" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7800991272705950027.post-2154025153269977994</id><published>2009-11-28T11:52:00.030+09:00</published><updated>2009-12-01T20:25:43.710+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="freebsd" /><category scheme="http://www.blogger.com/atom/ns#" term="firewall" /><category scheme="http://www.blogger.com/atom/ns#" term="IT" /><category scheme="http://www.blogger.com/atom/ns#" term="заметка" /><category scheme="http://www.blogger.com/atom/ns#" term="vpn" /><category scheme="http://www.blogger.com/atom/ns#" term="net" /><title type="text">Трансляция PPTP (GRE) на шлюзе с PF</title><content type="html">Как известно, межсетевой экран PF, портированный в FreeBSD из OpenBSD, не может корректно транслировать (NAT) GRE-протокол и, к примеру, из локальной сети невозможно создать несколько одновременных соединений к внешнему серверу VPN PPTP.&lt;br /&gt;Одним из способов решения проблемы является трансляция PPTP-соединений родным IPFW с «ядерным» NAT. При этом вовсе необязательно компилировать ядро. Все описанные действия проверены в FreeBSD версии 7.2. Но должно работать и в других версиях, где есть поддержка «ядерного» NAT для IPFW.&lt;br /&gt;&lt;br /&gt;В «&lt;code&gt;/etc/rc.conf&lt;/code&gt;» добавляем&lt;pre class="number"&gt;#Включаем IPFW&lt;br /&gt;firewall_enable="YES"&lt;br /&gt;# Подгружаем модуль ядра ipfw_nat&lt;br /&gt;firewall_nat_enable="YES"&lt;br /&gt;# Указываем путь к скрипту загрузки правил&lt;br /&gt;firewall_script="/etc/ipfw.script"&lt;/pre&gt;Создаем файл «&lt;code&gt;/etc/ipfw.script&lt;/code&gt;»&lt;pre class="number"&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;/sbin/ipfw -q /dev/stdin &amp;lt;&amp;lt;RULES&lt;br /&gt;flush&lt;br /&gt;#em0 - внешний интерфейс шлюза&lt;br /&gt;nat 10 config if em0&lt;br /&gt;#Правила для трансляции PPTP-соединения&lt;br /&gt;add 10 nat 10 gre from any to any&lt;br /&gt;add 11 nat 10 tcp from any to any dst-port pptp&lt;br /&gt;add 12 nat 10 tcp from any pptp to any&lt;br /&gt;# Разрешаем весь трафик&lt;br /&gt;add allow all from any to any&lt;br /&gt;&lt;br /&gt;RULES&lt;/pre&gt;Делаем скрипт исполняемым&lt;pre&gt;&lt;strong&gt;#&lt;/strong&gt; chmod +x /etc/ipfw.script&lt;/pre&gt;Добавляем в правила PF&lt;pre class="number"&gt;# Запрещаем PF транслировать PPTP-соединения&lt;br /&gt;no nat on $external_if proto gre all&lt;br /&gt;no nat on $external_if proto tcp from any to any port = pptp&lt;br /&gt;no nat on $external_if proto tcp from any port = pptp to any&lt;br /&gt;&lt;br /&gt;... skip ...&lt;br /&gt;&lt;br /&gt;# Пропускаем PPTP-соединения&lt;br /&gt;pass quick on $external_if inet proto tcp from any to any port 1723&lt;br /&gt;pass quick on $external_if inet proto tcp from any port 1723 to any&lt;br /&gt;pass quick on $external_if inet proto gre from any to any&lt;/pre&gt;После всех сделанных изменений перезагружаемся.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7800991272705950027-2154025153269977994?l=www.propheta.ru' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.propheta.ru/feeds/2154025153269977994/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=7800991272705950027&amp;postID=2154025153269977994" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/2154025153269977994" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/2154025153269977994" /><link rel="alternate" type="text/html" href="http://www.propheta.ru/2009/11/pptp-gre-pf.html" title="Трансляция PPTP (GRE) на шлюзе с PF" /><author><name>Князь</name><uri>http://www.blogger.com/profile/11218942243308963007</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="15117379851453659769" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7800991272705950027.post-5294193854060788362</id><published>2009-11-26T02:35:00.001+09:00</published><updated>2009-11-26T02:37:47.236+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="новости" /><category scheme="http://www.blogger.com/atom/ns#" term="IT" /><category scheme="http://www.blogger.com/atom/ns#" term="политика" /><title type="text">Неужто??!</title><content type="html">&lt;a href="http://www.vesti.ru/doc.html?id=327614" rel="nofollow"&gt;Чиновникам велено осваивать безбумажные технологии&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Цитата: «Через год чиновникам будет запрещено требовать от граждан справки, если эти данные уже есть в государственных или муниципальных информационных фондах. Такое решение принято российским правительством. Это означает, что ведомства должны будут сами обмениваться необходимой информацией, а не заставлять граждан стоять в бесконечных очередях. Это, кстати, - составная часть той самой программы "электронного правительства", о которой в своем послании говорил и президент Дмитрий Медведев.»&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/7800991272705950027-5294193854060788362?l=www.propheta.ru' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.propheta.ru/feeds/5294193854060788362/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=7800991272705950027&amp;postID=5294193854060788362" title="Комментарии: 4" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/5294193854060788362" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/5294193854060788362" /><link rel="alternate" type="text/html" href="http://www.propheta.ru/2009/11/blog-post_26.html" title="Неужто??!" /><author><name>Князь</name><uri>http://www.blogger.com/profile/11218942243308963007</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="15117379851453659769" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7800991272705950027.post-4145274744602424882</id><published>2009-11-24T11:54:00.007+09:00</published><updated>2009-11-24T22:10:06.849+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="IT" /><category scheme="http://www.blogger.com/atom/ns#" term="заметка" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu" /><title type="text">debconf и /tmp с флагом noexec</title><content type="html">Если раздел «&lt;code&gt;/tmp&lt;/code&gt;» смонтирован с флагом &lt;code&gt;noexec&lt;/code&gt; в процессе установки пакетов на этапе предварительной настройки появляются ошибки, похожие на такую&lt;pre&gt;Can't exec "/tmp/fprobe-ulog.config.48931": Permission denied at /usr/share/perl/5.10/IPC/Open3.pm line 168.&lt;br /&gt;open2: exec of /tmp/fprobe-ulog.config.48931 configure  failed at /usr/share/perl5/Debconf/ConfModule.pm line 59&lt;br /&gt;не удалось выполнить начальную настройку пакета fprobe-ulog, код ошибки 255&lt;/pre&gt;На launchpad.net подобный багрепорт уже добавлен. Как временное решение в конфиг «&lt;code&gt;/etc/apt/apt.conf&lt;/code&gt;» добавляем строку&lt;pre class="number"&gt;APT::ExtractTemplates::TempDir "/var/tmp";&lt;/pre&gt;предписывающую &lt;code&gt;aptitude&lt;/code&gt; и &lt;code&gt;apt-get&lt;/code&gt; использовать директорию «&lt;code&gt;/var/tmp&lt;/code&gt;» вместо «&lt;code&gt;/tmp&lt;/code&gt;».&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7800991272705950027-4145274744602424882?l=www.propheta.ru' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.propheta.ru/feeds/4145274744602424882/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=7800991272705950027&amp;postID=4145274744602424882" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/4145274744602424882" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/4145274744602424882" /><link rel="alternate" type="text/html" href="http://www.propheta.ru/2009/11/debconf-tmp-noexec.html" title="debconf и /tmp с флагом noexec" /><author><name>Князь</name><uri>http://www.blogger.com/profile/11218942243308963007</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="15117379851453659769" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7800991272705950027.post-2124112202010378535</id><published>2009-11-14T12:13:00.009+09:00</published><updated>2009-11-14T19:37:28.109+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="freebsd" /><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="IT" /><category scheme="http://www.blogger.com/atom/ns#" term="заметка" /><category scheme="http://www.blogger.com/atom/ns#" term="shell" /><title type="text">Запрет запуска второй копии скрипта</title><content type="html">Пример кода с пояснениями&lt;pre class="number"&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;pid_file=/tmp/script-name.pid&lt;br /&gt;&lt;br /&gt;#########################&lt;br /&gt;# Создаем файл с правом только на чтение&lt;br /&gt;# и вписываем туда идентификатор процесса (pid)&lt;br /&gt;umask 333&lt;br /&gt;(echo $$ &gt; "$pid_file") 2&gt;/dev/null&lt;br /&gt;&lt;br /&gt;#########################&lt;br /&gt;# Если процесс уже запущен, то попытка записи pid&lt;br /&gt;# в файл будет завершена с ошибкой&lt;br /&gt;if [ $? -ne 0 ]&lt;br /&gt;then&lt;br /&gt;        umask 22&lt;br /&gt;&lt;br /&gt;        echo "Already started :("&lt;br /&gt;        exit 1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;umask 22&lt;br /&gt;#########################&lt;br /&gt;# Что-то долго делаем...&lt;br /&gt;#########################&lt;br /&gt;&lt;br /&gt;#########################&lt;br /&gt;# Удаляем файл с pid&lt;br /&gt;rm -f "$pid_file"&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7800991272705950027-2124112202010378535?l=www.propheta.ru' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.propheta.ru/feeds/2124112202010378535/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=7800991272705950027&amp;postID=2124112202010378535" title="Комментарии: 9" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/2124112202010378535" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/2124112202010378535" /><link rel="alternate" type="text/html" href="http://www.propheta.ru/2009/11/blog-post.html" title="Запрет запуска второй копии скрипта" /><author><name>Князь</name><uri>http://www.blogger.com/profile/11218942243308963007</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="15117379851453659769" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7800991272705950027.post-7164266478849772738</id><published>2009-11-01T10:53:00.026+09:00</published><updated>2009-11-14T23:50:51.167+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="IT" /><category scheme="http://www.blogger.com/atom/ns#" term="заметка" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu" /><title type="text">WiFi vs Ubuntu Karmic Koala</title><content type="html">Радость от обновления Ubuntu на своем ноутбуке (Dell Vostro A860) до версии 9.10 Karmic Koala омрачилась нерабочим вайфаем. Причем в логах наблюдалась абсолютная тишина. Модуль ath5k грузится без ошибки и правильно распознает чип от Atheros. А Network Manager скупо пишет "Устройство не готово".&lt;br /&gt;После продолжительного гугления выяснилось, что все дело в некорректной работе функциональной кнопки (Fn + F11), отвечающей за включение/отключение вайфая и блютуза. К слову &amp;ndash; я им никогда и не пользовался, так как казалось, она как-то не так работает.&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; tail /sys/class/rfkill/*/{state,name,type,persistent}&lt;/pre&gt;&lt;pre&gt;==&gt; /sys/class/rfkill/rfkill1/state &lt;==&lt;br /&gt;0&lt;br /&gt;&lt;br /&gt;==&gt; /sys/class/rfkill/rfkill2/state &lt;==&lt;br /&gt;0&lt;br /&gt;&lt;br /&gt;==&gt; /sys/class/rfkill/rfkill3/state &lt;==&lt;br /&gt;0&lt;br /&gt;&lt;br /&gt;==&gt; /sys/class/rfkill/rfkill1/name &lt;==&lt;br /&gt;phy0&lt;br /&gt;&lt;br /&gt;==&gt; /sys/class/rfkill/rfkill2/name &lt;==&lt;br /&gt;dell-wifi&lt;br /&gt;&lt;br /&gt;==&gt; /sys/class/rfkill/rfkill3/name &lt;==&lt;br /&gt;dell-bluetooth&lt;br /&gt;&lt;br /&gt;==&gt; /sys/class/rfkill/rfkill1/type &lt;==&lt;br /&gt;wlan&lt;br /&gt;&lt;br /&gt;==&gt; /sys/class/rfkill/rfkill2/type &lt;==&lt;br /&gt;wlan&lt;br /&gt;&lt;br /&gt;==&gt; /sys/class/rfkill/rfkill3/type &lt;==&lt;br /&gt;bluetooth&lt;br /&gt;&lt;br /&gt;==&gt; /sys/class/rfkill/rfkill1/persistent &lt;==&lt;br /&gt;0&lt;br /&gt;&lt;br /&gt;==&gt; /sys/class/rfkill/rfkill2/persistent &lt;==&lt;br /&gt;0&lt;br /&gt;&lt;br /&gt;==&gt; /sys/class/rfkill/rfkill3/persistent &lt;==&lt;br /&gt;0&lt;/pre&gt;Как видим, &lt;code&gt;rfkill1&lt;/code&gt; и &lt;code&gt;rfkill2&lt;/code&gt; имеют тип &lt;code&gt;wlan&lt;/code&gt;. Состояние (state) у обоих равно &lt;code&gt;0&lt;/code&gt;, означающему &lt;code&gt;SOFT LOCK&lt;/code&gt;. Кроме состояния &lt;code&gt;0&lt;/code&gt; могут быть &lt;code&gt;1&lt;/code&gt; и &lt;code&gt;2&lt;/code&gt;, &lt;code&gt;UNLOCK&lt;/code&gt; и &lt;code&gt;HARD LOCK&lt;/code&gt; соответственно.&lt;br /&gt;Вся проблема состоит в том, что при нажатии на упомянутую ранее функциональную кнопку состояние переключается только между значениями &lt;code&gt;SOFT LOCK&lt;/code&gt; и &lt;code&gt;HARD LOCK&lt;/code&gt;, минуя &lt;code&gt;UNLOCK&lt;/code&gt;. Из-за этого блокируется переход интерфейса файвая в активный режим, наглядно демонстрируемый командой&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; sudo ifconfig wlan0 up&lt;/pre&gt;&lt;pre&gt;SIOCSIFFLAGS: Unknown error 132&lt;/pre&gt;Решение состоит в принудительном переводе в состояние &lt;code&gt;UNLOCK&lt;/code&gt;.&lt;br /&gt;Для этого пишем простой скрипт&lt;pre class="number"&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;for i in /sys/class/rfkill/rfkill*/type;&lt;br /&gt;do&lt;br /&gt; type="`cat $i`"&lt;br /&gt; if [ "$type" = "wlan" ];&lt;br /&gt; then&lt;br /&gt;  n="`echo $i | sed -r 's%/type$%%'`";&lt;br /&gt;  echo 1 &gt; ${n}/state;&lt;br /&gt; fi;&lt;br /&gt;done;&lt;/pre&gt;Сохраняем скрипт в файл «&lt;code&gt;/usr/local/sbin/unlock-wlan&lt;/code&gt;» и делаем его исполняемым&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; sudo chmod +x /usr/local/sbin/unlock-wlan&lt;/pre&gt;После ручного запуска скрипта надо перезапускать &lt;code&gt;Network Manager&lt;/code&gt; &amp;ndash; иначе он ничего не заметит.&lt;br /&gt;Теперь настраиваем &lt;code&gt;Upstart&lt;/code&gt; для исполнения нашего скрипта при загрузке системы, перед стартом &lt;code&gt;Network Manager&lt;/code&gt;. Для этого создаем файл «&lt;code&gt;/etc/init/unlock-wlan.conf&lt;/code&gt;»&lt;pre class="number"&gt;# unlock-wlan - unlock wireless device&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;description "unlock wireless device"&lt;br /&gt;&lt;br /&gt;# Скрипт запускается перед настройкой сетевых интерфейсов&lt;br /&gt;start on starting networking&lt;br /&gt;&lt;br /&gt;task&lt;br /&gt;&lt;br /&gt;exec /usr/local/sbin/unlock-wlan&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7800991272705950027-7164266478849772738?l=www.propheta.ru' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.propheta.ru/feeds/7164266478849772738/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=7800991272705950027&amp;postID=7164266478849772738" title="Комментарии: 2" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/7164266478849772738" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/7164266478849772738" /><link rel="alternate" type="text/html" href="http://www.propheta.ru/2009/11/wireless-vs-ubuntu-karmic-koala.html" title="WiFi vs Ubuntu Karmic Koala" /><author><name>Князь</name><uri>http://www.blogger.com/profile/11218942243308963007</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="15117379851453659769" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7800991272705950027.post-6125842951434992476</id><published>2009-10-30T12:04:00.006+09:00</published><updated>2009-10-30T12:12:27.394+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="новости" /><category scheme="http://www.blogger.com/atom/ns#" term="IT" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu" /><title type="text">По НТВ рассказали про релиз Ubuntu 9.10 Karmic Koala</title><content type="html">Запись сюжета можно найти по ссылке: &lt;a href="http://www.ntv.ru/novosti/178965/" rel="nofollow"&gt;http://www.ntv.ru/novosti/178965/&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7800991272705950027-6125842951434992476?l=www.propheta.ru' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.propheta.ru/feeds/6125842951434992476/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=7800991272705950027&amp;postID=6125842951434992476" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/6125842951434992476" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/6125842951434992476" /><link rel="alternate" type="text/html" href="http://www.propheta.ru/2009/10/blog-post_30.html" title="По НТВ рассказали про релиз Ubuntu 9.10 Karmic Koala" /><author><name>Князь</name><uri>http://www.blogger.com/profile/11218942243308963007</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="15117379851453659769" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7800991272705950027.post-7437293654354386466</id><published>2009-10-04T11:24:00.010+10:00</published><updated>2009-10-04T12:41:51.711+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="IT" /><title type="text">Ответ на свой вопрос, заданный министру связи РФ</title><content type="html">На днях я по электронной почте получил ответ на &lt;a href="http://otvet.mail.ru/question/28980458/" rel="nofollow"&gt;вопрос&lt;/a&gt;, заданный в ходе онлайн-конференции министра Щеголева Игоря Олеговича 2 сентября сего года. Чем был несколько удивлен.&lt;br /&gt;Собственно сам текст вопроса таков: «Когда на Дальнем Востоке (к примеру - в Якутии) появятся ДОСТУПНЫЕ безлимитные тарифы, а не 2 рубля за мегабайт? До сих пор в Якутске ни у одного из интернет-провайдеров нет вменяемых цен, не говоря уже о доступных простому человеку безлимитных тарифах. У всех цена за мегабайт крутится около двух рублей, с небольшой разницей. Для сравнения - в Москве безлимитный тариф стоит от ста рублей. У нас же - триста рублей - только абоненская плата без учета интернет-трафика.»&lt;br /&gt;&lt;br /&gt;Вопрос видимо переадресовали ОАО «Дальсвязь», владельцу самого крупного интернет-провайдера Якутии ОАО «Сахателеком». &lt;br /&gt;Ответ был таков: «Уважаемый абонент!&lt;br /&gt;К сожалению, на сегодняшний день «ОАО Сахателеком» не имеет возможности предоставить безлимитные тарифные планы по доступным ценам для массового рынка.  Сложившаяся ситуация обусловлена несколькими объективными факторами, в т.ч. отсутствием у ОАО «Сахателеком» собственной технической инфраструктуры (собственных зоновых цифровых каналов связи (ВОЛС, ЦРРЛ) на большинстве направлений), а также высокой стоимостью аренды каналов по этим направлениям как цифровых, так и спутниковых.&lt;br /&gt;Тем не менее, ОАО «Сахателеком» проводит целенаправленную политику по повышению привлекательности тарифных планов на услуги доступа в интернет для пользователей с целью увеличения проникновения на рынок ШПД: снижает тарифы на подключение к услугам ШПД, вводит более привлекательные тарифные планы на интернет-трафик и т.д.&lt;br /&gt;&lt;br /&gt;_____________________________________&lt;br /&gt;Департамент информационно-аналитического обеспечения ОАО "Дальсвязь"&lt;br /&gt;тел. (4232) 208 500, доб. 1100, 1101, 1102, 1104&lt;br /&gt;факс (4232) 40 80 30&lt;br /&gt;http://www.dsv.ru»&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/7800991272705950027-7437293654354386466?l=www.propheta.ru' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.propheta.ru/feeds/7437293654354386466/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=7800991272705950027&amp;postID=7437293654354386466" title="Комментарии: 8" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/7437293654354386466" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/7437293654354386466" /><link rel="alternate" type="text/html" href="http://www.propheta.ru/2009/10/blog-post.html" title="Ответ на свой вопрос, заданный министру связи РФ" /><author><name>Князь</name><uri>http://www.blogger.com/profile/11218942243308963007</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="15117379851453659769" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7800991272705950027.post-3746711522394516390</id><published>2009-09-20T10:53:00.005+10:00</published><updated>2009-09-26T15:05:58.424+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="новость" /><category scheme="http://www.blogger.com/atom/ns#" term="IT" /><title type="text">Онлайновые сервисы для сисадмина</title><content type="html">Создал сайт «&lt;a href="http://ping.propheta.ru/"&gt;ping.propheta.ru&lt;/a&gt;» с онлайновыми сервисами для системных администраторов. Пока доступны только два сервиса «&lt;a href="http://ping.propheta.ru/index.php/ipcalc"&gt;IP Calculator&lt;/a&gt;» и «&lt;a href="http://ping.propheta.ru/index.php/about"&gt;Сведения о посетителе&lt;/a&gt;». Но в дальнейшем планирую добавить ещё.&lt;br /&gt;Буду рад если выскажете свои пожелания и предложения по развитию сайта.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;UPD&lt;/span&gt;: Добавил сервис &lt;a href="http://ping.propheta.ru/index.php/whois"&gt;WHOIS&lt;/a&gt;. Через него можно получить информацию как по IP-адресу, так и по доменному имени.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7800991272705950027-3746711522394516390?l=www.propheta.ru' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.propheta.ru/feeds/3746711522394516390/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=7800991272705950027&amp;postID=3746711522394516390" title="Комментарии: 6" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/3746711522394516390" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/3746711522394516390" /><link rel="alternate" type="text/html" href="http://www.propheta.ru/2009/09/blog-post.html" title="Онлайновые сервисы для сисадмина" /><author><name>Князь</name><uri>http://www.blogger.com/profile/11218942243308963007</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="15117379851453659769" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7800991272705950027.post-8888076706847217077</id><published>2009-08-08T10:47:00.002+10:00</published><updated>2009-08-08T10:58:35.217+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="IT" /><category scheme="http://www.blogger.com/atom/ns#" term="юмор" /><title type="text">ЛОР отжигает :)</title><content type="html">Порадовал &lt;a href="http://www.linux.org.ru/jump-message.jsp?msgid=3942374&amp;amp;cid=3942611" rel="nofollow"&gt;коммент&lt;/a&gt; &lt;a href="http://www.linux.org.ru/view-message.jsp?msgid=3942374" rel="nofollow"&gt;новости&lt;/a&gt; из ЛОРа о покупке гуглом On2 – разработчика кодеков и алгоритмов для сжатия видео, в своё время разработавшего и открывшего исходные коды VP3 (будущий кодек theora):&lt;br /&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;“&lt;/span&gt;&lt;br /&gt;Открыть кодек - $106.5 млн.&lt;br /&gt;Дать пинка m$ и adobe с их flash и $ilverlight - бесценно.&lt;span style="font-weight: bold;font-size:180%;" &gt;&lt;br /&gt;”&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7800991272705950027-8888076706847217077?l=www.propheta.ru' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.propheta.ru/feeds/8888076706847217077/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=7800991272705950027&amp;postID=8888076706847217077" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/8888076706847217077" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/8888076706847217077" /><link rel="alternate" type="text/html" href="http://www.propheta.ru/2009/08/blog-post.html" title="ЛОР отжигает :)" /><author><name>Князь</name><uri>http://www.blogger.com/profile/11218942243308963007</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="15117379851453659769" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7800991272705950027.post-3094459308720664062</id><published>2009-06-27T00:23:00.007+10:00</published><updated>2009-11-14T12:25:16.534+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="IT" /><category scheme="http://www.blogger.com/atom/ns#" term="заметка" /><title type="text">Какой дистрибутив установлен linux на компьютер</title><content type="html">можно узнать с помощью утилиты &lt;code&gt;lsb_release&lt;/code&gt;. &lt;br /&gt;Пример использования&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; lsb_release -irc&lt;/pre&gt;&lt;pre&gt;Distributor ID: Ubuntu&lt;br /&gt;Release: 9.04&lt;br /&gt;Codename: jaunty&lt;/pre&gt;Если этой утилиты в исследуемой системе нет, то версию дистрибутивов, основанных на Debian/RedHat/Gentoo можно узнать так (спасибо &lt;a href="http://jahroslav.blogspot.com/" rel="nofollow"&gt;Ярославу Шаповалу&lt;/a&gt;)&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; cat /etc/*release*&lt;/pre&gt;в дистрибутивах, основанных на Slackware&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; cat /etc/slackware-version&lt;/pre&gt;в SUSE&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; cat /etc/issue&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7800991272705950027-3094459308720664062?l=www.propheta.ru' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.propheta.ru/feeds/3094459308720664062/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=7800991272705950027&amp;postID=3094459308720664062" title="Комментарии: 12" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/3094459308720664062" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/3094459308720664062" /><link rel="alternate" type="text/html" href="http://www.propheta.ru/2009/06/linux.html" title="Какой дистрибутив установлен linux на компьютер" /><author><name>Князь</name><uri>http://www.blogger.com/profile/11218942243308963007</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="15117379851453659769" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7800991272705950027.post-6868931344591125737</id><published>2009-06-13T15:52:00.015+10:00</published><updated>2009-06-15T23:10:57.465+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="IT" /><category scheme="http://www.blogger.com/atom/ns#" term="заметка" /><category scheme="http://www.blogger.com/atom/ns#" term="net" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu" /><title type="text">Настройка DHCP клиента в Ubuntu</title><content type="html">Дополнительная настройка DHCP-клиента может понадобится когда у вас есть локальный DNS-сервер или если DHCP-сервер провайдера работает с перебоями.&lt;br /&gt;&lt;br /&gt;Пример файла конфигурации &amp;laquo;&lt;code&gt;/etc/dhcp3/dhclient.conf&lt;/code&gt;&amp;raquo;&lt;pre class="number"&gt;#&lt;br /&gt;# dhcp3-client 3.1.1-5ubuntu8&lt;br /&gt;#&lt;br /&gt;# Сюда вписываем локальный адрес DNS-сервера&lt;br /&gt;prepend domain-name-servers 127.0.0.1;&lt;br /&gt;&lt;br /&gt;# Какие данные нужно затребовать с DHCP-сервера&lt;br /&gt;request subnet-mask, broadcast-address, time-offset, routers,&lt;br /&gt;        # Комментируем, так как у нас локальный DNS-сервер&lt;br /&gt;        # domain-name, domain-name-servers, domain-search, host-name,&lt;br /&gt;        netbios-name-servers, netbios-scope, interface-mtu,&lt;br /&gt;        rfc3442-classless-static-routes, ntp-servers;&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# dhclient будет использовать эти настройки, в то время,&lt;br /&gt;# когда недоступен DHCP-сервер провайдера.&lt;br /&gt;#&lt;br /&gt;# Если не знаете что писать - загляните в файл&lt;br /&gt;#      /var/lib/dhcp3/dhclient.leases&lt;br /&gt;#&lt;br /&gt;lease {&lt;br /&gt;        interface "eth1";&lt;br /&gt;        fixed-address 72.xxx.xxx.xxx;&lt;br /&gt;        option subnet-mask 255.255.xxx.xxx;&lt;br /&gt;        option time-offset 32400;&lt;br /&gt;        # Если прописать адреса роутеров, dhclient проверит наличие&lt;br /&gt;        # первого роутера. В случае, если роутер не ответил&lt;br /&gt;        # на пинг, этот блок (lease) отбрасывается.&lt;br /&gt;        option routers 72.xxx.xxx.1;&lt;br /&gt;        option dhcp-lease-time 1800;&lt;br /&gt;        option dhcp-message-type 5;&lt;br /&gt;        option domain-name-servers 127.0.0.1;&lt;br /&gt;        option dhcp-server-identifier 72.xxx.xxx.xxx;&lt;br /&gt;        # По документации следующие строки должны быть&lt;br /&gt;        # в обязательном порядке. Время желательно&lt;br /&gt;        # выставить как можно большее, чтобы не стало&lt;br /&gt;        # просроченным.&lt;br /&gt;        renew  2 2037/01/12 00:00:00;&lt;br /&gt;        rebind 2 2037/01/12 00:00:00;&lt;br /&gt;        expire 2 2037/01/12 00:00:00;&lt;br /&gt;}&lt;/pre&gt;Более подробно о других настройках можно прочитать в &amp;laquo;&lt;code&gt;man dhclient.conf&lt;/code&gt;&amp;raquo;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7800991272705950027-6868931344591125737?l=www.propheta.ru' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.propheta.ru/feeds/6868931344591125737/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=7800991272705950027&amp;postID=6868931344591125737" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/6868931344591125737" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/6868931344591125737" /><link rel="alternate" type="text/html" href="http://www.propheta.ru/2009/06/dhcp-ubuntu.html" title="Настройка DHCP клиента в Ubuntu" /><author><name>Князь</name><uri>http://www.blogger.com/profile/11218942243308963007</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="15117379851453659769" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7800991272705950027.post-8307034408278419001</id><published>2009-06-08T11:16:00.054+10:00</published><updated>2009-07-07T11:44:30.005+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="IT" /><category scheme="http://www.blogger.com/atom/ns#" term="статья" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu" /><title type="text">Работа Ubuntu Linux без носителя</title><content type="html">Нужно было добиться загрузки Ubuntu в оперативную память компьютера и дальнейшей работы  без носителя, с которого он  был загружен. Решение получилось достаточно простым.&lt;br /&gt;Вкратце идея такая: &lt;code&gt;initrd.img&lt;/code&gt; изменяется так, чтобы, после загрузки и старта ядра, с носителя в память копировался файл со сжатым образом файловой системы корневого раздела (SquashFS). Далее поверх корневого раздела монтируется aufs-tmpfs и стартует Ubuntu.&lt;br /&gt;&lt;br /&gt;Ниже будет описание как создать загрузочный iso-образ и бутовую USB-флешку.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Создаем директории&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; mkdir -p ~/ubuntu-ram/{etc,tmp,image,scripts}&lt;/pre&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Устанавливаем необходимые пакеты&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; sudo aptitude install lilo mtools genisoimage debootstrap syslinux squashfs-tools&lt;/pre&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Копируем настройки initramfs&lt;br /&gt;Конфиги initramfs для iso-образа&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; cp -a /etc/initramfs-tools ~/ubuntu-ram/etc/iso&lt;/pre&gt;Конфиги initramfs для iso-образа&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; cp -a /etc/initramfs-tools ~/ubuntu-ram/etc/usb&lt;/pre&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Настраиваем окружение загружаемой системы&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; export IMGROOT=~/ubuntu-ram/image&lt;br /&gt;&lt;strong&gt;$&lt;/strong&gt; sudo -E -s&lt;br /&gt;&lt;strong&gt;#&lt;/strong&gt; debootstrap jaunty $IMGROOT http://mirror.ubuntu.optilink.ru/ubuntu/&lt;br /&gt;&lt;strong&gt;#&lt;/strong&gt; echo "aufs  /  aufs  rw  0  0" &amp;gt; $IMGROOT/etc/fstab&lt;br /&gt;&lt;strong&gt;#&lt;/strong&gt; cp /etc/apt/sources.list $IMGROOT/etc/apt/&lt;br /&gt;&lt;strong&gt;#&lt;/strong&gt; cp /etc/resolv.conf $IMGROOT/etc/&lt;br /&gt;&lt;strong&gt;#&lt;/strong&gt; cat &amp;lt;&amp;lt;EOF &amp;gt; $IMGROOT/etc/hosts&lt;br /&gt;127.0.0.1   localhost.localdomain   localhost&lt;br /&gt;127.0.1.1   hostname.domain         hostname&lt;br /&gt;EOF&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;#&lt;/strong&gt; cat &amp;lt;&amp;lt;EOF &amp;gt; $IMGROOT/etc/network/interfaces&lt;br /&gt;auto lo&lt;br /&gt;iface lo loopback&lt;br /&gt;EOF&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;#&lt;/strong&gt; echo "hostname.domain" &amp;gt; $IMGROOT/etc/hostname&lt;br /&gt;&lt;strong&gt;#&lt;/strong&gt; mount -t proc none $IMGROOT/proc&lt;br /&gt;&lt;strong&gt;#&lt;/strong&gt; mount -o bind /dev $IMGROOT/dev&lt;br /&gt;&lt;strong&gt;#&lt;/strong&gt; mount -t devpts none $IMGROOT/dev/pts&lt;br /&gt;&lt;strong&gt;#&lt;/strong&gt; mount -t sysfs  none $IMGROOT/sys&lt;/pre&gt;Входим в изолированное окружение&lt;pre&gt;&lt;strong&gt;#&lt;/strong&gt; chroot $IMGROOT bash&lt;/pre&gt;Создаем аккаунт администратора и русскую локаль. Также разрешаем группе &lt;code&gt;adm&lt;/code&gt; использование команды &lt;code&gt;sudo&lt;/code&gt;&lt;pre&gt;&lt;strong&gt;#&lt;/strong&gt; adduser --gecos 'System Administrator' demiurg&lt;br /&gt;&lt;strong&gt;#&lt;/strong&gt; usermod -a -G adm demiurg&lt;br /&gt;&lt;strong&gt;#&lt;/strong&gt; echo "@adm ALL=NOPASSWD: ALL" &amp;gt;&amp;gt; $IMGROOT/etc/sudoers&lt;br /&gt;&lt;strong&gt;#&lt;/strong&gt; locale-gen ru_RU.UTF-8&lt;/pre&gt;Устанавливаем ядро и требуемые утилиты&lt;pre&gt;&lt;strong&gt;#&lt;/strong&gt; aptitude update&lt;br /&gt;&lt;strong&gt;#&lt;/strong&gt; aptitude install linux-image-server grub aufs-tools squashfs-tools&lt;/pre&gt;Настраиваем часовой пояс и консоль&lt;pre&gt;&lt;strong&gt;#&lt;/strong&gt; dpkg-reconfigure tzdata&lt;br /&gt;&lt;strong&gt;#&lt;/strong&gt; dpkg-reconfigure console-setup&lt;/pre&gt;Далее система настраивается под себя (ставим дополнительные программы, правим конфиги под себя).&lt;br /&gt;&lt;br /&gt;Выходим из изолированного окружения&lt;pre&gt;&lt;strong&gt;#&lt;/strong&gt; aptitude clean&lt;br /&gt;&lt;strong&gt;#&lt;/strong&gt; exit&lt;/pre&gt;Отмонтируем файловые системы&lt;pre&gt;&lt;strong&gt;#&lt;/strong&gt; umount $IMGROOT/proc&lt;br /&gt;&lt;strong&gt;#&lt;/strong&gt; umount $IMGROOT/dev/pts&lt;br /&gt;&lt;strong&gt;#&lt;/strong&gt; umount $IMGROOT/dev&lt;br /&gt;&lt;strong&gt;#&lt;/strong&gt; umount $IMGROOT/sys&lt;/pre&gt;Выходим из режима суперпользователя&lt;pre&gt;&lt;strong&gt;#&lt;/strong&gt; exit&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Переходим к настройке конфигов initramfs для iso-образа&lt;br /&gt;Создаём так называемый хук (hook) - скрипт, вызываемый утилитой initramfs&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; cat &amp;lt;&amp;lt;EOF &amp;gt; $IMGROOT/../etc/iso/hooks/load_modules&lt;/pre&gt;&lt;pre class="number"&gt;#!/bin/sh&lt;br /&gt;set -e&lt;br /&gt;&lt;br /&gt;PREREQ=""&lt;br /&gt;&lt;br /&gt;prereqs () {&lt;br /&gt;echo "$PREREQ"&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;case $1 in&lt;br /&gt;prereqs)&lt;br /&gt;prereqs&lt;br /&gt;exit 0&lt;br /&gt;;;&lt;br /&gt;esac&lt;br /&gt;&lt;br /&gt;. /usr/share/initramfs-tools/hook-functions&lt;br /&gt;&lt;br /&gt;force_load squashfs&lt;br /&gt;force_load isofs&lt;br /&gt;force_load aufs&lt;br /&gt;&lt;br /&gt;exit 0&lt;/pre&gt;&lt;pre&gt;EOF&lt;/pre&gt;&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; chmod +x $IMGROOT/../etc/iso/hooks/load_modules&lt;/pre&gt;Создаем скрипты, выполняющиеся во время загрузки initrd&lt;br /&gt;Скрипт, закидывающий образ системы в память&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; cat &amp;lt;&amp;lt;EOF &amp;gt; $IMGROOT/../etc/iso/scripts/init-premount/udev_into_ram&lt;/pre&gt;&lt;pre class="number"&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;PREREQ=""&lt;br /&gt;&lt;br /&gt;prereqs () {&lt;br /&gt;echo "$PREREQ"&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;case $1 in&lt;br /&gt;prereqs)&lt;br /&gt;prereqs&lt;br /&gt;exit 0&lt;br /&gt;;;&lt;br /&gt;esac&lt;br /&gt;&lt;br /&gt;mknod /dev/loop0 b 7 0&lt;br /&gt;mkdir /disk&lt;br /&gt;&lt;br /&gt;WAIT_COUNT=15&lt;br /&gt;while [ ! -e /dev/scd0 ] &amp;amp;&amp;amp; [ "$WAIT_COUNT" -gt 0 ]&lt;br /&gt;do&lt;br /&gt;tmp=$((WAIT_COUNT-=1))&lt;br /&gt;sleep 1&lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;echo -n "Please wait... "&lt;br /&gt;mount -t iso9660 -o ro /dev/scd0 /disk&lt;br /&gt;cp /disk/root.sqfs /&lt;br /&gt;echo "done"&lt;br /&gt;umount /disk &amp;amp;&amp;amp; rm -Rf /disk&lt;/pre&gt;&lt;pre&gt;EOF&lt;/pre&gt;&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; chmod +x $IMGROOT/../etc/iso/scripts/init-premount/udev_into_ram&lt;/pre&gt;Скрипт, монтирующий файловую систему aufs&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; cat &amp;lt;&amp;lt;EOF &amp;gt; $IMGROOT/../etc/iso/scripts/init-bottom/aufs_root&lt;/pre&gt;&lt;pre class="number"&gt;#!/bin/sh&lt;br /&gt;#&lt;br /&gt;#  https://help.ubuntu.com/community/aufsRootFileSystemOnUsbFlash&lt;br /&gt;#&lt;br /&gt;#  Copyright 2008 Nicholas A. Schembri State College PA USA&lt;br /&gt;#&lt;br /&gt;#  This program is free software: you can redistribute it and/or modify&lt;br /&gt;#  it under the terms of the GNU General Public License as published by&lt;br /&gt;#  the Free Software Foundation, either version 3 of the License, or&lt;br /&gt;#  (at your option) any later version.&lt;br /&gt;#&lt;br /&gt;#  This program is distributed in the hope that it will be useful,&lt;br /&gt;#  but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;#  GNU General Public License for more details.&lt;br /&gt;#&lt;br /&gt;#    You should have received a copy of the GNU General Public License&lt;br /&gt;#    along with this program.  If not, see&lt;br /&gt;#    &amp;lt;http://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;&lt;br /&gt;# Thank you Voyage Linux for the idea, http://voyage.hk/ Great job on release 0.5&lt;br /&gt;#&lt;br /&gt;# Tested with 8.04.1&lt;br /&gt;#&lt;br /&gt;#&lt;br /&gt;# ****************************************************************************************&lt;br /&gt;#&lt;br /&gt;#                                 Change log&lt;br /&gt;#&lt;br /&gt;# 2008.08.01  Added debugging comments in "drop to a shell" section. grub option aufs=tmpfs-debug will stop the init script.&lt;br /&gt;#             reviewed *********** fix fstab on tmpfs ******************&lt;br /&gt;#             rootaufs failed when system was booted with /dev/xxx and fstab had uuid= info.&lt;br /&gt;#             BlaYO pointed out the best and simplest solution was to use grep -v. Grep replaces a sed one liner.&lt;br /&gt;#             Add the comment block to fstab&lt;br /&gt;#     &lt;br /&gt;#&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;case $1 in&lt;br /&gt;prereqs)&lt;br /&gt;exit 0&lt;br /&gt;;;&lt;br /&gt;esac&lt;br /&gt;&lt;br /&gt;export aufs&lt;br /&gt;&lt;br /&gt;for x in $(cat /proc/cmdline); do&lt;br /&gt;case $x in&lt;br /&gt;root=*)&lt;br /&gt;ROOTNAME=${x#root=}&lt;br /&gt;;;&lt;br /&gt;aufs=*)&lt;br /&gt;aufs=${x#aufs=}&lt;br /&gt;case $aufs in&lt;br /&gt;tmpfs-debug)&lt;br /&gt;    aufs=tmpfs&lt;br /&gt;    aufsdebug=1&lt;br /&gt;    ;;&lt;br /&gt;esac&lt;br /&gt;;;&lt;br /&gt;esac&lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;if [ "$aufs" != "tmpfs" ]; then&lt;br /&gt;#not set in boot loader&lt;br /&gt;#I'm not loved. good bye&lt;br /&gt;exit 0&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;# This is a simple overview of the steps needed to use aufs on the root file system and see the /rw and /ro  branches.&lt;br /&gt;# initramfs init-botton script&lt;br /&gt;# move the root file system to aufs/unionfs readonly /ro&lt;br /&gt;# root is mounted on ${rootmnt}&lt;br /&gt;# create tmpfs on /rw&lt;br /&gt;# create a aufs using /ro and /rw&lt;br /&gt;# put some files on the tmpfs to fix mtab and fstab&lt;br /&gt;# move aufs to rootmnt to finish the init process.&lt;br /&gt;# No changes to the root file system are made by this script.&lt;br /&gt;#&lt;br /&gt;#  Why!&lt;br /&gt;#  This will allow you to use a usb flash drive and control what is written to the drive.&lt;br /&gt;#  no need to rebuild the squashfs file just to add a program.&lt;br /&gt;#  boot to single user mode.  The system works the way you expect. boot aufs=tmpfs and no changes are written to the flash.&lt;br /&gt;#  run ubuntu on an eeePC .&lt;br /&gt;&lt;br /&gt;# Install&lt;br /&gt;# Install ubuntu 8.04 Hardy. Hardy has aufs installed by default&lt;br /&gt;# apt-get update&lt;br /&gt;# apt-get dist-upgrade&lt;br /&gt;# apt-get install aufs-tools&lt;br /&gt;# echo aufs &amp;gt;&amp;gt; /etc/initramfs-tools/modules&lt;br /&gt;# put this file in /etc/initramfs-tools/scripts/init-bottom/rootaufs&lt;br /&gt;# chmod 0755 rootaufs&lt;br /&gt;# # clean up menu.lst&lt;br /&gt;# update-grub&lt;br /&gt;# update-initramfs -u&lt;br /&gt;# vi /boot/grub/menu.lst&lt;br /&gt;# add aufs=tmpfs to the default entry.&lt;br /&gt;# do not add this line to single user mode.&lt;br /&gt;# boot to single user mode in order to install software.&lt;br /&gt;# note: if your home account is on the root file system, your files are in ram and not saved.&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;echo&lt;br /&gt;echo "       root-aufs:  Setting up aufs on ${rootmnt} as root file system "&lt;br /&gt;echo&lt;br /&gt;&lt;br /&gt;modprobe -q --use-blacklist aufs&lt;br /&gt;if [ $? -ne 0 ]; then&lt;br /&gt;echo    root-aufs error:      Failed to load aufs.ko&lt;br /&gt;exit 0&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;#make the mount points on the init root file system&lt;br /&gt;mkdir /aufs&lt;br /&gt;mkdir /rw&lt;br /&gt;mkdir /ro&lt;br /&gt;&lt;br /&gt;# mount the temp file system and move real root out of the way&lt;br /&gt;mount -t tmpfs aufs-tmpfs /rw&lt;br /&gt;mount --move ${rootmnt} /ro&lt;br /&gt;if [ $? -ne 0 ]; then&lt;br /&gt;echo    root-aufs error:    ${rootmnt}  failed to move to /ro&lt;br /&gt;exit 0&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;mount -t aufs -o dirs=/rw:/ro=ro aufs /aufs&lt;br /&gt;if [ $? -ne 0 ]; then&lt;br /&gt;echo    root-aufs error:      Failed to mount /aufs files system&lt;br /&gt;exit 0&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#test for mount points on aufs file system&lt;br /&gt;[  -d /aufs/ro ] || mkdir /aufs/ro&lt;br /&gt;[  -d /aufs/rw ] || mkdir /aufs/rw&lt;br /&gt;&lt;br /&gt;# the real root file system is hidden on /ro of the init file system.  move it to /ro&lt;br /&gt;mount --move /ro /aufs/ro&lt;br /&gt;if [ $? -ne 0 ]; then&lt;br /&gt;echo    root-aufs error:      Failed to move /ro /aufs/ro&lt;br /&gt;exit 0&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;# tmpfs file system is hidden on /rw&lt;br /&gt;mount --move /rw /aufs/rw&lt;br /&gt;if [ $? -ne 0 ]; then&lt;br /&gt;echo    root-aufs error:      Failed to move /rw /aufs/rw&lt;br /&gt;exit 0&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#*********** fix fstab on tmpfs ******************&lt;br /&gt;# test for /dev/sdx&lt;br /&gt;# this is not on the real file system.  This is created on the tmpfs each time the system boots.&lt;br /&gt;# The init process will try to mount the root filesystem listed in fstab. / and swap must be removed.&lt;br /&gt;# the root file system must be mounted on /ro not on /&lt;br /&gt;&lt;br /&gt;if [ "$aufsdebug" -eq 1 ]; then&lt;br /&gt;echo  "   root-aufs debug:    Remove the root file system and swap from fstab "&lt;br /&gt;echo&lt;br /&gt;echo&lt;br /&gt;echo  "         ROOTNAME $ROOTNAME "&lt;br /&gt;echo  "         resume   $resume   "&lt;br /&gt;echo&lt;br /&gt;echo  '     BlaYO pointed out that grep can be used to quickly remove '&lt;br /&gt;echo  '      the root file system from fstab. '&lt;br /&gt;echo&lt;br /&gt;echo  '     Thank you BlaYO for the debug info.'&lt;br /&gt;echo&lt;br /&gt;&lt;br /&gt;fi&lt;br /&gt;# old code&lt;br /&gt;# I'm sure that sed can do this in one step but I want to correct on the rootname  not matching the root in fstab.&lt;br /&gt;#cat /aufs/ro/etc/fstab|sed -e s/$ROOTNAME/\#$ROOTNAME/ -e s/$resume/\#$resume/ &amp;gt;/aufs/etc/fstab&lt;br /&gt;&lt;br /&gt;#Add the comment block to fstab&lt;br /&gt;cat &amp;lt;&amp;lt;EOF &amp;gt;/aufs/etc/fstab&lt;br /&gt;#&lt;br /&gt;#   RootAufs has mounted the root file system in ram&lt;br /&gt;#&lt;br /&gt;#  This fstab is in ram and the real fstab can be found /ro/etc/fstab&lt;br /&gt;#  the root file system ' / ' has been removed.&lt;br /&gt;#  All Swap files have been removed.&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;EOF&lt;br /&gt;&lt;br /&gt;#remove root and swap from fstab&lt;br /&gt;cat /aufs/ro/etc/fstab|grep -v ' / ' | grep -v swap &amp;gt;&amp;gt;/aufs/etc/fstab&lt;br /&gt;if [ $? -ne 0 ]; then&lt;br /&gt;echo    root-aufs error:      Failed to create /aufs/etc/fstab&lt;br /&gt;#exit 0&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# add the read only file system to fstab&lt;br /&gt;#ROOTTYPE=$(/lib/udev/vol_id -t ${ROOT})&lt;br /&gt;ROOTTYPE=$(cat /proc/mounts|grep ${ROOT}|cut -d' ' -f3)&lt;br /&gt;ROOTOPTIONS=$(cat /proc/mounts|grep ${ROOT}|cut -d' ' -f4)&lt;br /&gt;echo /dev/loop0 /ro squashfs ro,relatime 0 0 &amp;gt;&amp;gt;/aufs/etc/fstab&lt;br /&gt;&lt;br /&gt;# S22mount on debian systems is not mounting  /ro correctly after boot&lt;br /&gt;# add to rc.local to correct what you see from df&lt;br /&gt;#replace last case of exit with #exit&lt;br /&gt;cat /aufs/ro/etc/rc.local|sed 's/\(.*\)exit/\1\#exit/' &amp;gt;/aufs/etc/rc.local&lt;br /&gt;echo mount -f  /ro &amp;gt;&amp;gt;/aufs/etc/rc.local&lt;br /&gt;&lt;br /&gt;# add back the root file system. mtab seems to be created by one of the init proceses.&lt;br /&gt;echo "echo aufs / aufs rw,xino=/rw/.aufs.xino,br:/rw=rw:/ro=ro 0 0 &amp;gt;&amp;gt;/etc/mtab" &amp;gt;&amp;gt;/aufs/etc/rc.local&lt;br /&gt;echo "echo aufs-tmpfs /rw tmpfs rw 0 0 &amp;gt;&amp;gt;/etc/mtab" &amp;gt;&amp;gt;/aufs/etc/rc.local&lt;br /&gt;echo exit 0 &amp;gt;&amp;gt;/aufs/etc/rc.local&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#build remountrw&lt;br /&gt;echo \#!/bin/sh &amp;gt;/aufs/bin/remountrw&lt;br /&gt;echo mount -o remount,rw ${ROOT} &amp;gt;&amp;gt;/aufs/bin/remountrw&lt;br /&gt;chmod 0700 /aufs/bin/remountrw&lt;br /&gt;&lt;br /&gt;#build remountro&lt;br /&gt;echo \#!/bin/sh &amp;gt;/aufs/bin/remountro&lt;br /&gt;echo mount -o remount,ro ${ROOT} &amp;gt;&amp;gt;/aufs/bin/remountro&lt;br /&gt;chmod 0700 /aufs/bin/remountro&lt;br /&gt;&lt;br /&gt;# This should drop to a shell. (rewrite)&lt;br /&gt;if [ "$aufsdebug" -eq 1 ]; then&lt;br /&gt;echo&lt;br /&gt;echo "   root-aufs debug:    mount --move /aufs ${rootmnt} "&lt;br /&gt;echo&lt;br /&gt;echo '   root-aufs debug:   init will stop here.   '&lt;br /&gt;echo&lt;br /&gt;exit 0&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;mount --move /aufs ${rootmnt}&lt;br /&gt;&lt;br /&gt;exit 0&lt;/pre&gt;&lt;pre&gt;EOF&lt;/pre&gt;&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; chmod +x $IMGROOT/../etc/iso/scripts/init-bottom/aufs_root&lt;/pre&gt;На этом настройка initramfs заканчивается.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Создаём скрипт, создающий iso-образ и сохраняем его в файле «&lt;code&gt;~/ubuntu-ram/scripts/make-iso.sh&lt;/code&gt;»&lt;pre class="number"&gt;#!/bin/sh&lt;br /&gt;WORKDIR=/path/to/ubuntu-ram&lt;br /&gt;SQUASHFS_ROOT=$WORKDIR/image/&lt;br /&gt;ISO_ROOT=$WORKDIR/tmp/&lt;br /&gt;&lt;br /&gt;rm -Rf $ISO_ROOT/*&lt;br /&gt;&lt;br /&gt;# Получаем версию ядра в окружении&lt;br /&gt;version=$(basename $(readlink $SQUASHFS_ROOT/initrd.img))&lt;br /&gt;version=${version#initrd.img-}&lt;br /&gt;&lt;br /&gt;mount -o bind $WORKDIR/etc/iso $SQUASHFS_ROOT/etc/initramfs-tools&lt;br /&gt;chroot $SQUASHFS_ROOT mkinitramfs -v -o /boot/initrd.img-$version $version&lt;br /&gt;umount $SQUASHFS_ROOT/etc/initramfs-tools&lt;br /&gt;&lt;br /&gt;mkdir $ISO_ROOT/isolinux&lt;br /&gt;cp $SQUASHFS_ROOT/boot/initrd.img-$version $ISO_ROOT/isolinux/initrd.gz&lt;br /&gt;cp $SQUASHFS_ROOT/boot/vmlinuz-$version $ISO_ROOT/isolinux/vmlinuz&lt;br /&gt;cp /usr/lib/syslinux/isolinux.bin $ISO_ROOT/isolinux/&lt;br /&gt;cat &amp;lt;&amp;lt;EOF &amp;gt; $ISO_ROOT/isolinux/isolinux.cfg&lt;br /&gt;DEFAULT server&lt;br /&gt;TIMEOUT 1&lt;br /&gt;LABEL server&lt;br /&gt;menu label ^Server&lt;br /&gt;kernel vmlinuz&lt;br /&gt;append initrd=initrd.gz root=/root.sqfs loop=/dev/loop0 rootfstype=squashfs aufs=tmpfs ro&lt;br /&gt;EOF&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;mksquashfs $SQUASHFS_ROOT $ISO_ROOT/root.sqfs \&lt;br /&gt;-e $SQUASHFS_ROOT/boot/* \&lt;br /&gt;$SQUASHFS_ROOT/initrd.img \&lt;br /&gt;$SQUASHFS_ROOT/vmlinuz&lt;br /&gt;&lt;br /&gt;# Создаём ISO&lt;br /&gt;mkisofs -o $WORKDIR/image.iso -r \&lt;br /&gt;  -V "MYUSBSERVER" -v -no-emul-boot \&lt;br /&gt;  -boot-load-size 4 -boot-info-table \&lt;br /&gt;  -b isolinux/isolinux.bin \&lt;br /&gt;  -c isolinux/isolinux.boot $ISO_ROOT&lt;/pre&gt;Делаем его исполняемым&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; chmod +x ~/ubuntu-ram/scripts/make-iso.sh&lt;/pre&gt;После выполнения скрипта в директории «&lt;code&gt;~/ubuntu-ram&lt;/code&gt;» будет создан требуемый iso-образ.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Создание загрузочной USB флешки.&lt;br /&gt;Создаём хук&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; cat &amp;lt;&amp;lt;EOF &amp;gt; ~/ubuntu-ram/etc/usb/hooks/load_modules&lt;/pre&gt;&lt;pre class="number"&gt;#!/bin/sh&lt;br /&gt;set -e&lt;br /&gt;&lt;br /&gt;PREREQ=""&lt;br /&gt;&lt;br /&gt;prereqs () {&lt;br /&gt;echo "$PREREQ"&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;case $1 in&lt;br /&gt;prereqs)&lt;br /&gt;prereqs&lt;br /&gt;exit 0&lt;br /&gt;;;&lt;br /&gt;esac&lt;br /&gt;&lt;br /&gt;. /usr/share/initramfs-tools/hook-functions&lt;br /&gt;&lt;br /&gt;force_load usb_storage&lt;br /&gt;force_load squashfs&lt;br /&gt;force_load vfat&lt;br /&gt;force_load aufs&lt;br /&gt;&lt;br /&gt;exit 0&lt;/pre&gt;&lt;pre&gt;EOF&lt;/pre&gt;&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; chmod +x ~/ubuntu-ram/etc/usb/hooks/load_modules&lt;/pre&gt;Копируем скрипт «&lt;code&gt;etc/iso/scripts/init-bottom/aufs_root&lt;/code&gt;» в «&lt;code&gt;etc/usb/scripts/init-bottom/aufs_root&lt;/code&gt;».&lt;br /&gt;Пишем скрипт, загружающий систему из USB-флешки в оперативную память&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; cat &amp;lt;&amp;lt;EOF &amp;gt; ~/ubuntu-ram/etc/usb/scripts/init-premount/udev_into_ram&lt;/pre&gt;&lt;pre class="number"&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;PREREQ=""&lt;br /&gt;&lt;br /&gt;prereqs () {&lt;br /&gt;echo "$PREREQ"&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;case $1 in&lt;br /&gt;prereqs)&lt;br /&gt;prereqs&lt;br /&gt;exit 0&lt;br /&gt;;;&lt;br /&gt;esac&lt;br /&gt;&lt;br /&gt;mknod /dev/loop0 b 7 0&lt;br /&gt;mkdir /disk&lt;br /&gt;&lt;br /&gt;WAIT_COUNT=15&lt;br /&gt;while [ ! -e /dev/disk/by-label/MYUSBSERVER ] &amp;amp;&amp;amp; [ "$WAIT_COUNT" -gt 0 ]&lt;br /&gt;do&lt;br /&gt;tmp=$((WAIT_COUNT-=1))&lt;br /&gt;sleep 1&lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;echo -n "Please wait... "&lt;br /&gt;mount -t vfat -o ro /dev/disk/by-label/MYUSBSERVER /disk&lt;br /&gt;cp /disk/root.sqfs /&lt;br /&gt;echo "done"&lt;br /&gt;umount /disk &amp;amp;&amp;amp; rm -Rf /disk&lt;/pre&gt;&lt;pre&gt;EOF&lt;/pre&gt;&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; chmod +x $IMGROOT/../etc/usb/scripts/init-premount/udev_into_ram&lt;/pre&gt;Ниже приведён скрипт создающий бутовую USB-флешку. Скрипт сохраняется в файл «&lt;code&gt;~/ubuntu-ram/scripts/make-usb.sh&lt;/code&gt;»&lt;pre class="number"&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;WORKDIR=/path/to/ubuntu-ram&lt;br /&gt;SQUASHFS_ROOT=$WORKDIR/image/&lt;br /&gt;ISO_ROOT=$WORKDIR/tmp/&lt;br /&gt;&lt;br /&gt;rm -Rf $ISO_ROOT/*&lt;br /&gt;&lt;br /&gt;# Получаем версию ядра в окружении&lt;br /&gt;version=$(basename $(readlink $SQUASHFS_ROOT/initrd.img))&lt;br /&gt;version=${version#initrd.img-}&lt;br /&gt;&lt;br /&gt;mount -o bind $WORKDIR/etc/usb $SQUASHFS_ROOT/etc/initramfs-tools&lt;br /&gt;chroot $SQUASHFS_ROOT mkinitramfs -v -o /boot/initrd.img-$version $version&lt;br /&gt;umount $SQUASHFS_ROOT/etc/initramfs-tools&lt;br /&gt;&lt;br /&gt;mkdir $ISO_ROOT/isolinux&lt;br /&gt;cp $SQUASHFS_ROOT/boot/initrd.img-$version $ISO_ROOT/initrd.gz&lt;br /&gt;cp $SQUASHFS_ROOT/boot/vmlinuz-$version $ISO_ROOT/vmlinuz&lt;br /&gt;cat &amp;lt;&amp;lt;EOF &amp;gt; $ISO_ROOT/syslinux.cfg&lt;br /&gt;DEFAULT server&lt;br /&gt;TIMEOUT 1&lt;br /&gt;LABEL server&lt;br /&gt;menu label ^Server&lt;br /&gt;kernel vmlinuz&lt;br /&gt;append initrd=initrd.gz root=/root.sqfs loop=/dev/loop0 rootfstype=squashfs aufs=tmpfs ro&lt;br /&gt;EOF&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;mksquashfs $SQUASHFS_ROOT $ISO_ROOT/root.sqfs \&lt;br /&gt;-e $SQUASHFS_ROOT/boot/* \&lt;br /&gt;$SQUASHFS_ROOT/initrd.img \&lt;br /&gt;$SQUASHFS_ROOT/vmlinuz&lt;br /&gt;&lt;br /&gt;echo "Please insert USB flash drive and press Enter"&lt;br /&gt;read&lt;br /&gt;# /dev/sdX - Ваша USB-флешка&lt;br /&gt;lilo -M /dev/sdX&lt;br /&gt;lilo -A /dev/sdX 1&lt;br /&gt;mkfs.vfat /dev/sdX1&lt;br /&gt;syslinux -f /dev/sdX1&lt;br /&gt;mlabel -i /dev/sdX1 ::MYUSBSERVER&lt;br /&gt;mount -t vfat /dev/sdX1 /mnt&lt;br /&gt;cp -a $ISO_ROOT/* /mnt&lt;br /&gt;umount /mnt&lt;br /&gt;exit 0&lt;/pre&gt;Делаем скрипт исполняемым&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; chmod +x ~/ubuntu-ram/scripts/make-usb.sh&lt;/pre&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7800991272705950027-8307034408278419001?l=www.propheta.ru' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.propheta.ru/feeds/8307034408278419001/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=7800991272705950027&amp;postID=8307034408278419001" title="Комментарии: 4" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/8307034408278419001" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/8307034408278419001" /><link rel="alternate" type="text/html" href="http://www.propheta.ru/2009/06/ubuntu-linux.html" title="Работа Ubuntu Linux без носителя" /><author><name>Князь</name><uri>http://www.blogger.com/profile/11218942243308963007</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="15117379851453659769" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7800991272705950027.post-618455969862083842</id><published>2009-05-30T19:25:00.006+10:00</published><updated>2009-06-02T17:08:30.727+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="IT" /><title type="text">Нужна ваша помощь</title><content type="html">Подскажите где за наличные в Москве можно купить корпус и мамку (проц желательно intel atom с пассивным охлаждением) форм-фактора mini-ITX. Срочно, воскресенье — крайний срок.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;UPD:&lt;/span&gt; Всем спасибо, сабж доставлен - буду теперь ваять домашний сервер :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7800991272705950027-618455969862083842?l=www.propheta.ru' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.propheta.ru/feeds/618455969862083842/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=7800991272705950027&amp;postID=618455969862083842" title="Комментарии: 7" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/618455969862083842" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/618455969862083842" /><link rel="alternate" type="text/html" href="http://www.propheta.ru/2009/05/blog-post_4651.html" title="Нужна ваша помощь" /><author><name>Князь</name><uri>http://www.blogger.com/profile/11218942243308963007</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="15117379851453659769" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7800991272705950027.post-4569268858499670449</id><published>2009-05-30T17:10:00.000+10:00</published><updated>2009-05-30T17:12:54.269+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="IT" /><category scheme="http://www.blogger.com/atom/ns#" term="юмор" /><title type="text">Может и баян, но улыбнуло</title><content type="html">Помогите Microsoft в борьбе с пиратскими версиями Windows — установите своим друзьям Linux!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7800991272705950027-4569268858499670449?l=www.propheta.ru' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.propheta.ru/feeds/4569268858499670449/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=7800991272705950027&amp;postID=4569268858499670449" title="Комментарии: 4" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/4569268858499670449" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/4569268858499670449" /><link rel="alternate" type="text/html" href="http://www.propheta.ru/2009/05/blog-post_30.html" title="Может и баян, но улыбнуло" /><author><name>Князь</name><uri>http://www.blogger.com/profile/11218942243308963007</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="15117379851453659769" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7800991272705950027.post-4902411954457644686</id><published>2009-05-25T14:22:00.016+10:00</published><updated>2009-05-25T20:12:42.396+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="IT" /><category scheme="http://www.blogger.com/atom/ns#" term="заметка" /><category scheme="http://www.blogger.com/atom/ns#" term="hardware" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu" /><title type="text">SANE vs EPSON Perfection V300 PHOTO</title><content type="html">&lt;code&gt;Sane&lt;/code&gt; для работы с этим сканером требуются проприетарные драйвера. В репозитарии Ubunty 9.04 Jaunty готовых пакетов не оказалось. Но после недолгих поисков в &lt;a href="https://launchpad.net/" rel="nofollow"&gt;Launchpad.Net&lt;/a&gt; нашлось то, что нужно.&lt;br /&gt;Подключаем репозитарий PPA&lt;pre class="number"&gt;deb http://ppa.launchpad.net/doctormo/ppa/ubuntu jaunty main&lt;br /&gt;deb-src http://ppa.launchpad.net/doctormo/ppa/ubuntu jaunty main&lt;/pre&gt;Добавляем ключи PPA&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; wget -O- 'http://keyserver.ubuntu.com:11371/pks/lookup?op=get&amp;amp;search=0x15A579BF113659DF' | sudo apt-key add -&lt;/pre&gt;Ставим требуемые драйвера&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; sudo apt-get update&lt;br /&gt;&lt;strong&gt;$&lt;/strong&gt; sudo apt-get install iscan iscan-plugins&lt;/pre&gt;Создаем правило &lt;code&gt;udev&lt;/code&gt; для сканера и сохраняем в файл «&lt;code&gt;/etc/udev/rules.d/50-epson-v300.rules&lt;/code&gt;». Этим мы переопределим права на файл устройства. Иначе он будет доступен только для суперпользователя. &lt;pre class="number"&gt;SUBSYSTEMS=="usb", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0131", MODE="660", GROUP="scanner"&lt;/pre&gt;Перезагружаем &lt;code&gt;HAL&lt;/code&gt;&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; sudo invoke-rc.d hal restart&lt;/pre&gt;Теперь к компьютеру подключаем сканер и запускаем &lt;code&gt;xsane&lt;/code&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7800991272705950027-4902411954457644686?l=www.propheta.ru' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.propheta.ru/feeds/4902411954457644686/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=7800991272705950027&amp;postID=4902411954457644686" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/4902411954457644686" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/4902411954457644686" /><link rel="alternate" type="text/html" href="http://www.propheta.ru/2009/05/sane-vs-epson-perfection-v300-photo.html" title="SANE vs EPSON Perfection V300 PHOTO" /><author><name>Князь</name><uri>http://www.blogger.com/profile/11218942243308963007</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="15117379851453659769" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7800991272705950027.post-7699883188330718372</id><published>2009-05-07T14:23:00.006+10:00</published><updated>2009-05-07T14:58:28.433+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="новости" /><category scheme="http://www.blogger.com/atom/ns#" term="IT" /><title type="text">В поисках пиратской винды милиция пошла по домам</title><content type="html">Как пишет в своем блоге &lt;a href="http://news2.ru/users/Vlad2000Plus/" rel="nofollow"&gt;Vlad2000Plus&lt;/a&gt;, на Александра Иванчикова-Нееловского из Екатеринбурга &lt;a href="http://news2.ru/story/169259/" rel="nofollow"&gt;завели уголовное дело&lt;/a&gt; из-за пиратского софта, обнаруженного на его домашнем компьютере.  Стоимость «похищенного» оценили в 125 тысяч рублей и это только продукты некой компании Microsoft.&lt;br /&gt;Раньше ловили того, кто ставит другим. Теперь мы дожили до того времени, когда начали ловить тех, кто занимается «домашним пиратством».&lt;br /&gt;&lt;br /&gt;Я лично рад этому. Честно. Как написали в комментах: «&lt;span style="color:#333333;"&gt;&lt;span id="comment_text_327395"&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/7800991272705950027-7699883188330718372?l=www.propheta.ru' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.propheta.ru/feeds/7699883188330718372/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=7800991272705950027&amp;postID=7699883188330718372" title="Комментарии: 6" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/7699883188330718372" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/7699883188330718372" /><link rel="alternate" type="text/html" href="http://www.propheta.ru/2009/05/blog-post_07.html" title="В поисках пиратской винды милиция пошла по домам" /><author><name>Князь</name><uri>http://www.blogger.com/profile/11218942243308963007</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="15117379851453659769" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7800991272705950027.post-7499403459265156303</id><published>2009-05-04T12:27:00.010+10:00</published><updated>2009-05-04T17:18:36.852+10:00</updated><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="IT" /><category scheme="http://www.blogger.com/atom/ns#" term="заметка" /><category scheme="http://www.blogger.com/atom/ns#" term="kvm" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu" /><title type="text">Скрипт для корректного выключения гостевых хостов в libvirt</title><content type="html">Ввиду неспособности &lt;code&gt;libvirt-bin&lt;/code&gt; корректно отключать гостевые хосты при выключении/ребуте сервера, решил написать свой скрипт&lt;pre class="number"&gt;#!/bin/sh&lt;br /&gt;### BEGIN INIT INFO&lt;br /&gt;# Provides:          kvm-shutdown&lt;br /&gt;# Required-Start:    $remote_fs&lt;br /&gt;# Required-Stop:     $remote_fs&lt;br /&gt;# Default-Start:     2 3 4 5&lt;br /&gt;# Default-Stop:      0 1 6&lt;br /&gt;# Short-Description: Shutdown Guest KVM Hosts&lt;br /&gt;# Description:       Shutdown Guest KVM Hosts&lt;br /&gt;### END INIT INFO&lt;br /&gt;&lt;br /&gt;# Author: Князь &amp;lt;demiurg (at) propheta.ru&amp;gt;&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;# Do NOT &amp;quot;set -e&amp;quot;&lt;br /&gt;&lt;br /&gt;# PATH should only include /usr/* if it runs after the mountnfs.sh script&lt;br /&gt;PATH=/sbin:/usr/sbin:/bin:/usr/bin&lt;br /&gt;DESC=&amp;quot;Shutdown Guest KVM Hosts&amp;quot;&lt;br /&gt;NAME=kvm-shutdown&lt;br /&gt;SCRIPTNAME=/etc/init.d/$NAME&lt;br /&gt;&lt;br /&gt;# Exit if the package is not installed&lt;br /&gt;[ -x &amp;quot;/usr/bin/virsh&amp;quot; ] || exit 0&lt;br /&gt;[ -S &amp;quot;/var/run/libvirt/libvirt-sock&amp;quot; ] || exit 0&lt;br /&gt;&lt;br /&gt;# Load the VERBOSE setting and other rcS variables&lt;br /&gt;. /lib/init/vars.sh&lt;br /&gt;&lt;br /&gt;# Define LSB log_* functions.&lt;br /&gt;# Depend on lsb-base (&amp;gt;= 3.0-6) to ensure that this file is present.&lt;br /&gt;. /lib/lsb/init-functions&lt;br /&gt;&lt;br /&gt;export LANG=C&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# Function that stops the daemon/service&lt;br /&gt;#&lt;br /&gt;virsh_list()&lt;br /&gt;{&lt;br /&gt; virsh list 2&amp;gt;/dev/null | grep -E 'running$' | awk '{ print $2 }'&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;do_stop()&lt;br /&gt;{&lt;br /&gt; LIST=$(virsh_list)&lt;br /&gt; for i in $LIST;&lt;br /&gt; do&lt;br /&gt;  virsh shutdown $i 1&amp;gt;/dev/null 2&amp;gt;/dev/null&lt;br /&gt;  echo&lt;br /&gt;  echo -n &amp;quot;Shutdown $i &amp;quot;;&lt;br /&gt;  while [ &amp;quot;$(virsh_list | grep $i)&amp;quot; ];&lt;br /&gt;  do&lt;br /&gt;   echo -n '.'&lt;br /&gt;   sleep 2&lt;br /&gt;  done;&lt;br /&gt; done;&lt;br /&gt; if [ &amp;quot;$LIST&amp;quot; ]; then echo; fi;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;case &amp;quot;$1&amp;quot; in&lt;br /&gt;  stop)&lt;br /&gt; [ &amp;quot;$VERBOSE&amp;quot; != no ] &amp;amp;&amp;amp; log_daemon_msg &amp;quot;Activating $DESC&amp;quot; &amp;quot;$NAME&amp;quot;&lt;br /&gt; do_stop&lt;br /&gt; case &amp;quot;$?&amp;quot; in&lt;br /&gt;  0|1)&lt;br /&gt;   [ &amp;quot;$VERBOSE&amp;quot; != no ] &amp;amp;&amp;amp; log_end_msg 0&lt;br /&gt;   break&lt;br /&gt;   ;;&lt;br /&gt;  2)&lt;br /&gt;   [ &amp;quot;$VERBOSE&amp;quot; != no ] &amp;amp;&amp;amp; log_end_msg 1&lt;br /&gt;   break&lt;br /&gt;   ;;&lt;br /&gt; esac&lt;br /&gt; break&lt;br /&gt; ;;&lt;br /&gt;  *)&lt;br /&gt; echo &amp;quot;Usage: $SCRIPTNAME stop&amp;quot; &amp;gt;&amp;amp;2&lt;br /&gt; exit 3&lt;br /&gt; ;;&lt;br /&gt;esac&lt;/pre&gt;Сохраняем скрипт в файл &amp;laquo;&lt;code&gt;/etc/init.d/kvm-shutdown&lt;/code&gt;&amp;raquo; и делаем его исполняемым&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; sudo chmod +x /etc/init.d/kvm-shutdown&lt;/pre&gt;Создаем символические ссылки в &lt;code&gt;rc0&lt;/code&gt;, &lt;code&gt;rc1&lt;/code&gt;, &lt;code&gt;rc6&lt;/code&gt;&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; sudo ln -s ../init.d/kvm-shutdown /etc/rc0.d/K19kvm-shutdown&lt;br /&gt;&lt;strong&gt;$&lt;/strong&gt; sudo ln -s ../init.d/kvm-shutdown /etc/rc1.d/K19kvm-shutdown&lt;br /&gt;&lt;strong&gt;$&lt;/strong&gt; sudo ln -s ../init.d/kvm-shutdown /etc/rc6.d/K19kvm-shutdown&lt;/pre&gt;Префикс &lt;code&gt;K19&lt;/code&gt; выбран для того, чтобы скрипт запускался перед &amp;laquo;&lt;code&gt;/etc/init.d/libvirt-bin&lt;/code&gt;&amp;raquo; (префикс &lt;code&gt;K20&lt;/code&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7800991272705950027-7499403459265156303?l=www.propheta.ru' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.propheta.ru/feeds/7499403459265156303/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=7800991272705950027&amp;postID=7499403459265156303" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/7499403459265156303" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/7499403459265156303" /><link rel="alternate" type="text/html" href="http://www.propheta.ru/2009/05/blog-post.html" title="Скрипт для корректного выключения гостевых хостов в libvirt" /><author><name>Князь</name><uri>http://www.blogger.com/profile/11218942243308963007</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="15117379851453659769" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7800991272705950027.post-3765504492897837117</id><published>2009-04-24T11:22:00.006+10:00</published><updated>2009-04-24T17:56:32.604+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="IT" /><category scheme="http://www.blogger.com/atom/ns#" term="заметка" /><category scheme="http://www.blogger.com/atom/ns#" term="squid" /><title type="text">X-Forwarded-For и Squid</title><content type="html">На днях выяснилось, что Squid, несмотря на запрет выдавать «&lt;code&gt;X-Forwarded-For&lt;/code&gt;», пропускает данный http-заголовок наружу в том случае если сгенерирован нижестоящим прокси-сервером.&lt;br /&gt;Проблема решилась одной строкой в конфиге &lt;code&gt;Squid&lt;/code&gt;&lt;pre class="number"&gt;header_access X-Forwarded-For deny all&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7800991272705950027-3765504492897837117?l=www.propheta.ru' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.propheta.ru/feeds/3765504492897837117/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=7800991272705950027&amp;postID=3765504492897837117" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/3765504492897837117" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/3765504492897837117" /><link rel="alternate" type="text/html" href="http://www.propheta.ru/2009/04/x-forwarded-for-squid.html" title="X-Forwarded-For и Squid" /><author><name>Князь</name><uri>http://www.blogger.com/profile/11218942243308963007</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="15117379851453659769" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7800991272705950027.post-7460439898988436932</id><published>2009-03-23T11:12:00.007+09:00</published><updated>2009-05-04T17:22:26.296+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="новости" /><category scheme="http://www.blogger.com/atom/ns#" term="IT" /><title type="text">Местный провайдер отжигает</title><content type="html">Крупнейший интернет-провайдер нашей республики, если не сказать монополист местной связи вообще, &lt;a href="http://telecom.sakha.ru" rel="nofollow"&gt;&amp;laquo;Сахателеком&amp;raquo;&lt;/a&gt; &lt;a href="http://telecom.sakha.ru/topic.php?id=4247" rel="nofollow"&gt;известил своих клиентов&lt;/a&gt; о том, что начиная с 1 апреля текущего года начнёт взимать плату за пока бесплатный входящий трафик со своих почтовых серверов. Плата будет приравнена к ценам за &amp;laquo;внешний&amp;raquo; интернет.&lt;br /&gt;&lt;br /&gt;Интересно узнать, впереди ли мы всей страны с таким вот &amp;laquo;нововведением&amp;raquo;?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7800991272705950027-7460439898988436932?l=www.propheta.ru' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.propheta.ru/feeds/7460439898988436932/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=7800991272705950027&amp;postID=7460439898988436932" title="Комментарии: 19" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/7460439898988436932" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/7460439898988436932" /><link rel="alternate" type="text/html" href="http://www.propheta.ru/2009/03/blog-post.html" title="Местный провайдер отжигает" /><author><name>Князь</name><uri>http://www.blogger.com/profile/11218942243308963007</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="15117379851453659769" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">19</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7800991272705950027.post-3901181219375844558</id><published>2009-03-14T20:47:00.003+09:00</published><updated>2009-05-04T17:23:16.845+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="freebsd" /><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="IT" /><category scheme="http://www.blogger.com/atom/ns#" term="заметка" /><category scheme="http://www.blogger.com/atom/ns#" term="shell" /><title type="text">xargs: многопоточная обработка</title><content type="html">Благодаря &lt;a href="http://bappoy.pp.ru/2009/03/11/parallelizing-jobs-linux.html" rel="nofollow"&gt;посту&lt;/a&gt; &lt;a href="http://bappoy.pp.ru/about" rel="nofollow"&gt;Владимира Бредникова&lt;/a&gt; узнал, что &lt;a href="http://www.citforum.ru/operating_systems/manpages/XARGS.1.shtml" rel="nofollow"&gt;&lt;code&gt;xargs&lt;/code&gt;&lt;/a&gt; благодаря двум ключам помогает организовать многопоточную обработку файлов:&lt;dl&gt;&lt;dt&gt;&lt;code&gt;-n &lt;em&gt;X&lt;/em&gt;&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;Ограничивает количество передаваемых вашей программе аргументов. По умолчанию xargs передаёт программе довольно большое число аргументов, поэтому для обработки одного файла за один раз нужно указывать эту опцию.&lt;/dd&gt;&lt;dt&gt;&lt;code&gt;-P &lt;em&gt;X&lt;/em&gt;&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;Устанавливает количество одновременно выполняемых процессов. По умолчанию xargs запускает только один процесс, но в нашем случае нужно увеличить это число до количества процессоров.&lt;/dd&gt;&lt;/dl&gt;Например, в паре с утилитой &lt;code&gt;find&lt;/code&gt; можно в несколько потоков обработать множество картинок, размер которых больше одного мегабайта&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; find ~/Photos -iname '*.jpg' -and -size +1M -print0 | \&lt;br /&gt;  xargs -0 -n 1 -P 2 -I'{}' convert '{}' -resize '800x600&amp;gt;' -quality 100 '{}'&lt;/pre&gt;P.S. Надо почаще заглядывать в &lt;code&gt;man&lt;/code&gt; :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7800991272705950027-3901181219375844558?l=www.propheta.ru' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.propheta.ru/feeds/3901181219375844558/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=7800991272705950027&amp;postID=3901181219375844558" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/3901181219375844558" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/3901181219375844558" /><link rel="alternate" type="text/html" href="http://www.propheta.ru/2009/03/xargs.html" title="xargs: многопоточная обработка" /><author><name>Князь</name><uri>http://www.blogger.com/profile/11218942243308963007</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="15117379851453659769" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7800991272705950027.post-2449906308232968618</id><published>2009-03-13T10:32:00.015+09:00</published><updated>2009-03-14T00:19:50.461+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="freebsd" /><category scheme="http://www.blogger.com/atom/ns#" term="IT" /><category scheme="http://www.blogger.com/atom/ns#" term="заметка" /><category scheme="http://www.blogger.com/atom/ns#" term="netflow" /><category scheme="http://www.blogger.com/atom/ns#" term="net" /><title type="text">Простая конфигурация Netflow для сбора данных о трафике в FreeBSD</title><content type="html">Чтобы конфигурация &lt;code&gt;netflow&lt;/code&gt; загружалась во время запуска системы добавляем в «&lt;code&gt;/etc/rc.local&lt;/code&gt;» следующие строки&lt;pre class="number"&gt;PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin&lt;br /&gt;&lt;br /&gt;/usr/sbin/ngctl -f - &amp;lt;&amp;lt; EOF&lt;br /&gt;&lt;br /&gt;mkpeer if0: tee lower left&lt;br /&gt;name if0:lower tee0&lt;br /&gt;connect if0: if0:lower upper right&lt;br /&gt;mkpeer tee0: one2many left2right many0&lt;br /&gt;name tee0:left2right one2many0&lt;br /&gt;connect tee0:  one2many0: right2left many1&lt;br /&gt;mkpeer one2many0: netflow one iface0&lt;br /&gt;name one2many0:one netflow&lt;br /&gt;mkpeer netflow: ksocket export inet/dgram/udp&lt;br /&gt;msg netflow: setifindex { iface=0 index=0 }&lt;br /&gt;msg netflow:export connect inet/127.0.0.1:7771&lt;br /&gt;&lt;br /&gt;EOF&lt;/pre&gt;«&lt;code&gt;if0&lt;/code&gt;» меняем на свой интерфейс. Если надо собирать данные с нескольких сетевых интерфейсов, множим блок «&lt;code&gt;/usr/sbin/ngctl -f - &amp;lt;&amp;lt; EOF ... EOF&lt;/code&gt;» и в каждом дополнительном блоке вместо «&lt;code&gt;if0&lt;/code&gt;» вписываем нужный сетевой интерфейс. Так же меняем порядковые номера нодов и значение параметра «&lt;code&gt;iface&lt;/code&gt;».&lt;br /&gt;Чтобы загрузились необходимые модули добавляем в файл «&lt;code&gt;/boot/loader.conf&lt;/code&gt;»&lt;pre class="number"&gt;netgraph_load="YES"&lt;br /&gt;ng_netflow_load="YES"&lt;br /&gt;ng_socket_load="YES"&lt;br /&gt;ng_tee_load="YES"&lt;br /&gt;ng_iface_load="YES"&lt;br /&gt;ng_one2many_load="YES"&lt;br /&gt;ng_ksocket_load="YES"&lt;br /&gt;ng_ether_load="YES"&lt;/pre&gt;Следующим шагом ставим коллектор netflow-трафика, прослушивающий порт «&lt;code&gt;7771&lt;/code&gt;» по адресу «&lt;code&gt;127.0.0.1&lt;/code&gt;».&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7800991272705950027-2449906308232968618?l=www.propheta.ru' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.propheta.ru/feeds/2449906308232968618/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=7800991272705950027&amp;postID=2449906308232968618" title="Комментарии: 2" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/2449906308232968618" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/2449906308232968618" /><link rel="alternate" type="text/html" href="http://www.propheta.ru/2009/03/netflow-freebsd.html" title="Простая конфигурация Netflow для сбора данных о трафике в FreeBSD" /><author><name>Князь</name><uri>http://www.blogger.com/profile/11218942243308963007</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="15117379851453659769" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7800991272705950027.post-8714203671015981849</id><published>2009-03-11T12:53:00.012+09:00</published><updated>2009-03-16T21:45:36.060+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="freebsd" /><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="samba" /><category scheme="http://www.blogger.com/atom/ns#" term="IT" /><category scheme="http://www.blogger.com/atom/ns#" term="заметка" /><title type="text">Samba + pam_mkhomedir</title><content type="html">Возникла необходимость, чтобы при входе на сервер с «&lt;code&gt;samba&lt;/code&gt;» для вошедшего пользователя домена создавалась локальная домашняя папка (если отсутствует).&lt;br /&gt;&lt;br /&gt;Сперва убедитесь что &lt;code&gt;smbd&lt;/code&gt; собран с поддержкой &lt;code&gt;PAM&lt;/code&gt;&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; smbd -b | grep WITH_PAM&lt;/pre&gt;&lt;pre&gt;WITH_PAM&lt;/pre&gt;Если PAM не поддерживается, соберите &lt;code&gt;Samba&lt;/code&gt; из исходников с ключом «&lt;code&gt;--with-pam&lt;/code&gt;».&lt;br /&gt;В файл «&lt;code&gt;etc/smb.conf&lt;/code&gt;» (секция «&lt;code&gt;global&lt;/code&gt;») добавляем&lt;pre class="number"&gt;obey pam restrictions = Yes&lt;/pre&gt;Создаем шару для домашних папок пользователей&lt;pre class="number"&gt;[homes]&lt;br /&gt;       valid users = DOMAIN\%S&lt;br /&gt;       read only = no&lt;br /&gt;       browseable = no&lt;br /&gt;       create mode = 0600&lt;br /&gt;       directory mode = 0700&lt;/pre&gt;По умолчанию &lt;code&gt;Samba&lt;/code&gt; считает, что домашние папки пользователей находятся в «&lt;code&gt;/home/DOMAIN/user&lt;/code&gt;». Если вы хотите разместить их в другом месте, задайте явно параметр «&lt;code&gt;template homedir&lt;/code&gt;» в секции «&lt;code&gt;global&lt;/code&gt;» и рестартуйте &lt;code&gt;winbindd&lt;/code&gt;.&lt;br /&gt;Нужно создать директорию «&lt;code&gt;/home/DOMAIN&lt;/code&gt;», так как &lt;code&gt;pam_mkhomedir&lt;/code&gt; не умеет создавать вложенные директории&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; sudo mkdir /home/DOMAIN&lt;/pre&gt;Добавляем в файл «&lt;code&gt;pam.d/samba&lt;/code&gt;»&lt;pre class="number"&gt;session    required    pam_mkhomedir.so umask=0077&lt;/pre&gt;Под занавес ребутаем &lt;code&gt;smbd&lt;/code&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7800991272705950027-8714203671015981849?l=www.propheta.ru' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.propheta.ru/feeds/8714203671015981849/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=7800991272705950027&amp;postID=8714203671015981849" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/8714203671015981849" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/8714203671015981849" /><link rel="alternate" type="text/html" href="http://www.propheta.ru/2009/03/samba-pammkhomedir.html" title="Samba + pam_mkhomedir" /><author><name>Князь</name><uri>http://www.blogger.com/profile/11218942243308963007</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="15117379851453659769" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7800991272705950027.post-8653364197875141268</id><published>2009-03-03T11:02:00.010+09:00</published><updated>2009-03-08T09:09:16.756+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ftp" /><category scheme="http://www.blogger.com/atom/ns#" term="freebsd" /><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="IT" /><category scheme="http://www.blogger.com/atom/ns#" term="заметка" /><title type="text">vsftpd и pam_mkhomedir: «OOPS: Cannot change directory»</title><content type="html">Столкнулся с тем, что модуль PAM  &lt;code&gt;pam_mkhomedir&lt;/code&gt; отказался работать с &lt;code&gt;vsftpd&lt;/code&gt;. После захода на FTP не создаются домашние каталоги пользователей и соединение прерывается сообщением сервера об ошибке 500 «&lt;code&gt;OOPS: Cannot change directory&lt;/code&gt;&lt;strong&gt;&lt;/strong&gt;». А поиск в интернете ничего вразумительного не дал.&lt;br /&gt;Как оказалось все решается одной строкой в «&lt;code&gt;vsftpd.conf&lt;/code&gt;»:&lt;pre class="number"&gt;session_support="YES"&lt;/pre&gt;Проблема возникает из-за того, что &lt;code&gt;vsftpd&lt;/code&gt; по умолчанию не трогает модули сервиса &lt;code&gt;session&lt;/code&gt; в PAM.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7800991272705950027-8653364197875141268?l=www.propheta.ru' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.propheta.ru/feeds/8653364197875141268/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=7800991272705950027&amp;postID=8653364197875141268" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/8653364197875141268" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7800991272705950027/posts/default/8653364197875141268" /><link rel="alternate" type="text/html" href="http://www.propheta.ru/2009/03/vsftpd-pammkhomedir.html" title="vsftpd и pam_mkhomedir: «OOPS: Cannot change directory»" /><author><name>Князь</name><uri>http://www.blogger.com/profile/11218942243308963007</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="15117379851453659769" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry></feed>
