tag:blogger.com,1999:blog-26867338114939947242024-03-13T18:46:54.145+03:00О Фрюшке, TUXе и других зверках...О FreeBSD, Windows, Linux, CentOS, Ubuntu, компьютерах, программах, операционных системах, виртуализацииUnknownnoreply@blogger.comBlogger238125tag:blogger.com,1999:blog-2686733811493994724.post-64341638217615458362014-12-05T00:44:00.000+03:002014-12-05T09:25:36.158+03:00Node.js против носорога<div dir="ltr" style="text-align: left;" trbidi="on">
<i>Посвящается 30-ю JavaScript (4 декабря)!</i><br />
<div>
<br /></div>
<div>
<a href="http://openjdk.java.net/projects/nashorn/" target="_blank">Nashorn</a> это JavaScript (JS) движок в Java 8 поверх JVM (Java Virtual Machine). Используя его можно писать на JS и при этом обращаться к Java объектам и библиотекам.</div>
<div>
<br /></div>
<div>
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="355" marginheight="0" marginwidth="0" scrolling="no" src="//www.slideshare.net/slideshow/embed_code/40193785" style="border-width: 1px; border: 1px solid #CCC; margin-bottom: 5px; max-width: 100%;" width="425"> </iframe> </div>
<div style="margin-bottom: 5px;">
<div style="text-align: center;">
<strong> <a href="https://www.slideshare.net/InfoQ/nashorn-native-javascript-support-in-java-8" target="_blank" title="Nashorn - Native JavaScript Support in Java 8">Nashorn - Native JavaScript Support in Java 8</a> </strong> from <strong><a href="https://www.slideshare.net/InfoQ" target="_blank">InfoQ</a></strong> </div>
</div>
</div>
<div>
<br /></div>
<div>
Но этого оказалось мало и Java сообщество решило замахнуться на Node.JS! Так родился проект <a href="https://avatar-js.java.net/" target="_blank">Avatar.js</a> - полная реализация Node.js на JVM.</div>
<div>
<br /></div>
<div>
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="355" marginheight="0" marginwidth="0" scrolling="no" src="//www.slideshare.net/slideshow/embed_code/32319615" style="border-width: 1px; border: 1px solid #CCC; margin-bottom: 5px; max-width: 100%;" width="425"> </iframe> </div>
<div style="margin-bottom: 5px;">
<div style="text-align: center;">
<strong> <a href="https://www.slideshare.net/delabassee/server-side-javascript-on-the-jvm-project-avatar-qcon-london-2014" target="_blank" title="Server Side JavaScript on the JVM - Project Avatar - QCon London March 2014">Server Side JavaScript on the JVM - Project Avatar - QCon London March 2014</a> </strong> from <strong><a href="https://www.slideshare.net/delabassee" target="_blank">David Delabassee</a></strong> </div>
</div>
</div>
<br />
Так, хватит теории... Давайте уже поиграемся с ними!<br />
Мое рабочее окружение ОС Windows 8.1 с установленной <a href="http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html" target="_blank">JDK 8.0_25</a>.<br />
С сайта https://maven.java.net/content/repositories/public/com/oracle/ скачиваем:<br />
<a href="https://maven.java.net/content/repositories/public/com/oracle/avatar-js/0.10.32-SNAPSHOT/avatar-js-0.10.32-20141204.073208-53.jar" target="_blank">avatar-js-0.10.32-20141204.073208-53.jar</a><br />
и<br />
<a href="https://maven.java.net/content/repositories/public/com/oracle/libavatar-js-win-x64/0.10.32-SNAPSHOT/libavatar-js-win-x64-0.10.32-20141126.224700-36.dll" target="_blank">libavatar-js-win-x64-0.10.32-20141126.224700-36.dll</a><br />
<br />
Далее, создаем папку проекта, для примера HelloAvatar и переносим в нее наши файлы. Jar файл переименовываем в avatar-js.jar, а DLL переименовываем в avatar-js.dll.<br />
<br />
Осталось собственно написать JS приложение, предлагаю пока воспользоваться стандартным примером по NodeJS и написать HTTP-сервер с одной страницей. Для этого создаем файл app.js в папке проекта со следующим содержимым:<br />
<br />
<script src="http://pastebin.com/embed_js.php?i=f23yQv3X"></script>
Все готово! 3-2-1-Запуск в командной консоли:<br />
<br />
<pre class="brush:shell">java -Djava.library.path=<полный путь к папке проекта>\HelloAvatar -jar avatar-js.jar app.js</pre>
<br />
После этого в браузере заходим по адресу: <a href="http://127.0.0.1:8000/">http://127.0.0.1:8000/</a><br />
<br />
Все у нас NodeJS работает поверх JVM.</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2686733811493994724.post-41416313753668261022014-01-08T20:24:00.000+04:002014-01-08T20:24:37.573+04:00Возвращение Будулая и Магия Asterisk AGI часть 1 (обзор)<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkaAnac_aMXEMrMnw7Chjpu3VcG6YnY2YoHzrc6vz60TZ3hlhCX02yFueUXGR1dKL0ZBOOQrtYybAd1wyPOG_uY5GyuTCIs71WR3LYq0Os6F2fbSkPNbglRqkfzQ5s32ajHdftO6739v8/s1600/15564891.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkaAnac_aMXEMrMnw7Chjpu3VcG6YnY2YoHzrc6vz60TZ3hlhCX02yFueUXGR1dKL0ZBOOQrtYybAd1wyPOG_uY5GyuTCIs71WR3LYq0Os6F2fbSkPNbglRqkfzQ5s32ajHdftO6739v8/s1600/15564891.jpg" height="179" width="320" /></a></div>
<br />
Привет мой дорогой читатель!<br />
<br />
Сегодня в очередной раз воспользовавшись своей "цифровой памятью" в виде этого блога, очень удивился, что за прошедшие 2 года ты не забыл про меня. Да, я выпал на это долгое время из блогосферы.<br />
<br />
За это время многое изменилось в моей жизни, кто-то ушел навсегда, кто-то появился. Теперь я отец прекрасной дочери. Еще за прошедшее время я успел сменить два места работы: небольшого провайдера, местный банк и снова вернуться в небольшую компанию. Накопилось много всего что хочется тебе рассказать, поэтому я попытаюсь найти время чтобы поделиться. Спасибо что есть!..</div>
<div style="text-align: justify;">
<br />
<b>Магия Asterisk AGI.</b><br />
<br /></div>
<div style="text-align: justify;">
Ну а начать хочется с такой интересной темы как интернет телефония. Так уж получилось, что последнее время я плотно работал VoIP-сервером Astrisk и его связке со сторонним ПО. Это не единственный, не самый производительный, но самый поддерживаемый и развитый сервер. Подробнее о нем можно прочитать тут: <a href="http://asterisk.ru/functionality">http://asterisk.ru/functionality</a>.<br />
<br />
Но нам всем всегда хочется чего-то большего, поэтому программисты придумали интерфейс управления сервером - AGI.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
AGI - это встроенный в Asterisk метод выполнения внешних скриптов (по аналогии с CGI для http серверов), который может расширить функциональность asterisk при помощи других языков программирования. Таких, как: Java, .Net, Perl, PHP, C, Shell - все зависит от Вашего желания. Подробнее здесь: <a href="http://asterisk.ru/knowledgebase/Asterisk+AGI">http://asterisk.ru/knowledgebase/Asterisk+AGI</a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Чтобы не быть голословным рассмотрим задачу:<br />
- Создать систему голосового информирования пользователя о балансе на его счете.<br />
- Информация должна предоставляться по паролю, введенному на клавиатуре телефона в тоновом режиме.<br />
- Уже имеем развернутый сервер телефонии Asterisk<br />
- Данные о балансе лежат в БД Oracle.<br />
<br />
При проектировании сервиса было решено отделить приложение от "боевой базы", что-бы не плодить лишнюю нагрузку на серверах БД, поэтому в качестве кеша использовали локальный сервер-БД на основе MySQL. Выбор конечно спорный, но на тот момент это самая знакомая БД.<br />
<br />
Сама логика выполнена в виде 2-х PHP-скриптов. Выбор аналогичен предыдущему, PHP наиболее изученный язык на тот момент. Первый это скрипт обновления данных в локальной БД из "боевой" вызываемый по крону, для связи с Oracle используем php-oci8. Второй собственно сам AGI-скрипт вызываемый Asterisk, для связи с Asterisk используем php-agi (<a href="http://phpagi.sourceforge.net/">http://phpagi.sourceforge.net/</a>).</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Важное замечание: Во время работы сервера Asterisk в режиме отладки AGI (команда: "agi set debug on" в консоли Asterisk), оказалось что сервер затрачивает значительное время общение с AGI-скриптом, в моем случае порядка минуты. При отключении отладки задержка пропадает.<br />
<br />
Также нам понадобиться записать ряд голосовых файлов которые мы будет проигрывать абоненту. И подумать над структурой меню. На сегодня все :) продолжение следует...<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaCNRAryG9yDDVdZ6XXGanNkhyphenhyphenMe7Q38e8joyoWvnljInHpcmRVi7A0L3uWmNhMfpmXe6fqaikqJ4XhBf78rhQMYaeBC59NbcGROCryBOp_uEUJl46esuM-PBmw8dVrtSMyOL70FNutV8/s1600/asterix-obelix.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaCNRAryG9yDDVdZ6XXGanNkhyphenhyphenMe7Q38e8joyoWvnljInHpcmRVi7A0L3uWmNhMfpmXe6fqaikqJ4XhBf78rhQMYaeBC59NbcGROCryBOp_uEUJl46esuM-PBmw8dVrtSMyOL70FNutV8/s1600/asterix-obelix.gif" height="320" width="283" /></a></div>
<br />
<br />
<b>Цикл статей Магия Asterisk:</b><br />
Магия Asterisk AGI часть 1 (обзор)<br />
Магия Asterisk AGI часть 2 (планируем IVR и пишем голос)<br />
Магия Asterisk AGI часть 3 (пишем AGI-скрипты на PHP)<br />
<br /></div>
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2686733811493994724.post-37343232906254962332011-10-13T22:52:00.000+04:002011-10-13T22:52:36.676+04:00R.I.P. Dennis MacAlistair Ritchie<div dir="ltr" style="text-align: left;" trbidi="on">Сегодня только узнал, что навечно нас покинул еще один из великих людей.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglk2w_WrZavEYCgBgRfVM4dTvWhWT2g7_wlaZ6ndTZ8JGHtcAjGyjXpUr97WDCCEeieZUOY_MTOzgGw3XQe6uV8SYMUv3ZW_yDrX9k-sk1GlSsPVqC7VKOmhHrE-vDtAkDKtor2tmfaU4/s1600/Dennis_MacAlistair_Ritchie_RIP.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglk2w_WrZavEYCgBgRfVM4dTvWhWT2g7_wlaZ6ndTZ8JGHtcAjGyjXpUr97WDCCEeieZUOY_MTOzgGw3XQe6uV8SYMUv3ZW_yDrX9k-sk1GlSsPVqC7VKOmhHrE-vDtAkDKtor2tmfaU4/s320/Dennis_MacAlistair_Ritchie_RIP.jpg" width="276" /></a></div><br />
<br />
По данным из <a href="http://ru.wikipedia.org/wiki/%D0%A0%D0%B8%D1%82%D1%87%D0%B8,_%D0%94%D0%B5%D0%BD%D0%BD%D0%B8%D1%81">Википедии</a> 8 октября умер Денис Ритчи: один из разработчиков языка C и операционной системы UNIX. <br />
<br />
Покойся с миром Денис, мы никогда не забудем твоих заслуг. Ты дал миру великие инструменты прорыва в ИТ-сфере... :.(<br />
<br />
P.S. Статья на Википедии о <a href="http://ru.wikipedia.org/wiki/%D0%A0%D0%B8%D1%82%D1%87%D0%B8,_%D0%94%D0%B5%D0%BD%D0%BD%D0%B8%D1%81">нем</a>.<br />
<br />
</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2686733811493994724.post-85237501752131003552011-10-09T03:23:00.002+04:002011-10-09T03:26:03.022+04:00Мысли о виртуализации десктопа<div dir="ltr" style="text-align: left;" trbidi="on"><div style="text-align: justify;">После очередной перестановки основной операционной системы передо мной снова стал вопрос о быстром восстановлении пользовательского окружения (программы, настройки, данные), причем все это усложняется жизнью в двух параллельных мирах Windows и Linux.</div><div><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitvUeZHzuJKPicaYCwMx1OwdwgIgE82usfjoN3rQUhkS_pNaLjXg7T7u8Z0VlJjyJd5yocL1F4dYuXwTm2SEukLEKiZ2-HShENcWIsO4p_4Tn8FkC8lCztJcBowf5e7zCO_z4_CVfe9VQ/s1600/linux_vista.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="70" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitvUeZHzuJKPicaYCwMx1OwdwgIgE82usfjoN3rQUhkS_pNaLjXg7T7u8Z0VlJjyJd5yocL1F4dYuXwTm2SEukLEKiZ2-HShENcWIsO4p_4Tn8FkC8lCztJcBowf5e7zCO_z4_CVfe9VQ/s320/linux_vista.jpg" width="320" /></a></div><div><br />
</div><div><div style="text-align: justify;">Поэтому я принял решение держать путь на виртуализацию десктопа. Конечно сразу хотелось воспользоваться всеми благами человечества и использовать платформу KVM или XEN с поддержкой VT-d (проброс физического оборудования в виртуальную среду) и SPICE (протокол удаленного доступа с поддержкой передачи медиа-информации, например видео), но бюджет был ограничен и я выбрал следующую архитектуру:</div></div><div><div style="text-align: justify;"><br />
</div></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhe6HT9emkMeKkBoSGMmPhzY6fvUqtL4SpdRXGemJoa-4Z_dn2ziH9QxORSEfMD0DWJ2ykUN7HMDt3F3JYX5KpEHlVgHhutyC2iETBdh_y6V7VNBY5CTa590XYzLNdGYdyKyhMNlGZoCzQ/s1600/%25D0%25B0%25D1%2580%25D1%2585%25D0%25B8%25D1%2582%25D0%25B5%25D0%25BA%25D1%2582%25D1%2583%25D1%2580%25D0%25B0.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhe6HT9emkMeKkBoSGMmPhzY6fvUqtL4SpdRXGemJoa-4Z_dn2ziH9QxORSEfMD0DWJ2ykUN7HMDt3F3JYX5KpEHlVgHhutyC2iETBdh_y6V7VNBY5CTa590XYzLNdGYdyKyhMNlGZoCzQ/s1600/%25D0%25B0%25D1%2580%25D1%2585%25D0%25B8%25D1%2582%25D0%25B5%25D0%25BA%25D1%2582%25D1%2583%25D1%2580%25D0%25B0.png" /></a></div><div><br />
</div><div class="separator" style="clear: both; text-align: center;"></div><div><div style="text-align: justify;">В качестве виртуальной машины выбрана Oracle VirtualBox 4. Она бесплатна и решает все поставленные задачи. В качестве хост-системы работает компьютер с конфигурацией: </div></div><div><div style="text-align: justify;">Процессор: Core 2 Quad Q9300 (c VT-x)</div></div><div><div style="text-align: justify;">Оперативная память: DDR3 5Gb</div></div><div><div style="text-align: justify;">Операционная система: Ubuntu 11.04 Desktop или Windows 7 (в случае параллельного запуска специфичных медиа-задач параллельно с работой :)</div></div><div><div style="text-align: justify;">Сама же деятельность спокойно проходит в виртуальной машине (ВМ №1) или реже в виртуальной машине (ВМ №2). Жесткие диски виртуальных машин храняться на отдельном жестком диске, что заставляет на упираться только в производительность интерфейса SATA-2.</div></div><div><div style="text-align: justify;"><br />
</div></div><div><div style="text-align: justify;">В чем же плюс такой конфигурации? Он в том что при аварии/переустановке на хостовой системе вам нужно лишь поставить программу виртальных машин и вам снова доступно ваше настроенное окружение.</div></div><div><div style="text-align: justify;"><br />
</div></div></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2686733811493994724.post-159429793179308322011-09-24T15:17:00.000+04:002011-09-24T15:17:08.564+04:00Puutty + Linux<div dir="ltr" style="text-align: left;" trbidi="on"><div align="justify">Да мой любознательный читатель, я наконец-то скомпилировал Putty под Ubuntu и теперь на еще одну зависимость от Windows стало меньше... :)</div><div align="justify"><br />
</div><div align="justify" class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhZ0QcuOP86-W0Czyn_uOw7C1fD-1aWL7xF5Cvh9iVTdZbi-t5Ati4KC3Gnootp-sczM44vpkRdUSTN2v5znQg0ihBhn4SDTegFsk1VYt3-7Cl_JZ38Et4na_EcLQxpq710mcEwr18onw/s1600/ubuntu%252Bputty.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhZ0QcuOP86-W0Czyn_uOw7C1fD-1aWL7xF5Cvh9iVTdZbi-t5Ati4KC3Gnootp-sczM44vpkRdUSTN2v5znQg0ihBhn4SDTegFsk1VYt3-7Cl_JZ38Et4na_EcLQxpq710mcEwr18onw/s200/ubuntu%252Bputty.jpeg" width="193" /></a></div><div align="justify"><br />
</div><div align="justify">Вы возможно зададитесь вопросом, зачем нам Putty под линуксом ведь есть SSH? А за тем что есть закрытые ключи сгенерированные PuttyGen и подключитить их через SSH у меня их пока не получилось, из-за их специфического формата. Поэтому я решил собрать его под *nix.</div><div align="justify"></div><div align="justify"><br />
</div><div align="justify">Вообще компиляция под *nix штатная возможность, для этого достаточно скачать исходники с сайта производителя <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html">chiark.greenend.org.uk</a> в tar.gz архиве. Мне был доступен релиз 0.61</div><div align="justify"><br />
Установим необходимое для компиляции ПО:<br />
$ sudo apt-get install gcc build-essential libgtk2.0-dev halibut build-dep<br />
<br />
После этого идем в папка загрузки и распаковываем архив:</div><div align="justify">$ tar xzvf putty-0.61.tar.gz<br />
<br />
Переходим в папку:<br />
$ cd putty-0.61/unix<br />
<br />
Выполняем сборку:<br />
$ make -f Makefile.gtk<br />
<br />
Теперь компилируем и устанавливаем:<br />
$ make -f Makefile.gtk install<br />
<br />
Все готово! Вызываем набором команды "putty" в терминале. Если вы будете создавать пользовательскую кнопку запуска или прописывать в главное меню очевидно вам понадобиться оригинальная иконка, ее вы можете найти на сайте <a href="http://vlad.design.com.ua/2009/09/ikonka-dlya-putty/">vlad.design.com.ua</a>.<br />
<br />
При компиляции под GTK очень помог источник:<br />
<a href="http://jamesmcdonald.id.au/it-tips/open-source-apps/putty-gtk2">http://jamesmcdonald.id.au/it-tips/open-source-apps/putty-gtk2 </a><br />
<br />
</div></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2686733811493994724.post-43565953080937923672011-09-04T02:42:00.001+04:002011-09-04T02:46:00.432+04:00Ippon Back Power Pro 800 и Ubuntu Lininux<div dir="ltr" style="text-align: left;" trbidi="on"><div style="text-align: justify;">Я давно использую Linux в качестве основной системы на своем десктопе, а поскольку все *nix'ы очень не любят спонтанные отключения питания (в отличии от местных электриков), то с начала года в доме давно тихо мирно живет ИБП Ippon Back Power Pro 800. </div><div style="text-align: justify;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgT4QPftglurjd0Iet-zQVNPEI1TbYOArw2t7SJiVU9vQvTJv74xBLQYQVz1RUzwicIOS5uaVzqdOhXShHjrJIekzoXFNkJr52gF3basTmf9zVhl9GnTJORimDHXRlFq20zK5rnlGiMM2c/s1600/ippon-back-power-pro-800.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="185" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgT4QPftglurjd0Iet-zQVNPEI1TbYOArw2t7SJiVU9vQvTJv74xBLQYQVz1RUzwicIOS5uaVzqdOhXShHjrJIekzoXFNkJr52gF3basTmf9zVhl9GnTJORimDHXRlFq20zK5rnlGiMM2c/s200/ippon-back-power-pro-800.jpg" width="200" /></a></div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Но прикрутить его к Linux так руки и не доходили. И вот на днях я все-таки решился. А чтобы не забыть в очередной раз алгоритм этой процедуры опишу тут.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Итак исходные данные: </div><div style="text-align: justify;">ИБП Ippon Back Power Pro 800,</div><div style="text-align: justify;">Ubuntu Linux 10.04 (да я сторонник LTS-версий).</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Для начала пред подключением ИБП к компьютеру по средствам USB даем команду:</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">lsusb</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">потом подключаем ИБП и снова повторяем команду, чтобы выявить идентификаторы устройства. Например из строки "Bus 002 Device 005: ID 0665:5161 Cypress Semiconductor USB to Serial" можно узнать, что VendorID = 0665 ProductID = 5161 для моего ИБП.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">1. Установка ===========================================</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Далее установим NUT:</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">sudo apt-get install nut</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">2. Настройка правил UDEV ===============================</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">После этого создаем файл (в случае USB подключения ИБП) в /lib/udev/rules.d/52-nut-usbips.rules со следующим содержанием:</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"># Ippon Back Power Pro 800</div><div style="text-align: justify;">ATTR{idVendor}=="Ваш_VendorID", ATTR{idProduct}=="Ваш_ProductID", MODE="664", GROUP="nut"</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Если ваш ИБП использует для подключения RS232 (аля COM-порт), то создаем файл /lib/udev/rules.d/52_nut-serialups.rules содержащий:</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"># Ippon Back Power Pro 800</div><div style="text-align: justify;">KERNEL=="ttyS0", GROUP="nut"</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">где ttyS0 - номер COM-порта к которому подключен ИБП (в данном случае COM1)</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Далее для USB достаточно вынуть разъем из порта и снова воткнуть. А для COM-порта выполнить следующие команды или перезагрузить систему:</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">sudo udevadm control --reload_rules</div><div style="text-align: justify;">sudo udevadm control trigger</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">3. Настройка NUT ======================================</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">NUT может управлять множеством ИБП в сети, но мы будем использовать простую конфигурацию для 1 компьютера. Для этого в файле /etc/nut/nut.conf выставим соответствующий режим:</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">MODE=standalone</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">В файле /etc/nut/ups.conf укажем параметры подключения к нашему ИБП:</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">[ippon-800]</div><div style="text-align: justify;">driver = blazer_usb</div><div style="text-align: justify;">port = auto</div><div style="text-align: justify;">desc = "Ippon Back Power Pro 800"</div><div style="text-align: justify;">default.battery.voltage.high = 13.60</div><div style="text-align: justify;">default.battery.voltage.low = 10.60</div><div style="text-align: justify;">offdelay = 6</div><div style="text-align: justify;">ondelay = 7</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">где</div><div style="text-align: justify;">[ippon-800] - имя нашего ИБП в системе NUT, оно может быть любым;</div><div style="text-align: justify;">driver - имя драйвера для подключения к ИБП, смотрим его тут <a href="http://www.networkupstools.org/stable-hcl.html">http://www.networkupstools.org/stable-hcl.html</a>, для моего ИБП это blazer_usb и blazer_serial в зависимости от порта подключения;</div><div style="text-align: justify;">port - имя файла порта, для USB можно просто "auto", для COM1-порта "/dev/ttyS0"</div><div style="text-align: justify;">desc - комментарий;</div><div style="text-align: justify;">default.battery.voltage.high - максимальное напряжение батареи при полном заряде, необходимо для расчета остаточного заряда батареи;</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">default.battery.voltage.low - минимальное напряжение батареи при полном разряде;</div><div style="text-align: justify;">offdelay - команда ИБП перейти в режим ожидания через 6 минут</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Далее в файле /etc/nut/upsd.conf мы пропишем контроль доступа:</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">ACL all 0.0.0.0/0</div><div style="text-align: justify;">ACL localnet 192.168.1.0/24</div><div style="text-align: justify;">ACL localhost 127.0.0.1/32</div><div style="text-align: justify;">ACCEPT localhost localnet</div><div style="text-align: justify;">REJECT all</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Здесь мы разрешили подключение к службе для локального компьютера и локальной сети, и отвергли всех остальных. Кстати по умолчанию NUT слушает все интерфейсы по 3493 порту.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Далее заводим пользователей, которые могут контролировать ИБП в файле /etc/upsd.users:</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">[имя_пользователя]</div><div style="text-align: justify;">password = пароль_пользователя</div><div style="text-align: justify;">allowfrom = localnet</div><div style="text-align: justify;">upsmon master</div><div style="text-align: justify;">actions = SET</div><div style="text-align: justify;">instcmds = ALL</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">где </div><div style="text-align: justify;">allowfrom - параметр определяющий источник подключения;</div><div style="text-align: justify;">upsmon master - параметр дающий права на управление ИБП.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">И последнее, осталось настроить службу мониторинга в файле /etc/nut/upsmon.conf пишем:</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">RUN_AS_USER nut</div><div style="text-align: justify;">MONITOR имя_ибп@localhost 1 имя_пользователя пароль_пользователя master</div><div style="text-align: justify;">MINSUPPLIES 1</div><div style="text-align: justify;">POWERDOWNFLAG /etc/killpower</div><div style="text-align: justify;">SHUTDOWNCMD "sbin/shutdown -Ph +0"</div><div style="text-align: justify;">POLLFREQ 5</div><div style="text-align: justify;">POLLFREQALERT 5</div><div style="text-align: justify;">HOSTSYNC 15</div><div style="text-align: justify;">DEADTIME 15</div><div style="text-align: justify;">RBWARNTIME 43200</div><div style="text-align: justify;">NOCOMMWARNTIME 300</div><div style="text-align: justify;">FINALDELAY 5</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">где SHUTDOWNCMD "sbin/shutdown -Ph +0" - команда на завершение работы компьютера.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Все. Теперь включив систему NUT командой:</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">sudo service nut start</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">можно запросить статус ИБП командой: </div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">upsc имя_ибп</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">в ответ вам система выдать примерно следующее:</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">battery.charge: 100</div><div style="text-align: justify;">battery.voltage: 13.60</div><div style="text-align: justify;">battery.voltage.high: 13.60</div><div style="text-align: justify;">battery.voltage.low: 10.60</div><div style="text-align: justify;">battery.voltage.nominal: 12.0</div><div style="text-align: justify;">beeper.status: enabled</div><div style="text-align: justify;">device.type: ups</div><div style="text-align: justify;">driver.name: blazer_usb</div><div style="text-align: justify;">driver.parameter.offdelay: 6</div><div style="text-align: justify;">driver.parameter.ondelay: 7</div><div style="text-align: justify;">driver.parameter.pollinterval: 2</div><div style="text-align: justify;">driver.parameter.port: auto</div><div style="text-align: justify;">input.current.nominal: 3.0</div><div style="text-align: justify;">input.frequency: 49.9</div><div style="text-align: justify;">input.frequency.nominal: 50</div><div style="text-align: justify;">input.voltage: 246.0</div><div style="text-align: justify;">input.voltage.fault: 246.0</div><div style="text-align: justify;">input.voltage.nominal: 220</div><div style="text-align: justify;">output.voltage: 209.5</div><div style="text-align: justify;">ups.delay.shutdown: 6</div><div style="text-align: justify;">ups.delay.start: 420</div><div style="text-align: justify;">ups.load: 41</div><div style="text-align: justify;">ups.productid: 5161</div><div style="text-align: justify;">ups.status: OL TRIM</div><div style="text-align: justify;">ups.temperature: 25.0</div><div style="text-align: justify;">ups.type: offline / line interactive</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Далее если хочется смотреть в графике можно установить knutclient:</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">sudo apt-get install knutclient</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">После установки knutclient надо сконфигурировать Setting->Configure KNutClient->UPS->Add. Здесь пишем Имя - понятное вам имя ИБП; UPS адрес - имя машины с ИБП (в данном случае localhost); UPS имя - название ИБП в системе NUT; Имя пользователя - пользователь в системе NUT; Пароль - его пароль. Далее выбираем необходимые вам переменные или их все (те что ИБП не поддерживает, просто не будут отображаться) и нажимаем ОК.</div><div style="text-align: justify;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5nM1TQ9oSbQFF-hDMg784YVTNZaOk1dWeZpK-xnjqdynLqO8OSrCpvUvCpvHTx70B1xyZZSgBHGKiGx_7lWlzV0Uq5CHfp_RtkRPv9xNOk8HZ2hxV7oFSaCMwoLeZzdWW6CF8p6din4o/s1600/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="316" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5nM1TQ9oSbQFF-hDMg784YVTNZaOk1dWeZpK-xnjqdynLqO8OSrCpvUvCpvHTx70B1xyZZSgBHGKiGx_7lWlzV0Uq5CHfp_RtkRPv9xNOk8HZ2hxV7oFSaCMwoLeZzdWW6CF8p6din4o/s400/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA.png" width="400" /></a></div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Все бесперебойных вам дней...<br />
<br />
По мотивам:<br />
<a href="http://habrahabr.ru/blogs/linux/102032/">http://habrahabr.ru/blogs/linux/102032/</a><br />
<a href="http://blog.antage.name/posts/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-%D0%B8%D0%B1%D0%BF-ippon-backcomfo-pro.html">http://blog.antage.name</a><br />
<a href="http://blog.shadypixel.com/monitoring-a-ups-with-nut-on-debian-or-ubuntu-linux/">http://blog.shadypixel.com/monitoring-a-ups-with-nut-on-debian-or-ubuntu-linux/</a><br />
<a href="http://www.networkupstools.org/">http://www.networkupstools.org</a></div></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2686733811493994724.post-48803877874123777542011-05-28T00:01:00.005+04:002011-05-28T00:05:28.267+04:00Касперский открывает города. Теперь Козьмодемьянск!<div dir="ltr" style="text-align: left;" trbidi="on"><object width="540" height="290"><param name="movie" value="http://www.youtube.com/v/EtrErSwacEY&hl=en_US&feature=player_embedded&version=3"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/EtrErSwacEY&hl=en_US&feature=player_embedded&version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="540" height="290"></embed></object><br />
</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2686733811493994724.post-76139143784113524812011-02-23T13:18:00.001+03:002011-02-23T13:21:01.553+03:00Linux совместимые девайсы<div dir="ltr" style="text-align: left;" trbidi="on"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg02oR71PyR4WOahyphenhyphen1bKQJteoQSlRU9AaG7gyvSDVz889vPbnS6whI0mCo7u9k9XmbO_fbQSD6HchOG4sCK_gNfynqzqaP1XyteUFs2eZDe5tGnEriegwiy4STb5R3BBchTHtZBJN53YKc/s1600/123.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg02oR71PyR4WOahyphenhyphen1bKQJteoQSlRU9AaG7gyvSDVz889vPbnS6whI0mCo7u9k9XmbO_fbQSD6HchOG4sCK_gNfynqzqaP1XyteUFs2eZDe5tGnEriegwiy4STb5R3BBchTHtZBJN53YKc/s200/123.png" width="200" /></a></div><div style="text-align: justify;">Вот недавно в районе НГ мне подарили Bluetooth мышь A4Tech BT-630 и USB Bluetooth адаптер D-link DBT-122.</div><div style="text-align: justify;">На тот момент на компьютере стояла Ubuntu 10.04, под которой эта связка сразу же заработала, а для WindowsXP пришлось поставить драйвер с сайта D-link.</div><div style="text-align: justify;">Где-то в районе первых чисел февраля, как это бывает каждый год, Ubuntu довела меня своими глюками, поэтому после формата винтов были установлены Windows7 и в противовес ей OpenSUSE 11.3.</div><div style="text-align: justify;">Выбор на SUSE пал из-за родного KDE4, т.к. хотелось поиграться с Plasm'ой. Конечно на этапе установки мышь не работала (вот тут минус всех bluetooth-устройств), но после окончания установки (и настройки утилиты KBluetooth кажется) снова резво бегала по экрану.</div><div style="text-align: justify;">А вот в Windows7 в отличие от XP адаптер нашла сама и мышка также просто подключается, однако драйвера с сайта Dlink лучше не ставить, возможны проблемы с подключением.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Сегодня 23 женушка подарила веб-камеру A4Tech PK-750MJ, дешевая китайская камера.</div><div style="text-align: justify;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLj5E_78-PwbcXBcSxFlaXX6Z3Apc8UYOwv071oCOOFB6ZaABiZ10rG17eBgvlwCmOm4VkWFWTTiI9C7tRknKCqE0pmbgdK9b_G6Gcx0MLlo59D-C2oBFe6tjlu5nEvGi_vcqklzmIPP0/s1600/A4Tech-PK-750MJ.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLj5E_78-PwbcXBcSxFlaXX6Z3Apc8UYOwv071oCOOFB6ZaABiZ10rG17eBgvlwCmOm4VkWFWTTiI9C7tRknKCqE0pmbgdK9b_G6Gcx0MLlo59D-C2oBFe6tjlu5nEvGi_vcqklzmIPP0/s200/A4Tech-PK-750MJ.jpg" width="167" /></a></div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Но что интересно под обоими системами (Windows7 и OpenSUSE 11.3) заработала без проблем и настроек. Просто воткнул и работай... Красота!</div></div>Unknownnoreply@blogger.com4tag:blogger.com,1999:blog-2686733811493994724.post-10435583376274851262011-01-15T00:19:00.000+03:002011-01-15T00:19:39.162+03:00SSH под Windows или как мы настроили защищенный удаленный рабочий стол. (Часть 2)<div style="text-align: justify;">В прошлой <a href="http://kosmoflyko.blogspot.com/2011/01/ssh-windows-1.html">статье</a> мы установили SSH-сервер и сгенерировали пару ключей. Теперь же я просто покажу как можно подключиться к этому всему и как пробросить RDP-порты.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Итак Putty мы уже установили, поэтому запустим его и приступим к настройке подключения. На вкладке Session:</div><div><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRxv3W72LtbphTxHG1MTo7M-F7LPOF7ZLtLoLpC_lwz9m0W6lLYKFmd8yFk5c-VGT8fv3bde7CbiKLPmuMZVJS75GBFlIlAcL_8LqH-FB_ehrNS5-dJtCNEExjjQvYoJJuEw2w30NJdyk/s1600/rdp1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="305" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRxv3W72LtbphTxHG1MTo7M-F7LPOF7ZLtLoLpC_lwz9m0W6lLYKFmd8yFk5c-VGT8fv3bde7CbiKLPmuMZVJS75GBFlIlAcL_8LqH-FB_ehrNS5-dJtCNEExjjQvYoJJuEw2w30NJdyk/s320/rdp1.jpg" width="320" /></a></div><div><br />
</div><div><br />
</div><div style="text-align: justify;">Внесем IP-адрес нашего SSH-сервера и порт на котором он ждет подключения. Здесь же можно после окончания всех настроек сохранить сессию, чтобы конфигурировать все каждый раз.</div><div style="text-align: justify;">Далее перейдем на закладку Windows->Translation:</div><div style="text-align: justify;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTzhDhk7BFXbydpPUX2k1eT5ubf2GAwwCKjvpPt22ojpx0i7QtNCDJPzT0Zi8yWpFhQEdWOOulMBxq5IoQX6N_2_InNY6NJhj1F3rBnZR8kDBUVsO2Vhje7Yt2Bqu4DWV43jg5WQR2epM/s1600/rdp2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="307" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTzhDhk7BFXbydpPUX2k1eT5ubf2GAwwCKjvpPt22ojpx0i7QtNCDJPzT0Zi8yWpFhQEdWOOulMBxq5IoQX6N_2_InNY6NJhj1F3rBnZR8kDBUVsO2Vhje7Yt2Bqu4DWV43jg5WQR2epM/s320/rdp2.jpg" width="320" /></a></div><div><br />
</div><div><br />
</div><div style="text-align: justify;">Здесь мы вручную укажем кодировку СР866, потому что именно в ней нам будет выдавать консоль ОС Windows.</div><div style="text-align: justify;">Перейдем на вкладку Connection->Data:</div><div><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9nxu4QqcNsr-kJNSw_LgujLyonUME7dk0Joa-HFHTOo69h0pj-kFGa_m3SEcyWRfedLNIRKpSzidpuzy9jBMys53HNEMg2MtBxf2MPedSQbub0SOQiC78nyXsLj7sfl1voIM6erOPQ0w/s1600/rdp3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="305" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9nxu4QqcNsr-kJNSw_LgujLyonUME7dk0Joa-HFHTOo69h0pj-kFGa_m3SEcyWRfedLNIRKpSzidpuzy9jBMys53HNEMg2MtBxf2MPedSQbub0SOQiC78nyXsLj7sfl1voIM6erOPQ0w/s320/rdp3.jpg" width="320" /></a></div><div><br />
</div><div style="text-align: justify;">На данной вкладке укажем укажем логин пользователя, для того чтобы не вводить его каждый раз вручную. И перейдем на вкладку Connection->SSH->Auth:</div><div><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYHOkBAioIpC7Z3gsw7gOb6bPbBvPGv7jMIphyphenhyphenttiOKOeHs4xDqNEG5hJOWEt23AEvoAsrwJBJtyGHS5aQclF6vPgh4aAtzSKpGw7LDDLvsPjEdj2xHKUSg2JPyM78Tqb4AyUkSbxDoM0/s1600/rdp4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="303" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYHOkBAioIpC7Z3gsw7gOb6bPbBvPGv7jMIphyphenhyphenttiOKOeHs4xDqNEG5hJOWEt23AEvoAsrwJBJtyGHS5aQclF6vPgh4aAtzSKpGw7LDDLvsPjEdj2xHKUSg2JPyM78Tqb4AyUkSbxDoM0/s320/rdp4.jpg" width="320" /></a></div><div><br />
</div><div><br />
</div><div style="text-align: justify;">Нажмем на ней кнопку Browse и укажем путь к приватному ключу. Теперь вернемся на вкладку Session и сохраним настройки под любым именем.</div><div style="text-align: justify;">А теперь коннект! Смело жмем Open и если все правильно, то выскакивает окно сообщающие цифровую подпись ssh-сервера, нажмем здесь Yes (это нужно для того, чтобы в следующий раз ваш пк знал, что подключился к правильному серверу). Далее мы видим приглашение ввести кодовую фразу:</div><div><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgSZt9YjE3WL5gIpZIYYPdTwhXCnYt3Llzffg5tqdSIM3xgjTHdwkmoEyLWffcYw-sKoINo1eemVO8V7mqgvythpfupX5d8qhsD3BZgoaCbgYlI_W4gPFwcCvwb_-b8AuKCa-V4lbJxSc/s1600/rdp5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="197" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgSZt9YjE3WL5gIpZIYYPdTwhXCnYt3Llzffg5tqdSIM3xgjTHdwkmoEyLWffcYw-sKoINo1eemVO8V7mqgvythpfupX5d8qhsD3BZgoaCbgYlI_W4gPFwcCvwb_-b8AuKCa-V4lbJxSc/s320/rdp5.jpg" width="320" /></a></div><div><br />
</div><div style="text-align: justify;">После ввода корректной фразы у вас откроется штатная консоль управления с правами System (так что осторожней). После того как мы все сделали пишем команду EXIT, для корретного закрытия сессии.</div><div style="text-align: justify;">Ну вот коннектиться к шеллу удаленной машины мы можем, теперь самое вкусное - проброс портов!</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Для этого все настройки оставляем как в первом случае только добавляется еще одна на вкладке Connection->SSH->Tunnels:</div><div><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpuvsOC8QePnaHpt94KbR3u-5AmqhVjSk2YFFWV0zwZzpaOanGZEwPnwKIAOUAzWakzu6f2P9hCnSz1Ei4r0IhOEjDPUtgWpNevLKXgiFqIZovwuD9kuiCMPRfUptIQoCRN-fL7UziF0w/s1600/rdp6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="307" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpuvsOC8QePnaHpt94KbR3u-5AmqhVjSk2YFFWV0zwZzpaOanGZEwPnwKIAOUAzWakzu6f2P9hCnSz1Ei4r0IhOEjDPUtgWpNevLKXgiFqIZovwuD9kuiCMPRfUptIQoCRN-fL7UziF0w/s320/rdp6.jpg" width="320" /></a></div><div><br />
</div><div><br />
</div><div style="text-align: justify;">Тут в "Source port" мы пропишем любой свободный локальный порт нашего пк, например: 9999, а в Destination пропишем IP-адрес сервера внутри локальной сети (на который мы хотим пробросить RDP). Выставим флаги Local и IPv4. И сохранив конфигурацию нажмем Open и введем парольную фразу.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">И что? - спросите вы- Перед нами опять системная консоль!</div><div style="text-align: justify;">Да консоль та! - скажу я - Да сессия не та! :)</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Консоль не закрываем! Открываем RDP-клиент (например тот что зовется "Удаленный рабочий стол") и коннектимся по адресу - localhost:9999</div><div><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqeV_sMSWzDoUeJpSjv3exE9BFlmm36og1yEFlm5p3paday93IAisBGQElu4JOCwRAZ_JsSd1tOVh-oRikfRzs4raXsRgtDadX9OECgCaPAD03JOk7C67NTkAPW_ayuZZvzQYkjl4bUVA/s1600/rdp7.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="187" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqeV_sMSWzDoUeJpSjv3exE9BFlmm36og1yEFlm5p3paday93IAisBGQElu4JOCwRAZ_JsSd1tOVh-oRikfRzs4raXsRgtDadX9OECgCaPAD03JOk7C67NTkAPW_ayuZZvzQYkjl4bUVA/s320/rdp7.jpg" width="320" /></a></div><div><br />
</div><div><br />
</div><div>Жмем Подключить и...</div><div><br />
</div><div class="separator" style="clear: both; text-align: center;"></div><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8Trldhu7A1DB_-aJ4bmJcYtvQfqyOpX-TCYIVByN-Ica_e8ET5BS92IlHY8EplG9XoVnreyOPO7oOBaQfRHLedZ_QNNGxXLdlp0Or1MI1n5UDjFThwIv6gGc244awdy-22QAw5Rs8ask/s1600/rdp8.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="206" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8Trldhu7A1DB_-aJ4bmJcYtvQfqyOpX-TCYIVByN-Ica_e8ET5BS92IlHY8EplG9XoVnreyOPO7oOBaQfRHLedZ_QNNGxXLdlp0Or1MI1n5UDjFThwIv6gGc244awdy-22QAw5Rs8ask/s320/rdp8.jpg" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br />
</div><div class="separator" style="clear: both; text-align: justify;">видим стандартное окно логина, как будто мы с сервером в одной локальной сети :)</div><div>Все, устойчивых вам коннектов!</div>Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-2686733811493994724.post-59085727836983594602011-01-14T00:43:00.002+03:002011-01-14T00:50:54.350+03:00SSH под Windows или как мы настроили защищенный удаленный рабочий стол. (Часть 1)<div class="separator" style="clear: both; text-align: left;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi363GPq5vXTJTTPVj3SJYspu4wNFftpcN2E7IK1d_RJmlKKo_4h3mz09luZbB4hWZ_Fa1Aq-67lU1gyrqQjlBUWq15G7KyujiN6_J0-UpPW-VCu_ced4eoMwgeWaqzwdCFIjnv5Qt9L7c/s1600/openssh.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: justify;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi363GPq5vXTJTTPVj3SJYspu4wNFftpcN2E7IK1d_RJmlKKo_4h3mz09luZbB4hWZ_Fa1Aq-67lU1gyrqQjlBUWq15G7KyujiN6_J0-UpPW-VCu_ced4eoMwgeWaqzwdCFIjnv5Qt9L7c/s1600/openssh.jpg" /></a></div><div style="text-align: justify;">Как известно в ОС Windows никогда не было штатного SSH-сервера и очень зря, т.к. это очень полезная и интересная штучка. </div><div style="text-align: justify;">Secure SHell — сетевой протокол сеансового уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений (например, для передачи файлов). Сходен по функциональности с протоколами Telnet и rlogin, но, в отличие от них, шифрует весь трафик, включая и передаваемые пароли. SSH допускает выбор различных алгоритмов шифрования.</div><div style="text-align: justify;">Как раз на днях назрела проблема с удаленным доступом к внутренним серверам корпоративной сети и я решился убить время на установку SSH-сервера. Я перепробовал несколько вариантов бесплатных серверов (<a href="http://www.itefix.no/i2/copssh">CopSSH</a>, <a href="http://sshwindows.sourceforge.net/">OpenSSH fo Windows</a>, <a href="http://www.cygwin.com/">SSHD из Cygwin</a>, <a href="http://www.kpym.com/2/kpym/index.htm">KpyM SSH-Server</a>, <a href="http://www.freesshd.com/">FreeSSHd</a>). В силу подбора продукта под Windows, я искал простой в установке и функциональный сервер. По ряду причин таким оказался FreeSSHd.</div><div style="text-align: justify;">В установке этого продукта нет ничего сложного, скачиваем дистрибутив с официального сайта и запускаем инсталляцию.</div><div style="text-align: justify;">На запрос "Private keys should be created. Should I do it now?" (запрос на создание серверных RSA/DSA ключей) отвечаем да.</div><div style="text-align: justify;">На запрос "Do you want run FreeSSHd as a system service?" (запрос на регистрацию FreeSSHd как системной службы) отвечаем по желанию. Если вам надо чтобы сервер запускался при старте компьютера без необходимости локального входа, то ставим да.</div><div style="text-align: justify;">Далее идем Пуск->Программы->FreeSSHd->FreeSSHd либо вызываем его из системного трея. Появиться окно конфигурации, где мы перейдем на закладку SSH.</div><div style="text-align: justify;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4CYanJjz4nOxfuiBFfcB0zrVVgGECNoM7HHGxp11Od6mcZO5tGx78NR95FnyLljRi7VLDAUniVDVr6V5rcrlL9LR-w5as4uixdqoK0p43eBmz3JIdp3kJgP15UhKkrEuDdo03YOHRaHU/s1600/ssh1.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="302" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4CYanJjz4nOxfuiBFfcB0zrVVgGECNoM7HHGxp11Od6mcZO5tGx78NR95FnyLljRi7VLDAUniVDVr6V5rcrlL9LR-w5as4uixdqoK0p43eBmz3JIdp3kJgP15UhKkrEuDdo03YOHRaHU/s320/ssh1.bmp" width="320" /></a></div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Здесь мы можем выбрать (описаны последовательно):</div><div style="text-align: justify;">- на каком интерфейсе будет "висеть" сервер</div><div style="text-align: justify;">- какой порт он будет "слушать"</div><div style="text-align: justify;">- максимальное число подключений</div><div style="text-align: justify;">- таймаут простоя сессии</div><div style="text-align: justify;">- путь к файлу сообщения при логине пользователя в систему</div><div style="text-align: justify;">- путь до шелла пользователей (программа запускаемая при логине пользователя и обрабатывающая его команды)</div><div style="text-align: justify;">- Флаг запуска SSH сервера при запуске службы freeSSHd</div><div style="text-align: justify;">- Флаг "использование новой консоли", должен быть включен. Т.к. есть сообщения о подвисании сессии с опущенным флагом.</div><div style="text-align: justify;">- Путь к RSA-ключу сервера</div><div style="text-align: justify;">- Путь к DSA-ключу сервера.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Рекомендуется на данной вкладке настроить нестандартный порт, дабы отсечь часть скриптов "little-хакеров".</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Далее переходим на закладку Authentication:</div><div style="text-align: justify;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7vOFLo7tkEK2uoQBY1IDzVUVoTKejx2T18v5x_4EQA7_aahJutvUc7kiE9UErIwA7Cexzfj4PiUqsZsI6ML-LII0BcUq4pGhNoNwlk9v-gQRQhXgCJt4CLUwTJokEewwuB_5pC0SAZR8/s1600/ssh2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="301" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7vOFLo7tkEK2uoQBY1IDzVUVoTKejx2T18v5x_4EQA7_aahJutvUc7kiE9UErIwA7Cexzfj4PiUqsZsI6ML-LII0BcUq4pGhNoNwlk9v-gQRQhXgCJt4CLUwTJokEewwuB_5pC0SAZR8/s320/ssh2.JPG" width="320" /></a></div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Здесь мы можем изменить расположение папки публичных ключей (Public key folder), по умолчанию она указывает на папку программы, что мне не понравилось и я сменил его на подпапку с именем pub-keys.</div><div style="text-align: justify;">Ну а самое главное тут можно глобально настроить методы аутентификации. Их два: парольная и публичным ключом. Каждый метод может находиться в состоянии: отключен (Disabled), разрешен (Allowed), запрашивается/обязательный (Required). На скриншоте выше показана конфигурация для аутентификации по ключу.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Далее перейдем на закладку Tunneling и разрешим использование туннелей (т.е. так называемый "проброс" портов одной машины на порты другой):</div><div style="text-align: justify;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHzr8o7e3rwbCK9mYfy2y8OZ2b_jfKleeK1lmC2lIfsnFSHA46DvD4u6Y0TCh_i70iI1iD-JUd7uQQiKScz_JcK0u4Kupu7YPutWifjBW6BeMdcdxEAqhkpZ6-rX8Gheq2TCSBeSi-4YM/s1600/ssh3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="304" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHzr8o7e3rwbCK9mYfy2y8OZ2b_jfKleeK1lmC2lIfsnFSHA46DvD4u6Y0TCh_i70iI1iD-JUd7uQQiKScz_JcK0u4Kupu7YPutWifjBW6BeMdcdxEAqhkpZ6-rX8Gheq2TCSBeSi-4YM/s320/ssh3.jpg" width="320" /></a></div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Ну и наконец нам осталось завести пользователя на сервере. Делается это на закладке Users:</div><div style="text-align: justify;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFgMCMIksObyD9foYnQMprttUuFvuxmk8QzHNXIl1abaxCjnY0ViJlbz-_snfCUxjeNK9GA_2C1wQW2CdRjV54z0sixibCcWRWTighm5OZouc2ng-Y9ZzDiOXknWzaTu5Xr-TLqdsbcKg/s1600/ssh4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="308" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFgMCMIksObyD9foYnQMprttUuFvuxmk8QzHNXIl1abaxCjnY0ViJlbz-_snfCUxjeNK9GA_2C1wQW2CdRjV54z0sixibCcWRWTighm5OZouc2ng-Y9ZzDiOXknWzaTu5Xr-TLqdsbcKg/s320/ssh4.jpg" width="320" /></a></div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Нажав на этой вкладке кнопку Add мы добавим пользователя. В появившемся окне пропишем логин, правила аутентификации, и права.</div><div style="text-align: justify;">Тип аутентификации может быть:</div><div style="text-align: justify;">- NT, применяем в случае использования Windows-пользователя. </div><div style="text-align: justify;">- парольная на хеше SHA-1, может быть использована в случае не желания использовать Windows-пользователей для входа.</div><div style="text-align: justify;">- на публичных ключах, аналогична предыдущей. Только для входа используем ключ.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Права пользователя определяют флаги "User can use", это:</div><div style="text-align: justify;">- использование шелла</div><div style="text-align: justify;">- использование безопасного FTP</div><div style="text-align: justify;">- использование туннелей</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Ставим нужное (а для удаленного рабочего стола нам нужны права на туннели и возможно шелл, аутентификацию вберем по ключам) и нажимаем ОK->Применить->OK. После чего надо перезагрузить компьютер иначе аутентификация по ключам не будет работать (а будет выпадать ошибка "No supported authentication methods available").</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Далее нам нужен SSH-клиент <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html">Pytty</a>. Качаем пакет установщика, либо <span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;">PuTTY + </span><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;">PuTTYgen.</span></div><div style="text-align: justify;"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;">Запускаем </span><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;">PuTTYgen:</span></div><div style="text-align: justify;"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;"><br />
</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrT58ue7Gs9agJFWfoiYvMvDLoIodjjYKtu8QDnVzjY3QRZx_730i1wNndEFTGBM_Jl-Dif5XJV9NhUtgubfLKCrqnJhng2tqN49zVItlNYuBfbWfOv81bSJFsAR5P1hZTohNM6X_vDbA/s1600/ssh5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="306" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrT58ue7Gs9agJFWfoiYvMvDLoIodjjYKtu8QDnVzjY3QRZx_730i1wNndEFTGBM_Jl-Dif5XJV9NhUtgubfLKCrqnJhng2tqN49zVItlNYuBfbWfOv81bSJFsAR5P1hZTohNM6X_vDbA/s320/ssh5.jpg" width="320" /></a></div><div style="text-align: justify;"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;"><br />
</span></div><div style="text-align: justify;"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;">В Parameters выставляем SSH-2 RSA и длину в 1024 бита, нажимаем Generate.</span></div><div style="text-align: justify;"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;"><br />
</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm6D8uOg3F6bgpAWVA9-FPSgIxbCU5cVufVZGU5WtNle7rU84VNpPBZbU-mdtoXnXCmHGgHjnFx_Sx-kvf_5N12fT5pB8yk7MrHCRhG90vJL4SEbR0akgFr9VG6NIaCxIg0lBtsAnSVnk/s1600/ssh6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="304" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm6D8uOg3F6bgpAWVA9-FPSgIxbCU5cVufVZGU5WtNle7rU84VNpPBZbU-mdtoXnXCmHGgHjnFx_Sx-kvf_5N12fT5pB8yk7MrHCRhG90vJL4SEbR0akgFr9VG6NIaCxIg0lBtsAnSVnk/s320/ssh6.jpg" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br />
</div><div style="text-align: justify;"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;">Далее активно водим мышкой по разным областям окна, т.к. на основе координат мыши генерируются случайные числа. По окончании генерации получим окно:</span></div><div style="text-align: justify;"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;"><br />
</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqLYWIy4deL87A_kbjSUXzAp5_hK1fqr2aGOOwCx4htrOsAIXxLEeAQ7LInM4qaMnCnjLy_EErrOMajyXO4nPIBZdF-MJtCxevEWTcaCjbXF-GB-q8YhYwtBrhDqYMOMmASLk_IFehpoA/s1600/ssh7.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="306" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqLYWIy4deL87A_kbjSUXzAp5_hK1fqr2aGOOwCx4htrOsAIXxLEeAQ7LInM4qaMnCnjLy_EErrOMajyXO4nPIBZdF-MJtCxevEWTcaCjbXF-GB-q8YhYwtBrhDqYMOMmASLk_IFehpoA/s320/ssh7.jpg" width="320" /></a></div><div style="text-align: justify;"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;"><br />
</span></div><div style="text-align: justify;"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;">В этом окне в поле "Key comment" вводим имя пользователя, для которого создавали ключ (то имя которое регистрировали в FreeSSHd), это надо чтобы потом мучительно не вспоминать чей это ключ.</span></div><div style="text-align: justify;"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;">Далее выделаем весь текст в поле "Public key for pasting into OpenSSH..." и вставляем его в обычный текстовый файл одной строкой. Имя файла задаем обязательно совпадающее с именем пользователя FreeSSHd, а расширение (в данном случае TXT) убираем совсем. Все публичный ключ готов, но окно </span><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;">PuTTYgen рано закрывать</span><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;">.</span></div><div style="text-align: justify;"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;">Мы еще должны сохранить частный/приватный ключ. Для этого сначала введем кодовую фразу (любую, лишь бы запомнить) в поле "Key passphrase" и повторим ее в поле "Confirm passphrase"(это надо чтобы защитить ваш ключ, если он будет украден, то без этой фразы его применить будет нельзя). И нажмем "Save private key" сохранив под именем пользователя с расширением ppk.</span></div><div style="text-align: justify;"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;"><br />
</span></div><div style="text-align: justify;"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;">Далее необходимо закачать публичный ключ на SSH-сервер, как мы помним что настраивали его на подпапку pub-key в папке с программой. </span></div><div style="text-align: justify;"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;"><br />
</span></div><div style="text-align: justify;"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;">Все готово для коннекта. Подробности о коннекте и туннелировании RDP во второй части.</span></div><div style="text-align: justify;"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;"><br />
</span></div><div style="text-align: justify;"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;"><br />
</span></div><div style="text-align: justify;"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;"><br />
</span></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2686733811493994724.post-1050045056763941912010-11-18T00:13:00.003+03:002010-11-18T00:31:24.189+03:00Корень FreeBSD на почве ZFS или триумфальное возвращение чертей! :)<div style="text-align: justify;">Да, да да! Это снова очередная статья о личном опыте использования ОС FreeBSD на основе файловой системы ZFS. Но лучше много информации чем ее отсутствие :)</div><div style="text-align: justify;"><div align="left" class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiR5sbw6WCjwnvh_eu0OToMUPSaMYm53zZ1_DtACgctFjUmKRQsJ7ZGK_nAvvboyZWbr3fExG4CNrCSJkawrFNIHy9v6VjtQKWH-1pCoLdS6oKY_exxcSYRUDjbfNGQ8fVItibmbxwrOBo/s1600/freebsd%252Bzfs.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="206" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiR5sbw6WCjwnvh_eu0OToMUPSaMYm53zZ1_DtACgctFjUmKRQsJ7ZGK_nAvvboyZWbr3fExG4CNrCSJkawrFNIHy9v6VjtQKWH-1pCoLdS6oKY_exxcSYRUDjbfNGQ8fVItibmbxwrOBo/s320/freebsd%252Bzfs.jpg" width="320" /></a></div></div><div style="text-align: justify;"><i>Лирическое...</i></div><div style="text-align: justify;">Если вы периодически просматривали этот блог по диагонали, то очевидно заметили что FreeBSD в нем периодически мелькала (то как прокси для деления инета с другом, то сваливалась в десктоп ОС) и вот теперь я решил создать NAS на ее основе. Вы скажите ведь есть FreeNAS, зачем нам заморачиваться с FreeBSD? В ответ возражу что я просто люблю эту ОС, поэтому и обожаю копаться в ней. Вот и все. :)</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Техническое...</div><div style="text-align: justify;">О прекрасной файловой системе (не лишенной конечно недостатков как и все в нашем мире) <a href="http://ru.wikipedia.org/wiki/ZFS">ZFS</a> вы и без меня в wikipedia прочитаете. Перебрав множество руководств в сети я остановился на официальном по адресу: <a href="http://wiki.freebsd.org/RootOnZFS/GPTZFSBoot/Mirror">wiki.freebsd.org/RootOnZFS/GPTZFSBoot/Mirror</a>. В данном случае я ставил в конфигурации зеркала из 2 дисков по 640Гб.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Итак первым делом нам понадобиться DVD-диск с FreeBSD. У меня был диск 8.1-REALESE. Далее после автозапуска исталятора и выбора страны и языка выбираем Fixit. После чего запуститься sh.<br />
<br />
1. Создаем GPT-схему (в терминологии windows это ближе к понятию том) разбивки жестких дисков.</div><blockquote>Fixit# gpart create -s gpt ad4</blockquote><blockquote>Fixit# gpart create -s gpt ad6</blockquote>ad4 и ad6 это имена моих дисков. Посмотреть ваши вы можете выполнив:<br />
<blockquote>Fixit# dmesg| grep SATA</blockquote><blockquote>Fixit# dmesg| grep IDE </blockquote><div style="text-align: justify;">2. Создаем партиции (что-то вроде разделов) на них. Мы как и в рекомендации создадим 3 партиции:<br />
- загрузочную в 64кб,<br />
- подкачки на 4Гб,<br />
- корень системы все оставшееся место (в данном случае 590Гб).<br />
<br />
Своп партицию создали отдельно, т.к. в случае аварии на ZFS свопе краш-дамп не создаться. </div><blockquote>Fixit# gpart add -b 34 -s 128 -t freebsd-boot ad4</blockquote><blockquote>Fixit# gpart add -b 162 -s 8388608 -t freebsd-swap -l swap0 ad4</blockquote><blockquote>Fixit# gpart add -b 8388770 -s 590G -t freebsd-zfs -l disk0 ad4</blockquote><blockquote>Fixit# gpart add -b 34 -s 128 -t freebsd-boot ad6</blockquote><blockquote>Fixit# gpart add -b 162 -s 8388608 -t freebsd-swap -l swap1 ad6</blockquote><blockquote>Fixit# gpart add -b 8388770 -s 590G -t freebsd-zfs -l disk1 ad6</blockquote><div style="text-align: justify;"> Вот тут первая засада! Если не указывать параметр "-s" при создании последних партиций, то будет использовано все доступное место. Чего ж тут плохого спросите вы. А то что в зеркале 2 и более винчестера и реальные емкости у них тоже разные. На моих винчестерах WD серии Green на 640Гб "маркетинговой емкости" доступно реально 596Гб. А расхождение между винчестерами составило 528,25Мб! А это означает что если "упадет" больший диск, то зеркало не восстановиться.<br />
<br />
Именно поэтому размер последней партиции = общая реальная емкость - 2 * расхождение в размере - своп - загрузочная - 2*17кб(GPT-таблица)<br />
<br />
Расхождение в размере берем удвоенное, т.к. страхуемся вдруг третий винчестер, который когда нибудь придет на замену, будет содержать большее расхождение в емкости. Двойной размер GPT-таблиц обеспечен их двойным хранением в начале и конце диска. Я не стал заморачиваться и заложил на эти расходы 2.2Гб (да, наверно больше чем нужно, но я собираю NAS и данные на нем мои проекты мне чрезвычайно важны).<br />
<br />
Реальный размер диска легко узнать выполнив:</div><blockquote>Fixit# gpart list имя_диска</blockquote><div style="text-align: justify;">В разделе Consumer параметр Mediasize.<br />
<br />
Кстати в параметрах -b (смещение) и -s (длинна) применяется следующий вид аргументов:<br />
- 0-9 = LBA-блоки (1 блок 512Б)<br />
- 0-9k = размер в килобайтах<br />
- 0-9M = размер в мегабайтах<br />
- 0-9G = размер в гигабайтах<br />
<br />
Проверить корректность "разбивки диска" можно выполнив:</div><blockquote>Fixit# gpart show имя_диска </blockquote>Если вы ошиблись при разметке, то вам помогут следующие команды:<br />
- удаление партиции<br />
<blockquote>Fixit# gpart delete -i номер_партиции имя_диска </blockquote>-удаление схемы (предварительно удалив все партиции)<br />
<blockquote>Fixit# gpart destroy имя_диска </blockquote><div style="text-align: justify;">Номер партиции можно увидеть либо через команду gpart list (параметр index), либо gpart show (3-й столбик). Ну чтоже пойдем далее.<br />
<br />
3. Установим защитный MBR-сектор и gptzfs-загрузчик:</div><blockquote>Fixit# gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptzfsboot -i 1 ad4</blockquote><blockquote>Fixit# gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptzfsboot -i 1 ad6</blockquote><div style="text-align: justify;">В случае ошибки "operation not permitted" выполните:</div><blockquote>Fixit# sysctl kern.geom.debugflags=0x10 </blockquote><div style="text-align: justify;">4. Загрузим модули поддержки ZFS:</div><blockquote>Fixit# kldload /mnt2/boot/kernel/opensolaris.ko</blockquote><blockquote>Fixit# kldload /mnt2/boot/kernel/zfs.ko</blockquote><div style="text-align: justify;">5. Создадим ZFS-пул под названием zroot (название может быть любым):</div><blockquote>Fixit# mkdir /boot/zfs</blockquote><blockquote>Fixit# zpool create zroot mirror /dev/gpt/disk0 /dev/gpt/disk1</blockquote><blockquote>Fixit# zpool set bootfs=zroot zroot</blockquote><div style="text-align: justify;">6. Создадим файловые системы в ZFS-пуле:<br />
Сначала установим нужный нам механизм расчета контрольных сумм. В мануале рекомендован fletcher4. Я же установил sha256, т.к. он более устойчив, но и более "тяжелый" для процессора.</div><blockquote>Fixit# zfs set checksum=fletcher4 zroot</blockquote><div style="text-align: justify;">Файловые системы оставим пока по умолчанию, ZFS тем и славиться что можно в любой момент что-то добавить не останавливая компьютер. </div><blockquote>Fixit# zfs create -o compression=on -o exec=on -o setuid=off zroot/tmp</blockquote><blockquote>Fixit# chmod 1777 /zroot/tmp</blockquote><blockquote>Fixit# zfs create zroot/usr</blockquote><blockquote>Fixit# zfs create zroot/usr/home</blockquote><blockquote>Fixit# cd /zroot ; ln -s /usr/home home</blockquote><blockquote>Fixit# zfs create -o compression=lzjb -o setuid=off zroot/usr/ports</blockquote><blockquote>Fixit# zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/distfiles</blockquote><blockquote>Fixit# zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/packages</blockquote><blockquote>Fixit# zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/usr/src</blockquote><blockquote>Fixit# zfs create zroot/var</blockquote><blockquote>Fixit# zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/crash</blockquote><blockquote>Fixit# zfs create -o exec=off -o setuid=off zroot/var/db</blockquote><blockquote>Fixit# zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/db/pkg</blockquote><blockquote>Fixit# zfs create -o exec=off -o setuid=off zroot/var/empty</blockquote><blockquote>Fixit# zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/log</blockquote><blockquote>Fixit# zfs create -o compression=gzip -o exec=off -o setuid=off zroot/var/mail</blockquote><blockquote>Fixit# zfs create -o exec=off -o setuid=off zroot/var/run</blockquote><blockquote>Fixit# zfs create -o compression=lzjb -o exec=on -o setuid=off</blockquote><blockquote>Fixit# chmod 1777 /zroot/var/tmp</blockquote><div style="text-align: justify;">7. Установим систему FreeBSD на диск:</div><blockquote>Fixit# cd /dist/8.0-*</blockquote><blockquote>Fixit# export DESTDIR=/zroot</blockquote><blockquote>Fixit# for dir in base catpages dict doc games info lib32 manpages ports;do (cd $dir ; ./install.sh) ; done</blockquote><blockquote>Fixit# cd src ; ./install.sh all</blockquote><blockquote>Fixit# cd ../kernels ; ./install.sh generic</blockquote><blockquote>Fixit# cd /zroot/boot ; cp -Rlp GENERIC/* /zroot/boot/kernel/</blockquote><div style="text-align: justify;">8. Переключаем партицию /var/empty в readonly:</div><blockquote>Fixit# zfs set readonly=on zroot/var/empty </blockquote><div style="text-align: justify;">9. Перемонтируем корень системы: </div><blockquote>Fixit# chroot /zroot </blockquote><div style="text-align: justify;">10. Создадим основной конфигурационный файл /etc/rc.conf.<br />
Сначала скажем что наши тома используют ZFS: </div><blockquote>Fixit# echo 'zfs_enable="YES"' > /etc/rc.conf</blockquote><div style="text-align: justify;">Потом сообщим система ее имя:</div><blockquote> Fixit# echo 'hostname="nas.mydomain.local"' >> /etc/rc.conf</blockquote><div style="text-align: justify;">А за одно пропишем это в файл hosts (особенно если ваш домен, как например .local не может быть разрешен доступными DNS-серверами):</div><blockquote>Fixit# echo '127.0.0.1 nas.mydomain.local' >> /etc/hosts</blockquote><div style="text-align: justify;">Именно с отсутствием этой записи (а вернее с невозможностью разрезолвить свое DNS-имя) были связаны и долгая загрузка самой системы на строке "configuring syscons: blanktime" и долгий старт mc.<br />
Далее установим конфигурацию сетевой карты:</div><blockquote> Fixit# echo 'ifconfig_nfe0="DHCP"' >> /etc/rc.conf</blockquote><div style="text-align: justify;">Можно и по другому (статический адрес):</div><blockquote>Fixit# echo 'ifconfig_nfe0="inet 192.168.0.3 netmask 255.255.255.0"' >> /etc/rc.conf</blockquote><blockquote>Fixit# echo 'defaultrouter="192.168.0.1"' >> /etc/rc.conf</blockquote><div style="text-align: justify;">во всех командах nfe0 - имя моей карты, узнать вашу вы можете так:</div><blockquote>Fixit# dmesg | grep Network</blockquote><div style="text-align: justify;">или так</div><blockquote>Fixit# ifconfig</blockquote><div style="text-align: justify;">При этом последняя команда покажет и псевдо-устройство lo0 (интерфейс локальной петли)<br />
<br />
11. Создадим конфигурационный файл загрузчика:</div><blockquote>Fixit# echo 'zfs_load="YES"' > /boot/loader.conf</blockquote><blockquote>Fixit# echo 'vfs.root.mountfrom="zfs:zroot"' >> /boot/loader.conf</blockquote><div style="text-align: justify;">12. Установим загрузчик ZFS:</div><blockquote>Fixit# echo 'LOADER_ZFS_SUPPORT=YES' > /etc/src.conf</blockquote><blockquote>Fixit# mount -t devfs devfs /dev</blockquote><blockquote>Fixit# export DESTDIR=""</blockquote><blockquote>Fixit# cd /usr/src/sys/boot/</blockquote><blockquote>Fixit# make obj</blockquote><blockquote>Fixit# make depend</blockquote><blockquote>Fixit# make</blockquote><blockquote>Fixit# cd i386/loader</blockquote><blockquote>Fixit# make install</blockquote><div style="text-align: justify;">13. Ставим пароль на root'a:</div><blockquote>Fixit# passwd</blockquote><div style="text-align: justify;">14. Выбираем часовой пояс:</div><blockquote>Fixit# tzsetup</blockquote><div style="text-align: justify;">15. Создаем базу alias'ов /etc/mail/aliases.db:</div><blockquote>Fixit# cd /etc/mail</blockquote><blockquote>Fixit# make aliases</blockquote><div style="text-align: justify;">16. Отключаем текущий корень системы:</div><blockquote>Fixit# umount /dev</blockquote><blockquote>Fixit# exit</blockquote><div style="text-align: justify;">17. Сохраняем файл конфигурации ZFS в каталоге корневой установленной системы (это один из важных файлов ZFS сохраните его потом в надежном месте):</div><blockquote>Fixit# cp /boot/zfs/zpool.cache /zroot/boot/zfs/zpool.cache</blockquote><div style="text-align: justify;">18. Подключаем своп:<br />
18.1 Вариант 1 - это использование всех партиций свопа как независимых. Для этого создаем файл fstab, описывающий конфигурацию файловых систем:</div><blockquote>Fixit# cat << EOF > /zroot/etc/fstab</blockquote><blockquote># Device Mountpoint FStype Options Dump Pass#</blockquote><blockquote>/dev/gpt/swap0 none swap sw 0 0</blockquote><blockquote>/dev/gpt/swap1 none swap sw 0 0</blockquote><blockquote>EOF</blockquote><div style="text-align: justify;">18.2 Вариант 2 - использование зеркалированного свопа (RAID-1)<br />
18.2.1 Для второго варианта (а я использую его как самый устойчивый и просто интересный) нужно подгрузить модуль поддержки зеркала:</div><blockquote>Fixit# kldload /mnt2/boot/kernel/geom_mirror.ko</blockquote><div style="text-align: justify;">18.2.2 Собрать зеркало:</div><blockquote>Fixit# gmirror label -b prefer swap gpt/swap0 gpt/swap1</blockquote><div style="text-align: justify;">Вот тут тоже иногда ошибка скачет. Бывает пишет что не видит swap0 и в каталоге /dev/gpt/ файлы устройств swap0 и swap1 пропадают, то смотрим собралось ли зеркало:</div><blockquote>Fixit# gmirror status</blockquote><div style="text-align: justify;">В случае успеха переходим далее.<br />
<br />
18.2.3 Создаем файл fstab, описывающий конфигурацию файловых систем:</div><blockquote>Fixit# cat << EOF > /zroot/etc/fstab</blockquote><blockquote># Device Mountpoint FStype Options Dump Pass#</blockquote><blockquote>/dev/mirror/swap none swap sw 0 0</blockquote><blockquote>EOF</blockquote><div style="text-align: justify;">18.2.4 Добавляем в загрузчик модуль поддержки зеркала:</div><blockquote>Fixit# echo 'geom_mirror_load="YES"' >> /zroot/boot/loader.conf</blockquote><div style="text-align: justify;">19. Выставим корректный путь к библиотекам:</div><blockquote>Fixit# export LD_LIBRARY_PATH=/mnt2/lib </blockquote><div style="text-align: justify;">20. Демонтируем все файловые системы ZFS:</div><blockquote>Fixit# zfs unmount -a</blockquote><div style="text-align: justify;">Бывает и тут ошибка "device busy", тогда пишем:</div><blockquote>Fixit# cd /</blockquote><div style="text-align: justify;">и повторяем предыдущую команду.<br />
<br />
21. Установим точки загрузки для ZFS-пула:</div><blockquote>Fixit# zfs set mountpoint=legacy zroot</blockquote><blockquote>Fixit# zfs set mountpoint=/tmp zroot/tmp</blockquote><blockquote>Fixit# zfs set mountpoint=/usr zroot/usr</blockquote><blockquote>Fixit# zfs set mountpoint=/var zroot/var</blockquote><div style="text-align: justify;"><br />
Все, готово! Выполняем exit и выходим из sysinstall с перезагрузкой.<br />
<br />
<br />
</div>Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-2686733811493994724.post-42596135403250578172010-11-11T22:25:00.001+03:002010-11-11T22:30:29.440+03:00NVIDIA 8800GT и умелые ручки :)<div style="text-align: justify;">(В статье приводиться личный опыт автора. За испорченное оборудование автор ответственности не несет. Все действия делаются на свой страх и риск. Кроме того данные действия лишают вас гарантии на устройство.) </div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Досталась мне тут плата NVIDIA 8800GT почти даром, со сломаной системой охлаждения. </div><div style="text-align: justify;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjx9ZWGsGuUeU-2KPkyPvTZJC4bhhbHmBiRAhLMEsrRaRSB9cm5zqcEjcDc6T4ruZLVsgEJFHtGZfeZ5txXEqsk7CyNTd_vrDmxEmc2fQvZbAzOrr-dQcTQO2lgQJUTcJxqJZ5WZAmCkY4/s1600/08102010499.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjx9ZWGsGuUeU-2KPkyPvTZJC4bhhbHmBiRAhLMEsrRaRSB9cm5zqcEjcDc6T4ruZLVsgEJFHtGZfeZ5txXEqsk7CyNTd_vrDmxEmc2fQvZbAzOrr-dQcTQO2lgQJUTcJxqJZ5WZAmCkY4/s320/08102010499.jpg" width="320" /></a></div><div style="text-align: justify;"> </div><div style="text-align: justify;">А поскольку хотелось собрать еще один комп, а покупать видеокарту совсем не хотелось, то решил я ее восстановить. Пробежавшись по магазинам заводской системы не нашлось по разумной цене, поэтому решил "слепить из того что было".</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">А был кулер Igloo под CPU Socket. Достав инструменты (напильник, шуруповер/дрель, комплект сверл, относительно прямые руки) я принялся за работу.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Снял систему охлаждения (с обратной стороны карты отстегиваем пружинки с крючков).</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Удалил остатки старой термопасты (она тут иногда присыхает, будьте осторожны при отделении радиатора от ядра микросхемы). В данном случае, термопаста хорошо растворясь спиртом.</div><div style="text-align: justify;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHCdMF9QHPeZns3g0ZD1McZUosrqC4rxBhr8_I29QEnHq5h-nZlAwrDgAsMihmH5F30Sjb-kvaeB5lkfTkvJnsXtb6ExUzP3JiKqR0CWk0H4Y1HMyz0PZkNW5f58shR4uc21ZerEvTfaw/s1600/08102010502.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHCdMF9QHPeZns3g0ZD1McZUosrqC4rxBhr8_I29QEnHq5h-nZlAwrDgAsMihmH5F30Sjb-kvaeB5lkfTkvJnsXtb6ExUzP3JiKqR0CWk0H4Y1HMyz0PZkNW5f58shR4uc21ZerEvTfaw/s320/08102010502.jpg" width="320" /></a></div><br />
<div style="text-align: justify;">После чего были отвинчены обе крепежные скобки с крючками от радиатора.</div><div style="text-align: justify;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEha3DesimI39zSoIXneCRv2mONe3ASaGxP0qbaLmSGwrejiYQMLvE794kozFldNFhFImNdrYsOf2BAAYu4D7x9qftxqmjPLQieALA2TiK2UWVBRiC0-cH1rykMYD8-rFB6NdP6wPEihcrY/s1600/08102010503.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEha3DesimI39zSoIXneCRv2mONe3ASaGxP0qbaLmSGwrejiYQMLvE794kozFldNFhFImNdrYsOf2BAAYu4D7x9qftxqmjPLQieALA2TiK2UWVBRiC0-cH1rykMYD8-rFB6NdP6wPEihcrY/s320/08102010503.jpg" width="320" /></a></div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Потом берем линейку и снимаем размеры с радиатора. А точнее кординаты ответстий под резьбу шурупов и расположение углублений в радиаторе под крепежные скобки. Наносим все это хозяйство на радиатор от Socket'a примеряем и снимаем лишний аллюминий напильником для создания углублений под крепежные скобки. Величина глубины их равна толшине металла скобки. </div><div style="text-align: justify;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNoLDTCWgCg7X9TRhKlpspjp3kFpaUlwCVdxBQvWoRX8B-A8rVVr2KiZmLZvU6eF_CStyATQsezPcE6wQMGg3MVd3yIt0_B0pv_SVEvwLIR1e-altANsDyUu9lXsm6w-WwZa0DzIVyNMg/s1600/09102010505.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNoLDTCWgCg7X9TRhKlpspjp3kFpaUlwCVdxBQvWoRX8B-A8rVVr2KiZmLZvU6eF_CStyATQsezPcE6wQMGg3MVd3yIt0_B0pv_SVEvwLIR1e-altANsDyUu9lXsm6w-WwZa0DzIVyNMg/s320/09102010505.jpg" width="320" /></a></div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0L60GcVhvyTjw_MzeaFKvjPyFQKH8j3oMQRaieNnp-w6liWxTg8zCX6wNmp1uLs3fjRNGrpchP2Y8BHfXwMbW27BvPtERCZgb6_QFBu0JJcIw26m5mduE6PZTzSdxCGXNQG3HBXSrgx8/s1600/09102010504.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0L60GcVhvyTjw_MzeaFKvjPyFQKH8j3oMQRaieNnp-w6liWxTg8zCX6wNmp1uLs3fjRNGrpchP2Y8BHfXwMbW27BvPtERCZgb6_QFBu0JJcIw26m5mduE6PZTzSdxCGXNQG3HBXSrgx8/s320/09102010504.jpg" width="320" /></a></div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Сверлим отверстия чуть меньшего диаметра чем винты и вбиваем винты (как гвозди молотком) в металл. Аллюминий металл мягкий поэтому винты хорошо войдут и закрепятся.</div><div style="text-align: justify;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOr3HEMbKmqE5tenSF0lzYUYMjTpvYfEQr8HH21aKq3FE4qqDFxRyZuoscVDNMflHudiAmBi2YIECni5Nx-aoP-4w0d1Trag-VC3hNssYPLp-F0fYOs8NGcEueY6fRKz630S4c9mVzQi0/s1600/10102010507.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOr3HEMbKmqE5tenSF0lzYUYMjTpvYfEQr8HH21aKq3FE4qqDFxRyZuoscVDNMflHudiAmBi2YIECni5Nx-aoP-4w0d1Trag-VC3hNssYPLp-F0fYOs8NGcEueY6fRKz630S4c9mVzQi0/s320/10102010507.jpg" width="320" /></a></div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Скотчем изолируем скобки от коротких замыканий на деталях. И так как одной стороной радиатор ложиться на PCI-порты я ее тоже заизолировал скотчем (на всякий).</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">После прикручиваем/приклеиваем к радиатору вентилятор (я использовал крепление проволкой).</div><div style="text-align: justify;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEji5-mc-ruDscX0Z45E8weRvqsEZS2sReE3VrW5RofXhOcc09vwiCfoisfyq52f2jQm6uKruBW8q46f19jdkL7MV7-QqZNQ1JaQ-kHe9d_EqR4IDuSR0KHJeJVk2tXUFEFj1I-JmvK3LCM/s1600/10102010510.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEji5-mc-ruDscX0Z45E8weRvqsEZS2sReE3VrW5RofXhOcc09vwiCfoisfyq52f2jQm6uKruBW8q46f19jdkL7MV7-QqZNQ1JaQ-kHe9d_EqR4IDuSR0KHJeJVk2tXUFEFj1I-JmvK3LCM/s320/10102010510.jpg" width="320" /></a></div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Примеряем, наносим термопасту и устанавливаем на карту. Получаем монстра :)</div><div style="text-align: justify;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilbVdI0JJ9fHNKFKh5Fng2gIzQjylFVvz7syL5s-h0EbEeyszeJZj3Zig_3aOeC5rZ5HTh6k1bVHoCL5cfpPkuYtaQfqp0l8ynS77AUFKZ9ZOvFV28-hMX70vK1cf94Cc9VZTEDZwyMSA/s1600/10102010511.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilbVdI0JJ9fHNKFKh5Fng2gIzQjylFVvz7syL5s-h0EbEeyszeJZj3Zig_3aOeC5rZ5HTh6k1bVHoCL5cfpPkuYtaQfqp0l8ynS77AUFKZ9ZOvFV28-hMX70vK1cf94Cc9VZTEDZwyMSA/s320/10102010511.jpg" width="320" /></a></div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Ремонт занял примерно 2 часа, из которых 1,5 я вытачивал углубления и сверлил отверстия добиваясь точности и мучаясь без тисков. Если вы как и я промахнулись с первого раза с отверстием, то возмите кусочек аллюминевой проволки и забейте его в отверстие, сняв напильником лишний металл.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Монстр был установлен в компьютер и работает уже 2 меясяца без нареканий. </div><div style="text-align: justify;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihvQZAuAZcRjDLclQ0CWDksQqCeWMyhG8lSBtDGcTjvdNEU0Y2jyvKq_vkeXRZ5yfmIlKUYgz2YpI_b6bHgWJVPJ0z6I3uCtgakl9k80hS8RbIbfmzJkPZh-0-lmmflC-5hqqFMGaQ1_o/s1600/10102010515.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihvQZAuAZcRjDLclQ0CWDksQqCeWMyhG8lSBtDGcTjvdNEU0Y2jyvKq_vkeXRZ5yfmIlKUYgz2YpI_b6bHgWJVPJ0z6I3uCtgakl9k80hS8RbIbfmzJkPZh-0-lmmflC-5hqqFMGaQ1_o/s320/10102010515.jpg" width="240" /></a></div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Температура по показанию драйвера от Nvidia X Server Setting под Linux составляет 54-60 градусов С.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"><br />
</div>Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-2686733811493994724.post-29466174878334803022010-10-02T23:09:00.000+04:002010-10-02T23:09:46.151+04:00QMMP - Music PlayerМне давно не нравилось использовать монстроидальные Rhythmbox и Amarok, особенно когда я вспоминал об XMMS2 который был в FreeBSD5.6. И вот недавно решил поискать аналог в Linux.<br />
Самого XMMS я не нашел, но был найден Qmmp. Ставиться он из штатного репозитария. Поддерживает скины от WinAmp версии 2.x, расширение файлов .wsz (их большая коллекция тут: <a href="http://www.customize.org/winamp2/skins?page=1">http://www.customize.org/winamp2/skins?page=1</a>), которые надо просто положить в папку ~/.qmmp/skins (то есть /home/<username>/.qmmp/skins).</username><br />
Проблему с кодировкой кирилицы (если ваша коллекция пришла еще с windows времен) можно решить так, идем в Настройки (QMMP) - Модули - Модуль mpeg - Кодировка IDv2 и там ставим CP1251.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2686733811493994724.post-86833399742836265812010-09-26T23:33:00.000+04:002010-09-26T23:33:09.858+04:00LVM2 в ubuntu 10.04Это очередная заметка из цикла "Пляски с бубном или очередной глюк Ubuntu 10.04.01". Все началось из-за необходимости перенести с HDD занятого Fedora необходимые данные. HDD содержал два раздела boot (etx4) и LVM (внутри которого сидели / и /home, оба в ext4).<br />
<br />
Согласно <a href="http://www.linux-sxs.org/storage/fedora2ubuntu.html">статье</a> было проделанно следующее:<br />
1-установленна поддержка lvm<br />
<blockquote>sudo apt-get install lvm2</blockquote>2-загружен модуль ядра<br />
<blockquote>sudo modprobe dm-mod</blockquote>3-производим поиск LVM-разделов (lvm_group)<br />
<blockquote>sudo vgscan</blockquote>4-активируем LVM-раздел<br />
<blockquote>sudo vgchange name_your_lvm_group</blockquote>5-производим поиск логических разделов на активированном LVM<br />
<blockquote>sudo lvs</blockquote>6-монтируем нужные логические разделы из числа найденных<br />
<blockquote>sudo mount /dev/name_your_lvm_group/name_logic_partition /mnt</blockquote><br />
Это конечно все хорошо, но после перезагрузки система вас обматерит из-за ошибки автомонтирования LVM. Чтобы этого не произошло надо согласно <a href="https://bugs.launchpad.net/ubuntu/+source/lvm2/+bug/147216">bug-report'у</a> создать udev правило.<br />
<br />
Для этого создаем файл /etc/udev/rules.d/85-lvm2.rules со следующим содержимым:<br />
<blockquote>SUBSYSTEM=="block", ACTION=="add|change", ENV{ID_FS_TYPE}=="lvm*|LVM*", \<br />
RUN+="watershed sh -c '/sbin/lvm vgscan; /sbin/lvm vgchange -a y'"</blockquote><br />
В теории все. Помогло лично мне на системе Ubuntu 10.04.01 (2.6.32-24-generic)Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2686733811493994724.post-89077217645364337752010-07-24T00:14:00.001+04:002010-07-24T00:15:17.691+04:00Debian и FireFox<div style="text-align: justify;">Как известно по умолчанию в Debian нет огнелиса, а есть его "аналог" Icewease. Но мне очень не нравился, поэтому погуглив я нашел как поставить любимою лисичку.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Все просто идем на mozilla.org и скачиваем последнюю версию браузера, после даем команды из каталога загрузки:</div><div style="text-align: justify;"><br />
</div><blockquote><div style="text-align: justify;">$ tar xjf firefox-*.tar.bz2</div></blockquote><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">после чего переходим в режим rootа и от туда:</div><div style="text-align: justify;"><br />
</div><blockquote><div style="text-align: justify;"># mkdir /urs/local/applications</div><div style="text-align: justify;"># cp firefox /usr/local/applications</div><div style="text-align: justify;"># chmod /usr/local/applications</div><div style="text-align: justify;"># cd /usr/local/applications</div><div style="text-align: justify;"># find ./* | xargs chmod 0777</div><div style="text-align: justify;"># ln -s /usr/local/applications/firefox/firefox /usr/bin/firefox</div></blockquote><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Теперь при вводе в консоле команды firefoх будет запущен браузер.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">P.S.> Долго искал папку приложений в системе... Так и не нашел, поэтому плюнул и создал applications</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2686733811493994724.post-44932034062819391812010-07-22T20:38:00.002+04:002010-07-23T23:59:09.653+04:00Debian и FlashНу кучка браузеров у нас уже стоит... Надо бы еще и Flash прикрутить. Ну что же и это решаемо. Согласно ресурсу <a href="http://wiki.debian.org/FlashPlayer">wiki.debian.org/FlashPlayer</a> ставим репозитарий:<br />
<br />
#deb http://www.backports.org/debian lenny-backports main contrib non-free<br />
<br />
потом снова ключи:<br />
<br />
#wget -O - http://backports.org/debian/archive.key | apt-key add -<br />
<br />
обновляемся и ставим:<br />
<br />
#apt-get update<br />
#apt-get install flashplugin-nonfree<br />
#/usr/sbin/update-flashplugin-nonfree --install<br />
<br />
Все, теперь во всех браузерах flash работает.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2686733811493994724.post-77802427102446077522010-07-21T20:33:00.003+04:002010-07-21T20:37:56.788+04:00Debian и браузеры<div style="text-align: justify;">Как известно по умолчанию Debian использует в качестве браузера Epiphany, а когда его вам не хватает, то в системе притаился клон FireFox'a браузер Iceweasel. Но моя работа связана иногда и с web-дизайном, поэтому мне их было мало. Да и не очень я жалую выше перечисленных. Поэтому решил поставить Google Chrome и Opera. Любимый же FireFox отложил пока...</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Ставиться все просто. Для Opera согласно <a href="http://deb.opera.com/">deb.opera.com</a> подключаем репозитарий:</div><div style="text-align: justify;"><br />
</div><blockquote>#deb http://deb.opera.com/opera/ lenny non-free<br />
</blockquote><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">далее ставим его ключи:</div><div style="text-align: justify;"><br />
</div><blockquote>#wget -O - http://deb.opera.com/archive.key | apt-key add -<br />
</blockquote><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">после чего даем команду на установку:</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"></div><blockquote><span style="font-size: small;">#apt-get update</span><br />
<span style="font-size: small;">#apt-get install opera</span><br />
</blockquote><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Все... Opera стоит... :)</div><div style="text-align: justify;">Приступим к установке Chrome. Согласно ресурсу <a href="http://www.google.com/linuxrepositories/apt.html">www.google.com/linuxrepositories/apt.html</a> установим репозитарий:</div><div style="text-align: justify;"><br />
</div><blockquote>#deb http://dl.google.com/linux/deb/ stable non-free main<br />
</blockquote><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">как всегда ключи:</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"></div><blockquote>#wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -<br />
</blockquote><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">ну все ставим:</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"></div><blockquote>#apt-get update<br />
#apt-get install google-chrome-stable<br />
</blockquote><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Все теперь у нас и Chrome есть...</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2686733811493994724.post-72377721484748209342010-07-20T01:39:00.001+04:002010-07-20T01:39:00.193+04:00Debian и NOKIA 6720cСмартфон Nokia 6720c имеет хорошую функцию подключения к ПК в качестве стандартной флешки. И это прекрасно работает на Windows, но вот на Linux почему-то монтирование происходило в read-only. Чтобы это исправить я сделал следующее:<br />
<br />
Дал команду:<br />
<br />
#blkid<br />
<br />
Она отобразит список устройств хранения данных, их файловых систем и идентификаторов.<br />
<br />
/dev/sda1: TYPE="swap" <br />
/dev/sda2: UUID="93f8bd62-b864-4b31-98bb-49434954be11" TYPE="reiserfs" <br />
/dev/sda3: UUID="44ddd93c-ab44-4640-b306-3ff8aa5785ba" TYPE="reiserfs" <br />
/dev/sdb1: LABEL="Memory card" UUID="EFED-4B1B" TYPE="vfat" <br />
<br />
Вот он то (идентификатор) нам и нужен UUID="EFED-4B1B". Идем в /etc/fstab и добавляем строку:<br />
<br />
UUID="EFED-4B1B" /media/nokia msdos rw,utf8,noauto 0 0<br />
<br />
Теперь в каталоге /media создаем каталог nokia с правами 0777. И все :)<br />
Когда к ПК присоединиться смартфон, то он его опознает по идентификатору и присоединит в каталог nokia в режиме read-write.<br />
<br />
P.S.> Так же моя личная рекомендация в fstab заменить все записи устройств (например /dev/sda1) на их идентификаторы. Плюс в том что если вы изменити порядок подключения винчестеров (ну мало ли при очередной чистке, отвлекетесь и поменяете местами шлейфы) загрузчик всеравно найдет нужный раздел.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2686733811493994724.post-4132605918319260992010-07-19T01:34:00.001+04:002010-07-19T01:36:44.271+04:00Debian и Nvidia<div style="text-align: justify;">Поставил я тут недавно вместо Ubuntu Debian и теперь хотел установить видеокарту от Nvidia, которая недавно у меня появилась. Карта была старой GF5500FX, но мне должно было ее хватить, тем более нравилось ее пассивное охлаждение. Почистив ее от пыли и поменяв термопасту я установил ее. </div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">После загружки система "порадовала" меня режимом 800х600 24d 60Hz, что мне явно было не подуше (особенно из-за моего ЭЛТ монитора). Ладно подумал я и начал вводить команды:</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"></div><blockquote><div style="text-align: justify;">user@pc$ su root </div></blockquote><blockquote>pc:# aptitude install module-assistant<br />
pc:# module-assistant prepare<br />
pc:# module-assistant update<br />
pc:# module-assistant auto-install nvidia-kernel-source</blockquote><div style="text-align: justify;"><br />
Module-assistant сам выкачал нужные для установки пакеты (исходники и заголовочные файлы ядра) После устанавливаем следующие пакеты:<br />
<br />
</div><blockquote>pc:# aptitude install nvidia-glx nvidia-settings nvidia-xconfig</blockquote><div style="text-align: justify;"><br />
и запустил автоматическую настройку X:<br />
</div><blockquote>pc:# nvidia-xconfig</blockquote><div style="text-align: justify;"><br />
Перезапускаем X, либо перезагружаемся, и все должно заработать. Для более тонкой настройки можете набрать команду<br />
<br />
</div><blockquote>pc:# nvidia-settings</blockquote><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Все... Осталось поправить /etc/X11/xorg.conf чтобы снова работала русская клавиатура:</div><div style="text-align: justify;"><br />
</div><blockquote><div style="text-align: justify;">Section "InputDevice"<br />
# generated from default<br />
Identifier "Keyboard0"<br />
Driver "kbd"<br />
Option "XkbRules" "xorg"<br />
Option "XkbModel" "pc105"<br />
Option "XkbLayout" "us, ru"<br />
Option "XkbOptions" "grp:alt_shift_toogle"<br />
EndSection</div></blockquote><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Вот теперь все... Итог работы режим 1024x768 24d 85Hz :)</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2686733811493994724.post-16507974011613073512010-07-11T01:40:00.000+04:002010-07-11T01:40:19.523+04:00Проблема при формировании путей в JoomlaПри переезде с одного хостинга на другой возникла такая ситуация. CMS Joomla неверно формировала пути, в частности это выражалось в неверных путях до изображений и неверном формировании тега base.<br />
<br />
В интернете при этой ошибке часто рекомендуется исправить в файле head.php строку 66. А точнее заменить в ней $document->getbase() на JURL::base(). Но у меня это не сработало.<br />
<br />
На одном забугорном сайте нашел что ситуация может возникать если параметр в php.ini cgi.fix_pathinfo = 1. Посмотрел в phpinfo() и правда. Т.к. была возможность сбросил его в 0. Теперь все работает.<br />
<br />
info:<br />
cgi.fix_pathinfo = boolean<br />
Обеспечивает поддержку правильных PATH_INFO/PATH_TRANSLATED в CGI. Раньше PHP просто устанавливал PATH_TRANSLATED в SCRIPT_FILENAME и не обращал внимания на PATH_INFO. Для получения дополнительной информации о PATH_INFO, обратитесь к спецификации CGI. Установка этого значения в 1 заставит PHP CGI исправлять свой путь в соответствии со спецификацией. Значение 0 соответствует предыдущему поведению. По умолчанию установлен 0. Вы должны исправить свои скрипты так, чтобы они использовали SCRIPT_FILENAME вместо PATH_TRANSLATED.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2686733811493994724.post-5025920131372522192010-06-26T00:03:00.000+04:002010-06-26T00:03:05.875+04:00Один жаркий день<span class="Apple-style-span" style="font-family: Arial; font-size: small;"><span class="Apple-style-span" style="font-size: 13px;">Вот и закончился этот жаркий день. Он начался с очередного крестового похода на вирусы, а закончился весьма приятным подарком от руководства... :) В пользование мне был выделен смартфон Nokia 6720c, поэтому очень скоро будет обзор... Я конечно и без него хорошо к руководству относился, но все-таки очень приятно когда руководство тебя ценит, это придает новые силы... особенно сейчас когда я ослаблен после сессии...</span></span>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2686733811493994724.post-77225011443250792852010-06-20T02:21:00.001+04:002010-07-10T23:20:28.845+04:00Привет Черти!Привет мой читатель... выкраивая время между работой и сессией, я напишу эту новость... Примерно в конце мая Linux-дистрибутив Ubuntu перешел на версию 10.04. Скажу честно я её ждал и думал что система станет лучше... Но корпорация сохранила "интернет-социальное" направление взятое в 9.10 и сделала еще больший закос под MacOSX...<br />
<div>Ни фига не поменялось - подумал я, когда обновил свой рабочий ноутбук - но жить все еще можно. Хотя на то чтобы привыкнуть к другому расположению кнопок управления окном потребовалось время. Решил обновить (а куда деваться) домашнюю станцию. И вот тут началось... Добрая половина программ стала давать сбои: FireFox перестал открываться вообще, VirtualBox - после переустановки потерял все машины, а после ручного их подключения стал потреблять 100% по процессору и вешать напрочь интерфейс хост-системы... и многое, многое другое...</div><div>Понятно что чистая установка решила бы часть или все возникшие проблемы, но простите, где же хваленая стабильность *nix-систем? И что где гарантии что при переходе на 10.10 не придется снова все переустанавливать? </div><div>Поэтому я решил найти более подходящую мне платформу и основное мое требование: стабильность + безопасность. Ведь по сути совсем не важно на какой ОС вы сидите, важно что с помощью ее вы можете работать, а не вечно ее ремонтировать.</div><div>Именно поэтому были выбраны дистрибутивы FreeBSD, Debian, CentOS, Slackware, Gentoo и ее сын Calculate.</div><div>Debian имел неоспоримые плюсы в лице "близкого родства" к Ubuntu и общирной пакетной базы. Но все это сошло на нет после его установки... их полная ориентированность на OpenSource надоедает.</div><div>CentOS это RedHat и этим все сказано... Хоть исторически и сложилось так что их дистрибутивы наиболее распространены в России, но мне они не нравятся... :) </div><div>Slackware самый консервативный дистрибутив чем он мог мне прекрасно подойти, но так как время поджимало и руки до не не дошли :(</div><div>Gentoo прекрасная система для сборки Linux под себя... но временной фактор и тут сыграл против как и с предыдущим кандидатом...</div><div><br />
</div><div>FreeBSD это чистый консервативный Unix. О какой либо дружественности к пользователю нет и речи. Но ее существенный плюс центролизированная система разработки.К тому же я уже был поверхностно знаком с системой и имел опыт 1 гола жизни под ней... К тому именно с нее начался мой путь мир Unix. Так что записав ее 8 версию на DVD я проинсталировал ее и как не странно "доволен как слон"... :)<br />
<br />
P.S.:Так ведь и пришлось соскочить с FreeBSD. Все в ней хорошо, только встала тут проблема витуализации, а с этим на BDS не очень дело обстоит. Есть тут только VirtualBox, а он уже имеет ряд косяков на моей памяти... Поэтому временно переходим на Debian.</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2686733811493994724.post-11699332668799600712010-06-13T12:07:00.000+04:002010-06-13T12:07:28.233+04:00Пакетная обработка файловДовольно часто надо сменить права или владельца у кучи файлов, в этом вам помогут следующие команды:<br />
<br />
Меняем владельца<br />
find ./* | sudo xargs chown user:group<br />
<br />
Найдет только файлы и сменит владельца<br />
find ./* -type f | sudo xargs chown user:group<br />
<br />
Найдет только файлы и сменит права<br />
find ./* -type d | sudo xargs chmod 0755Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-2686733811493994724.post-6486356358686550802010-05-09T01:42:00.002+04:002010-06-13T11:52:29.829+04:00VirtualBox Service<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlFxTVj9Jm2naIqdK3cM4zSZuheXaI9v7DuLSNaj8iw0CJ_Tu9vjnsybJHVcIzORMVt9vzMTQgiC7BCBtO7ki1mZ1q3PwwwyrtQ-eR3kIUvb6J1e2bDB418vO4jsc-3fiktK5eKMtKJh4/" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlFxTVj9Jm2naIqdK3cM4zSZuheXaI9v7DuLSNaj8iw0CJ_Tu9vjnsybJHVcIzORMVt9vzMTQgiC7BCBtO7ki1mZ1q3PwwwyrtQ-eR3kIUvb6J1e2bDB418vO4jsc-3fiktK5eKMtKJh4/" width="200" /></a>Привет всем, сегодня я расскажу как заставить VirtualBox стартовать в качестве службы на Windows и корректно запускать и останавливать виртуальные машины без входа пользователя в систему.<br />
<br />
Для этого нам понадобиться скачать и установить последний Virtual Box (выше 3.х), установка производиться по умолчанию (т.е. полная конфигурация).<br />
<br />
Создать на диске С: (вообще можно на любом диске все это творить, просто исправьте потом пути) папки vbox\vdi и vbox\machines.<br />
<br />
Теперь запустим VitualBox и настроим его. Файл - Настройка там правим пути Папка для жестких дисков C:\vbox\vdi, Папка для машин C:\vbox\machines. Сохраняем, ставим обычным образом виртуальные машины или импортируем их. Закрываем VirtualBox.<br />
<br />
Скачиваем проект <a href="http://sourceforge.net/projects/vboxvmservice/">http://sourceforge.net/projects/vboxvmservice/</a> и распаковать его файлы в папку C:\vbox\vms.<br />
<br />
Для своей работы проект запрашивает:<br />
- <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9D467A69-57FF-4AE7-96EE-B18C4790CFFD&displaylang=en">Microsoft Windows 2003 Resource Kit Tools</a><br />
- <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=32BC1BEE-A3F9-4C13-9C99-220B62A191EE&displaylang=en">Microsoft Visual C++ Runtime (version 2005 or later)</a><br />
- <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=en">Microsoft Dotnet Framework 2.0</a><br />
поэтому их придется поставить после этого надо изменить файл конфигурации C:\vbox\vms\VBoxVmService.ini<br />
<br />
[Settings]<br />
ServiceName=VBoxVmService<br />
PathToVBoxSDL=C:\Program Files\Sun\VirtualBox\VBoxSDL.exe<br />
PathToVBoxHeadless=C:\Program Files\Sun\VirtualBox\VBoxHeadless.exe<br />
PathToVBoxManage=C:\Program Files\Sun\VirtualBox\VBoxManage.exe<br />
VBOX_USER_HOME=C:\WINDOWS\system32\config\systemprofile\.VirtualBox<br />
[Vm0]<br />
VmName=UbuntuServer<br />
CommandLineUp=E:\vbox\vms\startup.exe 0 BRUTEFORCE<br />
CommandLineDown=E:\vbox\vms\shutdown.exe 0<br />
WorkingDir=E:\vbox\vms<br />
StartupMethod=vrdp<br />
ShutdownMethod=savestate<br />
VrdpPort=3001<br />
<br />
имена машин можно узнать дав в консоле команду:<br />
"C:\Program Files\Sun\VirtualBox\VBoxManage.exe" -list vms<br />
<br />
Далее необходимо создать жесткую ссыдку на xml-файл с конфигурацией машин:<br />
fsutil hardlink create "%windir%\System32\config\systemprofile\.VirtualBox\VirtualBox.xml" "%userprofile%\.VirtualBox\VirtualBox.xml"<br />
<br />
Все, теперь ставим службу VBoxVmService:<br />
C:\vbox\vms\VBoxVmService.exe -i<br />
<br />
(удалить службу можно ключом -u)<br />
<br />
Теперь идем в Пуск - Администрирование - Службы и ставим тип запуска нашей службы в Авто.<br />
<br />
Собственно все. Теперь машины будут подниматься автоматом до входа пользователя.<br />
<br />
Добавлено 11.05.2010:<br />
При разворачивании службы на Windows 2003 стокнулся с проблемами:<br />
1. Не удается создать папки начинающиеся на ".", решилось копированием папки ".VirtualBox" из профиля пользователя в нужную папку, с последующей ее очисткой и созданием ссылки.<br />
2. Служба не находила VirtualBox.xml, поэтому не могла запустить виртуальную машину. Решил созданием жесткой ссылки в "C:\Document and Settings\Default User\.VirtualBox".<br />
3. И самое обидное VirtualBox некорректно работает на сетевых картах в тиминге.Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-2686733811493994724.post-21966988473426688952010-04-28T00:54:00.000+04:002010-04-28T00:54:11.317+04:00Samba + Active Directory как член домена (часть 1)Вот недавно поставил себе на рабочую машину Ubuntu 9.10 и решил ввести ее в домен.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzRNDhcPmHzNVLPiKGjxF73fMLv2DksVAIWErpA5ZPOzSvIu03ueVGHepz6h_GX1FtxJ9FJ4p_bRI0-xzZkRZp3EXqoE92YZUMigvyyKjmKJaS_vwShexKqhvbsPj1lSs36kbVIz-XJcA/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="182" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzRNDhcPmHzNVLPiKGjxF73fMLv2DksVAIWErpA5ZPOzSvIu03ueVGHepz6h_GX1FtxJ9FJ4p_bRI0-xzZkRZp3EXqoE92YZUMigvyyKjmKJaS_vwShexKqhvbsPj1lSs36kbVIz-XJcA/Без%20имени.png" width="320" /></a></div><br />
<br />
Установить пакеты:<br />
apt-get install krb5-user, libpam-krb5<br />
<br />
Коннфигурируем Kerberos:<br />
/etc/krb5.conf<br />
#---------------------------------------<br />
[libdefaults]<br />
default_realm = NB.DOMAIN<br />
krb4_config = /etc/krb.conf<br />
krb4_realms = /etc/krb.realms<br />
kdc_timesync = 1<br />
ccache_type = 4<br />
forwardable = true<br />
proxiable = true<br />
v4_instance_resolve = false<br />
v4_name_convert = {<br />
host = {<br />
rcmd = host<br />
ftp = ftp<br />
}<br />
plain = {<br />
something = something-else<br />
}<br />
}<br />
fcc-mit-ticketflags = true<br />
[realms]<br />
NB.DOMAIN = {<br />
kdc = 192.168.0.10<br />
admin_server = 192.168.0.10<br />
dafault_domain = nb.domain<br />
}<br />
[domain_realm]<br />
.nb.domain = NB.DOMAIN<br />
nb.domain = NB.DOMAIN<br />
[login]<br />
krb4_convert = true<br />
krb4_get_tickets = false<br />
[pam]<br />
ticket_lifetime = 36000<br />
renew_lifetime = 36000<br />
forwardable = true<br />
clock_skew = 300<br />
[logging]<br />
default = FILE:/var/log/krb5.log<br />
[kdc]<br />
profile = /var/lib/kerberos/krb5kdc/kdc.conf<br />
#---------------------------------------<br />
Получаем билет:<br />
kinit domainadmin@NB.DOMAIN<br />
<br />
Проверяем наличие билета:<br />
klist<br />
<br />
Конфигурируем hosts:<br />
/etc/hosts<br />
#---------------------------------------<br />
192.168.0.10 pdc.nb.domain<br />
#---------------------------------------<br />
<br />
Ставим Samba:<br />
apt-get install samba, winbind, smbfs <br />
<br />
Конфигурируем Samba:<br />
/etc/samba/smb.conf<br />
#---------------------------------------<br />
[global]<br />
workgroup = NB<br />
netbios name = CLIENT<br />
server string = Client<br />
password server = pdc.nb.domain<br />
realm = NB.DOMAIN<br />
security = ads<br />
local master = no<br />
domain master = no<br />
preferred master = no<br />
os level = 0<br />
socket options = SO_RCVBUF=65535 SO_SNDBUF=65535 TCP_NODELAY<br />
<br />
log file = /var/log/samba/log.%m<br />
debug level = 2<br />
max log size = 50<br />
<br />
#interfaces = 192.168.0.10/255.255.255.0<br />
#hosts allow = 192.168.0. 127.0.0.1<br />
encrypt passwords = yes<br />
null passwords = no<br />
idmap uid = 10000-20000<br />
idmap gid = 10000-20000<br />
<br />
wins proxy = no<br />
wins server = 192.168.0.10<br />
dns proxy = no <br />
auth methods = winbind<br />
winbind uid = 10000-20000<br />
winbind use default domain =yes<br />
winbind enum groups = yes<br />
winbind enum users = yes<br />
winbind gid = 10000-20000<br />
winbind use default domain = yes<br />
name resolve order = hosts wins bcast lmhosts<br />
case sensitive = no<br />
client use spnego = yes<br />
use spnego = yes<br />
client signing = yes<br />
<br />
template homedir = /home/%D/%U<br />
template shell = /bin/bash<br />
<br />
# Charset settings<br />
display charset = utf-8<br />
unix charset = utf-8<br />
dos charset = cp866<br />
<br />
# Use extended attributes to store file modes<br />
store dos attributes = yes<br />
map hidden = yes<br />
map system = yes<br />
map archive = yes<br />
<br />
# Use inherited ACLs for directories<br />
nt acl support = yes<br />
inherit acls = yes<br />
map acl inherit = yes<br />
#--------------------------------------- <br />
<br />
Проверяем конфиг<br />
testparm<br />
<br />
Перезапускаем службы:<br />
service samba restart<br />
service winbind restart<br />
<br />
Подключаемся к домену<br />
net ads join -S pdc.nb.domain -U domainadmin<br />
<br />
Просмотр групп домена<br />
wbinfo -g<br />
<br />
Просмотр пользователей домена<br />
wbinfo -uUnknownnoreply@blogger.com1