<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.linuxformat.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Crazy+Rebel</id>
	<title>Linuxformat - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.linuxformat.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Crazy+Rebel"/>
	<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Crazy_Rebel"/>
	<updated>2026-11-14T19:16:09Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_24_6.jpg&amp;diff=14666</id>
		<title>Файл:LXF144 24 6.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_24_6.jpg&amp;diff=14666"/>
		<updated>2013-01-28T08:33:39Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_24_5.jpg&amp;diff=14665</id>
		<title>Файл:LXF144 24 5.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_24_5.jpg&amp;diff=14665"/>
		<updated>2013-01-28T08:33:30Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_24_4.jpg&amp;diff=14664</id>
		<title>Файл:LXF144 24 4.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_24_4.jpg&amp;diff=14664"/>
		<updated>2013-01-28T08:33:19Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_24_3.jpg&amp;diff=14663</id>
		<title>Файл:LXF144 24 3.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_24_3.jpg&amp;diff=14663"/>
		<updated>2013-01-28T08:33:10Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_24_2.jpg&amp;diff=14662</id>
		<title>Файл:LXF144 24 2.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_24_2.jpg&amp;diff=14662"/>
		<updated>2013-01-28T08:33:01Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_24_1.jpg&amp;diff=14661</id>
		<title>Файл:LXF144 24 1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_24_1.jpg&amp;diff=14661"/>
		<updated>2013-01-28T08:32:51Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_23_6.jpg&amp;diff=14660</id>
		<title>Файл:LXF144 23 6.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_23_6.jpg&amp;diff=14660"/>
		<updated>2013-01-28T08:32:42Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_23_5.jpg&amp;diff=14659</id>
		<title>Файл:LXF144 23 5.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_23_5.jpg&amp;diff=14659"/>
		<updated>2013-01-28T08:32:33Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_23_4.jpg&amp;diff=14658</id>
		<title>Файл:LXF144 23 4.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_23_4.jpg&amp;diff=14658"/>
		<updated>2013-01-28T08:32:23Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_23_3.jpg&amp;diff=14657</id>
		<title>Файл:LXF144 23 3.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_23_3.jpg&amp;diff=14657"/>
		<updated>2013-01-28T08:32:14Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_23_2.jpg&amp;diff=14656</id>
		<title>Файл:LXF144 23 2.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_23_2.jpg&amp;diff=14656"/>
		<updated>2013-01-28T08:32:06Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_23_1.jpg&amp;diff=14655</id>
		<title>Файл:LXF144 23 1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_23_1.jpg&amp;diff=14655"/>
		<updated>2013-01-28T08:31:57Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=LXF144:%D0%A2%D0%B5%D0%BC%D0%B0_%D0%BD%D0%BE%D0%BC%D0%B5%D1%80%D0%B0&amp;diff=14654</id>
		<title>LXF144:Тема номера</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=LXF144:%D0%A2%D0%B5%D0%BC%D0%B0_%D0%BD%D0%BE%D0%BC%D0%B5%D1%80%D0%B0&amp;diff=14654"/>
		<updated>2013-01-28T08:28:01Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: викификация, оформление, иллюстрация&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==&#039;&#039;MythTV&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
: Хотите записывать TV-трансляции прямо на компьютер? &#039;&#039;&#039;Нейл Ботвик&#039;&#039;&#039; проведет для вас тур по &#039;&#039;MythTV&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Мы обозревали &#039;&#039;MythTV&#039;&#039; 0.24 в [[LXF141:Review3|LXF141]], и отметили, что его настройка несколько трудоемка, но трудов стоит. &#039;&#039;MythTV&#039;&#039; — не просто инструмент для записи TV-трансляций: модули расширения добавляют ему массу функций, а интерфейс на базе скриптов допускает и автоматизацию.&lt;br /&gt;
&lt;br /&gt;
На последующих страницах мы рассмотрим установку и настройку &#039;&#039;MythTV&#039;&#039;, а также применению различных функций этого пакета, и, кроме того, ответим на общие вопросы.&lt;br /&gt;
&lt;br /&gt;
Начнем с оборудования. Вам понадобятся компьютер, TV-приемник и некоторое хранилище. &#039;&#039;MythTV&#039;&#039; использует модель сервер/клиент. Сервер [back-end] – это движок, отвечающий за управление записью трансляций по расписанию, перекодирование, разметку рекламы [advert flagging] и т.д., а клиент [front-end] – это интерфейс пользователя. Клиент и сервер могут работать на одном и том же компьютере, хотя их требования к аппаратным средствам различны.&lt;br /&gt;
&lt;br /&gt;
Сервер требует немало дисковой памяти (войдя во вкус работы с &#039;&#039;MythTV&#039;&#039;, вы обнаружите, что терабайт – это не так и много), место для установки одной или нескольких TV-карт и довольно мощный процессор. Иными словами, это типичный настольный ПК – не самый элегантный или малошумный предмет интерьера гостиной. Клиенту нужно приличное сетевое подключение и способность вывода видео и звука на телевизор. Клиентом у меня служит неттоп Acer Aspire Revo, прикрепленный к задней панели телевизора, а черную работу делает сервер на чердаке.&lt;br /&gt;
&lt;br /&gt;
В разделении клиента и сервера есть и другие плюсы. К одному серверу можно подключить много клиентов, и записанный вами контент будет доступен из любой комнаты: можно начать просмотр программы в кухне, а закончить – лежа в кровати, поскольку сервер помнит, где вы остановились.&lt;br /&gt;
&lt;br /&gt;
Тип требуемого ТВ-приемника сильно зависит от ваших местных условий. В Англии сейчас большинство их на 100 % цифровые, и я использую карты PCI DVB-T. DVB-T – это стандарт наземного цифрового телевидения, в Англии известный под названием Freeview [&#039;&#039;актуальные для России вопросы обсуждаются на http://forum.ixbt.com/topic.cgi?id=73:24-14 и http://www.telesputnik.ru/, – прим. пер.&#039;&#039;]. Существуют приемники DVB-S для спутникового цифрового телевидения, а также различные аналоговые карты. Большое преимущество форматов DVB – то, что они транслируются в виде потоков MPEG, и для их записи на жесткий диск не требуется перекодирования. Это снижает требования к мощности процессора, что важно, если и клиент, и сервер у вас на одной машине, или когда надо выполнять несколько записей одновременно.&lt;br /&gt;
&lt;br /&gt;
HD – дело другое. Стандарт Freeview HD доступен в Англии уже более года, но карт DVB-T2 пока еще нет, а принимать HD на карту DVB-T нельзя. Доступны карты DVB-S2, и для HD либо купите спутниковую «тарелку», либо наберитесь терпения. Причем видео HD предъявляет сверхтребования на все: дисковую память, скорость сетевого соединения между клиентом и сервером, мощность процессора на компьютере клиента.&lt;br /&gt;
&lt;br /&gt;
===Установка и настройка===&lt;br /&gt;
&lt;br /&gt;
Есть три основных способа установки &#039;&#039;MythTV&#039;&#039;: компиляция из исходного кода, установка пакетов из репозитория вашего дистрибутива в установленную копию системы Linux или установка дистрибутива с готовым &#039;&#039;MythTV&#039;&#039;. Мы займемся последним вариантом, хотя, если вы выберете любой другой путь, все описанное далее будет тоже актуально.&lt;br /&gt;
&lt;br /&gt;
Mythbuntu – это, по сути, Xubuntu с добавленным &#039;&#039;MythTV&#039;&#039;, но без некоторых других программ. Поэтому Mythbuntu вполне сойдет как базовая ОС обычного настольного ПК, ведь пакетов легко добавить. Инсталляцию мы подробно описывать не будем – ее выполняет знакомый установщик Ubuntu, только с интерфейсом в других цветах. Впрочем, вам будет задан вопрос о типе желаемой установки. Мы выберем комбинацию клиента и сервера на одном компьютере: установка сервера и клиента по отдельности сложнее, а у нас здесь нет места на ее детали.&lt;br /&gt;
&lt;br /&gt;
Mythbuntu 10.10, новейший релиз на момент написания статьи, поставляется с &#039;&#039;MythTV&#039;&#039; 0.23, но мы возьмем последнюю версию &#039;&#039;MythTV&#039;&#039; – 0.24, так что первым делом вам понадобится обновление. Загрузив Mythbuntu, нажмите клавишу &#039;&#039;&#039;Esc&#039;&#039;&#039;, чтобы закрыть &#039;&#039;MythTV&#039;&#039;, в браузере пройдите по ссылке http://www.mythbuntu.org/auto-builds и установите пакет &#039;&#039;&#039;mythbuntu-repos&#039;&#039;&#039;. Менеджер обновлений установит &#039;&#039;MythTV&#039;&#039; 0.24.&lt;br /&gt;
&lt;br /&gt;
После установки &#039;&#039;MythTV&#039;&#039; 0.24 настройте сервер, запустив утилиту &#039;&#039;mythtv-setup&#039;&#039;. В Mythbuntu для этого выберите команды &#039;&#039;&#039;Applications &amp;gt; System &amp;gt; MythTV Backend Setup&#039;&#039;&#039;. Если у вас отдельный сервер вне шаговой доступности, можно подключиться к нему через &#039;&#039;VNC&#039;&#039; и запустить &#039;&#039;mythtv-setup&#039;&#039; – а значит, на сервере должна быть запущена графическая среда. Другой вариант – применить команду &#039;&#039;SSH&#039;&#039;: она запустит программу настройки на сервере, но отобразит ее окно на вашем рабочем столе:&lt;br /&gt;
&lt;br /&gt;
 ssh -Y user@mythbe mythtv-setup&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Шаг за шагом: Работаем с &#039;&#039;mythtv-setup&#039;&#039;====&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF144_23_1.jpg|Шаг 1]]&lt;br /&gt;
* &#039;&#039;&#039;1 Настройка основных опций&#039;&#039;&#039;&lt;br /&gt;
: Пройдите один за другим все семь разделов настроек &#039;&#039;MythTV&#039;&#039;. Курсор мыши виден не будет, но переключаться между опциями можно клавишами стрелок &#039;&#039;&#039;Вверх&#039;&#039;&#039; и &#039;&#039;&#039;Вниз&#039;&#039;&#039;, а стрелками &#039;&#039;&#039;Вправо&#039;&#039;&#039; и &#039;&#039;&#039;Влево&#039;&#039;&#039; менять их значения. Внизу экрана появляется подсказка для каждого элемента.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF144_23_2.jpg|Шаг 2]]&lt;br /&gt;
* &#039;&#039;&#039;2 Установка частоты развертки&#039;&#039;&#039;&lt;br /&gt;
: Самые важные элементы группы &#039;&#039;&#039;General&#039;&#039;&#039; находятся на странице &#039;&#039;&#039;Locale&#039;&#039;&#039;, где нужно выбрать телевизионный стандарт и таблицу частот. В Англии это PAL-I и Europe West. Если вы не знаете настроек для своего региона, загляните на wiki-страницу проекта &#039;&#039;MythTV&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF144_23_3.jpg|Шаг 3]]&lt;br /&gt;
* &#039;&#039;&#039;3 Добавление карт захвата&#039;&#039;&#039;&lt;br /&gt;
: В верхней части раздела &#039;&#039;&#039;Capture Card Setup&#039;&#039;&#039; установите тип карты. Если у вас несколько карт, повторите эту операцию для каждой из них. Карты DVB появятся в &#039;&#039;&#039;/dev/dvb&#039;&#039;&#039;, а большинство остальных типов – в &#039;&#039;&#039;/dev/video*&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF144_23_4.jpg|Шаг 4]]&lt;br /&gt;
* &#039;&#039;&#039;4 Исходные видеопотоки&#039;&#039;&#039;&lt;br /&gt;
: Теперь установите тип источника видео – если источника DVB еще нет, создайте его. Ассоциируйте каждую из своих карт видеозахвата с источником видео. Здесь можно настроить захват телепрограмм, для чего может потребоваться модификация файла &#039;&#039;&#039;XMLTV&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF144_23_5.jpg|Шаг 5]]&lt;br /&gt;
* &#039;&#039;&#039;5 Поиск каналов&#039;&#039;&#039;&lt;br /&gt;
: Списки доступных каналов захватывает &#039;&#039;&#039;Channel Editor&#039;&#039;&#039;. Выберите опцию &#039;&#039;&#039;Channel Scan&#039;&#039;&#039;, настройте ее на должный регион и подождите пару минут, пока программа отработает. Потом можно отредактировать список каналов, удалив те, что вы смотреть не намерены.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF144_23_6.jpg|Шаг 6]]&lt;br /&gt;
* &#039;&#039;&#039;6 Укажем, где хранить записи&#039;&#039;&#039;&lt;br /&gt;
: Наконец, сообщите &#039;&#039;MythTV&#039;&#039;, где следует сохранять ваши записи – укажите один или несколько каталогов. Если вы выберете несколько каталогов, они будут использоваться с учетом доступного свободного пространства; и нагрузка между каталогами будет выравниваться.&lt;br /&gt;
&lt;br /&gt;
===Основная работа===&lt;br /&gt;
&lt;br /&gt;
Ну вот, &#039;&#039;MythTV&#039;&#039; установлен, сервер настроен, и предполагается, что вы видите интерфейс во всем его блеске. А дальше-то что?&lt;br /&gt;
&lt;br /&gt;
Если клиент и сервер установлены отдельно, то сперва надо сообщить им, к чему подключаться. При запуске ненастроенного клиента этот вопрос должен задаваться автоматически, но если такого не произошло или вы желаете изменить настройки, выберите в меню опции &#039;&#039;&#039;Setup &amp;gt; General&#039;&#039;&#039;. Потребуется задать имя хоста и три параметра &#039;&#039;MySQL&#039;&#039; – имя базы данных, имя пользователя и пароль. Маловероятно, чтобы первые два отличались от стандартных &#039;&#039;&#039;mythconverg&#039;&#039;&#039; и &#039;&#039;&#039;mythtv&#039;&#039;&#039;. Пароль плюс два других параметра можно найти в &#039;&#039;&#039;/home/mythtv/.mythtv/mysql.txt&#039;&#039;&#039; на сервере.&lt;br /&gt;
&lt;br /&gt;
Мы будем описывать управление &#039;&#039;MythTV&#039;&#039; с помощью клавиатуры. Обычный метод – удаленное управление, но кнопки удаленного управления все равно имеют клавиатурные соответствия, а клавиатуры единообразны, в отличие от несхожих друг с другом пультов удаленного управления. Пульты мы рассмотрим позднее.&lt;br /&gt;
&lt;br /&gt;
====Шаг за шагом: Управляем своими записями====&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF144_24_1.jpg|Шаг 1]]&lt;br /&gt;
* &#039;&#039;&#039;1 Держитесь ясности&#039;&#039;&#039;&lt;br /&gt;
: Чтобы прояснить описываемое, показанные здесь экранные снимки используют тему &#039;&#039;&#039;MythCenter-Wide&#039;&#039;&#039;, а не тему &#039;&#039;&#039;Mythbuntu&#039;&#039;&#039;, как на предыдущей странице. Для &#039;&#039;MythTV&#039;&#039; есть несколько тем; они распространяются либо в виде исходного кода, либо в составе пакета &#039;&#039;&#039;myththemes&#039;&#039;&#039;. По внешности они сильно различаются, но выбранная выглядит простой и логичной. А еще нам нравится тема &#039;&#039;Arclight&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF144_24_2.jpg|Шаг 2]]&lt;br /&gt;
* &#039;&#039;&#039;2 Начало записи&#039;&#039;&#039;&lt;br /&gt;
: Мы пока еще ничего не записали, поэтому выберем опции &#039;&#039;&#039;Manage Recordings &amp;gt; Schedule Recordings &amp;gt; Programme Guide&#039;&#039;&#039;; вы увидите свои списки ТВ-программ. Красные кнопки в правом нижнем углу списков программ обозначают их статус записи. Выделите программу, подведя к ней курсор, затем нажмите клавишу &#039;&#039;&#039;R&#039;&#039;&#039;, чтобы записать именно эту программу. Если вместо клавиши &#039;&#039;&#039;R&#039;&#039;&#039; нажать клавишу &#039;&#039;&#039;Enter&#039;&#039;&#039;, вы увидите следующий экран...&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF144_24_3.jpg|Шаг 3]]&lt;br /&gt;
* &#039;&#039;&#039;3 Запись последовательности&#039;&#039;&#039;&lt;br /&gt;
: … где задаются опции записи. Верхняя опция – &#039;&#039;&#039;Record At Any Time On This Channel&#039;&#039;&#039;, иными словами, опция постоянной записи канала. Опций множество, включая запись на любом канале. Это помогает &#039;&#039;MythTV&#039;&#039; управлять расписанием записи: так можно записать повтор на, скажем, канале “+1”. По умолчанию &#039;&#039;MythTV&#039;&#039; записывает по одному показу каждого эпизода, но эту настройку можно изменить, в разделе &#039;&#039;&#039;Schedule Options&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF144_24_4.jpg|Шаг 4]]&lt;br /&gt;
* &#039;&#039;&#039;4 Проверка конфликтов&#039;&#039;&#039;&lt;br /&gt;
: Выберите опции &#039;&#039;&#039;Manage Recordings &amp;gt; Upcoming Recordings&#039;&#039;&#039;, чтобы увидеть программы, которые будут записаны. Красная подсветка и сообщение в правом верхнем углу сигнализируют о конфликтах. Если в списке справа от названия ТВ-программы указана буква &#039;&#039;&#039;L&#039;&#039;&#039;, это означает, что &#039;&#039;MythTV&#039;&#039; записывает более поздний ее показ (вы увидите его далее в списке) с целью избежать конфликта.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF144_24_5.jpg|Шаг 5]]&lt;br /&gt;
* &#039;&#039;&#039;5 Задание приоритетов&#039;&#039;&#039;&lt;br /&gt;
: В &#039;&#039;&#039;Schedule Options&#039;&#039;&#039; есть настройка приоритета для правила записи. Это не исключает конфликты полностью, но помогает &#039;&#039;MythTV&#039;&#039; принимать решения о том, какую программу следует записывать, а какую – пропускать, если, например, матч Лиги чемпионов конфликтует с очередной серией мыльной оперы. &lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF144_24_6.jpg|Шаг 6]]&lt;br /&gt;
* &#039;&#039;&#039;6 Создание своих правил&#039;&#039;&#039;&lt;br /&gt;
: Использовать программу передач для настройки записи не обязательно – можно воспользоваться экраном &#039;&#039;&#039;Custom Recordings&#039;&#039;&#039; и создать правила записи с нуля. Это полезно, если надо записывать программы, которые не всегда выходят под одним и тем же названием, или, например, вы решили записывать все документальные фильмы на Пятом канале, которые транслируются в интервале с 9 до 11 часов вечера.&lt;br /&gt;
&lt;br /&gt;
===Время вопросов===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;MythTV&#039;&#039; не обходится без заморочек, и мы ответим на некоторые наиболее общие вопросы.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;В&#039;&#039;&#039; Можно ли сократить список каналов, отображаемый в телепрограмме, и оставить в списке только интересные для меня?&lt;br /&gt;
: &#039;&#039;&#039;О&#039;&#039;&#039; Да, можно – либо удалив каналы в редакторе каналов &#039;&#039;mythtv-setup&#039;&#039;, либо создав группы каналов в самом &#039;&#039;MythTV&#039;&#039;. Группы каналов – это опция предпочтения, она находится в разделе &#039;&#039;&#039;TVSettings&#039;&#039;&#039;. Таместь готовая группа &#039;&#039;&#039;Favourites&#039;&#039;&#039;, и можно либо воспользоваться ею, либо определить собственную группу. Войдите в группу, и вы увидите список каналов – по умолчанию выбраны все; сбросьте ненужные. При работе с программой передач, для переключения между группами каналов, включая группу &#039;&#039;&#039;All Channels&#039;&#039;&#039;, пользуйтесь клавишей &#039;&#039;&#039;/&#039;&#039;&#039;. В разделе &#039;&#039;&#039;TV Settings &amp;gt; General&#039;&#039;&#039; имеется опция установки группы каналов, используемой по умолчанию; или задайте опцию, при которой &#039;&#039;MythTV&#039;&#039; запомнит группу каналов, которую вы использовали в прошлый раз.&lt;br /&gt;
&lt;br /&gt;
: Группы каналов ограничивают только списки каналов, отображаемых в программе передач, а не каналы, используемые для записи, поэтому вы можете также снизить уровень загроможденности, удалив каналы “+1” без потери предлагаемой ими гибкости.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;В&#039;&#039;&#039; Я хочу записывать перекрывающиеся программы; нужны ли мне несколько TV-карт для захвата, или можно настроиться на множество каналов и с одной картой?&lt;br /&gt;
: &#039;&#039;&#039;О&#039;&#039;&#039; Если вы используете DVB (наземное или спутниковое), вам повезло: тогда можно мультиплексировать несколько каналов в один поток. &#039;&#039;MythTV&#039;&#039; умеет получать весь поток через карту DVB-тюнера, а затем разбивать его на отдельные программы. При добавлении карты захвата в &#039;&#039;mythtv-setup&#039;&#039;, нажмите кнопку &#039;&#039;&#039;Recorder Options&#039;&#039;&#039;, чтобы увидеть следующий экран; там имеется и параметр настройки &#039;&#039;&#039;Max Recordings&#039;&#039;&#039;. Разумное значение для этого параметра – &#039;&#039;&#039;3&#039;&#039;&#039;, то есть если у вас две карты захвата, вы сможете записывать шесть каналов одновременно.&lt;br /&gt;
&lt;br /&gt;
: Впрочем, это максимальное количество каналов, так что, имея две карты, вы можете записывать с двух потоков. Вы можете одновременно записывать BBC One, Two и Three, а также ITV1, 2 и 3, но не сможете вести одновременную запись BBC One, ITV1 и Film4, потому что они находятся на разных мультиплексорах – которых в UK Freeview всего шесть. Имея шесть тюнеров, вы сможете записывать что угодно, но у вас, скорее всего, просто не будет времени все это смотреть!&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;В&#039;&#039;&#039; Я хотел бы начинать запись за пару минут до объявленного начала передачи и прекращать ее чуть позже объявленного времени окончания. Нет ничего хуже, чем просмотреть трансляцию и не узнать, чем кончилось, только потому, что она включилась чуть раньше или продлилась чуть дольше, чем указано в программе.&lt;br /&gt;
: &#039;&#039;&#039;О&#039;&#039;&#039; Есть два способа подобной настройки. Первый – зайти в &#039;&#039;&#039;Setup &amp;gt; TV Settings &amp;gt; Recording Priorities &amp;gt; Set Recording Priorities&#039;&#039;&#039;. Здесь можно установить значения &#039;&#039;&#039;Default Start Early/End Late Minutes&#039;&#039;&#039;. Это запасы времени по умолчанию перед началом и после окончания, задаваемые в каждом правиле записи; в индивидуальных правилах их можно изменить. Учтите, что если вы тогда попытаетесь записать две идущие подряд программы, это вызовет конфликт, потому что из-за расширения интервалов программ они перекроются. Это не будет проблемой, если у вас достаточно карт захвата, особенно при использовании еще и мультиплексирования.&lt;br /&gt;
&lt;br /&gt;
: Второй способ – зайти в &#039;&#039;&#039;Setup &amp;gt; TV Settings &amp;gt; General&#039;&#039;&#039;. На четвертой странице задаются настройки, позволяющие начать запись раньше и закончить ее позднее, в секундах. Эта опция не приводит к конфликтам, потому что при записи смежных передач игнорируется. Кроме того, на этой странице есть опция задания добавочного времени записи для одной из категорий передач, что особенно полезно для спортивных передач, так как позволяет позаботиться о таких штуках, как дополнительное время в матчах или всякие там серии пенальти. Не забудьте только, что добавочные минуты потребуют и добавочного дискового пространства.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;В&#039;&#039;&#039; Мое оборудование ведет себя несколько эзотерически; какие разрешения экрана следует использовать в конфигурации &#039;&#039;MythTV&#039;&#039;?&lt;br /&gt;
: &#039;&#039;&#039;О&#039;&#039;&#039; Если у вас подходящий монитор или телевизор, вам не о чем беспокоиться. &#039;&#039;X&#039;&#039; определит возможности устройства и подберет разрешение экрана сам. Телевизоры часто приводят к растянутой развертке, когда картинка немного выходит за границы видимой части экрана. Это вполне терпимо при просмотре TV, потому что обычно по краям нет ничего важного, но при использовании GUI может раздражать. Чтобы точно настроить размер экрана, выберите опции &#039;&#039;&#039;Setup &amp;gt; Screen Setup Wizards&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
: Это не влияет на разрешение экрана – только на ту часть, которую использует &#039;&#039;MythTV&#039;&#039; – и гарантирует, что изображение заполнит весь экран целиком и не выйдет за его пределы. Кроме того, имеется опция, позволяющая использовать разные размеры для программы и изображения GUI, но в ней нет необходимости, если у вас телевизор с LCD.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;В&#039;&#039;&#039; Я только что включил телевизор и увидел конец программы, которая показалась мне интересной. Можно ли что-нибудь сделать?&lt;br /&gt;
: &#039;&#039;&#039;О&#039;&#039;&#039; Сдвиг во времени будет реализован не ранее выхода &#039;&#039;MythTV&#039;&#039; 1.0 – а тогда мы, возможно, уже и сами сможем путешествовать во времени – но иногда действительно можно кое-что сделать, помимо более внимательного слежения за программой передач. Многие программы повторяются на канале +1 с временным сдвигом, или даже транслируются повторно в течение недели (BBC делает это довольно часто), так что попробуйте найти эту передачу в программе передач &#039;&#039;MythTV&#039;&#039; и установите ее на &#039;&#039;&#039;Record One Showing Of This Title&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
: Если в течение недели будет повтор, &#039;&#039;MythTV&#039;&#039; включит в расписание запись этой трансляции. В противном случае, &#039;&#039;MythTV&#039;&#039; будет терпеливо ждать, когда эта программа появится в расписании снова, даже если ее будут транслировать по совершенно другому каналу. То же касается и фильмов; если вас спросят «Ты смотрел тот отличный фильм прошлой ночью?», вы можете войти в программу передач и создать правило, по которому фильм запишется при следующей его демонстрации.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;В&#039;&#039;&#039; Не хочу смотреть телевизор с клавиатурой на коленях. Как добавить возможности удаленного управления?&lt;br /&gt;
: &#039;&#039;&#039;О&#039;&#039;&#039; Простейший, и, скорее всего, лучший вариант – взять инфракрасную беспроводную клавиатуру и универсальный пульт удаленного управления с возможностями обучения. Переведите пульт в режим обучения, наведите его на клавиатуру и присвойте различным кнопкам клавиши: например, установите соответствие между клавишей &#039;&#039;&#039;P&#039;&#039;&#039; и кнопкой &#039;&#039;&#039;Play&#039;&#039;&#039;. Подробные список всех клавиатурных команд можно найти по адресу http://www.mythtv.org/docs/mythtv-HOWTO-11.html#ss11.1. Данный метод имеет два преимущества: команды посылаются прямо на компьютер, как если бы вы использовали клавиатуру, и вам не нужен промежуточный слой трансляции наподобие &#039;&#039;LIRC&#039;&#039; (Linux Infrared Remote Control); и вы по-прежнему можете взять клавиатуру и использовать ее, если нужно ввести побольше, чем пара символов.&lt;br /&gt;
&lt;br /&gt;
: Но самый распространенный подход – всетаки с &#039;&#039;LIRC&#039;&#039;, который Mythbuntu устанавливает по умолчанию. Тогда вы можете выбрать контроллер при установке – либо потом, через &#039;&#039;Mythbuntu Control Centre&#039;&#039;. Хватайте пульт удаленного управления – и вперед! Вам понадобятся средства приема сигналов, поэтому возьмите либо пульт удаленного управления медиа-центром с USB-приемником, либо один из доступных приемников, работающих через последовательный порт – подробности см на http://www.lirc.org. Я успешно пользовался одним из этих приемников с TV-картой Hauppauge. &#039;&#039;Control Centre&#039;&#039; имеет настройки для пульта удаленного управления и IR-передатчика – последний используется для управления внешним вводом, например, кабельным телеприемником.&lt;br /&gt;
&lt;br /&gt;
: Если у вас не Mythbuntu и вы хотите настроить пульт удаленного управления вручную, обратите внимание на два аспекта (как только установите &#039;&#039;LIRC&#039;&#039;). Вам потребуется файл настройки &#039;&#039;&#039;/etc/lircd.conf&#039;&#039;&#039; – он содержит детали, необходимые для трансляции инфракрасных кодов в читаемые команды. &#039;&#039;LIRC&#039;&#039; устанавливает множество файлов настройки в &#039;&#039;&#039;/usr/share/lirc/remotes&#039;&#039;&#039;, а на сайте http://www.lirc.org их и того больше. Найдите файл для вашего пульта и скопируйте его в &#039;&#039;&#039;/etc/lircd.conf&#039;&#039;&#039;. Следующий шаг – указать, как &#039;&#039;MythTV&#039;&#039; следует реагировать на команды с пульта удаленного управления, в файле &#039;&#039;&#039;~/.mythtv/lircrc&#039;&#039;&#039;. Там содержатся строки наподобие таких:&lt;br /&gt;
&lt;br /&gt;
 begin&lt;br /&gt;
 prog = mythtv&lt;br /&gt;
 button = ArrowDown&lt;br /&gt;
 repeat = 3&lt;br /&gt;
 config = Down&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
: Команда, посланная с пульта удаленного управления, показана в строке &#039;&#039;&#039;button&#039;&#039;&#039;, а строка &#039;&#039;&#039;config&#039;&#039;&#039; указывает клавишу, код которой &#039;&#039;LIRC&#039;&#039; отправляет на компьютер – то есть велит &#039;&#039;LIRC&#039;&#039; переместить курсор вниз, когда вы нажимаете кнопку &#039;&#039;&#039;down&#039;&#039;&#039; на пульте удаленного управления. Наша величина &#039;&#039;&#039;repeat&#039;&#039;&#039; значит, что настройка работает только при каждом третьем событии, иначе окажется, что пульт отправляет команды слишком быстро. Теперь вам осталось только выучить, какую команду отправляет нажатие каждой из кнопок. Запустите в терминале команду &#039;&#039;irw&#039;&#039;, и при каждом нажатии кнопки в терминале будет отображаться соответствующая команда.&lt;br /&gt;
&lt;br /&gt;
: С &#039;&#039;MythTV&#039;&#039; можно также использовать пульт удаленного управления PS3 Blu-ray. Он работает через Bluetooth и не обязан находиться в зоне прямой видимости с компьютером. Подробности см. на http://www.mythtv.org/wiki/Sony_PS3_BD_Remote.&lt;br /&gt;
&lt;br /&gt;
===Экспансия модулей===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;MythTV&#039;&#039; поставляется с набором модулей расширения, и есть еще ряд неофициальных модулей, ссылки на которых даны с wiki-страницы. Здесь мы рассмотрим некоторые удобные модули и другие функции &#039;&#039;MythTV&#039;&#039; – они не являются жизненно важными, но делают &#039;&#039;MythTV&#039;&#039; намного полезнее.&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;MythVideo&#039;&#039;====&lt;br /&gt;
&lt;br /&gt;
Из всех модулей, этот я использую чаще всего. Он позволяет смотреть через &#039;&#039;MythTV&#039;&#039; любые файлы в любом стандартном формате, причем поддерживаются также их ISO-образы. Скопировав DVD целиком как ISO-образ с помощью команды &#039;&#039;cp /dev/dvd somemovie.iso&#039;&#039; и поместив его в каталог &#039;&#039;&#039;MythVideo&#039;&#039;&#039;, вы сможете смотреть DVD с использованием меню и спецфункций. Альтернатива – перекодировать фильм в формат AVI или MPEG при помощи любой из популярных программ для этого. Если у вас хватит места для хранения данных, вся ваша коллекцию фильмов будет доступна по нажатию кнопки на пульте удаленного управления. &#039;&#039;MythVideo&#039;&#039; также может соединяться с IMDb и извлекать информацию о фильме и даже изображение с обложки, чтобы отобразить его на экране браузера.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;MythVideo&#039;&#039; поддерживает четыре уровня родительского контроля, и вы можете установить для наивысших уровней пароль – это удобно, если вы не хотите, чтобы некоторые фильмы из вашей коллекции смотрели дети. Просмотренные видео я помещаю на уровень два, так что режим просмотра по умолчанию отображает непросмотренные видео, а все прочее достижимо нажатием одной кнопки.&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;MythWeb&#039;&#039;====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;MythWeb&#039;&#039; технически не является модулем – вы не пользуетесь им в &#039;&#039;MythTV&#039;&#039;. Это набор скриптов &#039;&#039;PHP&#039;&#039;, позволяющий взаимодействовать с настройкой &#039;&#039;MythTV&#039;&#039; через web-браузер. А значит, вы можете просматривать телепрограммы и устанавливать передачи на запись из любой точки мира.&lt;br /&gt;
&lt;br /&gt;
Скажем, вы только что узнали, что сегодня ночью будет идти интересная программа, но в нужное время вас не будет дома. Вынимайте свой смартфон, нацельте его браузер на адрес вашей настройки &#039;&#039;MythWeb&#039;&#039; и установите его на запись. Нужно установить, настроить и запустить web-сервер; затем распакуйте архив в вашу корневую папку документов (&#039;&#039;&#039;Document Root&#039;&#039;&#039;). Там есть файл &#039;&#039;&#039;.htaccess&#039;&#039;&#039;, включенный для гарантии, чтобы &#039;&#039;Apache&#039;&#039; или совместимый web-сервер работал как полагается. Если вам нужен доступ к &#039;&#039;MythWeb&#039;&#039; через Internet, внесите одно важное изменение: создайте учетную запись пользователя, защитив ее паролем. Не то что ваша коллекция эпизодов Ментов столь интимная вещь, но поисковики запускают web-пауков, отслеживающих все ссылки на сайт, а списки записей &#039;&#039;MythWeb&#039;&#039; включают кнопки удаления в форме ссылок; вряд ли вам надо, чтобы Google случайно грохнул все ваши записи.&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;MythGallery&#039;&#039;====&lt;br /&gt;
&lt;br /&gt;
Помните эти семейные вечера из вашего детства, когда дядюшка Гарри приносил свой слайд-проектор и «развлекал» все семейство свежими отпускными снимками? Даже если вы еще юны и избежали подобной детской травмы, то сегодня можете сами делать то же самое. Позитивный момент здесь тот, что фотографии можно предоставить в общий доступ, не заставляя все семейство толпиться у ноутбука. &#039;&#039;MythGallery&#039;&#039; – модуль управления фотогалереями для &#039;&#039;MythTV&#039;&#039;. После установки первым делом выберите команды &#039;&#039;&#039;Setup &amp;gt; Media Settings &amp;gt; Images Settings&#039;&#039;&#039;, которые позволят вам указать каталог с вашими фотками. Кроме того, можно активизировать различные переходные эффекты на базе OpenGL, предназначенные для показа слайд-шоу – если у вас установлены подходящие видеоустройства.&lt;br /&gt;
&lt;br /&gt;
Интерфейс стандартен для ПО просмотра фото, причем акцент сделан именно на просмотре. Реальных инструментов для управления вашей коллекцией здесь нет; это должно делаться на вашем компьютере с помощью продуктов наподобие &#039;&#039;DigiKam&#039;&#039;. При первом входе в каталог происходит задержка, необходимая &#039;&#039;MythGallery&#039;&#039; на создание миниатюр фотографий, но затем эти миниатюры кэшируются для последующего использования. Слайд-шоу хорошо выглядят на большом телевизионном экране, особенно с переходами OpenGL в стиле &#039;&#039;Compiz&#039;&#039;. Если у вас есть цифровая камера, не прячьте свои фотографии на задворках жесткого диска – демонстрируйте их с помощью &#039;&#039;MythGallery&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====Удаление рекламы====&lt;br /&gt;
&lt;br /&gt;
Если вы хотите создать библиотеку фильмов или телепрограмм, вряд ли вам понравится, что удовольствие от просмотра портят рекламные паузы. В &#039;&#039;MythTV&#039;&#039; есть парочка функций, способных вам помочь. Первая – автоматическое выявление рекламы. Вы можете настроить ее на автоматический запуск после каждой записи в &#039;&#039;&#039;Setup &amp;gt; TV Settings &amp;gt; General&#039;&#039;&#039; или выполнить настройку для каждой записи отдельно. Кроме того, можно запускать ее вручную для каждой записи.&lt;br /&gt;
&lt;br /&gt;
На большинстве британских каналов процедуры выявления рекламы действуют методом проб и ошибок, и лучше всего поэкспериментировать с ними и выяснить, какой метод вам больше подходит (учтите, что некоторые из этих методов алчны до процессора). Редактор каналов &#039;&#039;mythtv-setup&#039;&#039; позволяет устанавливать для каналов различные методы обнаружения, включая отсутствие обнаружения для каналов BBC.&lt;br /&gt;
&lt;br /&gt;
Пометив в записи рекламные паузы, воспользуйтесь клавишами &#039;&#039;&#039;Z&#039;&#039;&#039; и &#039;&#039;&#039;Q&#039;&#039;&#039; для перехода к следующему или предыдущему маркеру рекламы, или установите &#039;&#039;MythTV&#039;&#039; на автоматический пропуск рекламных пауз (хотя тут нужна система обнаружения, которой вы полностью доверяете). В программах, записанных для вашей библиотеки, можно удалить все рекламные паузы вручную, для гарантии, что эта операция проделана правильно. Запустите воспроизведение программы и нажмите клавишу &#039;&#039;&#039;E&#039;&#039;&#039;, чтобы войти в режим редактирования. Нажмите клавишу &#039;&#039;&#039;Z&#039;&#039;&#039;, чтобы загрузить список обнаруженных рекламных пауз – кандидатов на вырезание. Убедитесь, что маркеры вырезаемых фрагментов находятся в нужных местах, и настройте их, перемещая маркеры к местам, которые вы хотите вырезать, а затем нажмите клавишу &#039;&#039;&#039;M&#039;&#039;&#039; для вызова меню.&lt;br /&gt;
&lt;br /&gt;
При редактировании записей DVB лучше всего вырезать по опорному кадру, а затем использовать перекодировщик без потерь (тип кодировщика задается командами &#039;&#039;&#039;Setup &amp;gt; TV Settings &amp;gt; Recording Profiles &amp;gt; Transcoders&#039;&#039;&#039;). Он сработает быстро, потому что не требуется повторно кодировать какуюлибо часть файла: вы просто вырезаете из него фрагменты. DVB использует MPEG-TS (transport stream), но &#039;&#039;MythTV&#039;&#039; перекодирует в MPEG-PS (programme stream, метод, используемый для DVD): TS содержит коды коррекции ошибок, позволяющие устранять помехи передачи, и такое перекодирование может существенно уменьшить размеры файлов. Даже перекодирование записей BBC, где не нужно удалять рекламу, а просто отрезать начало и конец и удалить ошибочные биты, может серьезно уменьшить размеры файла.&lt;br /&gt;
&lt;br /&gt;
====Пользовательские задания====&lt;br /&gt;
&lt;br /&gt;
Пользовательские задания (User Jobs) – это разновидность самодельной системы модулей, позволяющей расширить возможности &#039;&#039;MythTV&#039;&#039;. Можно определить до четырех пользовательских заданий, вызываемых в конце записи, таким же образом, как перекодирование или разметка рекламы. По умолчанию их можно вызывать для чего угодно, или активизировать только для отдельных правил записи. Пользовательские функции можно запускать и вручную – нажмите клавишу M при выделенной записи в списке &#039;&#039;&#039;Watch Recordings&#039;&#039;&#039; и выберите задание, которое хотите запустить, из подменю &#039;&#039;&#039;Job Options&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Определить, что запускать, можно через &#039;&#039;&#039;Setup &amp;gt; TV Settings &amp;gt; General&#039;&#039;&#039;, но сами пользовательские задания определяются в разделе &#039;&#039;&#039;General&#039;&#039;&#039; в &#039;&#039;mythtv-setup&#039;&#039;. Каждое задание вызывает команду с некоторыми аргументами, относящимися к текущей записи. Описания аргументов приведены на wiki-странице проекта, в разделе о пользовательских заданиях. Наиболее распространенные аргументы – &#039;&#039;&#039;%FILE%, %TITLE%, %CHANID%, %STARTTIME%&#039;&#039;&#039; и &#039;&#039;&#039;%ENDTIME%&#039;&#039;&#039;. Их можно использовать для передачи имени файла скрипту, который вызывает &#039;&#039;MEncoder&#039;&#039; для перекодирования файла в формат, пригодный для просмотра на другом устройстве.&lt;br /&gt;
&lt;br /&gt;
Скрипт может также помещать перекодированный файл в каталог Dropbox в виде, готовом для синхронизации с устройством. Пользовательские задания можно применять и для рассылки через электронную почту или Twitter уведомлений о начале и конце записи, хотя функции системных событий [System Events], добавленные в версии 0.24, для некоторых из этих задач могут оказаться более подходящими. Основное отличие системных событий заключается в том, что они запускаются всегда при наступлении конкретного события, а пользовательскими заданиями можно управлять индивидуально для конкретных записей или вручную.&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;Live TV&#039;&#039;====&lt;br /&gt;
&lt;br /&gt;
Мы сосредоточились на возможностях &#039;&#039;MythTV&#039;&#039; как персонального видеорекордера (PVR), но продукт можно использовать и для просмотра «живого» телевидения. Выбрав опцию меню &#039;&#039;&#039;Live TV&#039;&#039;&#039;, вы можете просмотреть экран с информацией о канале, который вы использовали в последний раз. Вы можете просмотреть информацию о программе (&#039;&#039;&#039;I&#039;&#039;&#039;), сменить канал (&#039;&#039;&#039;Up/Down&#039;&#039;&#039;), просмотреть программу передач (&#039;&#039;&#039;S&#039;&#039;&#039;), начать запись (&#039;&#039;&#039;R&#039;&#039;&#039;), приостановить просмотр или возобновить показ программы (&#039;&#039;&#039;P&#039;&#039;&#039;). Я знаю, что педанты сразу же скажут, что поставленная на паузу программа – уже не «живое» телевидение, но, тем не менее, можно ставить передачу на паузу и возобновлять ее показ – например, чтобы ответить на телефонный звонок – а затем, пропустив следующую рекламную паузу, наверстать упущенное и продолжать смотреть передачу «вживую». К сожалению, в версии 0.24 блокирована функция «картинка в картинке», и она вернется не ранее выхода версии 0.25.&lt;br /&gt;
&lt;br /&gt;
====Удаленное управление====&lt;br /&gt;
&lt;br /&gt;
Сейчас мы не имеем в виду инфракрасные устройства, которыми вы тычете в компьютер. &#039;&#039;MythTV&#039;&#039; может управляться и через сеть. Эта опция активизируется в разделе &#039;&#039;&#039;General&#039;&#039;&#039; после выбора опции &#039;&#039;&#039;Enable Network Remote Control&#039;&#039;&#039;. Это позволит другим компьютерам управлять вашим клиентом &#039;&#039;MythTV&#039;&#039;. Для просмотра доступных опций подключитесь по &#039;&#039;Telnet&#039;&#039; к порту 6546 на компьютере-клиенте и введите команду &#039;&#039;help&#039;&#039;. Существуют программы, использующие эту возможность – например, &#039;&#039;MythMote&#039;&#039; превращает ваш телефон на базе Android в сенсорный пульт удаленного управления для &#039;&#039;MythTV&#039;&#039;, при условии, что телефон подключен к вашей беспроводной сети. Я даже настроил свой телефон на отправку &#039;&#039;MythTV&#039;&#039; команды &#039;&#039;&#039;pause&#039;&#039;&#039;, когда на него поступает вызов, чтобы не искать пульт удаленного управления, прежде чем отвечать на звонок.&lt;br /&gt;
&lt;br /&gt;
Возможно, это одна из самых загадочных функций &#039;&#039;MythTV&#039;&#039;, но люди с наклонностями хакера сразу же задумаются, какие идеи тут можно реализовать.&lt;br /&gt;
&lt;br /&gt;
====Темы====&lt;br /&gt;
&lt;br /&gt;
Интерфейс пользователя &#039;&#039;MythTV&#039;&#039; очень гибко настраивается. Экранные снимки, встречавшиеся в этой статье, показали разницу между темами &#039;&#039;&#039;Mythbuntu&#039;&#039;&#039; и &#039;&#039;&#039;MythCenter&#039;&#039;&#039;, но тем еще много. Официальные темы поставляются в составе базового пакета &#039;&#039;MythTV&#039;&#039;, а в составе вашего дистрибутива может содержаться отдельный пакет &#039;&#039;&#039;mythtv-themes&#039;&#039;&#039; с темами сверх стандартных. Установив этот пакет, вы сможете просматривать и выбирать темы через опцию &#039;&#039;&#039;Theme Chooser&#039;&#039;&#039; в меню &#039;&#039;&#039;Setup&#039;&#039;&#039;. Если у вас несколько клиентов, можно каждому выдать свою тему, хотя некоторые темы хорошо смотрятся только на больших экранах.&lt;br /&gt;
&lt;br /&gt;
Кроме коллекции официальных тем, есть и множество неофициальных. Хорошая стартовая точка – раздел &#039;&#039;&#039;Themes&#039;&#039;&#039; на wiki проекта. Обычно темы поставляются в виде архивов, которые следует распаковать в каталог с системными темами – обычно это &#039;&#039;&#039;/usr/share/mythtv/themes&#039;&#039;&#039; или &#039;&#039;&#039;.mythtv/themes&#039;&#039;&#039; в вашем домашнем каталоге – после чего темы сразу же появятся в списке &#039;&#039;&#039;Theme Chooser&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Каждая тема хранится в отдельном одноименном каталоге. При установке сторонней темы всегда нужно убедиться, что она годится для используемой вами версии &#039;&#039;MythTV&#039;&#039;. По мере развития продукта в него добавляются новые функции, и со временем может оказаться, что в темах от старых версий они отсутствуют. Кроме тем, можно также изменить раскладки меню. Несколько вариантов можно выбрать через &#039;&#039;&#039;Setup &amp;gt; Appearance&#039;&#039;&#039;. В &#039;&#039;&#039;Appearance&#039;&#039;&#039;, найдите опцию в составе &#039;&#039;&#039;Menu Theme&#039;&#039;&#039;. Они изменяют не вид &#039;&#039;MythTV&#039;&#039;, а только раскладку меню. Выберите тот вариант, в котором будут быстро достижимы те функции, которыми вы пользуетесь чаще всего. [&#039;&#039;Сайт о MythTV по-русски – https://sites.google.com/site/axboct/nastrojka-mythtv/nastrojka-bekenda/nastrojka-bekenda-mythtv, – прим. пер.&#039;&#039;].&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=LXF144:LDAP&amp;diff=14612</id>
		<title>LXF144:LDAP</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=LXF144:LDAP&amp;diff=14612"/>
		<updated>2013-01-25T08:19:32Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: викификация, оформление, иллюстрация&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Службы с LDAP-аутентификацией==&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Андрей Андреев&#039;&#039;&#039; продолжает рассказ об &#039;&#039;OpenLDAP&#039;&#039; как альтернативе &#039;&#039;Active Directory&#039;&#039;. Сегодня речь пойдет об интеграции с ним базовых сетевых служб.&lt;br /&gt;
&lt;br /&gt;
В [[LXF142:OpenLDAP|прошлой статье]] мы рассматривали вопросы, касающиеся первоначальной установки и настройки службы каталогов &#039;&#039;OpenLDAP&#039;&#039; в дистрибутиве CentOS, а также базовые понятия о службах каталогов.Теперь, с учетом сказанного и описанного ранее, можно приступать к более детальному изучению возможностей использования служб каталогов. Под более детальным рассмотрением подразумевается использование различных служб/сервисов, которые будут использовать для своей работы информацию, хранящуюся в &#039;&#039;OpenLDAP&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Первоначально следует определиться с набором служб/сервисов, которые мы хотим интегрировать c &#039;&#039;OpenLDAP&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Сервисы/службы&#039;&#039;&#039;:&lt;br /&gt;
* Прокси-сервер&lt;br /&gt;
* Файловый сервер&lt;br /&gt;
* Почтовый сервер&lt;br /&gt;
* Аутентификация&lt;br /&gt;
&lt;br /&gt;
Это только часть списка служб, способных работать с протоколом LDAP. Для реализации их работы определим набор пакетов.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Пакеты&#039;&#039;&#039;:&lt;br /&gt;
* &#039;&#039;Squid&#039;&#039;&lt;br /&gt;
* &#039;&#039;Samba + smbldap-tools&#039;&#039;&lt;br /&gt;
* &#039;&#039;Postfix + Dovecot&#039;&#039;&lt;br /&gt;
* &#039;&#039;PAM&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
В данной статье будет рассматриваться установка и настройка перечисленных пакетов на Ubuntu Server 10.04.02 LTS. Это связано с тем, что процесс установки и настройки службы каталогов в Ubuntu Server отличается от тех же манипуляций в CentOS, Debian или Fedora.&lt;br /&gt;
&lt;br /&gt;
Перво-наперво, в Ubuntu нет конфигурационного файла &#039;&#039;&#039;slapd.conf&#039;&#039;&#039; &#039;&#039;OpenLDAP&#039;&#039;. Вся настройка производится динамически командой &#039;&#039;ldapadd&#039;&#039;. Установка же выполняется следующей командой:&lt;br /&gt;
&lt;br /&gt;
 apt-get install slapd ldap-utils&lt;br /&gt;
&lt;br /&gt;
Команды для установки и пример настройки службы каталогов &#039;&#039;OpenLDAP&#039;&#039; приводятся в скрипте на диске; вы можете взглянуть на них на досуге. А мы сразу же перейдем к рассмотрению прокси-сервера.&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;Squid&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Squid&#039;&#039; – кэширующий прокси-сервер, работающий по протоколам HTTP и FTP, Gopfer. Имеет возможность взаимодействия со службой каталогов путем аутентификации через LDAP, что позволяет разграничить доступ к интернет-ресурсам пользователей, которые имеют учетные записи; также позволяет организовать «нарезку» интернет-трафика для различных пользователей.&lt;br /&gt;
&lt;br /&gt;
Установка его выполняется так:&lt;br /&gt;
&lt;br /&gt;
 apt-get install squid&lt;br /&gt;
&lt;br /&gt;
Из всех служб проще всего настроить именно эту. Основной конфигурационный файл – &#039;&#039;&#039;/etc/squid/squid.conf&#039;&#039;&#039;. Для использования аутентификации через LDAP в основном конфигурационном файле достаточно расскоментировать строку &#039;&#039;&#039;auth_param basic program&#039;&#039;&#039;, указать параметры LDAP-сервера и добавить правило (&#039;&#039;&#039;acl&#039;&#039;&#039;) с разрешением доступа к ресурсу.&lt;br /&gt;
&lt;br /&gt;
 auth_param basic program /usr/lib/squid/squid_ldap_auth -v 3 -b&lt;br /&gt;
 “dc=yourcompany,dc=com” -D uid=squid,dc=example,dc=com -w&lt;br /&gt;
 password -f uid=%s ldap.example.com&lt;br /&gt;
 acl ldap-auth proxy_auth REQUIRED&lt;br /&gt;
 http_access allow ldap-auth&lt;br /&gt;
 http_access allow localhost&lt;br /&gt;
 http_access deny all&lt;br /&gt;
&lt;br /&gt;
Здесь мы указали, что будем использовать модуль &#039;&#039;squid_ldap_auth&#039;&#039; с параметрами:&lt;br /&gt;
: &#039;&#039;&#039;-v&#039;&#039;&#039; – версия протокола LDAP.&lt;br /&gt;
: &#039;&#039;&#039;-b&#039;&#039;&#039; – ветка дерева каталога с которой начнется поиск пользователя.&lt;br /&gt;
: &#039;&#039;&#039;-D&#039;&#039;&#039; – пользователь, который будет осуществлять поиск записей (рекомендуется создать для каждой службы своего пользователя).&lt;br /&gt;
: &#039;&#039;&#039;-w&#039;&#039;&#039; – пароль пользователя для доступа к дереву каталога.&lt;br /&gt;
: &#039;&#039;&#039;-f&#039;&#039;&#039; – «шаблон» поиска.&lt;br /&gt;
: ldap.example.com – имя хоста LDAP-cервера.&lt;br /&gt;
&lt;br /&gt;
Если мы не хотим разрешать доступ к прокси всем пользователям, записанным в службе каталогов, можно создать собственную схему с атрибутом и объектным классом, указывающие на то, что данный пользователь имеет доступ к прокси.&lt;br /&gt;
&lt;br /&gt;
Наша схема &#039;&#039;&#039;/etc/openldap/schema/squid.schema&#039;&#039;&#039; будет выглядеть примерно так:&lt;br /&gt;
&lt;br /&gt;
 attributetype ( 1.3.6.1.4.1.1000.1 NAME &#039;ProxyAccess&#039;&lt;br /&gt;
 DESC &#039;Proxy Access&#039;&lt;br /&gt;
 EQUALITY booleanMatch&lt;br /&gt;
   SYNTAX 1.3.6.1.4.1.1466.115.121.1.7)&lt;br /&gt;
 objectclass ( 1.3.6.1.4.1.1000.200 NAME &#039;SquidAccess&#039;&lt;br /&gt;
   DESC &#039;Access to Squid Proxy&#039;&lt;br /&gt;
   SUP top AUXILIARY&lt;br /&gt;
   MUST ProxyAccess )&lt;br /&gt;
&lt;br /&gt;
В схеме определен один атрибут с именем “&#039;&#039;&#039;ProxyAcces&#039;&#039;&#039;” и типом &#039;&#039;&#039;booleanMatch&#039;&#039;&#039; – то есть атрибут может принимать значения либо TRUE, либо FALSE. Также в схеме описан объектный класс “&#039;&#039;&#039;SquidAccess&#039;&#039;&#039;” с обязательным атрибутом “&#039;&#039;&#039;ProxyAccess&#039;&#039;&#039;”. С учетом схемы, строка с модулем &#039;&#039;squid_ldap_auth&#039;&#039; будет выглядеть так:&lt;br /&gt;
&lt;br /&gt;
 auth_param basic program /usr/lib/squid/squid_ldap_auth -v 3 -b&lt;br /&gt;
 “dc=yourcompany,dc=com” -D uid=squid,dc=example,dc=com -w&lt;br /&gt;
 password -f (&amp;amp;(ProxyAccess=TRUE)(uid=%s)) ldap.example.com&lt;br /&gt;
&lt;br /&gt;
Теперь доступ к прокси будут иметь только те пользователи, у которых есть атрибут &#039;&#039;&#039;ProxyAccess&#039;&#039;&#039; со значением &#039;&#039;&#039;TRUE&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;Samba&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Заголовок=Скорая помощь|Содержание=Ресурсы, которые могут пригодиться – http://smb-conf.ru и http://samba.org.|Ширина=200px}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Samba&#039;&#039; – свободное программное обеспечение, реализующее сетевой протокол SMB/CIFS. Samba может выступать в роли основного контроллера домена (PDC), либо члена уже существующего домена. Она также может быть частью домена &#039;&#039;Active Directory&#039;&#039;. Основной конфигурационный файл – &#039;&#039;&#039;/etc/samba/smb.conf&#039;&#039;&#039;. Для простоты настройки будем использовать пакет &#039;&#039;smbldap-tools&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Установка делается командой:&lt;br /&gt;
&lt;br /&gt;
 apt-get install samba samba-doc smbldap-tools&lt;br /&gt;
&lt;br /&gt;
Для работы &#039;&#039;Samba&#039;&#039; c LDAP в основном конфигурационном файле необходимо указать следующие параметры LDAP-сервера:&lt;br /&gt;
&lt;br /&gt;
 passdb backend = ldapsam:ldap://localhost&lt;br /&gt;
 ldap suffix = dc=example,dc=com&lt;br /&gt;
 ldap user suffix = ou=People&lt;br /&gt;
 ldap group suffix = ou=Groups&lt;br /&gt;
 ldap machine suffix = ou=Computers&lt;br /&gt;
 ldap idmap suffix = ou=Idmap&lt;br /&gt;
 ldap admin dn = cn=Manager,dc=example,dc=com&lt;br /&gt;
 ldap ssl = off&lt;br /&gt;
 ldap passwd sync = yes&lt;br /&gt;
 ldap delete dn = no&lt;br /&gt;
&lt;br /&gt;
Еще понадобится настроить &#039;&#039;smbldap-tools&#039;&#039;. Настройка проста. &lt;br /&gt;
&lt;br /&gt;
Распаковываем специально подготовленный скрипт:&lt;br /&gt;
&lt;br /&gt;
 gzip -d /usr/share/doc/smbldap-tools/configure.pl.gz&lt;br /&gt;
&lt;br /&gt;
Запускаем его и отвечаем на вопросы&lt;br /&gt;
&lt;br /&gt;
 perl /usr/share/doc/smbldap-tools/configure.pl&lt;br /&gt;
&lt;br /&gt;
Далее, в вашем любимом редакторе можно открыть конфигурационный файл &#039;&#039;&#039;sambaldap.conf&#039;&#039;&#039; и проверить его правильность.&lt;br /&gt;
&lt;br /&gt;
 vim /etc/smbldap-tools/sambaldap.conf&lt;br /&gt;
&lt;br /&gt;
Для корректной работы сервера нам понадобится узнать его локальный идентификатор безопасности (SID, Security Identifier); для этого выполним&lt;br /&gt;
&lt;br /&gt;
 net getlocalsid ldap&lt;br /&gt;
&lt;br /&gt;
где &#039;&#039;&#039;ldap&#039;&#039;&#039; – имя хоста с установленными пакетами &#039;&#039;samba&#039;&#039;. Полученный SID следует записать в конфигурационный файл &#039;&#039;smbldap-tools&#039;&#039; – &#039;&#039;&#039;/etc/smbldap-tools/sambaldap.conf&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Теперь можно приступать к созданию начальной структуры каталога, и для этого мы воспользуемся командами &#039;&#039;smbldap-populate&#039;&#039; и &#039;&#039;ldapadd&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 smbldap-populate -a admin -e /etc/ldap/sambadb.ldif&lt;br /&gt;
 ldapadd -x -D cn=Manager,dc=example,dc=com -w secret -f sambadb.ldif&lt;br /&gt;
&lt;br /&gt;
После выполнения команд в службе каталогов &#039;&#039;OpenLDAP&#039;&#039; будут храниться записи о корневом элементе (dc=example, dc=com), группах (Domain Admins, Domain Users, Computers и т.д.), пользователях (nobody, admin) и запись &#039;&#039;&#039;sambaDomainName&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Для задания пароля пользователю существует команда &#039;&#039;smbldap-passwd&#039;&#039;, и т.к. в начальной структуре каталога записи о паролях отсутствуют, самое время их создать.&lt;br /&gt;
&lt;br /&gt;
 smbldap-passwd -a admin&lt;br /&gt;
&lt;br /&gt;
Для добавления пользователей удобно воспользоваться командой &#039;&#039;smbldap-useradd&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 smbldap-useradd -a -P User&lt;br /&gt;
&lt;br /&gt;
На этом этап настройки &#039;&#039;smbldap-tools&#039;&#039; закончен; переходим к &#039;&#039;samba&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Сохраним резервную копию основного конфигурационного файла &#039;&#039;&#039;/etc/samba/smb.conf&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/samba/smb.conf /etc/samba/smb.conf.backup&lt;br /&gt;
&lt;br /&gt;
Теперь укажем в файле &#039;&#039;&#039;/etc/samba/smb.conf&#039;&#039;&#039; параметры LDAP, параметры домена и расширенные ресурсы. Все конфигурационные файлы и команды, необходимые для настройки, расположены в скрипте &#039;&#039;ubuntu_ldap.sh&#039;&#039; на диске; здесь приводятся только основные фрагменты файла &#039;&#039;&#039;/etc/samba/smb.conf&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 [global]&lt;br /&gt;
 server string = SAMBA PDC&lt;br /&gt;
 workgroup = EXAMPLE&lt;br /&gt;
 netbios name = LDAP&lt;br /&gt;
 passdb backend = ldapsam:ldap://localhost&lt;br /&gt;
 security = user&lt;br /&gt;
 domain master = yes&lt;br /&gt;
 admin users = admin&lt;br /&gt;
 socket options = SO_KEEPALIVE IPTOS_LOWDELAY TCP_NODELAY SO_RCVBUF=16384 SO_SNDBUF=16384&lt;br /&gt;
 wins support = yes&lt;br /&gt;
 wins proxy = yes&lt;br /&gt;
 name resolve order = wins hosts bcast lmhosts&lt;br /&gt;
 wide links = yes&lt;br /&gt;
 idmap uid = 10000-20000&lt;br /&gt;
 idmap gid = 10000-20000&lt;br /&gt;
 ldap suffix = dc=example,dc=com&lt;br /&gt;
 ldap user suffix = ou=People&lt;br /&gt;
 ldap group suffix = ou=Groups&lt;br /&gt;
 ldap machine suffix = ou=Computers&lt;br /&gt;
 ldap idmap suffix = ou=Idmap&lt;br /&gt;
 ldap admin dn = cn=admin,dc=sapr,dc=guap,dc=spb,dc=ru&lt;br /&gt;
 ldap ssl = off&lt;br /&gt;
 ldap passwd sync = yes&lt;br /&gt;
 ldap delete dn = no&lt;br /&gt;
 add machine script = sudo /usr/sbin/smbldap-useradd -t 0 -w “%u”&lt;br /&gt;
 passwd program = /usr/sbin/smbldap-passwd %u&lt;br /&gt;
 passwd chat = *New*password* %n\n *Retype*new*password* %n\n *all*authentication*tokens*updated*&lt;br /&gt;
 domain logons = yes&lt;br /&gt;
 ##=========Шары========================&lt;br /&gt;
 [homes]&lt;br /&gt;
 comment = Home Directories&lt;br /&gt;
 browseable = yes&lt;br /&gt;
 valid users = %S&lt;br /&gt;
 writable = yes&lt;br /&gt;
&lt;br /&gt;
В данном конфигурационном скрипте мы указали на то, что &#039;&#039;samba&#039;&#039; будет использовать протокол LDAP, а за добавление пользователей и проверку пароля будет отвечать &#039;&#039;smbldap-tools&#039;&#039;. Так же указаны администратор &#039;&#039;samba&#039;&#039; – пользователь &#039;&#039;admin&#039;&#039; (локальный пользователь, который будет перенесен в службу каталогов) и параметры, необходимые для работы.&lt;br /&gt;
&lt;br /&gt;
Перезапускаем службу &#039;&#039;smbd&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 service smbd restart&lt;br /&gt;
&lt;br /&gt;
Для работы связки &#039;&#039;Samba&#039;&#039; и LDAP необходимо указать пароль администратора службы каталогов (rootdn) и администратора &#039;&#039;Samba&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 smbpasswd -w secret&lt;br /&gt;
 smbpasswd -a admin&lt;br /&gt;
&lt;br /&gt;
Перезапускаем службу &#039;&#039;nmbd&#039;&#039; и проверяем список групп:&lt;br /&gt;
&lt;br /&gt;
 service nmbd restart&lt;br /&gt;
 net groupmap list&lt;br /&gt;
&lt;br /&gt;
Результатом выполнения команды является список групп домена (Domain Admins, Domain Users, Computers и т.д). Для работы пользователю &#039;&#039;&#039;admin&#039;&#039;&#039; следует дать права администратора домена.&lt;br /&gt;
&lt;br /&gt;
 net rpc rights grant “Domain Admins” SeMachineAccountPrivilege&lt;br /&gt;
 SeTakeOwnershipPrivilege \&lt;br /&gt;
 SeBackupPrivilege SeRestorePrivilege&lt;br /&gt;
 SeRemoteShutdownPrivilege SePrintOperatorPrivilege \&lt;br /&gt;
 SeAddUsersPrivilege SeDiskOperatorPrivilege -U admin%123456&lt;br /&gt;
&lt;br /&gt;
Финальный штрих – вводим наш сервер в домен:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Почтовый сервер===&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;Postfix&#039;&#039;====&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF144_46_1.jpg|300px]] Работа почтового сервиса на основе &#039;&#039;Postfix&#039;&#039; и &#039;&#039;Dovecot&#039;&#039;.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Postfix&#039;&#039; – это агент передачи сообщений (MTA, message transport agent), который занимается пересылкой по протоколу SMTP сообщений от пользовательского почтового агента (MUA, mail user agent), называемого также почтовым клиентом, к удаленному почтовому серверу.&lt;br /&gt;
&lt;br /&gt;
MTA также принимает сообщения от удаленных почтовых серверов и пересылает их другим MTA или доставляет в локальные почтовые ящики. Переслав или доставив сообщение, &#039;&#039;Postfix&#039;&#039; заканчивает свою работу. За доставку сообщения конечному пользователю отвечают другие серверы. Например, такие MTA, как серверы POP3 или IMAP, передают сообщения почтовым клиентам – &#039;&#039;Mutt, Outlook&#039;&#039; или &#039;&#039;Apple Mail&#039;&#039;, с помощью которых пользователь может прочитать их.&lt;br /&gt;
&lt;br /&gt;
С точки зрения современного взгляда на задачу передачи и обработки сообщений &#039;&#039;Postfix&#039;&#039; представляет собой самую сердцевину комплекса почтового ПО.&lt;br /&gt;
&lt;br /&gt;
Убедитесь, что порт &#039;&#039;&#039;25 TCP&#039;&#039;&#039; на вашем сервере ничем не заблокирован. Если у вас установлен межсетевой экран, убедитесь, что его политика разрешает входящие и исходящие соединения с портом &#039;&#039;&#039;25&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Причина, по которой порт &#039;&#039;&#039;25 TCP&#039;&#039;&#039; должен быть открыт, заключается в том, что &#039;&#039;Postfix&#039;&#039; и другие почтовые серверы прослушивают его в ожидании соединений. Этот порт официально назначен для SMTP агентством IANA (полный список доступен по адресу http://www.iana.org/assignments/port-numbers). Организация IANA является главным регистратором нумерации  интернет-протоколах, распределяющим номера портов, протоколов, компаний, параметров, кодов и типов.&lt;br /&gt;
&lt;br /&gt;
Установка – все тем же манером:&lt;br /&gt;
&lt;br /&gt;
 apt-get install postfix&lt;br /&gt;
&lt;br /&gt;
Основные конфигурационные файлы, которые мы будем использовать – &#039;&#039;&#039;/etc/postfix/main.cf, /etc/postfix/master.cf&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Как и во всех службах, здесь нам надо указать способы аутентификации. В нашем случае это LDAP. Для этого в файле &#039;&#039;&#039;/etc/postfix/main.cf&#039;&#039;&#039; пропишем строки &lt;br /&gt;
&lt;br /&gt;
 local_recipient_maps = $alias_maps, ldap:/etc/postfix/ldap-users.cf&lt;br /&gt;
 virtual_alias_maps = ldap:/etc/postfix/ldap-aliases.cf&lt;br /&gt;
&lt;br /&gt;
А параметры аутентификации LDAP мы укажем в файлах &#039;&#039;&#039;ldapusers.cf&#039;&#039;&#039; и &#039;&#039;&#039;ldap-aliases.cf&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Файл &#039;&#039;&#039;/etc/postfix/ldap-users.cf&#039;&#039;&#039; содержит&lt;br /&gt;
&lt;br /&gt;
 server_host = ldap.lw.lan&lt;br /&gt;
 search_base = dc=lw,dc=lan&lt;br /&gt;
 server_port = 389&lt;br /&gt;
 bind = yes&lt;br /&gt;
 bind_dn = cn=Manager,dc=lw,dc=lan&lt;br /&gt;
 bind_pw = secret&lt;br /&gt;
 query_filter = (mail=%s)&lt;br /&gt;
&lt;br /&gt;
Содержимое файла &#039;&#039;&#039;/etc/postfix/ldap-aliases.cf&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 server_host = ldap.lw.lan&lt;br /&gt;
 search_base = dc=lw,dc=lan&lt;br /&gt;
 server_port = 389&lt;br /&gt;
 bind = yes&lt;br /&gt;
 bind_dn = cn=Manager,dc=lw,dc=lan&lt;br /&gt;
 bind_pw = secret&lt;br /&gt;
 query_filter = (mail=%s)&lt;br /&gt;
 result_attribute = mail&lt;br /&gt;
 special_result_filter = %s@%d&lt;br /&gt;
&lt;br /&gt;
Файлы содержат стандартные параметры работы с &#039;&#039;OpenLDAP&#039;&#039;. В &#039;&#039;&#039;/etc/postfix/ldap-users.cf&#039;&#039;&#039; описываем параметры пользователей, а именно, фильтр поиска пользователей – атрибут &#039;&#039;&#039;mail&#039;&#039;&#039;. Файл &#039;&#039;&#039;/etc/postfix/ldap-aliases.cf&#039;&#039;&#039; содержит параметры для доставки почты; в нем указывается, что почту нужно доставлять на почтовый адрес, указанный в атрибуте &#039;&#039;&#039;mail&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;Dovecot&#039;&#039;====&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Заголовок=Скорая помощь|Содержание=Ресурсы, которые могут пригодиться – http://wiki1.dovecot.org.|Ширина=200px}}&lt;br /&gt;
&lt;br /&gt;
Так как мы собираемся не только отправлять почту, но и принимать ее, для создания почтового сервера нам понадобится &#039;&#039;Dovecot&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Dovecot&#039;&#039; – свободный IMAP- и POP3-сервер, разрабатываемый в расчете на безопасность, гибкость настройки и быстродействие. Первый релиз состоялся в 2002 году. Основные особенности сервера:&lt;br /&gt;
* Поддержка форматов почтовых ящиков mbox и Maildir, а также собственные форматы dbox и Cydir.&lt;br /&gt;
* Высокое быстродействие, благодаря индексации содержимого ящиков.&lt;br /&gt;
* Большое количество поддерживаемых механизмов хранения аутентификационной информации (включая LDAP) и самой аутентификации (поддерживается SSL).&lt;br /&gt;
* Собственная реализация SASL. &#039;&#039;Postfix&#039;&#039; 2.3+ и &#039;&#039;Exim&#039;&#039; 4.64+ могут аутентифицироваться напрямую через &#039;&#039;Dovecot&#039;&#039;.&lt;br /&gt;
* Полная поддержка IMAP ACL для гибкой настройки прав пользователей.&lt;br /&gt;
* Поддержка общих ящиков и папок [shared mailboxes and folders].&lt;br /&gt;
* Расширяемость при помощи плагинов.&lt;br /&gt;
* Собственный MDA с поддержкой Sieve.&lt;br /&gt;
* Строгое следование стандартам: &#039;&#039;Dovecot&#039;&#039; – один из немногих, кто проходит тест на соответствие всем стандартам IMAP.&lt;br /&gt;
* Возможность модификации индексов с нескольких компьютеров, что позволяет ему работать с NFS и кластерными файловыми системами.&lt;br /&gt;
* Поддерживает различные виды квот.&lt;br /&gt;
* Поддержка различных ОС: Linux, Solaris, FreeBSD, OpenBSD, NetBSD и Mac OS X.&lt;br /&gt;
* Простота настройки.&lt;br /&gt;
&lt;br /&gt;
Установка:&lt;br /&gt;
&lt;br /&gt;
 apt-get install dovecot&lt;br /&gt;
&lt;br /&gt;
Основной конфигурационный файл – &#039;&#039;/etc/dovecot.conf&#039;&#039;. В нем необходимо найти секцию, описывающую способы аутентификации – &#039;&#039;&#039;auth default&#039;&#039;&#039;, где надо расскомментировать строки, связанные с LDAP.&lt;br /&gt;
&lt;br /&gt;
 auth default {&lt;br /&gt;
  mechanisms = plain&lt;br /&gt;
 passdb ldap {&lt;br /&gt;
  args = /etc/dovecot-ldap.conf&lt;br /&gt;
 }&lt;br /&gt;
 userdb ldap {&lt;br /&gt;
  args = /etc/dovecot-ldap.conf&lt;br /&gt;
 }&lt;br /&gt;
 user = root&lt;br /&gt;
 ssl_require_client_cert = no&lt;br /&gt;
 ssl_username_from_cert = no&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Здесь мы указали некий файл &#039;&#039;&#039;/etc/dovecot-ldap.conf&#039;&#039;&#039;. Что же хранится в этом файле?&lt;br /&gt;
 &lt;br /&gt;
 hosts = ldap.example.com&lt;br /&gt;
 dn = cn=Manager,dc=example,dc=com&lt;br /&gt;
 dnpass = secret&lt;br /&gt;
 ldap_version = 3&lt;br /&gt;
 base = dc=example,dc=com&lt;br /&gt;
 deref = never&lt;br /&gt;
 scope = subtree&lt;br /&gt;
 user_filter = (uid=%u)&lt;br /&gt;
 pass_filter = (&amp;amp;(objectClass=posixAccount)(uid=%u))&lt;br /&gt;
 default_pass_scheme = CRYPT&lt;br /&gt;
&lt;br /&gt;
Как вы можете заключить по содержанию файла, в нем хранятся параметры подключения к LDAP-серверу, описание которых мы уже приводили выше, и фильтры поиска записей. Итак, почтовый сервер готов; можно начинать проверять его работу, принцип которой был проиллюстрирован рисунком на предыдущей странице.&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;PAM&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF144_47_1.jpg|300px]] PAM перенаправляет запросы аутентификации разных служб к серверу LDAP.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
Pluggable Authentication Modules (PAM, подключаемые модули аутентификации) – это набор разделяемых библиотек, дающих возможность интегрировать различные низкоуровневые методы аутентификации в виде единого высокоуровневого API. Это позволяет предоставить единые механизмы для управления, встраивания прикладных программ в процесс аутентификации. Данный механизм является одной из частей стандартного механизма обеспечения безопасности UNIX-систем.&lt;br /&gt;
&lt;br /&gt;
Здесь необходимо указать, что наша система будет проходить аутентификацию по протоколу LDAP, обращаясь за данными к службе каталогов &#039;&#039;OpenLDAP&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Установка и конфигурирование:&lt;br /&gt;
&lt;br /&gt;
 apt-get install libnss-ldap&lt;br /&gt;
 auth-client-config -t nss -p lac_ldap&lt;br /&gt;
 pam-auth-update&lt;br /&gt;
&lt;br /&gt;
Желательно после выполнения настройки PAM выполнить команду &#039;&#039;reboot&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===LDAP­-сервер===&lt;br /&gt;
&lt;br /&gt;
На данном этапе наш сервер готов к работе, выполняя роль прокси-сервера, файлового сервера, почтового сервера. Не хватает одного: базы пользователей. Если сервер делается с нуля, то всех пользователей легко и просто задать через графическую систему управления &#039;&#039;GOsa&#039;&#039;. Если же сервер является заменой &#039;&#039;Active Directory&#039;&#039; (AD), то надо бы выполнить миграцию пользователей. Об этом наш следующий пункт.&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;Active Directory&#039;&#039;====&lt;br /&gt;
&lt;br /&gt;
А что же с &#039;&#039;Active Directory&#039;&#039;? Самое время подумать об этом. Имея настроенный сервер LDAP и &#039;&#039;Samba&#039;&#039;, можно выполнить миграцию пользователей AD. Примем за основу настройки &#039;&#039;Samba&#039;&#039;, приведенные выше в пункте &#039;&#039;Samba&#039;&#039;, и изменим их.&lt;br /&gt;
&lt;br /&gt;
Самое главное – это SID’ы. Если ранее мы использовали локальный SID, то теперь для корректной работы файлового сервера нам понадобится SID сервера с AD.&lt;br /&gt;
&lt;br /&gt;
 net rpc getsid -S DOMAIN -U Administrator%password&lt;br /&gt;
&lt;br /&gt;
Полученный SID запишем в &#039;&#039;&#039;/etc/smbldap-tools/sambaldap.conf&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
В начале нужно перевести Samba из режима PDC (Primary Domain Controller) в BDC (Backup Domain Controller). За это отвечает параметр &#039;&#039;&#039;domain master&#039;&#039;&#039;, значение которого “&#039;&#039;&#039;yes&#039;&#039;&#039;” для PDC и “&#039;&#039;&#039;no&#039;&#039;&#039;” для BDC. Изменим его значение на “&#039;&#039;&#039;no&#039;&#039;&#039;”. Основные изменения закончены. Теперь введем наш сервер в домен AD:&lt;br /&gt;
&lt;br /&gt;
 net ads join -U Administrator%password&lt;br /&gt;
&lt;br /&gt;
Можно приступать к миграции пользователей. Для этого выполним команду&lt;br /&gt;
&lt;br /&gt;
 net rpc vampire&lt;br /&gt;
&lt;br /&gt;
Данная команда выполнит миграцию пользователей AD и запись данных в LDAP-сервер. Если же вы не хотите добавлять все записи или есть необходимость отредактировать их, то вам следует сделать запись в &#039;&#039;&#039;ldif&#039;&#039;&#039;-файл. Поcле редактирования останется только добавить содержимое файла в &#039;&#039;OpenLDAP&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 net rpc vampire ldif filename.ldif&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f filename.ldif&lt;br /&gt;
&lt;br /&gt;
===Итог===&lt;br /&gt;
&lt;br /&gt;
В результате мы имеем серверное решение, не уступающее проприетарному, а возможно, и превосходящее его.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Плюсы&#039;&#039;&#039;:&lt;br /&gt;
* Полностью свободное ПО.&lt;br /&gt;
* Неограниченный функционал, т.е. администратор способен настроить службы так, как это ему необходимо, а по возможности и расширить данное решение.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Минусы&#039;&#039;&#039;:&lt;br /&gt;
* Минус один, но в общем решаемый! На данном этапе не реализован механизм групповых политик.&lt;br /&gt;
&lt;br /&gt;
Для решения этой задачи можно воспользоваться репозиторием &#039;&#039;Samba 4&#039;&#039;, которая сейчас находится в стадии бета-тестирования. Но пока никто не выдаст вам гарантии того, что после обновления файлового сервера все будет работать так, как положено. Поэтому придется дожидаться появления очередного релиза.&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_47_1.jpg&amp;diff=14611</id>
		<title>Файл:LXF144 47 1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_47_1.jpg&amp;diff=14611"/>
		<updated>2013-01-25T08:12:55Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_46_1.jpg&amp;diff=14610</id>
		<title>Файл:LXF144 46 1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_46_1.jpg&amp;diff=14610"/>
		<updated>2013-01-25T08:03:04Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=LXF144:%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0&amp;diff=14598</id>
		<title>LXF144:Что за штука</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=LXF144:%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0&amp;diff=14598"/>
		<updated>2013-01-23T10:30:58Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: викификация, оформление&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Что за штука… &#039;&#039;Zeitgeist&#039;&#039;?==&lt;br /&gt;
&lt;br /&gt;
: Зачем вести записи о своей работе на компьютере, если это может делать программа? &#039;&#039;&#039;Марко Фиоретти&#039;&#039;&#039; представляет &#039;&#039;Zeitgeist&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Объясните, пожалуйста, что такое &#039;&#039;Zeitgeist&#039;&#039;?&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;Zeitgeist&#039;&#039;&#039; – немецкое слово; в переводе означает «дух времени» (дух – в смысле, демон). В мире свободного ПО именем &#039;&#039;Zeitgeist&#039;&#039; назвали регистратор событий для Linux.&lt;br /&gt;
* &#039;&#039;&#039;А что такое регистратор событий?&#039;&#039;&#039;&lt;br /&gt;
: А это как раз демон – программа, постоянно работающая в фоновом режиме. Он отмечает каждое действие пользователя, фиксирует открываемые файлы и записывает уведомления работающих программ.&lt;br /&gt;
* &#039;&#039;&#039;Впечатляет. А дальше что?&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;Zeitgeist&#039;&#039; пытается связать между собой эти данные и, само собой, по запросу предоставляет собранные сведения клиентам. А уже клиенты используют эти данные самыми разными способами.&lt;br /&gt;
* &#039;&#039;&#039;Но зачем нужны &#039;&#039;Zeitgeist&#039;&#039; и &#039;&#039;Zeitgeist&#039;&#039;-совместимые клиенты?&#039;&#039;&#039;&lt;br /&gt;
: Попробуйте представить себе &#039;&#039;Zeitgeist&#039;&#039; как невидимого секретаря, который запоминает и записывает каждый ваш шаг, помогая разумно организовать работу.&lt;br /&gt;
* &#039;&#039;&#039;Существует ли сейчас такое в рабочих столах Linux?&#039;&#039;&#039;&lt;br /&gt;
: Да. &#039;&#039;Zeitgeist&#039;&#039; разрабатывают в рамках проекта Gnome 3, и пользоваться им уже можно. Открывая &#039;&#039;Gnome Activity Journal&#039;&#039; [Журнал активности пользователя в Gnome], вы фактически запускаете клиент &#039;&#039;Zeitgeist&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Не могли бы вы привести практический пример?&#039;&#039;&#039;&lt;br /&gt;
: Один из простейших: можно вывести перечень файлов, которые вы открывали сегодня утром или в прошлую субботу – в упорядоченном виде, намного более удобном, чем в традиционном файловом менеджере или команде оболочки.&lt;br /&gt;
* &#039;&#039;&#039;Мило, но не сногсшибательно. Что-нибудь позабористее?&#039;&#039;&#039;&lt;br /&gt;
: Хорошо. &#039;&#039;Zeitgeist&#039;&#039;-совместимое приложение сможет «ответить» на вопрос типа «Все ли мои эдинбургские заказчики знают о том, что я приеду на следующей неделе?» Ответы на такие вопросы могут сохранить время и, возможно, реноме.&lt;br /&gt;
* &#039;&#039;&#039;Я и сам это узнаю, заглянув в папку исходящих электронных сообщений, разве нет?&#039;&#039;&#039;&lt;br /&gt;
: Хорошо, а как быть с теми, кого предупредили по &#039;&#039;Skype&#039;&#039; или через службы мгновенных сообщений?&lt;br /&gt;
* &#039;&#039;&#039;Что мне стоит открыть &#039;&#039;Skype&#039;&#039; или клиент IM?&#039;&#039;&#039;&lt;br /&gt;
: Ничего не стоит – но это муторно и долго. &#039;&#039;Zeitgeist&#039;&#039; соберет все записи в одном месте. В том-то и смысл: можно сгруппировать в унифицированном формате все документы, сообщения, контакты, переговоры и приложения, которыми вы пользуетесь.&lt;br /&gt;
* &#039;&#039;&#039;И вся разница — во всеобщей интеграции?&#039;&#039;&#039;&lt;br /&gt;
: Точно. Дело не в том, что именно &#039;&#039;Zeitgeist&#039;&#039; может вам сообщить, а в том, что собранные с его помощью сведения четко структурированы и удобны для поиска.&lt;br /&gt;
* &#039;&#039;&#039;Вы сказали, &#039;&#039;Zeitgeist&#039;&#039; не ограничивается действиями и контактами пользователя?&#039;&#039;&#039;&lt;br /&gt;
: Да, сказал: демон следит и за обращением к документам. &#039;&#039;Zeitgeist&#039;&#039; пытается в одинаковой форме учитывать документы, хранящиеся на компьютере, и онлайн-документы (web-страницы). Записи в обоих случаях аналогичны.&lt;br /&gt;
* &#039;&#039;&#039;Допустим, у меня есть важные файлы, и я хочу видеть их всегда, даже если работаю с ними не каждый день.&#039;&#039;&#039;&lt;br /&gt;
: «Приколите» их на клиент &#039;&#039;Zeitgeist&#039;&#039; – то есть прикрепите к его главному окну. Необходимые файлы всегда будут под рукой, независимо от вашей текущей активности.&lt;br /&gt;
* &#039;&#039;&#039;Вот это круто! А &#039;&#039;Zeitgeist&#039;&#039; только регистрирует? Может ли он сортировать мои действия по категориям?&#039;&#039;&#039;&lt;br /&gt;
: Да. Например, можно запросить список вчерашних файлов, связанных с вашей работой. &#039;&#039;Zeitgeist&#039;&#039; и часть его клиентов уже поддерживают ручную и автоматическую разметку и связывание объектов – либо эта функция станет доступна в ближайшем будущем.&lt;br /&gt;
* &#039;&#039;&#039;А как можно размечать и связывать объекты автоматически?&#039;&#039;&#039;&lt;br /&gt;
: Эти действия основываются на предположении, что группу документов, работа над которыми ведется одновременно, можно объединить общей пометкой-тэгом. Скажем, вы пишете школьное со- чинение под тэгом «Домашняя работа» и копируете в него абзац из web-страницы. &#039;&#039;Zeitgeist&#039;&#039; может (если текстовый процессор и браузер поддерживают эту функцию) заметить это действие и заключить, что web-странице не только нужно присвоить тот же тэг, но и связать ее с текущим файлом.&lt;br /&gt;
* &#039;&#039;&#039;И что будет, если я запрошу у &#039;&#039;Activity Journal&#039;&#039; запись моих действий?&#039;&#039;&#039;&lt;br /&gt;
: Программа покажет сочинение вместе с web-страницами, использованными в процессе работы – даже если вы не помните, о чем в них шла речь, и забыли поставить закладки.&lt;br /&gt;
* &#039;&#039;&#039;Как устроен &#039;&#039;Zeitgeist&#039;&#039;?&#039;&#039;&#039;&lt;br /&gt;
: Только старое доброе открытое ПО: сам демон написан на &#039;&#039;Python&#039;&#039;; база данных – &#039;&#039;SQLite&#039;&#039;, а «общение» с внешними программами осуществляется через DBus API.&lt;br /&gt;
* &#039;&#039;&#039;Подождите-ка, а это не семантические штучки вроде &#039;&#039;Nepomuk&#039;&#039;, который воссоздают на Gnome?&#039;&#039;&#039;&lt;br /&gt;
: Не совсем. Система &#039;&#039;Nepomuk&#039;&#039; имеет дело с природой объекта и категориями, к которым он принадлежит, и не учитывает особенности использования. Например, &#039;&#039;Nepomuk&#039;&#039; может обнаружить, что PDF-книга о романтизме в музыке и файл MP3 под названием &#039;&#039;&#039;nocturne&#039;&#039;&#039; связаны с Шопеном, хотя вы даже не подозреваете о существовании таких файлов.&lt;br /&gt;
* &#039;&#039;&#039;Тогда как Zeitgeist...&#039;&#039;&#039;&lt;br /&gt;
: ...регистрирует ваши действия независимо от содержания документа. &#039;&#039;Zeitgeist&#039;&#039; регистрирует только документы и фактические действия с ними, поэтому его работа дополняет деятельность &#039;&#039;Nepomuk&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;А нет ли эквивалента &#039;&#039;Zeitgeist&#039;&#039; на KDE?&#039;&#039;&#039;&lt;br /&gt;
: Нет. Во всяком случае, сейчас. Да и зачем? Ведь особенности, о которых я упоминал, позволяют &#039;&#039;Zeitgeist&#039;&#039; «общаться» с любым приложением KDE. По словам разработчиков &#039;&#039;Nepomuk&#039;&#039; и &#039;&#039;Zeitgeist&#039;&#039;, смешивать их функции не планируется. Зато есть планы обеспечить эффективный взаимообмен данными. Тогда получится рабочий стол Linux, способный ответить на вопрос типа «какие песни в исполнении Майкла Джексона слушают чаще всего?» – ответ будет основываться и на содержании файлов, и на их использовании.&lt;br /&gt;
* &#039;&#039;&#039;Чем еще планируется оснастить &#039;&#039;Zeitgeist&#039;&#039;?&#039;&#039;&#039;&lt;br /&gt;
: Почти готова функция слежения за онлайн-документами на ресурсах типа Google Docs, Flickr и Launchpad, а также интеграция с Ubuntu One.&lt;br /&gt;
* &#039;&#039;&#039;А как же приватность? Может быть, не обязательно так подробно и в красках записывать любое движение?&#039;&#039;&#039;&lt;br /&gt;
: Конечно, не обязательно. Получить доступ к базе данных &#039;&#039;Zeitgeist&#039;&#039; можно так же, как, скажем, к журналу web-браузера. Хотите – удалите записи, все или некоторые.&lt;br /&gt;
* &#039;&#039;&#039;Где можно узнать подробности?&#039;&#039;&#039;&lt;br /&gt;
: Главная страница проекта: http://zeitgeist-project.com. Сведения о существующем клиенте &#039;&#039;Zeitgeist&#039;&#039; (&#039;&#039;Activity Journal&#039;&#039;) – на сайте http://live.gnome.org/action/show/GnomeActivityJournal.&lt;br /&gt;
&lt;br /&gt;
: Примеры вопросов, на которые способен ответить &#039;&#039;Zeitgeist&#039;&#039;, можно найти здесь: http://tinyurl.com/4vxvxa8. На время подготовки номера к печати основной страницей сведений о будущем интеграции &#039;&#039;Zeitgeist&#039;&#039; с KDE и &#039;&#039;Nepomuk&#039;&#039; была вот эта: http://seilo.geekyogre.com/2010/11/zeitgeist-coming-to-kde.&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=LXF144:DrBrown3&amp;diff=14574</id>
		<title>LXF144:DrBrown3</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=LXF144:DrBrown3&amp;diff=14574"/>
		<updated>2013-01-10T06:37:45Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: викификация, оформление, иллюстрация&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Запуск по расписанию==&lt;br /&gt;
&lt;br /&gt;
: Взглянем поближе на некоторые уровни файлов настройки &#039;&#039;Cron&#039;&#039; и &#039;&#039;Anacron&#039;&#039;, пары утилит для создания расписания запуска регулярных задач.&lt;br /&gt;
&lt;br /&gt;
В этом месяце у меня урок из серии «назад к основам» – я расскажу все о &#039;&#039;Cron&#039;&#039;. Просмотрев предыдущие 37 статей из моих «&#039;&#039;Рецептов&#039;&#039;», я удивился, что не рассказывал об этом прежде.&lt;br /&gt;
&lt;br /&gt;
С помощью трех утилит &#039;&#039;Cron, Anacron&#039;&#039; и &#039;&#039;at&#039;&#039; можно запланировать выполнение задач на будущее. &#039;&#039;Cron&#039;&#039; и &#039;&#039;Anacron&#039;&#039; – демоны: они прячутся в фоновом режиме, периодически просыпаясь и проверяя, не пора ли выполнить запланированную задачу. Оба позволяют планировать запуск задач через равные интервалы времени. Их названия происходят от имени греческого бога времени Хроноса. Это корень таких слов, как «хронология», «хронометр» и «хроника». &#039;&#039;at&#039;&#039; – нечто иное: это утилита командной строки, и с ее помощью можно запланировать однократный запуск программы в заданный момент времени в будущем. Однако и у &#039;&#039;at&#039;&#039; есть свой демон – &#039;&#039;atd&#039;&#039;, который отвечает за запуск задачи в соответствующий момент времени. &#039;&#039;Cron&#039;&#039; написал Пол Викси [Paul Vixie], также известный как автор &#039;&#039;Bind&#039;&#039; (DNS-сервер). Его другая более сомнительная попытка получить известность – рекорд по количеству сообщений CERT [безопасность] на одного автора.&lt;br /&gt;
&lt;br /&gt;
Итак, я займусь &#039;&#039;Cron&#039;&#039; (и немного – &#039;&#039;Anacron&#039;&#039;). Более того, я сосредоточусь не на пользовательских таблицах &#039;&#039;&#039;crontab&#039;&#039;&#039;, а на системных заданиях &#039;&#039;Cron&#039;&#039;. Системные задания &#039;&#039;Cron&#039;&#039; могут выполняться от имени любого пользователя, но обычно запускаются от имени root. Эти задания определяются в файле &#039;&#039;&#039;/etc/crontab&#039;&#039;&#039;, хотя, как мы увидим позже, во многих дистрибутивах есть файлы второго уровня с самими описаниями заданий.&lt;br /&gt;
&lt;br /&gt;
На рисунке [&#039;&#039;к сожалению в статье отстутствующем&#039;&#039;] показан синтаксис задачи в &#039;&#039;&#039;crontab&#039;&#039;&#039;. Как видите, время запуска задания указывается очень гибко. Единственное реальное ограничение – то, что минимальная степень точности – минута, и вы не сможете заставить свое задание выполняться каждые десять секунд. На другом конце временной шкалы можно указать день недели или месяца, хотя на практике вы вряд ли будете указывать то и другое одновременно. Если вы это сделаете, задание будет выполняться при соблюдении любого из условий, но надо ли вам запускать что-то «третьего числа каждого месяца и по понедельникам»?&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF144_52_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Файл /etc/anacrontab в RHEL5. Обратите внимание, что во втором поле заданы задержки, чтобы задачи не передрались за то, кому запускаться первым.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Задания можно записать прямо в файл &#039;&#039;&#039;/etc/crontab&#039;&#039;&#039; – и, честно говоря, в этом нет ничего постыдного. Это простое решение, и с ним все системные задания &#039;&#039;Cron&#039;&#039; можно увидеть, просто заглянув в один файл. Однако ни один современный дистрибутив Linux так не делает. Вместо этого в них задания &#039;&#039;Cron&#039;&#039; разбиваются на разные файлы – с часовыми, ежедневными, еженедельными и ежемесячными заданиями. На рисунке показан пример &#039;&#039;&#039;/etc/crontab&#039;&#039;&#039;, взятый из RHEL 5. На рисунке вы видите, что (например) каждое утро в 4:02 &#039;&#039;Cron&#039;&#039; вызывает команду &#039;&#039;run-parts&#039;&#039; с каталогом &#039;&#039;&#039;/etc/cron.daily&#039;&#039;&#039; в качестве аргумента. &#039;&#039;run-parts&#039;&#039; – это скрипт. Он сканирует все файлы в указанном каталоге и выполняет найденные в них команды. Эти команды – обычно тоже скрипты, но я не вижу причины, по которой в те же каталоги нельзя было бы поместить скомпилированные исполняемые файлы. Современные версии &#039;&#039;Cron&#039;&#039; также поддерживают обозначения &#039;&#039;&#039;@hourly, @daily&#039;&#039;&#039; и &#039;&#039;&#039;@weekly&#039;&#039;&#039; на месте временных параметров.&lt;br /&gt;
&lt;br /&gt;
Схема с отдельными каталогами для часовых, ежедневных, еженедельных и ежемесячных заданий обладает лучшей масштабируемостью по сравнению со схемой, когда все команды записываются в файл &#039;&#039;&#039;/etc/crontab&#039;&#039;&#039;. Например, она позволяет установщикам пакетов класть скрипты в &#039;&#039;&#039;cron.daily&#039;&#039;&#039;, а &#039;&#039;Cron&#039;&#039; их подхватывает. Недостаток схемы в том, что разобраться, что &#039;&#039;Cron&#039;&#039; на самом деле запускает, можно только заглянув в несколько каталогов, набитых скриптами. Теряется и гибкость, так как нельзя распределить нагрузку, разделив выполнение четырех крупных задач на разные моменты в течение дня – все дневные задания будут стартовать в одно и то же время. Тем не менее, таков прогресс.&lt;br /&gt;
&lt;br /&gt;
===С ним пришел Anacron===&lt;br /&gt;
&lt;br /&gt;
Одна из вещей, усложняющих жизнь &#039;&#039;Cron&#039;&#039; в современных дистрибутивах Linux – появление конкурирующей утилиты под названием &#039;&#039;Anacron. Cron&#039;&#039; предназначен для компьютеров, работающих постоянно. Например, в Ubuntu ежедневные задания &#039;&#039;Cron&#039;&#039; по умолчанию выполняются в 6:25 утра. Если компьютер в это время не включен, задания вообще не выполнятся. &lt;br /&gt;
&lt;br /&gt;
Для персональных компьютеров, которые бывают выключены, это не лучший вариант. &#039;&#039;Anacron&#039;&#039; гарантирует, что эти ежедневные, еженедельные и ежемесячные задания будут запущены, если компьютер включится хоть в какой-то момент в течение дня, недели или месяца. В отличие от &#039;&#039;Cron, Anacron&#039;&#039; не гарантирует, что задачи будут запущены в заданный момент времени, и с ним нельзя запланировать запуск какой-либо задачи чаще раза в день. Файл настройки &#039;&#039;Anacron&#039;&#039; – &#039;&#039;&#039;/etc/anacrontab&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF144_53_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Этот файл crontab, взятый из Ubuntu, заботится о том, чтобы &#039;&#039;Cron&#039;&#039; и &#039;&#039;Anacron&#039;&#039; не запустили одно и то же задание дважды.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Чтобы гарантировать слаженную совместную работу &#039;&#039;Cron&#039;&#039; и &#039;&#039;Anacron&#039;&#039;, нужна небольшая синтаксическая гимнастика. Во-первых, нужно убедиться, что одно и то же задание не запланировано дважды – и в &#039;&#039;Cron&#039;&#039;, и в &#039;&#039;Anacron&#039;&#039;. Решение, которое предлагает Ubuntu 10.04 в файле &#039;&#039;&#039;/etc/crontab&#039;&#039;&#039;, показано на рисунке выше. &lt;br /&gt;
&lt;br /&gt;
По сути это работает точно так же, как и конфигурация RHEL 5, но здесь проводятся дополнительные проверки: если &#039;&#039;Anacron&#039;&#039; есть, то ежедневные, еженедельные и ежемесячные задания не выполняются – предполагается, что их запуск обеспечит &#039;&#039;Anacron&#039;&#039;. (Пояснения по синтаксису см. ниже в «Условия в командах оболочки».) Ежечасные задания &#039;&#039;Cron&#039;&#039; запускаются точно так же, как в RHEL 5 – путем запуска команд в &#039;&#039;&#039;/etc/cron.hourly&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
В некоторых дистрибутивах, включая RHEL 6 и Fedora 14, файл &#039;&#039;&#039;/etc/crontab&#039;&#039;&#039; пуст, не считая нескольких комментариев. В более поздних версиях &#039;&#039;Cron&#039;&#039;, используемых в этих дистрибутивах, файлы в каталоге &#039;&#039;&#039;/etc/cron.d&#039;&#039;&#039; также проверяются на наличие заданий. Вы обнаружите, что часовые задания определены в &#039;&#039;&#039;/etc/cron.d/0hourly&#039;&#039;&#039;, который запускает команды из &#039;&#039;&#039;/etc/cron.hourly&#039;&#039;&#039; – это возвращает нас к изначальной модели поведения. Один из файлов в &#039;&#039;&#039;cron.hourly&#039;&#039;&#039; (&#039;&#039;&#039;0anacron&#039;&#039;&#039;) запускает &#039;&#039;Anacron&#039;&#039;. (Следите за моей мыслью, нет? – будьте внимательны!) В результате именно &#039;&#039;Anacron&#039;&#039; отвечает за запуск ежедневных, еженедельных и ежемесячных заданий.&lt;br /&gt;
&lt;br /&gt;
===Создаем собственные задания===&lt;br /&gt;
&lt;br /&gt;
Добавляя собственные задания в &#039;&#039;Cron&#039;&#039;, помните, что они запускаются без терминала, поэтому обязательно перенаправьте стандартный вывод в файл. Также немного подумайте об окружении, в котором будет запускаться задание. ID пользователя, конечно, будет соответствовать определенному в &#039;&#039;&#039;crontab&#039;&#039;&#039; (обычно это root, хотя с точки зрения безопасности лучше всего запускать задачу под пользователем, у которого есть минимум прав, достаточный для ее выполнения). Но как насчет пути поиска, текущего каталога и даже оболочки, в которой будет запускаться скрипт? Часто эти параметры задаются явно в &#039;&#039;&#039;crontab&#039;&#039;&#039; – снова взгляните на наш пример из RHEL5. Простой и быстрый способ проверить окружение выполнения &#039;&#039;Cron&#039;&#039; – добавить в &#039;&#039;&#039;crontab&#039;&#039;&#039; строку вроде этой:&lt;br /&gt;
&lt;br /&gt;
 * * * * * root env &amp;gt; /tmp/cronenv&lt;br /&gt;
&lt;br /&gt;
подождать одну минуту и проверить содержимое &#039;&#039;&#039;/tmp/cronenv&#039;&#039;&#039;. (Не забудьте затем удалить строку из &#039;&#039;&#039;crontab&#039;&#039;&#039;.) После этого не нужно перезапускать &#039;&#039;Cron&#039;&#039; или отправлять ему сигнал &#039;&#039;&#039;HUP&#039;&#039;&#039;, чтобы сказать, что вы изменили &#039;&#039;&#039;crontab&#039;&#039;&#039; – он заметит изменения сам, когда проснется в следующий раз. Но помните, что если вы поместили свои задания для &#039;&#039;Cron&#039;&#039; в &#039;&#039;&#039;/etc/cron.d&#039;&#039;&#039;, они не унаследуют параметры окружения из &#039;&#039;&#039;/etc/crontab&#039;&#039;&#039;. Если у вас есть какие-то сомнения по поводу окружения, задайте его явно в начале скрипта и старайтесь указывать полные пути везде, где это возможно.&lt;br /&gt;
&lt;br /&gt;
===Отладка заданий Cron===&lt;br /&gt;
&lt;br /&gt;
Для каждого запускаемого задания &#039;&#039;Cron&#039;&#039; записывает строку в файл журнала. Вот фрагмент этого файла с одним из моих маленьких заданий &#039;&#039;&#039;env&#039;&#039;&#039; и с &#039;&#039;Anacron&#039;&#039;, запускающим еженедельные задания:&lt;br /&gt;
&lt;br /&gt;
 Feb 3 17:10:01 fedora14 CROND[2790]: (root) CMD (env &amp;gt; /tmp/cronenv)&lt;br /&gt;
 Feb 3 17:10:02 fedora14 anacron[2165]: Job `cron.weekly’ started&lt;br /&gt;
 Feb 3 17:10:02 fedora14 run-parts(/etc/cron.weekly)[2795]: starting 99-raid-check&lt;br /&gt;
 Feb 3 17:10:02 fedora14 run-parts(/etc/cron.weekly)[2805]: finished 99-raid-check&lt;br /&gt;
 Feb 3 17:10:02 fedora14 anacron[2165]: Job `cron.weekly’ terminated&lt;br /&gt;
 Feb 3 17:10:02 fedora14 anacron[2165]: Normal exit (2 jobs run)&lt;br /&gt;
&lt;br /&gt;
В Fedora файл журнала по умолчанию – &#039;&#039;&#039;/var/log/cron&#039;&#039;&#039;, а в Ubuntu – &#039;&#039;&#039;/var/log/syslog&#039;&#039;&#039;. В этих файлах появятся сообщения о синтаксических ошибках в &#039;&#039;&#039;crontab&#039;&#039;&#039; – например, о выходе временного параметра за пределы диапазона.&lt;br /&gt;
&lt;br /&gt;
Также можно попросить &#039;&#039;Cron&#039;&#039; оповещать вас о любых проблемах по электронной почте, добавив в &#039;&#039;&#039;crontab&#039;&#039;&#039; строку:&lt;br /&gt;
&lt;br /&gt;
 MAILTO=root&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Cron&#039;&#039; также будет отправлять по почте весь стандартный вывод задания, если вы забыли перенаправить его. Туда же придут и сообщения о синтаксических ошибках в скриптах – хотя, перед тем как запускать скрипт в &#039;&#039;Cron&#039;&#039;, вы должны были его проверить, правда?&lt;br /&gt;
&lt;br /&gt;
О чем я не рассказал, но что заслуживает упоминания для полноты картины – то, что у отдельных пользователей могут быть собственные файлы &#039;&#039;&#039;crontab&#039;&#039;&#039;, в каталоге &#039;&#039;&#039;/var/spool/crontab/crontabs&#039;&#039;&#039;. Эти файлы нужно обновлять командой &#039;&#039;crontab -e&#039;&#039;, а не редактировать напрямую. Их синтаксис аналогичен синтаксису системного &#039;&#039;&#039;crontab&#039;&#039;&#039;, но в них нет поля «запустить от имени пользователя» [user to run as]. Из пользовательских файлов &#039;&#039;&#039;crontab&#039;&#039;&#039; можно запускать задания только от имени соответствую щего пользователя.&lt;br /&gt;
&lt;br /&gt;
===Варианты применения===&lt;br /&gt;
&lt;br /&gt;
Вот несколько примеров рутинных процедур, для выполнения которых системные администраторы могут воспользоваться &#039;&#039;Cron&#039;&#039;:&lt;br /&gt;
* Ротация файлов журнала.&lt;br /&gt;
* Обобщение файлов журнала с помощью утитит типа &#039;&#039;Logwatch&#039;&#039; и &#039;&#039;Webalizer&#039;&#039;.&lt;br /&gt;
* Автоматическая проверка репозиториев дистрибутивов на наличие обновлений.&lt;br /&gt;
* Повторная сборка базы данных &#039;&#039;locate&#039;&#039; (это база данных всех имен файлов системы, используемая командой &#039;&#039;locate&#039;&#039;).&lt;br /&gt;
* Создание резервных копий файловой системы.&lt;br /&gt;
* Удаление старых файлов из каталогов вроде &#039;&#039;&#039;/tmp&#039;&#039;&#039;.&lt;br /&gt;
* Запуск процедуры обнаружения вторжений с помощью утилит типа &#039;&#039;Tripwire&#039;&#039;.&lt;br /&gt;
* Запуск ночной сборки ПО.&lt;br /&gt;
* Размещение фрагментов ваших файловых систем на удаленных компьютерах с помощью утилиты &#039;&#039;Rsync&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Условия в командах оболочки===&lt;br /&gt;
&lt;br /&gt;
В скриптах часто используются операторы &#039;&#039;&#039;&amp;amp;&amp;amp;&#039;&#039;&#039; и &#039;&#039;&#039;||&#039;&#039;&#039;, как условное обозначение операторов &#039;&#039;&#039;if/else&#039;&#039;&#039;. Вот как они работают. &lt;br /&gt;
&lt;br /&gt;
Команда:&lt;br /&gt;
&lt;br /&gt;
 grep -q chris /etc/passwd &amp;amp;&amp;amp; echo chris has an account&lt;br /&gt;
&lt;br /&gt;
запускает первую команду (&#039;&#039;grep&#039;&#039;). Если она завершается успешно, запускается вторая команда (&#039;&#039;echo&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
По-другому это можно записать так:&lt;br /&gt;
&lt;br /&gt;
 if grep -q chris /etc/passwd&lt;br /&gt;
  then&lt;br /&gt;
    echo chris has an account&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
но здесь уже четыре строки, а не одна – а, как известно, символы перевода строки в большом дефиците.&lt;br /&gt;
&lt;br /&gt;
Другой пример. Команда:&lt;br /&gt;
&lt;br /&gt;
 grep -q xyzzy /etc/passwd || echo no such account&lt;br /&gt;
&lt;br /&gt;
запускает первую команду, и если она завершается неудачно (в данном случае, если &#039;&#039;grep&#039;&#039; не находит &#039;&#039;&#039;xyzzy&#039;&#039;&#039; в файле &#039;&#039;&#039;passwd&#039;&#039;&#039;), вызывается вторая команда.&lt;br /&gt;
&lt;br /&gt;
Применительно к задачам &#039;&#039;Cron&#039;&#039; и &#039;&#039;Anacron&#039;&#039;, обсуждаемым в данной статье, команда:&lt;br /&gt;
&lt;br /&gt;
 test -x /usr/sbin/anacron || ( cd / &amp;amp;&amp;amp; run-parts --report /etc/cron.daily )&lt;br /&gt;
&lt;br /&gt;
запускает &#039;&#039;run-parts&#039;&#039; только в том случае, если &#039;&#039;Anacron&#039;&#039; не найден.&lt;br /&gt;
&lt;br /&gt;
Эти конструкции часто применяются при написании скриптов, но отражают стиль программирования «во какой я умный – я написал это с меньшим количеством строк, чем ты».&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_53_1.jpg&amp;diff=14573</id>
		<title>Файл:LXF144 53 1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_53_1.jpg&amp;diff=14573"/>
		<updated>2013-01-10T06:27:59Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_52_1.jpg&amp;diff=14572</id>
		<title>Файл:LXF144 52 1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_52_1.jpg&amp;diff=14572"/>
		<updated>2013-01-10T06:13:25Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_51_2.jpg&amp;diff=14571</id>
		<title>Файл:LXF144 51 2.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_51_2.jpg&amp;diff=14571"/>
		<updated>2013-01-10T06:05:23Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_51_1.jpg&amp;diff=14570</id>
		<title>Файл:LXF144 51 1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_51_1.jpg&amp;diff=14570"/>
		<updated>2013-01-10T06:05:08Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=LXF144:DrBrown2&amp;diff=14569</id>
		<title>LXF144:DrBrown2</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=LXF144:DrBrown2&amp;diff=14569"/>
		<updated>2013-01-10T06:04:44Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: викификация, оформление, иллюстрация&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Тайная жизнь паролей==&lt;br /&gt;
&lt;br /&gt;
: Итак, вы в курсе, что единственное, чего нет в файле &#039;&#039;&#039;passwd&#039;&#039;&#039; – это пароль; а знаете ли вы, как все это работает на самом деле?&lt;br /&gt;
&lt;br /&gt;
Начнем с основ. Все учетные записи в Linux – или, по крайней мере те, что соответствуют реальным пользователям – защищены паролями. Когда пользователь задает пароль, криптографическая свертка пароля (хэш) записывается в строку учетной записи пользователя в файле &#039;&#039;&#039;/etc/shadow&#039;&#039;&#039;. Входя в систему, пользователь вводит пароль, который снова хэшируется, и свертка сравнивается со сверткой в файле &#039;&#039;&#039;shadow&#039;&#039;&#039;. В открытом виде пароли не хранятся нигде.&lt;br /&gt;
&lt;br /&gt;
Это немного упрощенное объяснение. На практике при задании пароля генерируется случайный текст (salt, «приправа») и дописывается к незашифрованному паролю. Затем результат объединения пароля и «приправы» шифруется. «Приправа» и пароль сохраняются в поле пароля в &#039;&#039;&#039;/etc/shadow&#039;&#039;&#039;. Когда пользователь входит в систему, «приправа» берется из файла &#039;&#039;&#039;shadow&#039;&#039;&#039;, объединяется с паролем, и вычисляется свертка от результата объединения. Применение «приправы» дает ряд преимуществ. Во-первых, если два пользователя выберут одинаковый пароль, об этом нельзя будет догадаться, заглянув в &#039;&#039;&#039;/etc/shadow&#039;&#039;&#039;. «Приправа» также значительно усложняет взлом пароля методом перебора, о чем я расскажу позже. За задание и проверку паролей в основном отвечает модуль PAM &#039;&#039;pam_unix&#039;&#039;. Ему часто помогают модули вроде &#039;&#039;pam_pwcheck, pam_cracklib&#039;&#039; и &#039;&#039;pam_passwdqc&#039;&#039;, выполняющие проверку паролей на надежность.&lt;br /&gt;
&lt;br /&gt;
В Linux использовались различные алгоритмы хэширования. Самый ранний был основан на алгоритме DES и использовал только пароли из восьми символов – по семь бит от каждого символа образовывали 56-битный ключ DES. В дальнейших версиях была добавлена поддержка хэширования на основе MD5 и поддержка сверток SHA-256 и SHA-512. Они поддерживают более длинные пароли и используют более длинные свертки. Например, в системе SLED-11 (SUSE) моя запись в &#039;&#039;&#039;/etc/shadow&#039;&#039;&#039; выглядит так:&lt;br /&gt;
&lt;br /&gt;
 $1$vte.LblF$de2zWUjnCqqFbeqhcwCbi0&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF144_51_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;  Для неподготовленного взгляда это выглядит мусором, но символы $ создают в записях файла /etc/shadow некую структуру.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
На рисунке ниже показана структура этой записи. Видны «приправа» из 8 символов и свертка из 22 символов. Они закодированы по основанию 64, и каждому символу соответствуют шесть бит. Это свертка MD5. В Ubuntu 10.04 она выглядит так:&lt;br /&gt;
&lt;br /&gt;
 $6$QIwH744n$2cFYj/WxLoNwzZ1YKs1YOCGNKS.gvM-mxcuFLydzAWw5jm8Or3BmLAKp6jLPdhyV0h5v5fA3/gsDEq3tFRTsCr0&lt;br /&gt;
&lt;br /&gt;
Здесь мы видим «приправу» из восьми символов и свертку из 86 символов. Это хэш SHA-512. Все хэширование выполняется процедурой &#039;&#039;crypt library&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Взлом паролей===&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF144_51_2.jpg|300px]] «Приправа» играет ключевую роль в установке и проверке пароля и препятствует атаке методом перебора.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
Если вы заполучите копию файла &#039;&#039;&#039;shadow&#039;&#039;&#039;, легко ли будет восстановить пароль? Криптографы могут вычислить усилия, необходимые для атаки методом перебора, когда последовательно перебираются все возможные пароли, затем они хэшируются и результат проверяется на совпадение. «Приправа» усложняет эту задачу, потому что каждый перебираемый пароль нужно объединять с «приправой» и хэшировать, а не просто сравнивать каждый хэш с каждой записью в файле &#039;&#039;&#039;shadow&#039;&#039;&#039;. «Приправа» также делает невозможным использование «радужных таблиц» – заранее вычисленных таблиц хэшей. «Радужные таблицы» содержат большой объем данных, и для каждого возможного значения «приправы» понадобится отдельная таблица – таблиц слишком много, чтобы это было осуществимо на практике. Все это очень подробно обсуждается в статье http://cromwell-intl.com/security/password.html.&lt;br /&gt;
&lt;br /&gt;
На практике область паролей, выбираемых обычными людьми, гораздо, существенно меньше. Программы вроде &#039;&#039;John The Ripper&#039;&#039; умеют выполнять эффективные атаки методом перебора, используя словарные слова и строки, от них образованные. За одну ночь работы в файле &#039;&#039;&#039;shadow&#039;&#039;&#039; обыкновенной многопользовательской системы &#039;&#039;John&#039;&#039; может добыть один или несколько паролей – конечно, в зависимости от того, насколько хорошо осведомлены пользователи о важности выбора надежных паролей. И, конечно, чтобы осуществить такую атаку, первым делом нужно получить доступ к файлу &#039;&#039;&#039;shadow&#039;&#039;&#039;, а его может читать только root. Гораздо более многообещающий подход для многих хакеров – социальная инженерия: необходимо заставить пользователя поверить вам настолько, чтобы он сам сказал вам пароль. Осведомленность пользователя здесь также играет большую роль.&lt;br /&gt;
&lt;br /&gt;
===Вычисляем свертку===&lt;br /&gt;
&lt;br /&gt;
Начнем с фрагмента текста. Сложим ASCII-коды всех символов текста и возьмем четыре последних цифры результата. Очевидно, получится число от 0 до 9999. Это пример свертки. Это что-то вроде «отпечатка пальца» оригинала, но это преобразование с потерями, и по нему вернуться к исходному тексту нельзя. Для этого алгоритма по заданной свертке легко подобрать исходный текст (не обязательно исходный). А вот для криптостойких сверток, типа MD5 и SHA1, это гораздо сложнее.&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=LXF144:DrBrown1&amp;diff=14568</id>
		<title>LXF144:DrBrown1</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=LXF144:DrBrown1&amp;diff=14568"/>
		<updated>2013-01-10T05:53:28Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: викификация, оформление&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Перемены для eth0==&lt;br /&gt;
&lt;br /&gt;
: Готовится новая схема именования, якобы способствующая унификации. Но прогресс ли это?&lt;br /&gt;
&lt;br /&gt;
В последнем объявлении Мэтта Домша [Matt Domsch] (https://fedoraproject.org/wiki/Features/ConsistentNetworkDeviceNaming) предлагается новая схема именования сетевых интерфейсов для Fedora 15. Вместо знакомого и любимого нами &#039;&#039;&#039;eth0&#039;&#039;&#039; появится &#039;&#039;&#039;em1&#039;&#039;&#039; (если интерфейс расположен на материнской плате) или нечто вроде &#039;&#039;&#039;pci3#1&#039;&#039;&#039; (если интерфейс на внешней PCI-карте).&lt;br /&gt;
&lt;br /&gt;
Цель тут в унификации схемы именования устройств, но у меня чувство дежа-вю – как нередко бывает, меня уверяют, что это изменение решит проблему, хотя я и не подозревал, что она была. В таких случаях я обычно предполагаю, что живу слишком замкнутой жизнью, далекой от реальности – а где-то есть полчища системных администраторов, управляющих сотнями компьютеров с дюжиной сетевых карт в каждом, и новая схема именования осияет их жизнь. Но, судя по комментариям, вызванным этим нововведением, многие ощущают то же, что и я.&lt;br /&gt;
&lt;br /&gt;
За последнее время это не единственный пример изменений ради изменений в мире Linux. Пусть я несправедлив, но – интересно, насколько этими людьми движет желание обрести популярность и славу в сообществе открытого кода? Эрик Рэймонд [Eric Raymond] написал к своей книге «Собор и Базар» приложение «Как стать хакером», где перечислил вещи, в которые должен верить хакер. Первая такова: «Мир полон удивительных проблем, ожидающих решения». Однако назвать что-нибудь удивительной проблемой – не всегда хорошая основа для пертурбаций в операционной системе, от которой зависят многие из нас.&lt;br /&gt;
&lt;br /&gt;
Я начинаю соглашаться с Огденом Нэшем [Ogden Nash] – тот заметил, что прогресс, вероятно, был неплохой штукой, но слишком затянулся.&lt;br /&gt;
&lt;br /&gt;
===Собор и базар===&lt;br /&gt;
&lt;br /&gt;
Это собрание эссе Эрика Рэймонда [Eric Raymond] было опубликовано в 1999 году. Среди прочего Рэймонд обсуждает «культурный дар» хакерского сообщества, члены которого дружелюбно конкурируют друг с другом за репутацию равных. В эссе «Обживая ноосферу» он исследует обычаи собственности и владения в культуре открытого кода. Это стоящее чтение. Его можно найти на сайте http://www.catb.org/~esr/writings/cathedral-bazaar, и оно все еще доступно в виде книги издательства «О’Рейли».&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_20_2.jpg&amp;diff=14502</id>
		<title>Файл:LXF144 20 2.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_20_2.jpg&amp;diff=14502"/>
		<updated>2012-12-11T07:14:37Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_20_1.jpg&amp;diff=14501</id>
		<title>Файл:LXF144 20 1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_20_1.jpg&amp;diff=14501"/>
		<updated>2012-12-11T07:14:26Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_19_1.jpg&amp;diff=14500</id>
		<title>Файл:LXF144 19 1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_19_1.jpg&amp;diff=14500"/>
		<updated>2012-12-11T07:14:16Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_18_1.jpg&amp;diff=14499</id>
		<title>Файл:LXF144 18 1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_18_1.jpg&amp;diff=14499"/>
		<updated>2012-12-11T07:14:05Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_17_1.jpg&amp;diff=14498</id>
		<title>Файл:LXF144 17 1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_17_1.jpg&amp;diff=14498"/>
		<updated>2012-12-11T07:13:54Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=LXF144:%D0%A1%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=14497</id>
		<title>LXF144:Сравнение</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=LXF144:%D0%A1%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=14497"/>
		<updated>2012-12-11T07:10:08Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: викификация, оформление, иллюстрация&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;: Каждый месяц мы сравниваем тысячи программ – а вы можете отдыхать!&lt;br /&gt;
&lt;br /&gt;
==Сравнение: Графопостроители==&lt;br /&gt;
&lt;br /&gt;
: Один график заменяет тысячу цифр, но как его построить? &#039;&#039;&#039;Марко Фиоретти&#039;&#039;&#039; рассмотрит пять различных способов для этого.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Под графопостроителями мы подразумеваем программы, помогающие разобраться в числовых данных или математических выражениях, создавая и анализируя соответствующие графики. Подобные приложения – несомненно, нишевые продукты, по сравнению с повседневными программами типа файловых менеджеров или почтовых клиентов. Тем не менее, построение графиков функций и данных делает эту нишу достаточно большой, чтобы оправдать &#039;&#039;&#039;Сравнение&#039;&#039;&#039;: конечно, мало кто использует диаграммы каждый день, но большинство пользователей компьютеров когда-нибудь да сталкиваются с задачей их создания.&lt;br /&gt;
&lt;br /&gt;
Многие предпочитают строить диаграммы по таблице, подобной &#039;&#039;Calc&#039;&#039;, но у этого метода есть пределы. Автономные специализированные графопостроители-плоттеры также могут быть гораздо удобнее, если вы хотите включить графики в блог или на вики-страницу.&lt;br /&gt;
&lt;br /&gt;
Бывают люди, рисующие диаграммы просто для удовольствия, но диаграмма полезна во всех видах рутинных операций – например, при подготовке школьного доклада или для показа на вашем блоге, на сколько больше денег собрано в прошлом году. Вся эта информация доходчиво передается хорошо сделанным графиком. Кроме того, мы живем в мире, который контролируется огромным количеством цифр и зависит от них всевозможными способами. Умение быстро превратить цифры в график поможет вам выявить их истинное значение и влияние на вашу жизнь. Да и вообще, численная грамотность становится все более востребованной – и в рамках качественного образования, и для того, чтобы найти или сохранить хорошую работу. В наши дни все должны поиграть с графопостроителями – ну хоть разок.&lt;br /&gt;
&lt;br /&gt;
===Про наш тест…===&lt;br /&gt;
&lt;br /&gt;
Программы, описанные на следующих четырех страницах, тестировались на двуядерном AMD 64 $5800+ система с 8 ГБ ОЗУ под Fedora 14, со всеми обновлениями, доступными по состоянию на февраль 2011 года. Выбирая, что включить в &#039;&#039;&#039;Сравнение&#039;&#039;&#039;, мы искали только программы, посвященные вычислениям и построению графиков по данным и функциям, то есть исключили электронные таблицы. &#039;&#039;Calc&#039;&#039; и иже с ним очень хороши, но это другой вид программ, и часто они менее гибки, чем специализированные. Помимо выполнения функций калькулятора/плоттера, мы требовали, чтобы программа без проблем устанавливалась и запускалась на современных дистрибутивах и создавала графики из файлов данных или формул, заданных пользователем.&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;Grace&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
{{Сравнение&lt;br /&gt;
|кратко=&amp;lt;center&amp;gt;&#039;&#039;&#039;Grace&#039;&#039;&#039;&amp;lt;/center&amp;gt;&lt;br /&gt;
|версия=5.1.22&lt;br /&gt;
|изображение=LXF144_17_1.jpg&lt;br /&gt;
|подпись=В &#039;&#039;Grace&#039;&#039; изобилие опций и для анализа, и для презентации данных.&lt;br /&gt;
|сайт=http://plasma-gate.weizmann.ac.il/Grace&lt;br /&gt;
|цена=Бес­плат­но по GPL&lt;br /&gt;
|итог=Мощный плоттер и статистический анализатор с крутой кривой обучения.&lt;br /&gt;
|рейтинг=8&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
: Построение графиков и статистический анализ из старых добрых Unix-дней.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Это хорошая программа, но ее чуть сложнее найти, чем вы ожидаете. Официально она называется &#039;&#039;Grace&#039;&#039;. А вот название исполняемого файла, вводимое в командной строке или добавляемое в системные меню – &#039;&#039;xmgrace&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
По виду &#039;&#039;Grace&#039;&#039; заметно отличается от своих конкурентов – нравится вам это или нет. Пользователи, впервые увидевшие графический рабочий стол Unix в последние десять лет, вероятно, будут озадачены, а те, кто начинал в прошлом тысячелетии, ощутят ностальгию. Да, &#039;&#039;Grace&#039;&#039; – старомодная программа. Она построена на виджетах в стиле &#039;&#039;Motif&#039;&#039;, уже довольно редких на настольных компьютерах GNU/Linux. Это не должно, однако, подбить вас закрыть программу, не попробовав.&lt;br /&gt;
&lt;br /&gt;
====Построение данных====&lt;br /&gt;
&lt;br /&gt;
Официально &#039;&#039;Grace&#039;&#039; описывается как «2D-инструмент построения графиков по числовым данным». Иными словами, можно загружать текстовые файлы со столбцами цифр и использовать их как координаты для графиков. Кроме того, программа имеет встроенный язык сценариев, позволяющий на досуге создавать функции. Для загрузки данных из файла, выберите &#039;&#039;&#039;Данные &amp;gt; Импорт ASCII&#039;&#039;&#039; из главного меню. Выберите &#039;&#039;&#039;Один набор&#039;&#039;&#039; для файла с двумя столбцами чисел, или &#039;&#039;&#039;Блок данных&#039;&#039;&#039;, если столбцов в файле несколько. При желании такие данные можно обрабатывать внутри &#039;&#039;Grace&#039;&#039;, не изменяя исходный файл. Операции такого рода называются преобразованиями и доступны из меню &#039;&#039;&#039;Данные&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Преобразований в &#039;&#039;Grace&#039;&#039; множество – список включает изменения осей, скользящее среднее, корреляции и множество функций, определяемых пользователем. В официальном учебнике имеется раздел &#039;&#039;«Создание наборов внутри Grace»&#039;&#039;; там описано несколько способов создания наборов данных без чтения их из файла. Другой способ добыть исходные данные – создать ссылку на канал, то есть на стандартный вывод какой-либо другой программы. &#039;&#039;Grace&#039;&#039; умеет обнаруживать изменения в исходных файлах и автоматически перерисует графики, зависящие от них.&lt;br /&gt;
&lt;br /&gt;
Итак, что же содержится в интерфейсе &#039;&#039;Grace&#039;&#039;? Строки в верхнем меню открывают серию панелей и окон, которые и сами по себе довольно мощные средства. Например, &#039;&#039;&#039;Команды&#039;&#039;&#039; – своего рода встроенный терминал, с подсказкой, при которой вводятся или повторяются команды. Можно прочитать сообщения об ошибках и различные уведомления, а также сохранить их в файле.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Файл &amp;gt; Настройки печати&#039;&#039;&#039; открывает довольно богатое содержимым окно, где определяется и как сохранить файл в любом доступном в &#039;&#039;Grace&#039;&#039; формате, и как его распечатать. Раздел настройки печати в этой панели содержит опции размеров страницы, ориентации, разрешения и шрифтов. &#039;&#039;Grace&#039;&#039; поддерживает вывод в JPEG, PNG, PNM, SVG, PostScript и ряд старомодных форматов прошлого века, типа MIF. А как насчет графиков? Один экземпляр &#039;&#039;Grace&#039;&#039; управляет неограниченным числом графиков и кривых в каждом графике, до 256 цветов и 32 вариантов заполнения. Чтобы упростить понимание графиков, можно комментировать их или добавлять объекты в панели &#039;&#039;&#039;Окно &amp;gt; Объект&#039;&#039;&#039;. Кнопки со стрелкой и масштабирование обеспечивают перемещение по любому графику и изучение его частей в подробностях.&lt;br /&gt;
&lt;br /&gt;
Общая настройка и организация работы в &#039;&#039;Grace&#039;&#039; осуществляется через файлы &#039;&#039;&#039;Параметры&#039;&#039;&#039; и &#039;&#039;&#039;Проект&#039;&#039;&#039;. Файлы второго типа содержат все сведения, необходимые для воссоздания определенного графика или набора графиков. Файл &#039;&#039;&#039;Параметры&#039;&#039;&#039; содержит только общие настройки, которые можно выдать в общий доступ – сохранить, а затем перезагрузить – в различных проектах.&lt;br /&gt;
&lt;br /&gt;
Документация составлена неплохо. Как получить максимальную отдачу от &#039;&#039;Grace&#039;&#039;, подскажет руководство на сайте или учебник на том же сервере. Кроме того, предоставляется множество демо-материалов – их легко найти парой щелчков в меню &#039;&#039;&#039;Справка&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;Jgnuplot&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
{{Сравнение&lt;br /&gt;
|кратко=&amp;lt;center&amp;gt;&#039;&#039;&#039;Jgnuplot&#039;&#039;&#039;&amp;lt;/center&amp;gt;&lt;br /&gt;
|версия=0.3&lt;br /&gt;
|изображение=LXF144_18_1.jpg&lt;br /&gt;
|подпись=По умолчанию &#039;&#039;Jpg&#039;&#039; создает довольно спартанские графики, но вы можете выставить для украшения все опции &#039;&#039;Gnuplot&#039;&#039; и задокументировать их.&lt;br /&gt;
|сайт=http://jgnuplot.sourceforge.net&lt;br /&gt;
|цена=Бес­плат­но по GPL&lt;br /&gt;
|итог=Разносторонний плоттер, но без статистического анализа, как в &#039;&#039;Grace&#039;&#039;.&lt;br /&gt;
|рейтинг=8&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
: Приручить &#039;&#039;Gnuplot&#039;&#039; с помощью &#039;&#039;Java&#039;&#039;? Странная идея, но работает мощно.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Jgnuplot&#039;&#039; (или &#039;&#039;Jgp&#039;&#039; для краткости) – Java-интерфейс для &#039;&#039;Gnuplot&#039;&#039; с 2D- и 3D-графикой. Если вам нужно то, что &#039;&#039;Gnuplot&#039;&#039; не выполняет без долгих уговоров, лучше поищите другую программу. Однако раз &#039;&#039;Gnuplot&#039;&#039; запускается &#039;&#039;Jgp&#039;&#039;, вы мо-жете использовать с последней всю обширную онлайн-документацию по первой.&lt;br /&gt;
&lt;br /&gt;
По той же причине, все, что делается в &#039;&#039;Jgp&#039;&#039;, легко использовать снова или интегрировать в скрипты оболочки, которые строят данные автоматически. Окно &#039;&#039;Jgp&#039;&#039; имеет четыре вкладки под названиями &#039;&#039;&#039;Наборы данных, Этикетки, Переменные&#039;&#039;&#039; и &#039;&#039;&#039;Добавить команды построения&#039;&#039;&#039;, и консоль похожа на представленную в &#039;&#039;Grace&#039;&#039;. Первая вкладка содержит список функций, которые определены и доступны для построения. Можно определить сколько угодно источников данных, и с этой точки зрения &#039;&#039;Jgp&#039;&#039; почти так же гибка, как &#039;&#039;Grace&#039;&#039;. Нажмите на кнопку &#039;&#039;&#039;Добавить&#039;&#039;&#039; и выберите секцию &#039;&#039;&#039;Правка &amp;gt; Добавить набор данных&#039;&#039;&#039;, чтобы открыть всплывающие панели; затем поясните &#039;&#039;Jgp&#039;&#039;, является ли источник данных внешним файлом или функцией. Далее, выдайте &#039;&#039;Gnuplot&#039;&#039; название и задайте тип диаграммы: линейная, гистограмма или любой другой формат, поддерживаемый &#039;&#039;Gnuplot&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Если вместо чтения чисел из файла вы хотите построить математическую функцию, введите это в области панели &#039;&#039;&#039;Datastring&#039;&#039;&#039;. Если текущий источник данных – файл ASCII, укажите в том же поле, какие столбцы в файле соответствуют осям &#039;&#039;&#039;X&#039;&#039;&#039; и &#039;&#039;&#039;Y&#039;&#039;&#039;. Значение по умолчанию, даваемое &#039;&#039;Jgp&#039;&#039; для этой настройки, если источник данных является файлом – 1:2. Эта строка, которая на самом деле не более чем опция &#039;&#039;Gnuplot&#039;&#039;, означает «используйте номера в первом столбце как значения для оси &#039;&#039;&#039;X&#039;&#039;&#039;, а числа во второй колонке – для оси &#039;&#039;&#039;Y&#039;&#039;&#039;». &#039;&#039;Jgp&#039;&#039; может обновить график автоматически, если произойдут изменения в файле данных, но эту опцию надо активировать, отметив соответствующую кнопку.&lt;br /&gt;
&lt;br /&gt;
====Смесь источников====&lt;br /&gt;
&lt;br /&gt;
В &#039;&#039;Jgp&#039;&#039; можно смешивать данные из файлов и функций в одном графике. Можно выбирать между файлом данных и общими математическими функциями двумя радиокнопками: к сожалению, при каждом открытии окна &#039;&#039;&#039;Редактирование набора данных&#039;&#039;&#039; для обновления функции &#039;&#039;Jgp&#039;&#039; сбрасывает эти кнопки в значение «исходный файл данных». При выборе этой опции &#039;&#039;Gnuplot&#039;&#039; ожидает значение типа 1:2 – номера столбцов – в поле &#039;&#039;Datastring&#039;&#039;. Если, как и бывает при работе с функцией, это поле содержит формулу, вы получите ошибку «не определена переменная». Вроде бы единственное решение – установка кнопки &#039;&#039;&#039;Источник&#039;&#039;&#039; в нужные значения вручную при каждом открытии этого окна &#039;&#039;Jgp&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Картинка вверху показывает, что мы получили, определив источники данных и приказав &#039;&#039;Jgp&#039;&#039; создать график. Графики можно сохранить в виде PostScript или SVG-файлов. Красная и зеленая кривые взяты из двух файлов ASCII (но это могут быть и несколько столбцов из одного файла). Синяя линия соответствует функции &#039;&#039;у = 2*х + 50*cos(X)&#039;&#039;. Можно также клонировать наборы данных для экономии времени, перегружать функцию или файл данных с новым именем или просто изменить некоторые параметры.&lt;br /&gt;
&lt;br /&gt;
Введя наборы данных, вы можете легко изменить порядок, по которому &#039;&#039;Jgp&#039;&#039; оценивает и строит их: выберите какой-нибудь щелчком мыши и переместите его вверх или вниз по списку нажатием соответствующих клавиш. &#039;&#039;Gnuplot&#039;&#039; рисует графики в порядке их указания, один поверх другого, и при неудачном порядке вывода результат может стать менее читабельным.&lt;br /&gt;
&lt;br /&gt;
Все инструкции, которые вы дали &#039;&#039;Jpg&#039;&#039; нажатием и вводом необходимых значений в графическом интерфейсе, сохраняются в файле с именем &#039;&#039;&#039;work.gnuplot&#039;&#039;&#039;, в том же каталоге, из которого запускается программа. Удовлетворившись результатом, вы можете сохранить этот файл в другом месте и применить его для создания таких же диаграмм автоматически, из сценария оболочки. Можно увидеть в режиме реального времени, как ваши действия в GUI переводятся в команды &#039;&#039;Gnuplot&#039;&#039;, нажав кнопку &#039;&#039;&#039;Preview Plotstring&#039;&#039;&#039; в правом нижнем углу. Эта особенность делает &#039;&#039;Jgp&#039;&#039; отличным инструментом для обучения &#039;&#039;Gnuplot&#039;&#039; методом проб и ошибок, не набирая слишком много цифр.&lt;br /&gt;
&lt;br /&gt;
====Изучите &#039;&#039;Jgp&#039;&#039; в &#039;&#039;Gnuplot&#039;&#039;====&lt;br /&gt;
&lt;br /&gt;
Большое преимущество &#039;&#039;Jgp&#039;&#039; – то, что его можно изучать по всей доступной онлайн-документации для &#039;&#039;Gnuplot&#039;&#039;. Сперва возьмите любой учебник по &#039;&#039;Gnuplot&#039;&#039; – например, из [[LXF122:Gnuplot|LXF122]]. Посмотрите на картинки и команды &#039;&#039;Gnuplot&#039;&#039;, и (если вы не нарвались на одну из неподдерживаемых опций) вы мигом найдете, как сделать то же самое в &#039;&#039;Jgp&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;KAlgebra&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
{{Сравнение&lt;br /&gt;
|кратко=&amp;lt;center&amp;gt;&#039;&#039;&#039;KAlgebra&#039;&#039;&#039;&amp;lt;/center&amp;gt;&lt;br /&gt;
|версия=0.1.0&lt;br /&gt;
|изображение=LXF144_19_1.jpg&lt;br /&gt;
|подпись=Интерфейс &#039;&#039;&#039;2D-графика&#039;&#039;&#039; в &#039;&#039;KAlgebra&#039;&#039; радует своими возможностями отображения нескольких кривых и динамического предпросмотра.&lt;br /&gt;
|сайт=http://edu.kde.org/kalgebra&lt;br /&gt;
|цена=Бес­плат­но по GPL&lt;br /&gt;
|итог=Отличный интерфейс пользователя, но менее гибок в построении графиков, чем &#039;&#039;Grace&#039;&#039; или &#039;&#039;Jpg&#039;&#039;.&lt;br /&gt;
|рейтинг=7&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
: Толковый и дружелюбный репетитор по математике в KDE. &lt;br /&gt;
&lt;br /&gt;
Так же, как &#039;&#039;Jgp&#039;&#039; можно (отчасти) определить как способ состряпать формулы и команды для &#039;&#039;Gnuplot&#039;&#039;, обойдясь без серьезного их изучения, &#039;&#039;KAlgebra&#039;&#039; можно рассматривать как незамысловатый способ изучить и использовать &#039;&#039;MathML&#039;&#039;, язык математической разметки [Mathematical Markup Language] (http://www.w3.org/math).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;KAlgebra&#039;&#039; фокусируется на математике, а не на построении и анализе произвольных данных. Как приложение &#039;&#039;Qt&#039;&#039;/KDE, оно вписывается в любой современный дистрибутив Gnu/Linux гораздо лучше, чем &#039;&#039;Grace&#039;&#039; или, если на то пошло, &#039;&#039;Jgp&#039;&#039;. Знание &#039;&#039;MathML&#039;&#039; или любой из кучи учебников, доступных в Интернет для этого языка, помогут вам стать опытным пользователем &#039;&#039;KAlgebr&#039;&#039;a. Но – цитируем руководство программы: &#039;&#039;«Чтобы использовать Kalgebra, MathML знать не надо»&#039;&#039;. Вы можете определять функции почти так же, как и при записи их на бумаге.&lt;br /&gt;
&lt;br /&gt;
Кроме того, одна из сильных сторон &#039;&#039;KAlgebra&#039;&#039; – обширная и дружелюбная документация. Меню &#039;&#039;&#039;Справка&#039;&#039;&#039; содержит ссылки на простое и достаточно полное руководство, а вкладка &#039;&#039;&#039;Словарь&#039;&#039;&#039; в главном окне содержит список поиска всех алгебраических и логических операторов &#039;&#039;MathML&#039;&#039;, поддерживаемых в &#039;&#039;KAlgebra&#039;&#039;. Каждый оператор снабжен описанием, списком параметров, названием в &#039;&#039;KAlgebra&#039;&#039; и примером построенного графика.&lt;br /&gt;
&lt;br /&gt;
====Вычисления====&lt;br /&gt;
&lt;br /&gt;
Главное меню &#039;&#039;KAlgebra&#039;&#039; и остаток его окна имеют почти одинаковую структуру, в том смысле, что в них есть &#039;&#039;&#039;Консоль, 2D-график&#039;&#039;&#039; и &#039;&#039;&#039;3D-график&#039;&#039;&#039; как основные компоненты. Вкладки и пункты верхнего меню связаны интуитивным, почти самодокументируемым способом.&lt;br /&gt;
&lt;br /&gt;
Панели, связанные с каждой вкладкой - это те места, где вы все делаете и видите результат. Выпадающее меню дает доступ к действиям, выполняемым на вкладке с тем же именем. В &#039;&#039;&#039;Консоли&#039;&#039;&#039;, например, можно настроить &#039;&#039;KAlgebra&#039;&#039;, дать обычные команды или просто выполнить некоторые расчеты. В последнем варианте вы можете задать переменные, изменять их значения в любой момент, дважды щелкнув на них, и повторно использовать результат предыдущего расчета, потому что он всегда сохраняется в специальной переменной с именем &#039;&#039;&#039;ans&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
От всего этого было бы мало проку, если бы оно терялось при закрытии &#039;&#039;KAlgebra&#039;&#039;, но не бойтесь! Все, что вы набирали, можно сохранить в виде скрипта или загрузить файл скрипта и выполнить все команды из предыдущей сессии, не вводя их заново. Эти файлы сделаны из простого текста, так же, как и скрипты оболочки. Функция &#039;&#039;&#039;Export-Log&#039;&#039;&#039; в меню &#039;&#039;&#039;Консоль&#039;&#039;&#039; сохраняет ваш ввод как HTML-страницу, готовую для печати или публикации в Интернет.&lt;br /&gt;
&lt;br /&gt;
О расчетах довольно; давайте нарисуем что-нибудь. На изображении совмещены два окна &#039;&#039;KAlgebra&#039;&#039;, чтобы дать вам представление о возможностях 2D-графики. Настоящий график изображен в левой части закладки; здесь можно его увеличить, уменьшить и отобразить касательные при перемещении мыши над кривыми. Правая панель состоит из четырех вкладок. Чтобы увидеть что-нибудь, начните со вкладки под названием &#039;&#039;&#039;Добавить&#039;&#039;&#039;: введите вашу функцию в верхнее поле, выберите ей цвет и наслаждайтесь динамическим просмотром.&lt;br /&gt;
&lt;br /&gt;
Закончив, нажмите кнопку &#039;&#039;&#039;ОК&#039;&#039;&#039;, и функции нарисуются в основной части. Повторяйте это, пока не добавите все функции, которые вы хотите увидеть на одном графике, задавая каждой из них свой цвет. Все активные функции и переменные перечислены в двух отдельных вкладках. Последняя вкладка, &#039;&#039;&#039;Viewport&#039;&#039;&#039;, служит для ввода координат области, которая должна быть видна в основном графике.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3D-часть&#039;&#039;&#039; проще, чем &#039;&#039;&#039;2D&#039;&#039;&#039;, потому что &#039;&#039;KAlgebra&#039;&#039; сейчас поддерживает только 3D-функции в форме &#039;&#039;Z = F (х, у)&#039;&#039;. В этих пределах, использовать ее – одно удовольствие. Нарисовав свои функции, вы можете не только увеличить их, но и плавно развернуть, с помощью клавиш со стрелками. Все графики можно сохранить в формате PNG, но на них нельзя добавлять подписи и другие объекты, как это позволяет &#039;&#039;Grace&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;KmPlot&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
{{Сравнение&lt;br /&gt;
|кратко=&amp;lt;center&amp;gt;&#039;&#039;&#039;KmPlot&#039;&#039;&#039;&amp;lt;/center&amp;gt;&lt;br /&gt;
|версия=1.2.1&lt;br /&gt;
|изображение=LXF144_20_1.jpg&lt;br /&gt;
|подпись=Когда вам приспичит узнать области или точки минимума функции, просто спросите &#039;&#039;KmPlot&#039;&#039; &lt;br /&gt;
|сайт=http://edu.kde.org/kmplot&lt;br /&gt;
|цена=Бес­плат­но по GPL&lt;br /&gt;
|итог=&#039;&#039;KmPlot&#039;&#039; в общем ограничен по возможностям, но то, что он делает, он делает хорошо.&lt;br /&gt;
|рейтинг=7&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
: Кузен &#039;&#039;KAlgebra&#039;&#039;, специализирующийся на математическом анализе.&lt;br /&gt;
&lt;br /&gt;
На первый взгляд &#039;&#039;KmPlot&#039;&#039; напоминает &#039;&#039;KAlgebra&#039;&#039; – оба являются KDE-приложениями. Еще их объединяет то, что &#039;&#039;KmPlot&#039;&#039; – продвинутый графический калькулятор, и в нем нельзя загрузить и графически отобразить числовые данные.&lt;br /&gt;
&lt;br /&gt;
На этом сходство и заканчивается, потомучто главная цель &#039;&#039;KmPlot&#039;&#039; немного иная. &#039;&#039;KmPlot&#039;&#039; не рисует 3D-графиков, но поддерживает декартовы, полярные, параметрические, неявные и дифференциальные функции. Координаты указаны в традиционном декартовом, линейном формате или, если вы выберите &#039;&#039;&#039;Вид &amp;gt; Встроить виджет&#039;&#039;&#039; в тригонометрические функции, как кратные числу «пи». Щелчок левой кнопки мыши в области рисования отобразит нормаль и касательную к выбранной точке кривой. В выпадающем меню &#039;&#039;&#039;Инструменты&#039;&#039;&#039; можно запустить довольно сложный калькулятор и редактор математических выражений.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;KmPlot&#039;&#039; – простой в использовании инструмент, когда нужно вычислять интегралы, производные, минимум и максимум функции. Другой козырь &#039;&#039;KmPlot&#039;&#039; – исследование параметрических функций. До четырех параметров можно связать с ползунками и перемещать ползунки, любуясь изменениями построенной функции; но это еще не все. Меню, раскрывающееся по щелчку правой кнопки мыши, откры-&lt;br /&gt;
вает доступ к панели &#039;&#039;&#039;Анимация&#039;&#039;&#039;, где можно задать минимальное и максимальное значения параметра и шаг его приращения и отобразить в &#039;&#039;KmPlot&#039;&#039; последовательность всех версий графика, соответствующих каждому значению параметра, то есть семейство функций.&lt;br /&gt;
&lt;br /&gt;
Команды и функции, используемые в любой сессии &#039;&#039;KmPlot&#039;&#039;, можно сохранять как текстовые файлы в XML-подобном формате.&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;Kayali&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
{{Сравнение&lt;br /&gt;
|кратко=&amp;lt;center&amp;gt;&#039;&#039;&#039;Kayali&#039;&#039;&#039;&amp;lt;/center&amp;gt;&lt;br /&gt;
|версия=0.3.2&lt;br /&gt;
|изображение=LXF144_20_2.jpg&lt;br /&gt;
|подпись=Как описать &#039;&#039;Kayali&#039;&#039; одной фразой? Спартанские графики, красивые формулы и решение уравнений.&lt;br /&gt;
|сайт=http://kayali.sourceforge.net&lt;br /&gt;
|цена=Бес­плат­но по GPL&lt;br /&gt;
|итог=Многообещающий интерфейс к &#039;&#039;Maxima&#039;&#039;; низкая оценка только из-за альфа-стадии разработки.&lt;br /&gt;
|рейтинг=5&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
: Звездный час этой программы еще не настал, но присмотреться к ней стоит.&lt;br /&gt;
&lt;br /&gt;
В отличие от прочих приложений &#039;&#039;&#039;Сравнения&#039;&#039;&#039;, &#039;&#039;Kayali&#039;&#039; пока в альфастадии развития – и это бросается в глаза. Причина включения &#039;&#039;Kayali&#039;&#039; в &#039;&#039;&#039;Сравнение&#039;&#039;&#039; в том, что это перспективный и интересный инструментик, дополняющий то, что делают все другие. &#039;&#039;Kayali&#039;&#039; также легко установить и запустить на тест-драйв.&lt;br /&gt;
&lt;br /&gt;
Основная цель &#039;&#039;Kayali&#039;&#039; – интегрирование или дифференцирование математических выражений и их построение через &#039;&#039;Gnuplot&#039;&#039;. Исполняемый файл с именем &#039;&#039;&#039;kayali&#039;&#039;&#039; (приложение &#039;&#039;Python&#039;&#039; с графическим интерфейсом на &#039;&#039;Qt&#039;&#039;) – всего лишь посредник. Одной из причин, почему &#039;&#039;Kayali&#039;&#039; достоин внимания – применяемый здесь движок для вычислений: это популярная и мощная система компьютерной алгебры &#039;&#039;Maxima&#039;&#039; (http:/ /maxima.sourceforge.net). Сейчас &#039;&#039;Kayali&#039;&#039; понимает почти все операции, которые делает &#039;&#039;Maxima&#039;&#039;, но передать в &#039;&#039;Gnuplot&#039;&#039; для построения можно только их часть (свежий список см. на сайте).&lt;br /&gt;
&lt;br /&gt;
Интерфейс настолько прост, насколько это вообще возможно при вычислении интегралов и решении дифференциальных уравнений. Сначала напишите математическое выражение в текстовом поле вверху экрана и нажмите &#039;&#039;&#039;Ввод&#039;&#039;&#039;. Оно появится, красиво отформатированнное, во вкладке под названием &#039;&#039;&#039;Тетрадь&#039;&#039;&#039;, содержание которой можно сохранить в формате PDF. Затем правой кнопкой мыши нажмите на отформатированное выражение в &#039;&#039;&#039;Тетради&#039;&#039;&#039;, чтобы открыть всплывающее меню с тремя основными функциями &#039;&#039;Kayali&#039;&#039;: &#039;&#039;&#039;Интегрирование, Дифференцирование&#039;&#039;&#039; и &#039;&#039;&#039;График&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Первые два генерируют интеграл или производную от того, что вы ввели. При выборе третьего &#039;&#039;Kayali&#039;&#039; открывает новую вкладку под названием &#039;&#039;&#039;График&#039;&#039;&#039;. Но график появляется не там. На самом деле &#039;&#039;Kayali&#039;&#039; отображает его в отдельном окне, которое является терминалом &#039;&#039;wxWidgets&#039;&#039; из &#039;&#039;Gnuplot&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Вердикт===&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Jgnuplot&#039;&#039; 8/10&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Мы должны признаться, что нашим первым рефлексом было сказать, что победитель данного &#039;&#039;&#039;Сравнения&#039;&#039;&#039; – свободное ПО как таковое, или, более точно, богатая экосистема, которую оно образует, давая всем пользователям шанс создать нечто действительно&lt;br /&gt;
отвечающее их нуждам.&lt;br /&gt;
&lt;br /&gt;
В этом &#039;&#039;&#039;Сравнении&#039;&#039;&#039; нам было сложнее выбрать победителя, чем в предыдущих. Конкурирующиее приложения принадлежат к общей категории «программ, преобразующих числа и/или функции в рисунки». На этом, однако, их сходство практически заканчивается: они настолько разнообразны, что сравнивать их трудно, поскольку каждое имеет свою направленность. &#039;&#039;Kayali&#039;&#039; развито хуже других, и его следует снять с дистанции, но выбрать из оставшихся непросто. Возможно даже, что каждая из четырех других программ станет лучшей на определенном этапе вашей жизни, поэтому они все победители.&lt;br /&gt;
&lt;br /&gt;
Вероятно, правильно будет изучать математику с &#039;&#039;KAlgebra&#039;&#039; и &#039;&#039;KmPlot&#039;&#039; (с первым – по программе средней школы, а со вторым – на университетском курсе), а затем строить графики в &#039;&#039;Jgnuplot&#039;&#039;, если только вы не занимаетесь статистикой серьезно: в этом случае стоит предпочесть &#039;&#039;Grace&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
А коли победитель только один, остановимся на &#039;&#039;Jgnuplot&#039;&#039;. Во-первых, по причине гибкости: можно обрабатывать и файлы данных, и функции. Во-вторых, потому, что работа в &#039;&#039;Jgnuplot&#039;&#039; не так страшна для начинающих, как в &#039;&#039;Grace&#039;&#039;. Третья, и может быть, самая важная причина – интеграция со скриптами. &#039;&#039;Jgnuplot&#039;&#039; производит команды &#039;&#039;Gnuplot&#039;&#039;, пригодные для повторного применения в других используемых вами приложениях, даже автоматически.&lt;br /&gt;
&lt;br /&gt;
Когда дело доходит до серьезных вычислений, однако, &#039;&#039;Jgnuplot&#039;&#039; – не ответ. Он даже не пытается решать уравнения или делать всякие штуки типа анимации; а альтернативные приложения такое умеют. Тем не менее, это эффективное решение, если надо всего лишь построить график, и предлагает множество хороших способов, независимо от того, откуда берутся числа. Перейдите на http://www.gnuplot.info/screenshots или на любую другую галерею &#039;&#039;Gnuplot&#039;&#039;: почти все, что вы видите, можно сделать в &#039;&#039;Jgnuplot&#039;&#039;, не мучаясь с командной строкой.&lt;br /&gt;
&lt;br /&gt;
===Изучим цифры===&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable border=1 cellpadding=5|&lt;br /&gt;
! Название&lt;br /&gt;
! Инструментарий&lt;br /&gt;
! Размер пакета&lt;br /&gt;
! Среднее потребление памяти&lt;br /&gt;
! Настраиваемость&lt;br /&gt;
|-&lt;br /&gt;
| Grace&lt;br /&gt;
| Motif&lt;br /&gt;
| 4,8 МБ&lt;br /&gt;
| 3,9 МБ&lt;br /&gt;
| Высокая&lt;br /&gt;
|-&lt;br /&gt;
| Jgnuplot&lt;br /&gt;
| Java&lt;br /&gt;
| 222 КБ&lt;br /&gt;
| 3,3 МБ&lt;br /&gt;
| Высокая&lt;br /&gt;
|-&lt;br /&gt;
| KAlgebra&lt;br /&gt;
| Qt/KDE&lt;br /&gt;
| 8,6 МБ&lt;br /&gt;
| 30 МБ&lt;br /&gt;
| Высокая&lt;br /&gt;
|-&lt;br /&gt;
| KmPlot&lt;br /&gt;
| Qt/KDE&lt;br /&gt;
| 8,6 МБ&lt;br /&gt;
| 15 МБ&lt;br /&gt;
| Средняя&lt;br /&gt;
|-&lt;br /&gt;
| Kayali&lt;br /&gt;
| Qt&lt;br /&gt;
| 568 КБ&lt;br /&gt;
| 20 МБ&lt;br /&gt;
| Низкая&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Примечание&#039;&#039;&#039;: приведенные размеры пакетов и статистика использования памяти приблизительны. Размер пакета и потребление памяти варьируется от системы к системе и сильно зависит от конфигурации программы, выполняемых задач и многих других факторов. Например, &#039;&#039;KmPlot&#039;&#039; и &#039;&#039;KAlgebra&#039;&#039; оба поставляются внутри пакета &#039;&#039;&#039;KdeEdu-math&#039;&#039;&#039;, потребление памяти &#039;&#039;Jgnuplot&#039;&#039; зависит от интерпретатора &#039;&#039;Java&#039;&#039;, и несколько программ также используют &#039;&#039;Maxima&#039;&#039; и/или &#039;&#039;Gnuplot&#039;&#039;. Все программы доступны под GPL или другими открытыми лицензиями.&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_93_6.jpg&amp;diff=14496</id>
		<title>Файл:LXF144 93 6.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_93_6.jpg&amp;diff=14496"/>
		<updated>2012-12-07T07:05:05Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_93_5.jpg&amp;diff=14495</id>
		<title>Файл:LXF144 93 5.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_93_5.jpg&amp;diff=14495"/>
		<updated>2012-12-07T07:04:55Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_93_4.jpg&amp;diff=14494</id>
		<title>Файл:LXF144 93 4.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_93_4.jpg&amp;diff=14494"/>
		<updated>2012-12-07T07:04:39Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_93_3.jpg&amp;diff=14493</id>
		<title>Файл:LXF144 93 3.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_93_3.jpg&amp;diff=14493"/>
		<updated>2012-12-07T07:04:28Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_93_2.jpg&amp;diff=14492</id>
		<title>Файл:LXF144 93 2.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_93_2.jpg&amp;diff=14492"/>
		<updated>2012-12-07T07:04:18Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_93_1.jpg&amp;diff=14491</id>
		<title>Файл:LXF144 93 1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_93_1.jpg&amp;diff=14491"/>
		<updated>2012-12-07T07:04:07Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=LXF144:%D0%9E%D1%82%D0%B2%D0%B5%D1%82%D1%8B&amp;diff=14490</id>
		<title>LXF144:Ответы</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=LXF144:%D0%9E%D1%82%D0%B2%D0%B5%D1%82%D1%8B&amp;diff=14490"/>
		<updated>2012-12-07T07:01:46Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: /* Шаг за шагом: Трансляция Blu-Ray через &amp;#039;&amp;#039;MakeMKV&amp;#039;&amp;#039; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория:Ответы]]&lt;br /&gt;
==Ответы==&lt;br /&gt;
&lt;br /&gt;
: Пишите нам по адресу [mailto:answers@linuxformat.ru answers@linuxformat.ru] или спрашивайте на форуме: http://www.linuxformat.ru Мы найдем ответы на любой вопрос — от проблем с установкой системы или модемом до сетевого администрирования; главное — спросить!&lt;br /&gt;
&lt;br /&gt;
===1 Странное поведение===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;В&#039;&#039; Сейчас у меня LinuxMint 10 с DVD от LXF140. Весьма нетипично для Linux, в этом дистрибутиве мой экран виснет как минимум раз в сеанс. Сообщений об ошибках я не получаю, и ничего особенного не наблюдается: просто все зависает, и приходится перезагружаться.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;При открытии версии &#039;&#039;KMail&#039;&#039;, установленной через центр программ Mint 10, появляется диалоговое окно с результатами различных тестов, и более 99 % прошли успешно. Но если не исправить хотя бы одну из указанных ошибок, при попытке закрыть это окно или сохранить копию отчета закрываются и окно, и &#039;&#039;KMail&#039;&#039;. Вот сообщение:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 “Akonadi Server Self-Test Report: Test 12: ERROR&lt;br /&gt;
 Nepomuk search service not registered at D-Bus.&lt;br /&gt;
 Details: The Nepomuk search service is not registered at D-Bus&lt;br /&gt;
 which typically means it was not started or encountered a fatal error&lt;br /&gt;
 during startup.”&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Майкл Годдард [Michael Goddard]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;О&#039;&#039;&#039; Зависание может быть обусловлено аппаратной проблемой. Есть смысл запустить на всю ночь программу &#039;&#039;memtest&#039;&#039;, которая есть на большинстве Linux Live CD, чтобы выполнить тщательное тестирование памяти. Далее, вместо нажатия кнопки &#039;&#039;&#039;Reset&#039;&#039;&#039; или питания, попробуйте воспользоваться более дружелюбной к системе возможностью, известной как «магическая клавиша SysRq» [‘magic SysRq key’]. Нажмите комбинацию клавиш &#039;&#039;&#039;Alt+SysRq&#039;&#039;&#039; и, удерживая их в этом положении, последовательно нажмите клавиши &#039;&#039;&#039;R, E, I, S, U&#039;&#039;&#039; и &#039;&#039;&#039;B&#039;&#039;&#039;. Работа всех процессов завершится, все Ваши диски синхронизируются и отмонтируются, и система перезагрузится. Это не только позволит избежать повреждений файловой системы, но и сбросит на диск содержимое буферов, повысив шансы на получение отчета о проблеме в системном журнале, обычно в &#039;&#039;&#039;/var/log/messages&#039;&#039;&#039;. Есть несколько абсурдных сокращений, упрощающих запоминание этих букв; я предпочитаю вариант &#039;&#039;Reboot Even If System Utterly Broken&#039;&#039; [перезагрузиться, даже если система непоправимо поломана], но, возможно, проще будет запомнить их в обратном порядке (тогда получится слово &#039;&#039;&#039;BUSIER&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Akonadi&#039;&#039; и &#039;&#039;Nepomuk&#039;&#039; – часть т.н. «семантического рабочего стола» KDE [semantic desktop], причем &#039;&#039;Akonadi&#039;&#039; используется для хранения данных системы управления личной информацией (personal information management, PIM) – например, Вашей адресной книгой. Отсюда его важность для &#039;&#039;KMail&#039;&#039;. Сообщение об ошибке указывает, что сервер не запускается по одной из двух возможных причин: либо попыток запуска не предпринимается, либо при запуске происходит ошибка. Вы не сообщили, пользуетесь ли Вы KDE или пытаетесь применять &#039;&#039;KMail&#039;&#039; в Gnome - рабочем столе Mint по умолчанию. В последнем  случае попробуйте зарегистрироваться в KDE и проверить, не исправит ли это ситуацию. Если проблема будет исправлена, Вы можете гарантировать работу сервера &#039;&#039;Akonadi&#039;&#039;, добавив его в раздел &#039;&#039;&#039;Startup Applications&#039;&#039;&#039; в &#039;&#039;&#039;Control Centre&#039;&#039;&#039; командой:&lt;br /&gt;
&lt;br /&gt;
 akonadictl start&lt;br /&gt;
&lt;br /&gt;
Как вариант, можно воспользоваться &#039;&#039;kdeinit4&#039;&#039;, чтобы запустить все сервисы KDE, хотя для Ваших потребностей это может быть избыточным.&lt;br /&gt;
&lt;br /&gt;
Неудача при запуске &#039;&#039;Akonadi&#039;&#039; может быть вызвана проблемой с конфигурацией, и в этом случае Вы можете сбросить все настройки к значениям по умолчанию, удалив или переименовав конфигурационные каталоги: &#039;&#039;&#039;~/.config/akonadi&#039;&#039;&#039; и &#039;&#039;&#039;~/.local/share/akonadi&#039;&#039;&#039;. &#039;&#039;&#039;ГМ&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===2 Утраченный root===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;В&#039;&#039; Обычно я ничего не устанавливаю с ваших дисков, кроме дистрибутивов. В этом месяце я взялся за установку программ и потерпел неудачу. Я обратил внимание, что в Ubuntu 10.10, Linux Mint 10, а теперь и в Debian Squeeze нет пользователя root: мне так и не удалось уломать их сделать меня root. Как правило, я пользуюсь командой &#039;&#039;su&#039;&#039;, а затем ввожу пароль root.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Иногда я регистрируюсь как root, чтобы выполнить некоторые вещи, которые в OpenSUSE обременительно выполнять с помощью &#039;&#039;su&#039;&#039;. Сейчас мое имя пользователя дает мне административные права, которые мне не нужны. Однако на диске доступно только &#039;&#039;index.html&#039;&#039;. Владельцем является root, а зарегистрироваться как root невозможно, и я в тупике. Пожалуйста, расскажите, как получить доступ к файлам и, в идеале, как зарегистрироваться от имени root.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Клайв Ширсби [Clive Shearsby]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;О&#039;&#039;&#039; В работе Ubuntu с доступом от имени root до сих пор имеется путаница. Учетная запись root существует, иначе Вы не могли бы выполнить ничего требующего полномочий root. Взглянув на первую строку файла &#039;&#039;&#039;/etc/passwd&#039;&#039;&#039;, Вы увидите, что запись там определена. Но по умолчанию в Ubuntu отсутствует возможность зарегистрироваться в системе как пользователь root. Это не дает Вашей учетной записи пользователя административных прав автоматически – Вы все равно должны ввести пароль. Гораздо лучший контроль над доступом от имени root предоставляет &#039;&#039;sudo&#039;&#039;; и, на мой взгляд пользователя другого дистрибутива (не Ubuntu), этот подход лучше, чем метод грубой силы, используемый &#039;&#039;su&#039;&#039; (см. &#039;&#039;&#039;Часто задаваемые вопросы&#039;&#039;&#039;, где о &#039;&#039;su&#039;&#039; рассказано подробнее).&lt;br /&gt;
&lt;br /&gt;
Запуск терминала от имени root делается одной из следующих команд:&lt;br /&gt;
&lt;br /&gt;
 sudo -i&lt;br /&gt;
&lt;br /&gt;
или&lt;br /&gt;
&lt;br /&gt;
 sudo bash&lt;br /&gt;
&lt;br /&gt;
Первая запускает интерактивный сеанс &#039;&#039;sudo&#039;&#039;, и Вы сможете вводить команды, которые требуют прав root. Вторая запускает от имени root оболочку &#039;&#039;Bash&#039;&#039;, предоставляя вам сеанс оболочки с правами root. С такими возможностями Вам не понадобится применять &#039;&#039;su&#039;&#039;. Если это все-таки нужно, решение будет очень простым. Введите команду, задающую новый пароль для пользователя root:&lt;br /&gt;
&lt;br /&gt;
 sudo passwd root&lt;br /&gt;
&lt;br /&gt;
Вам могут предложить сначала ввести Ваш пароль, в зависимости от того, используете ли Вы &#039;&#039;sudo&#039;&#039; в той же самой оболочке и прошло ли уже пять минут с ее последнего использования, а затем – дважды ввести новый пароль пользователя root. После этого Вы сможете применить команду &#039;&#039;su&#039;&#039; для регистрации от имени root с новым паролем. Но я все же рекомендовал бы продолжать пользоваться &#039;&#039;sudo&#039;&#039;, поскольку это безопаснее и станет Вашей «второй натурой» очень скоро.&lt;br /&gt;
&lt;br /&gt;
Ваш экранный снимок дошел до нас в не слишком читаемом виде, но описанная Вами ситуация выглядит весьма странной. Инструменты автомонтирования Gnome и KDE монтируют съемные устройства с правами владельца для пользователя, запустившего рабочий стол; DVD может принадлежать root, только если Вы примонтировали его из терминального сеанса с помощью &#039;&#039;sudo&#039;&#039;. Даже если так и было, файлы все равно должны быть читаемыми – и даже если права на них принадлежат root, обычному пользователю чтение все равно разрешено. С проблемой Вы можете столкнуться только при попытке установить нечто требующее записи в исходный каталог. Тогда скопируйте этот каталог с DVD на Ваш жесткий диск и выполните установку оттуда. &#039;&#039;&#039;НБ&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===3 Команда Ping===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;В&#039;&#039; Я кое-что обнаружил — не так чтоб очень критичное, но ответ получить хотелось бы. Я подключен к сети, но не могу отправлять команду &#039;&#039;ping&#039;&#039; на сайты или локальные машины из приложения &#039;&#039;Network Tools&#039;&#039;, хотя из терминала она работает.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;В &#039;&#039;System &amp;gt; Admin &amp;gt; Network Tools&#039;&#039; сетевое устройство показано как карта &#039;&#039;Ethernet eth0&#039;&#039;, и при просмотре сайтов показатель &#039;&#039;Received Bytes&#039;&#039; возрастает. Подключение у меня явно есть — я вижу сайты в &#039;&#039;Firefox&#039;&#039; и &#039;&#039;Chrome&#039;&#039;. Но на вкладке &#039;&#039;Ping&#039;&#039; в &#039;&#039;Network Tools&#039;&#039; я не могу отправить команду на сайт или один из локальных компьютеров в моей сети. Раньше я такое мог, и, насколько я помню, настроек с тех пор не менял.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Дэвид Райт [David Wright]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;О&#039;&#039;&#039; Это похоже на ошибку текущей версии &#039;&#039;gnome-nettool&#039;&#039;, влияющую также и на другие дистрибутивы; она не специфична для Ubuntu. По какой-то причине GUI выполняет не ту команду. Например, команда отправки &#039;&#039;ping&#039;&#039; на сервер Google выглядит так:&lt;br /&gt;
&lt;br /&gt;
 /bin/ping -b -c 5 www.google.com&lt;br /&gt;
&lt;br /&gt;
Из терминала это работает, как и в том случае, если скомандовать &#039;&#039;ping&#039;&#039;, не указав полного пути. Но на самом деле GUI пытается выполнить вот что:&lt;br /&gt;
&lt;br /&gt;
 /bin/ping ping -b -c 5 www.google.com&lt;br /&gt;
&lt;br /&gt;
Иначе говоря, используется &#039;&#039;/bin/ping&#039;&#039; и &#039;&#039;ping&#039;&#039;, вместо одной из них. В результате команда &#039;&#039;/bin/ping&#039;&#039; пытается разрешить первый элемент, не являющийся аргументом командной строки, как имя хоста, а это – команда &#039;&#039;ping&#039;&#039;. Запустив эту команду из терминала, Вы в подробностях увидите, как и почему ее выполнение заканчивается неудачей. Но &#039;&#039;gnome-nettool&#039;&#039; замечает только отсутствие ответов на команду &#039;&#039;ping&#039;&#039; в стандартном выводе и не сообщает ничего – сообщение о неизвестном хосте, которое Вы видите в терминальном сеансе, отправляется в стандартный поток ошибок (stderr). Вы также можете выяснить, что происходит, если запустите &#039;&#039;gnome-nettool&#039;&#039; из терминала и попробуете дать команду &#039;&#039;ping&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Почему пропущена и до сих пор не исправлена столь вопиющая ошибка – из области предположений. Возможно, эту функцию программы используют лишь немногие. Но для разработчиков исправление ее тривиально. Как вариант, Вы можете исправить ошибку сами, скачав, модифицировав и перекомпилировав исходный код; или просто в шестнадцатеричном редакторе забейте пробелами лишнюю строку &#039;&#039;ping&#039;&#039;. &#039;&#039;&#039;ПХ&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===4 KDE заполняет tmp===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;В&#039;&#039; Я недавно обновил свой рабочий стол до Kubuntu 10.04.1, с ISO-файла на рабочем столе. Вскорости (где-то через несколько рабочих дней) появляется следующее сообщение: &#039;&#039;&#039;‘The process for the file protocol died unexpectedly’&#039;&#039;&#039;. Детальная информация — значки и все остальное — тоже исчезает с экранов &#039;&#039;Dolphin&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Видимо, проблема связана с пространством в &#039;&#039;&#039;&#039;&#039;tmp&#039;&#039;&#039;&#039;&#039;. Я обнаружил, что подкаталог &#039;&#039;&#039;&#039;&#039;kde-root&#039;&#039;&#039;&#039;&#039; в &#039;&#039;&#039;&#039;&#039;/tmp&#039;&#039;&#039;&#039;&#039; имеет размер около 8,5 ГБ и содержит очень много файлов с именами типа &#039;&#039;&#039;&#039;&#039;kconf_updateXXnnnn.tmp&#039;&#039;&#039;&#039;&#039;, где XX — подстроки вида SL, XL или MT. Похоже, что они добавляются туда примерно по файлу в 10 секунд. Если этот каталог удалить, то проблема временно решается — но только до следующего раза, а потом все повторяется. Можете ли вы объяснить, что происходит и как исправить проблему радикально — я имею в виду, может, ее создает какой-то (левый?) процесс?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Дэйв Коулсток [Dave Coulstock]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;О&#039;&#039;&#039; &#039;&#039;Kconf_update&#039;&#039; – это процесс KDE, обновляющий файлы. Чтобы не заставлять все программы читать старую и новую версии формата файла настройки при каждом его изменении, программа просто сбрасывает небольшой файл в каталог &#039;&#039;&#039;.kde4/share/apps/kconf_update&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Kconf_update&#039;&#039; замечает появление этого файла и использует информацию из него, чтобы переписать файл настройки программы в новом формате. Каждый файл обновления запускается только один раз для каждого пользователя, так что проблема, с которой Вы столкнулись, по всей видимости, вызвана повторным запуском этих файлов. Подозреваю, что обновление завершается неудачей, поэтому временные файлы не удаляются, а &#039;&#039;kconf_update&#039;&#039; не помечает их как отработавшие и продолжает пытаться запустить их снова.&lt;br /&gt;
&lt;br /&gt;
Подсказки про источник этой проблемы можно найти в файле журнала &#039;&#039;kconf_update&#039;&#039; – он хранится в &#039;&#039;&#039;~/.kde4/share/apps/kconf_update/log/update.log&#039;&#039;&#039;. Поскольку временные файлы находятся в каталоге &#039;&#039;&#039;kde-root&#039;&#039;&#039;, это – программа, запускаемая от имени root (или через &#039;&#039;sudo&#039;&#039;), поэтому ключ к решению ищите в файле &#039;&#039;&#039;/root/.kde4/share/apps/kconf_update/log/update.log&#039;&#039;&#039;. Сообщения об ошибках должны указывать имя программы и конкретный файл; файлы данных &#039;&#039;kconf_update&#039;&#039; заканчиваются строкой &#039;&#039;&#039;UPD&#039;&#039;&#039; и обычно хранятся в &#039;&#039;&#039;/usr/share/apps/kconf_update&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Вы можете удалить файл, прекратив хроническое создание временных файлов, но в итоге Ваши файлы настройки могут прийти в противоречивое состояние. Альтернатива – узнав, какой именно файл создает проблему, поискать в Web отчеты об этой конкретной проблеме; вероятно, найдутся даже готовые решения. Так как Ваша версия KDE довольно старая, вполне возможно, что проблема уже решена, и обновление избавит Вас от нее. Когда Вы идентифицируете проблемную программу, Ваши поиски в Web помогут Вам найти лучший способ действий. &#039;&#039;&#039;МС&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===5 Горести &#039;&#039;Wine&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;В&#039;&#039; Я уже устанавливал и тестировал &#039;&#039;Wine&#039;&#039;, но мне ни разу не удалось запустить никакую Windows-программу, кроме &#039;&#039;Notepad&#039;&#039;. Теперь я работаю с Ubuntu 10.04, и при попытках пользоваться &#039;&#039;Kindle for PC&#039;&#039; или &#039;&#039;Internet Explorer&#039;&#039; результат оказывается нулевым — в смысле, nada, niets, nichts, rien, шиш. &#039;&#039;Wine&#039;&#039; запускается и тут же стопорит. После стольких лет я начинаю думать, что все это надувательство. Или я не нашел некой «секретной кнопки»?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Йохан Николаас Хербшлеб [Johan Nicolaas Herbschleb]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;О&#039;&#039;&#039; Чудес &#039;&#039;Wine&#039;&#039; не сотворяет: чтобы работать с разными Windows-приложениями, эта программа должна постоянно развиваться. Значит, следует стремиться запускать новейшую версию, а ее маловероятно найти в репозиториях большинства дистрибутивов. Ubuntu 10.04 и 10.10 используют версию 1.2.1, хотя для скачивания в http://winehq.org доступна версия 1.3.13. Каждый новый релиз поддерживает все больше Windows-приложений, так что Вашим первым шагом должна стать деинстал- ляция штатной версии &#039;&#039;Wine&#039;&#039; Вашего дистрибутива и загрузка пакета для Ubuntu с http://www.winehq.org/download.&lt;br /&gt;
&lt;br /&gt;
Часто это помогает, но мантра «новейшее – всегда самое лучшее» не всегда применима к Windows-приложениям, которые Вы пытаетесь установить. Откат к более старым релизам нередко означает получение совместимости с &#039;&#039;Wine&#039;&#039;. Например, мой &#039;&#039;Kindle for PC&#039;&#039; работает с &#039;&#039;Wine&#039;&#039;, но не в самой свежей версии, хотя все же позволяет делать то, что я хочу. Изменения, внесенные в новейшую версию ПО &#039;&#039;Kindle&#039;&#039;, привели к тому, что пока эта новейшая версия с &#039;&#039;Wine&#039;&#039; не работает.&lt;br /&gt;
&lt;br /&gt;
Более старую версию можно загрузить с адреса http://tinyurl.com/kindle4wine или поискать в Web по ключевым словам &#039;&#039;&#039;‘wine’&#039;&#039;&#039; и &#039;&#039;&#039;‘kindle’&#039;&#039;&#039;. Нужный Вам инсталлятор размером 5,2 МБ. Запустите его следующей командой:&lt;br /&gt;
&lt;br /&gt;
 wine KindleForPC-installer.exe&lt;br /&gt;
&lt;br /&gt;
Эта команда установит программу, но пока не запускайте ее: скомандуйте &#039;&#039;winecfg&#039;&#039;, затем перейдите на вкладку &#039;&#039;&#039;Applications&#039;&#039;&#039;, нажмите кнопку &#039;&#039;&#039;Add Application&#039;&#039;&#039; и добавьте программу &#039;&#039;Kindle for PC&#039;&#039;. Затем выберите эту программу и установите опцию версии Windows в &#039;&#039;&#039;Windows 98&#039;&#039;&#039;, что решит некоторые проблемы с визуализацией GUI. Если Вы этого не сделаете, то не сможете видеть поля, куда Вам нужно будет вводить регистрационную информацию при первом запуске программы. Однако это можно сделать вслепую, введя свое входное имя, нажав клавишу &#039;&#039;&#039;Tab&#039;&#039;&#039;, введя пароль и, наконец, нажав клавишу &#039;&#039;&#039;Enter&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Другие программы могут потребовать аналогичных фокусов, но форумы по адресу http://forums.winehq.org плюс помощь Вашего любимого поисковика обычно помогают решить проблему. &#039;&#039;&#039;НБ&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===6 Параллельные скрипты===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;В&#039;&#039; Я хотел бы написать скрипт оболочки, работающий последовательно, пока он не подойдет к точке, когда нужно будет одновременно запустить четыре больших программы, для минимизации их совокупного времени исполнения. После чего я хотел бы продолжать работать по остальным функциям исходного скрипта, и снова в последовательном режиме. &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Прочитав LXF140, я считаю, что я мог бы использовать демона &#039;&#039;&#039;at&#039;&#039;&#039; для размножения процессов, используя что-либо наподобие &#039;&#039;&#039;now + 1 minute&#039;&#039;&#039;. Я бы модифицировал процессы так, чтобы по завершении они отправляли в файл уникальный флаг, а я потом справлялся бы с ним для определения фактически завершенных процессов. Я бы добавил еще проверку, завершились ли они все, и, если еще не все процессы завершили работу, использовал бы команду &#039;&#039;sleep&#039;&#039; с приращениями, скажем, по пять минут, чтобы дождаться завершения всех процессов. Каждый из моих процессов идет часа четыре.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Дик Бочан [Dick Bochan]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;О&#039;&#039;&#039; То, что Вы хотите, можно сделать и проще, не проверяя файлы на модификации постоянно. Ядро предоставляет средства наблюдения за изменениями файла или каталога, а пакет &#039;&#039;inotify-tools&#039;&#039; содержит пользовательское ПО, позволяющее сделать это. Я не стал бы усложнять запуск команд, добавляя &#039;&#039;at&#039;&#039; – просто припишите &#039;&#039;&#039;&amp;amp;&#039;&#039;&#039; к каждой из них, чтобы они шли в фоновом режиме:&lt;br /&gt;
&lt;br /&gt;
 process1 &amp;amp;&lt;br /&gt;
 process2 &amp;amp;&lt;br /&gt;
 …&lt;br /&gt;
&lt;br /&gt;
Если пусковая нагрузка процессов высока, вставьте между ними команды &#039;&#039;sleep&#039;&#039;, чтобы распределить нагрузку между запусками. Если каждый из этих процессов создает при выходе файл, можно использовать &#039;&#039;inotifywait&#039;&#039;, чтобы дождаться создания этих файлов, и циклы ожидания будут не нужны:&lt;br /&gt;
&lt;br /&gt;
 for i in {1..4}; do&lt;br /&gt;
  inotifywait -e CREATE -qq /tmp/myprocess/&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Здесь &#039;&#039;&#039;/tmp/myprocess&#039;&#039;&#039; – каталог, где будут создаваться файлы флагов; символ косой черты на конце велит &#039;&#039;inotifywait&#039;&#039; отслеживать изменения в содержимом каталога, а не самого каталога. &#039;&#039;Inotifywait&#039;&#039; ожидает события создания файла, а затем выходит, и опция &#039;&#039;&#039;-qq&#039;&#039;&#039; подавляет весь вывод. Цикл выполняется четыре раза, так что выход происходит по завершении всех четырех процессов и записи их флаговых файлов, вне зависимости от того, когда это случится. В идеале Ваш скрипт должен обеспечить, чтобы перед началом процессов каталог был пуст.&lt;br /&gt;
&lt;br /&gt;
Чтобы проверить успешность завершения каждого процесса, можно записать код результата в файл статуса и затем проверять каждый из них на успешность перед тем, как продолжить выполнение. Это более эффективный метод, чем циклы &#039;&#039;sleep&#039;&#039; – скрипт просто стоит и ждет, пока ядро не просигналит об изменении в каталоге.&lt;br /&gt;
&lt;br /&gt;
Вы должны иметь право модифицировать отдельные процессы для создания файлов статуса (хотя Вы дали понять, что так оно и есть). В противном случае, можно запускать их так, чтобы файлы создавались при выходе процесса. Строка&lt;br /&gt;
&lt;br /&gt;
 (process1 ; touch /tmp/myprocess/p1) &amp;amp;&lt;br /&gt;
&lt;br /&gt;
запускает команды, перечисленные в скобках, в подоболочке, которая затем отключается через &#039;&#039;&#039;&amp;amp;&#039;&#039;&#039;. После этого команды выполняются последовательно, так что когда завершается &#039;&#039;&#039;process1&#039;&#039;&#039;, &#039;&#039;touch&#039;&#039; создает флаговый файл. Альтернативные версии –&lt;br /&gt;
&lt;br /&gt;
 (process1 &amp;amp;&amp;amp; touch /tmp/myprocess/p1) &amp;amp;&lt;br /&gt;
 (process1 &amp;amp;&amp;amp; touch /tmp/myprocess/p1 || touch /tmp/myprocess/p1failed) &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Первая из них создает файл только при успешном завершении &#039;&#039;&#039;process1&#039;&#039;&#039;, и если один из процессов завершится с ошибкой, Ваш скрипт будет ждать бесконечно. Второй вариант создает другой файл, если &#039;&#039;&#039;process1&#039;&#039;&#039; завершается с ошибкой, что позволяет Вам проверить, завершились ли все процессы успешно, а потом продолжать. &#039;&#039;&#039;ПХ&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===7 Трюки с разделами===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;В&#039;&#039; С машиной моей жены возникла проблема, и я не знаю, как ее исправить. Она решила отказаться от Windows, перейдя на Fedora 14. Раньше на ее машине была система с двойной загрузкой — Windows 2000 и Fedora 8. Я обновил ее до Fedora 14 (естественно, создав сперва резервную копию ее данных), но обнаружил, что на диске много неиспользованного пространства. Вот листинг команды &#039;&#039;fdisk –l&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 Device Boot Start End Blocks Id System&lt;br /&gt;
 /dev/sda1 * 2048 514047 256000 83 Linux&lt;br /&gt;
 /dev/sda2 514048 4708351 2097152 83 Linux&lt;br /&gt;
 /dev/sda3 4708352 6805503 1048576 82 Linux/swap&lt;br /&gt;
 /dev/sda4 52693200 234436544 90871672+ f W95 Ext’d (LBA)&lt;br /&gt;
 /dev/sda5 59006808 234227699 87610446 83 Linux&lt;br /&gt;
 /dev/sda6 52697088 58955775 3129344 83 Linux&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Sda2&#039;&#039; — это каталог &#039;&#039;/, sda5&#039;&#039; — &#039;&#039;/home, sda6&#039;&#039; — &#039;&#039;/var&#039;&#039;. Я хотел бы избавиться от &#039;&#039;/dev/sda4&#039;&#039; и сделать из этого раздела раздел Linux, но так как это расширенный раздел, я не уверен, что не наврежу разделам &#039;&#039;sda5&#039;&#039; и &#039;&#039;6&#039;&#039;. При просмотре через &#039;&#039;GParted&#039;&#039; мне сообщается, что на &#039;&#039;/dev/sda4&#039;&#039; уже есть три главных раздела.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Алан Брей [Alan Bray]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;О Sda4&#039;&#039;&#039; – это действительно расширенный раздел, содержащий два логических раздела, &#039;&#039;&#039;sda5&#039;&#039;&#039; и &#039;&#039;&#039;sda6&#039;&#039;&#039;. Ваше свободное пространство расположено между &#039;&#039;&#039;sda3&#039;&#039;&#039; и &#039;&#039;&#039;sda4&#039;&#039;&#039;. Не там ли раньше размещалась Windows 2000? На этом пространстве нельзя создать новый раздел, потому что у Вас больше нет свободных главных разделов, а &#039;&#039;&#039;sda4&#039;&#039;&#039; нельзя удалить, не разрушив &#039;&#039;&#039;sda5&#039;&#039;&#039; и &#039;&#039;&#039;sda6&#039;&#039;&#039;. Опция переустановки вызывает у меня омерзение, но возможно, что в Вашем случае это будет простейшим вариантом. Поскольку у Вас два диска, и Вы предпочитаете индивидуальную схему разбиения на разделы, предлагаю использовать &#039;&#039;LVM&#039;&#039; – опцию, о которой позаботится установщик Fedora. Тогда Вам понадобятся только два физических раздела: один для &#039;&#039;&#039;/boot&#039;&#039;&#039; и один для физического тома &#039;&#039;LVM&#039;&#039;. Все остальное будет рассматриваться как логические тома внутри &#039;&#039;LVM&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Я всегда даю людям, настраивающим систему &#039;&#039;LVM&#039;&#039;, совет создавать логические тома ровно таких размеров, которые им нужны. &#039;&#039;LVM&#039;&#039; упрощает задачу увеличения размеров тома, и Вы можете создать каждый том с размером, соответствующим Вашим текущим потребностям, а все остальное пространство &#039;&#039;LVM&#039;&#039; оставить неиспользованным. При этом Вы сможете создавать новые тома или увеличивать размеры существующих всего парой щелчков мышью (или запуском пары команд). Вы больше не привязаны к физическому плану разбиения на разделы, поэтому размер каждого тома можно менять независимо от остальных.&lt;br /&gt;
&lt;br /&gt;
Если переустановка в данном случае – не вариант, можно переключиться на использование &#039;&#039;LVM&#039;&#039;, загрузившись с Live CD, удалив &#039;&#039;&#039;/dev/sda3&#039;&#039;&#039; в &#039;&#039;cfdisk&#039;&#039; или &#039;&#039;GParted&#039;&#039; и, наконец, создав новый раздел, заполняющий все пространство между &#039;&#039;&#039;sda2&#039;&#039;&#039; и &#039;&#039;&#039;sda4&#039;&#039;&#039; (примерно 200 ГБ). Пометьте этот раздел как раздел &#039;&#039;LVM&#039;&#039; и инициализируйте его командой&lt;br /&gt;
&lt;br /&gt;
 pvcreate /dev/sda3&lt;br /&gt;
&lt;br /&gt;
Затем создайте группу томов следующей командой:&lt;br /&gt;
&lt;br /&gt;
 vgcreate MyVolGroup /dev/sda3&lt;br /&gt;
&lt;br /&gt;
Вы можете присвоить группе любое имя по своему вкусу – возможно, включив в него имя хоста Вашего компьютера, чтобы сделать его уникальным. После этого создавайте логические тома с помощью следующих команд:&lt;br /&gt;
&lt;br /&gt;
 lvcreate --name var --size 5G MyVolGroup&lt;br /&gt;
 lvcreate --name home --size 15G MyVolGroup&lt;br /&gt;
&lt;br /&gt;
Они выглядят как &#039;&#039;&#039;/dev/MyVolGroup/var&#039;&#039;&#039; и &#039;&#039;&#039;/dev/MyVolGroup/home&#039;&#039;&#039;, и Вы можете создавать файловые системы и примонтировать их точно так же, как и любые другие блочные устройства. Примонтируйте и старые, и новые устройства &#039;&#039;&#039;var&#039;&#039;&#039; и скопируйте содержимое; то же самое проделайте для устройства &#039;&#039;&#039;home&#039;&#039;&#039;. Отредактируйте &#039;&#039;&#039;/etc/fstab&#039;&#039;&#039;, чтобы отразить имена новых устройств, а затем перезагрузитесь.&lt;br /&gt;
&lt;br /&gt;
Когда все это заработает, можете снова загрузиться с Live CD, удалить каталоги с &#039;&#039;&#039;/dev/sda3&#039;&#039;&#039; по &#039;&#039;&#039;/dev/sda6&#039;&#039;&#039; и воссоздать &#039;&#039;&#039;sda3&#039;&#039;&#039;, на этот раз заполнив все пространство. Пометьте его как том &#039;&#039;LVM&#039;&#039;, любым инструментом для управления файловыми системами. Наконец, велите &#039;&#039;LVM&#039;&#039; использовать новый раздел &#039;&#039;sda3&#039;&#039;, командой &lt;br /&gt;
&lt;br /&gt;
 pvresize /dev/sda3&lt;br /&gt;
&lt;br /&gt;
Как и при любой операции, манипулирующей файловыми системами и разделами, не забудьте сначала создать резервную копию данных – но при переустановке Вам так и так понадобится это сделать. &#039;&#039;&#039;ПХ&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===8 Виртуальные диски===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;В&#039;&#039; У меня есть настольный компьютер с двойной загрузкой, имеющий жесткий диск размером 320 ГБ с Windows XP и Linux Mint, причем XP установлена на одном разделе, а Linux — на другом. Они занимают около 200 ГБ дискового пространства, а примерно 100 ГБ у меня свободно. Я загрузил &#039;&#039;VirtualBox&#039;&#039; для Linux, и программа отлично запускается с помощью мастера.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Не объясните ли вы мне, как настроить виртуальную машину на свободном разделе, чтобы не попортить остальных разделов? И чтобы в будущем я мог, при необходимости, быстро от него избавиться, чтобы использовать освободившееся пространство для других целей?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Джон Джексон [John Jackson]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;О&#039;&#039;&#039; &#039;&#039;VirtualBox&#039;&#039;, как и другие эмуляторы, использует виртуальные диски, а не физические разделы. Каждый виртуальный диск для хост-системы – это просто файл, который может храниться где угодно. Вам не нужны отдельные разделы для их хранения, хотя при желании можно поступить и так. Сам я храню образы виртуальных дисков на отдельном разделе, потому что тогда они не крадут про- странство у хост-системы, даже если сверх меры разрастаются.&lt;br /&gt;
&lt;br /&gt;
Обычно размер виртуальных дисков устанавливается динамически. Это значит, что размер файла ровно таков, сколько нужно для хранения содержимого гостевой системы. Например, можно создать четыре виртуальных диска по 50 ГБ на разделе размером 100 ГБ, и они туда поместятся – по крайней мере, пока Вы не начнете их заполнять. Чтобы освободить пространство, занятое виртуальным диском, достаточно удалить файл VDI (Virtual Disk Image).&lt;br /&gt;
&lt;br /&gt;
Поэтому короткий ответ на Ваш вопрос таков: используйте &#039;&#039;GParted&#039;&#039; в Mint, чтобы создать файловую систему на свободных 100 ГБ дискового пространства. Затем, создав виртуальную машину в &#039;&#039;VirtualBox&#039;&#039;, настройте ее так, чтобы она использовала созданный на этом пространстве файл VDI. &#039;&#039;&#039;ГМ&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Большой вопрос. Как просматривать DVD в Linux Mint?===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;В&#039;&#039; Пытаюсь просмотреть диски DVD или Blu-ray на моем HPE-Pavilion 137-c, с Linux Mint 9 KDE, но у меня это не получается. Но почему? Может, это зависит от компьютера? У моего сына установлен дистрибутив Linux Mint 9 KDE на Gateway, и он спокойно смотрит DVD.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Рубен Гонсалес [Ruben Gonzalez]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;О&#039;&#039;&#039; У каждого релиза LinuxMint две версии. Одна предназначена для редистрибуции и не включает опции, легальность которых в ряде стран подвергается сомнению. Сюда относятся и библиотеки, необходимые для просмотра зашифрованных коммерческих DVD.&lt;br /&gt;
&lt;br /&gt;
Но не все потеряно. Установите пакет &#039;&#039;libdvdcss2&#039;&#039;! Сперва доберитесь до репозитория Medibuntu – полные инструкции находятся на странице &#039;&#039;&#039;Howto&#039;&#039;&#039; сайта http://medibuntu.org. После этого установите &#039;&#039;libdvdcss2&#039;&#039; через &#039;&#039;Synaptic&#039;&#039; – и любое Ваше ПО для воспроизведения DVD распознает эту библиотеку и применит ее для их расшифровки.&lt;br /&gt;
&lt;br /&gt;
Иначе обстоят дела с дисками Blu-ray, потому что алгоритмы защиты цифровых авторских прав (DRM) для них гораздо сложнее, чем для DVD. Но и тут есть опция, позволяющая воспроизводить или сдирать их для Linux. Возможно, в Вашей стране это считается незаконным – прежде чем продолжать, проверьте, так ли это. Программа &#039;&#039;MakeMKV&#039;&#039; умеет брать фильмы с диска Blu-ray на жесткий диск, откуда они воспроизводятся в любом медиа-плейере. Как вариант, программа извлечет их прямо в сетевой поток – его можно просматривать с проигрывателя типа &#039;&#039;VLC&#039;&#039;, способного принимать сетевой ввод.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;MakeMKV&#039;&#039; – только условно бесплатное ПО, но пока оно на стадии бета-тестирования и ключевой файл бесплатен; и таким останется до тех пор, пока не выйдет альтернативное ПО на основе открытого кода. Загрузите эту программу с http://www.makemkv.com. Скачать надо два файла: &#039;&#039;&#039;makemkv_vX.Y. Z_bin.tar.gz&#039;&#039;&#039; и &#039;&#039;&#039;makemkv_vX.Y. Z_oss.tar.gz&#039;&#039;&#039;, где &#039;&#039;&#039;X. Y.Z&#039;&#039;&#039; – номер версии. Распакуйте оба файла в терминале и скопируйте их в соответствующие каталоги, начав с исходного пакета:&lt;br /&gt;
&lt;br /&gt;
 tar -xf makemkv_vX.Y.Z_oss.tar.gz&lt;br /&gt;
 cd makemkv_vX.Y.Z_oss&lt;br /&gt;
&lt;br /&gt;
Затем скомпилируйте и установите ПО:&lt;br /&gt;
&lt;br /&gt;
 make -f makefile.linux&lt;br /&gt;
 sudo make -f makefile.linux install&lt;br /&gt;
&lt;br /&gt;
Повторите то же самое для двоичной сборки.&lt;br /&gt;
&lt;br /&gt;
Если возникнут сообщения об отсутствующих командах или пакетах, убедитесь, что у Вас установлены пакеты &#039;&#039;&#039;build-essential, libc6-dev, libssl-dev, libgl1-mesa-dev&#039;&#039;&#039; и &#039;&#039;&#039;libqt4-dev&#039;&#039;&#039;. Сделайте это через менеджер пакетов или командой&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install build-essential libc6-dev libssl-dev libgl1-mesa-dev libqt4-dev&lt;br /&gt;
&lt;br /&gt;
Запустите &#039;&#039;MakeMKV&#039;&#039;, откройте Ваш диск и выберите нужный заголовок и опцию &#039;&#039;&#039;Stream From The File Menu&#039;&#039;&#039;. На вид ничего не произойдет, но потом появится диалоговое окно с сообщением вроде следующего:&lt;br /&gt;
&lt;br /&gt;
 Streaming server started, web server address is&lt;br /&gt;
 http://localhost:51000/stream/title0.ts&lt;br /&gt;
&lt;br /&gt;
Запустите &#039;&#039;&#039;VLC&#039;&#039;&#039;, выберите опцию &#039;&#039;&#039;Open Network Stream&#039;&#039;&#039; из меню &#039;&#039;&#039;Media&#039;&#039;&#039; и вставьте адрес, который выведет &#039;&#039;MakeMKV&#039;&#039;. Диск Blu-ray должен начать воспроизведение. Этот метод годится и для просмотра содержимого Blu-ray на другом компьютере, без привода BD-ROM, при условии, что оба компьютера находятся в одной сети и канал связи между ними достаточно быстр. Тогда нужно будет использовать имя хоста или IP-адрес другого компьютера, а не localhost. &#039;&#039;&#039;МС&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Шаг за шагом: Трансляция Blu-Ray через &#039;&#039;MakeMKV&#039;&#039;====&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF144_93_1.jpg|Шаг 1]]&lt;br /&gt;
* &#039;&#039;&#039;1 Установите &#039;&#039;libdvdcss&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
: Первый шаг к воспроизведению DVD – убедиться через менеджер пакетов, что у вас установлена библиотека &#039;&#039;libdvdcss&#039;&#039;, и установить ее, если это не так.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF144_93_2.jpg|Шаг 2]]&lt;br /&gt;
* &#039;&#039;&#039;2 Добавьте репозиторий&#039;&#039;&#039;&lt;br /&gt;
: Если библиотека &#039;&#039;libdvdcss&#039;&#039; недоступна, добавьте Medibuntu. На сайте есть команда, которую надо ввести в терминале, чтобы добавить репозиторий.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF144_93_3.jpg|Шаг 3]]&lt;br /&gt;
* &#039;&#039;&#039;3 Откройте ваш диск Blu-ray&#039;&#039;&#039;&lt;br /&gt;
: Запустите &#039;&#039;MakeMKV&#039;&#039;, и программа обнаружит ваш привод BD и раскроет информацию о диске. Это займет несколько секунд.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF144_93_4.jpg|Шаг 4]]&lt;br /&gt;
* &#039;&#039;&#039;4 Выберите дорожку&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;MakeMKV&#039;&#039; выделяет все дорожки, поэтому снимите выделение со всех, кроме главной. Снимите выделение с ненужных подзаголовков и аудиодорожек.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF144_93_5.jpg|Шаг 5]]&lt;br /&gt;
* &#039;&#039;&#039;5 Транслируйте поток&#039;&#039;&#039;&lt;br /&gt;
: Нажмите кнопку &#039;&#039;&#039;Stream&#039;&#039;&#039; – некоторое время будет казаться, что &#039;&#039;MakeMKV&#039;&#039; ничего не делает, а затем выведется адрес его Web-сервера.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF144_93_6.jpg|Шаг 6]]&lt;br /&gt;
* &#039;&#039;&#039;6 Не щелкайте по ссылке&#039;&#039;&#039;&lt;br /&gt;
: Вставьте адрес сервера из окна, выведенного &#039;&#039;MakeMKV&#039;&#039;, в видеопроигрыватель вроде &#039;&#039;VLC&#039;&#039; и смотрите содержимое вашего диска Blu-ray.&lt;br /&gt;
&lt;br /&gt;
==Часто задаваемые вопросы &#039;&#039;su&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Для запуска программ, требующих полномочий root, одни дистрибутивы используют &#039;&#039;sudo&#039;&#039;, а другие — более традиционный префикс (&#039;&#039;?? совершенно непонятно с каких пор команда оболочки меняющая учетные данные пользователя вдруг стала &amp;quot;префиксом&amp;quot;&#039;&#039;) &#039;&#039;su&#039;&#039;; какая из этих опций лучше?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Дело не в том, какая из этих опций лучше: они выполняют чуть разные задачи. А именно, команда &#039;&#039;sudo&#039;&#039; великолепна для предоставления прав root (&#039;&#039;совершенно не обязательно root, обидно что редакция &#039;&#039;&#039;LXF&#039;&#039;&#039; продолжает распространять это заблуждение&#039;&#039;)) конкретному пользователю, чтобы дать возможность выполнить то, что ему необходимо, не раскрывая при этом пароля root. Она дает администраторам тонкий контроль над тем, кто и что может выполнять. &#039;&#039;su&#039;&#039;, с другой стороны, дает одному пользователю доступ от имени другого – в частности, от имени root.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Это полезно знать; но мне нужен полный доступ от имени суперпользователя, значит, очевидный выбор — &#039;&#039;su&#039;&#039;?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Не столь очевидный, как вам кажется: &#039;&#039;su&#039;&#039; — сокращение не от superuser, а от switch user – переключение пользователей. &#039;&#039;su&#039;&#039; дает любому пользователю право работать от имени другого пользователя, если он знает нужный пароль. Если не указать никакого имени пользователя, то по умолчанию доступ будет предоставлен от имени root, но это не единственный вариант. Администраторы могут регистрироваться от имени других пользователей, чтобы исправить что-либо в их настройках, причем им нет нужды знать пароли этих пользователей (если root использует команду su для регистрации от имени другого пользователя, то указывать пароль не надо). Поэтому вы можете, например, исправить для пользователя &#039;&#039;crontab&#039;&#039;, дав команду:&lt;br /&gt;
&lt;br /&gt;
 su fred -c “crontab -e”&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Это интересно, но все-таки, для полного доступа от имени root, &#039;&#039;su&#039;&#039; ведь та команда, которая мне нужна?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Не совсем: &#039;&#039;su&#039;&#039;, вызванная сама по себе, даст вам привилегии суперпользователя, но вы все равно останетесь в своей исходной пользовательской среде. Все переменные, установленные для существующего пользователя, вместе с текущим каталогом, будут прежними, а путь изменяется на &#039;&#039;&#039;/sbin:/bin:/usr/sbin:/usr/bin&#039;&#039;&#039;, а значит, все, что вы установили в &#039;&#039;&#039;/usr/local&#039;&#039;&#039;, больше не будет доступно напрямую.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;А я и не знал; но это объясняет иногда наблюдаемое странное поведение. Не расскажете ли, как получить полный доступ от имени root через X-терминал к рабочему столу пользователя?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Для этого добавьте &#039;&#039;&#039;-&#039;&#039;&#039; к команде &#039;&#039;su&#039;&#039;, в самом конце, после всех остальных опций. Можно также использовать &#039;&#039;&#039;--login&#039;&#039;&#039; – так будет более удобочитаемо, но придется дольше вводить. Последняя опция предоставляет вам практически полную регистрационную среду и в 99 % случаев будет эквивалентна прямому доступу от имени суперпользователя-root, или любого другого указанного вами пользователя.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Вот это похоже на дело. Кстати, иногда мне нужно запускать от имени root графические программы, но я получаю сообщения об ошибке — мол, не настроена опция &#039;&#039;DISPLAY&#039;&#039;. Как обойти эту проблему?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Можете использовать &#039;&#039;xhost&#039;&#039; или любой другой трюк с &#039;&#039;&#039;DISPLAY&#039;&#039;&#039;, чтобы предоставить вашему пользователю, получившему администраторские права root с помощью &#039;&#039;su&#039;&#039;, доступ root для использования вашего рабочего стола; но существует более простое решение. Установите &#039;&#039;sux&#039;&#039; (произносится как ‘su ex’, а не ‘sucks’) и используйте эту команду вместо &#039;&#039;su&#039;&#039;. Она принимает те же аргументы, но устанавливает доступ к &#039;&#039;X&#039;&#039; перед вызовом &#039;&#039;su&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Краткая справка про… X-проброс==&lt;br /&gt;
&lt;br /&gt;
Основа всех графических интерфейсов Linux – &#039;&#039;X&#039;&#039;, сетевой протокол. Хотя ваш дисплей обычно связан с &#039;&#039;X&#039;&#039;-сервером на локальной машине, это вовсе не обязательно. Вам, наверное, случалось пользоваться рабочим столом на удаленном компьютере через &#039;&#039;VNC&#039;&#039; или &#039;&#039;Nx&#039;&#039;. Но недостаток этого подхода – то, что рабочий стол одного компьютера воспроизводится на другом, поскольку тогда на удаленном компьютере действительно должен быть запущен рабочий стол. А если это просто сервер без монитора, то запуск рабочего стола будет пустой тратой ресурсов.&lt;br /&gt;
&lt;br /&gt;
Вместо запуска всего рабочего стола можно просто запустить нужное вам приложение, установив соединение через &#039;&#039;SSH&#039;&#039; (то есть это безопасно даже при соединении через публичную сеть). Введите следующую команду в вашем любимом клиенте терминала:&lt;br /&gt;
&lt;br /&gt;
 ssh -X user@remote.computer &lt;br /&gt;
 someprogram&lt;br /&gt;
&lt;br /&gt;
Если &#039;&#039;someprogram&#039;&#039; – GUI-приложение, его окно должно открыться на вашем рабочем столе. Здесь следует учесть еще пару аспектов. Первый – вы должны иметь доступ к другому компьютеру через &#039;&#039;SSH&#039;&#039;, регистрируясь через пароль либо ключ. На сервере &#039;&#039;SSH&#039;&#039; другого компьютера должна быть активна опция &#039;&#039;X&#039;&#039;-проброса [X-Forwarding]. Обычно она активна по умолчанию, но лучше в этом убедиться: в файле &#039;&#039;&#039;/etc/ssh/sshd_config&#039;&#039;&#039; должна содержаться строка&lt;br /&gt;
&lt;br /&gt;
 X11Forwarding yes&lt;br /&gt;
&lt;br /&gt;
Есть еще ряд опций &#039;&#039;SSH&#039;&#039;, способных вам пригодиться. Вместо &#039;&#039;&#039;-X&#039;&#039;&#039; можно применить опцию &#039;&#039;&#039;-Y&#039;&#039;&#039;. Правда, она доступна, только если сервер &#039;&#039;SSH&#039;&#039; настроен с опцией &#039;&#039;&#039;Trusted X11 Forwarding&#039;&#039;&#039;, но в этом случае существенно ускорит вашу работу. Еще одна опция, &#039;&#039;&#039;-C&#039;&#039;&#039;, подхлестнет медленные каналы, применив сжатие всех данных, хотя для очень медленных соединений &#039;&#039;X&#039;&#039; обычно не подходит: при очень узкой полосе пропускания лучшим решением будут &#039;&#039;TightVNC&#039;&#039; или &#039;&#039;Nx&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Имейте в виду, что в Mac OS X для отображения тоже допустим &#039;&#039;X&#039;&#039;, и вы можете использовать данный метод для показа окна программы Mac на вашем дисплее Linux и наоборот.&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=LXF144:%D0%9E%D1%82%D0%B2%D0%B5%D1%82%D1%8B&amp;diff=14489</id>
		<title>LXF144:Ответы</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=LXF144:%D0%9E%D1%82%D0%B2%D0%B5%D1%82%D1%8B&amp;diff=14489"/>
		<updated>2012-12-07T07:00:55Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: викификация, оформление, иллюстрация&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория:Ответы]]&lt;br /&gt;
==Ответы==&lt;br /&gt;
&lt;br /&gt;
: Пишите нам по адресу [mailto:answers@linuxformat.ru answers@linuxformat.ru] или спрашивайте на форуме: http://www.linuxformat.ru Мы найдем ответы на любой вопрос — от проблем с установкой системы или модемом до сетевого администрирования; главное — спросить!&lt;br /&gt;
&lt;br /&gt;
===1 Странное поведение===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;В&#039;&#039; Сейчас у меня LinuxMint 10 с DVD от LXF140. Весьма нетипично для Linux, в этом дистрибутиве мой экран виснет как минимум раз в сеанс. Сообщений об ошибках я не получаю, и ничего особенного не наблюдается: просто все зависает, и приходится перезагружаться.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;При открытии версии &#039;&#039;KMail&#039;&#039;, установленной через центр программ Mint 10, появляется диалоговое окно с результатами различных тестов, и более 99 % прошли успешно. Но если не исправить хотя бы одну из указанных ошибок, при попытке закрыть это окно или сохранить копию отчета закрываются и окно, и &#039;&#039;KMail&#039;&#039;. Вот сообщение:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 “Akonadi Server Self-Test Report: Test 12: ERROR&lt;br /&gt;
 Nepomuk search service not registered at D-Bus.&lt;br /&gt;
 Details: The Nepomuk search service is not registered at D-Bus&lt;br /&gt;
 which typically means it was not started or encountered a fatal error&lt;br /&gt;
 during startup.”&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Майкл Годдард [Michael Goddard]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;О&#039;&#039;&#039; Зависание может быть обусловлено аппаратной проблемой. Есть смысл запустить на всю ночь программу &#039;&#039;memtest&#039;&#039;, которая есть на большинстве Linux Live CD, чтобы выполнить тщательное тестирование памяти. Далее, вместо нажатия кнопки &#039;&#039;&#039;Reset&#039;&#039;&#039; или питания, попробуйте воспользоваться более дружелюбной к системе возможностью, известной как «магическая клавиша SysRq» [‘magic SysRq key’]. Нажмите комбинацию клавиш &#039;&#039;&#039;Alt+SysRq&#039;&#039;&#039; и, удерживая их в этом положении, последовательно нажмите клавиши &#039;&#039;&#039;R, E, I, S, U&#039;&#039;&#039; и &#039;&#039;&#039;B&#039;&#039;&#039;. Работа всех процессов завершится, все Ваши диски синхронизируются и отмонтируются, и система перезагрузится. Это не только позволит избежать повреждений файловой системы, но и сбросит на диск содержимое буферов, повысив шансы на получение отчета о проблеме в системном журнале, обычно в &#039;&#039;&#039;/var/log/messages&#039;&#039;&#039;. Есть несколько абсурдных сокращений, упрощающих запоминание этих букв; я предпочитаю вариант &#039;&#039;Reboot Even If System Utterly Broken&#039;&#039; [перезагрузиться, даже если система непоправимо поломана], но, возможно, проще будет запомнить их в обратном порядке (тогда получится слово &#039;&#039;&#039;BUSIER&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Akonadi&#039;&#039; и &#039;&#039;Nepomuk&#039;&#039; – часть т.н. «семантического рабочего стола» KDE [semantic desktop], причем &#039;&#039;Akonadi&#039;&#039; используется для хранения данных системы управления личной информацией (personal information management, PIM) – например, Вашей адресной книгой. Отсюда его важность для &#039;&#039;KMail&#039;&#039;. Сообщение об ошибке указывает, что сервер не запускается по одной из двух возможных причин: либо попыток запуска не предпринимается, либо при запуске происходит ошибка. Вы не сообщили, пользуетесь ли Вы KDE или пытаетесь применять &#039;&#039;KMail&#039;&#039; в Gnome - рабочем столе Mint по умолчанию. В последнем  случае попробуйте зарегистрироваться в KDE и проверить, не исправит ли это ситуацию. Если проблема будет исправлена, Вы можете гарантировать работу сервера &#039;&#039;Akonadi&#039;&#039;, добавив его в раздел &#039;&#039;&#039;Startup Applications&#039;&#039;&#039; в &#039;&#039;&#039;Control Centre&#039;&#039;&#039; командой:&lt;br /&gt;
&lt;br /&gt;
 akonadictl start&lt;br /&gt;
&lt;br /&gt;
Как вариант, можно воспользоваться &#039;&#039;kdeinit4&#039;&#039;, чтобы запустить все сервисы KDE, хотя для Ваших потребностей это может быть избыточным.&lt;br /&gt;
&lt;br /&gt;
Неудача при запуске &#039;&#039;Akonadi&#039;&#039; может быть вызвана проблемой с конфигурацией, и в этом случае Вы можете сбросить все настройки к значениям по умолчанию, удалив или переименовав конфигурационные каталоги: &#039;&#039;&#039;~/.config/akonadi&#039;&#039;&#039; и &#039;&#039;&#039;~/.local/share/akonadi&#039;&#039;&#039;. &#039;&#039;&#039;ГМ&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===2 Утраченный root===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;В&#039;&#039; Обычно я ничего не устанавливаю с ваших дисков, кроме дистрибутивов. В этом месяце я взялся за установку программ и потерпел неудачу. Я обратил внимание, что в Ubuntu 10.10, Linux Mint 10, а теперь и в Debian Squeeze нет пользователя root: мне так и не удалось уломать их сделать меня root. Как правило, я пользуюсь командой &#039;&#039;su&#039;&#039;, а затем ввожу пароль root.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Иногда я регистрируюсь как root, чтобы выполнить некоторые вещи, которые в OpenSUSE обременительно выполнять с помощью &#039;&#039;su&#039;&#039;. Сейчас мое имя пользователя дает мне административные права, которые мне не нужны. Однако на диске доступно только &#039;&#039;index.html&#039;&#039;. Владельцем является root, а зарегистрироваться как root невозможно, и я в тупике. Пожалуйста, расскажите, как получить доступ к файлам и, в идеале, как зарегистрироваться от имени root.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Клайв Ширсби [Clive Shearsby]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;О&#039;&#039;&#039; В работе Ubuntu с доступом от имени root до сих пор имеется путаница. Учетная запись root существует, иначе Вы не могли бы выполнить ничего требующего полномочий root. Взглянув на первую строку файла &#039;&#039;&#039;/etc/passwd&#039;&#039;&#039;, Вы увидите, что запись там определена. Но по умолчанию в Ubuntu отсутствует возможность зарегистрироваться в системе как пользователь root. Это не дает Вашей учетной записи пользователя административных прав автоматически – Вы все равно должны ввести пароль. Гораздо лучший контроль над доступом от имени root предоставляет &#039;&#039;sudo&#039;&#039;; и, на мой взгляд пользователя другого дистрибутива (не Ubuntu), этот подход лучше, чем метод грубой силы, используемый &#039;&#039;su&#039;&#039; (см. &#039;&#039;&#039;Часто задаваемые вопросы&#039;&#039;&#039;, где о &#039;&#039;su&#039;&#039; рассказано подробнее).&lt;br /&gt;
&lt;br /&gt;
Запуск терминала от имени root делается одной из следующих команд:&lt;br /&gt;
&lt;br /&gt;
 sudo -i&lt;br /&gt;
&lt;br /&gt;
или&lt;br /&gt;
&lt;br /&gt;
 sudo bash&lt;br /&gt;
&lt;br /&gt;
Первая запускает интерактивный сеанс &#039;&#039;sudo&#039;&#039;, и Вы сможете вводить команды, которые требуют прав root. Вторая запускает от имени root оболочку &#039;&#039;Bash&#039;&#039;, предоставляя вам сеанс оболочки с правами root. С такими возможностями Вам не понадобится применять &#039;&#039;su&#039;&#039;. Если это все-таки нужно, решение будет очень простым. Введите команду, задающую новый пароль для пользователя root:&lt;br /&gt;
&lt;br /&gt;
 sudo passwd root&lt;br /&gt;
&lt;br /&gt;
Вам могут предложить сначала ввести Ваш пароль, в зависимости от того, используете ли Вы &#039;&#039;sudo&#039;&#039; в той же самой оболочке и прошло ли уже пять минут с ее последнего использования, а затем – дважды ввести новый пароль пользователя root. После этого Вы сможете применить команду &#039;&#039;su&#039;&#039; для регистрации от имени root с новым паролем. Но я все же рекомендовал бы продолжать пользоваться &#039;&#039;sudo&#039;&#039;, поскольку это безопаснее и станет Вашей «второй натурой» очень скоро.&lt;br /&gt;
&lt;br /&gt;
Ваш экранный снимок дошел до нас в не слишком читаемом виде, но описанная Вами ситуация выглядит весьма странной. Инструменты автомонтирования Gnome и KDE монтируют съемные устройства с правами владельца для пользователя, запустившего рабочий стол; DVD может принадлежать root, только если Вы примонтировали его из терминального сеанса с помощью &#039;&#039;sudo&#039;&#039;. Даже если так и было, файлы все равно должны быть читаемыми – и даже если права на них принадлежат root, обычному пользователю чтение все равно разрешено. С проблемой Вы можете столкнуться только при попытке установить нечто требующее записи в исходный каталог. Тогда скопируйте этот каталог с DVD на Ваш жесткий диск и выполните установку оттуда. &#039;&#039;&#039;НБ&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===3 Команда Ping===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;В&#039;&#039; Я кое-что обнаружил — не так чтоб очень критичное, но ответ получить хотелось бы. Я подключен к сети, но не могу отправлять команду &#039;&#039;ping&#039;&#039; на сайты или локальные машины из приложения &#039;&#039;Network Tools&#039;&#039;, хотя из терминала она работает.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;В &#039;&#039;System &amp;gt; Admin &amp;gt; Network Tools&#039;&#039; сетевое устройство показано как карта &#039;&#039;Ethernet eth0&#039;&#039;, и при просмотре сайтов показатель &#039;&#039;Received Bytes&#039;&#039; возрастает. Подключение у меня явно есть — я вижу сайты в &#039;&#039;Firefox&#039;&#039; и &#039;&#039;Chrome&#039;&#039;. Но на вкладке &#039;&#039;Ping&#039;&#039; в &#039;&#039;Network Tools&#039;&#039; я не могу отправить команду на сайт или один из локальных компьютеров в моей сети. Раньше я такое мог, и, насколько я помню, настроек с тех пор не менял.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Дэвид Райт [David Wright]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;О&#039;&#039;&#039; Это похоже на ошибку текущей версии &#039;&#039;gnome-nettool&#039;&#039;, влияющую также и на другие дистрибутивы; она не специфична для Ubuntu. По какой-то причине GUI выполняет не ту команду. Например, команда отправки &#039;&#039;ping&#039;&#039; на сервер Google выглядит так:&lt;br /&gt;
&lt;br /&gt;
 /bin/ping -b -c 5 www.google.com&lt;br /&gt;
&lt;br /&gt;
Из терминала это работает, как и в том случае, если скомандовать &#039;&#039;ping&#039;&#039;, не указав полного пути. Но на самом деле GUI пытается выполнить вот что:&lt;br /&gt;
&lt;br /&gt;
 /bin/ping ping -b -c 5 www.google.com&lt;br /&gt;
&lt;br /&gt;
Иначе говоря, используется &#039;&#039;/bin/ping&#039;&#039; и &#039;&#039;ping&#039;&#039;, вместо одной из них. В результате команда &#039;&#039;/bin/ping&#039;&#039; пытается разрешить первый элемент, не являющийся аргументом командной строки, как имя хоста, а это – команда &#039;&#039;ping&#039;&#039;. Запустив эту команду из терминала, Вы в подробностях увидите, как и почему ее выполнение заканчивается неудачей. Но &#039;&#039;gnome-nettool&#039;&#039; замечает только отсутствие ответов на команду &#039;&#039;ping&#039;&#039; в стандартном выводе и не сообщает ничего – сообщение о неизвестном хосте, которое Вы видите в терминальном сеансе, отправляется в стандартный поток ошибок (stderr). Вы также можете выяснить, что происходит, если запустите &#039;&#039;gnome-nettool&#039;&#039; из терминала и попробуете дать команду &#039;&#039;ping&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Почему пропущена и до сих пор не исправлена столь вопиющая ошибка – из области предположений. Возможно, эту функцию программы используют лишь немногие. Но для разработчиков исправление ее тривиально. Как вариант, Вы можете исправить ошибку сами, скачав, модифицировав и перекомпилировав исходный код; или просто в шестнадцатеричном редакторе забейте пробелами лишнюю строку &#039;&#039;ping&#039;&#039;. &#039;&#039;&#039;ПХ&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===4 KDE заполняет tmp===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;В&#039;&#039; Я недавно обновил свой рабочий стол до Kubuntu 10.04.1, с ISO-файла на рабочем столе. Вскорости (где-то через несколько рабочих дней) появляется следующее сообщение: &#039;&#039;&#039;‘The process for the file protocol died unexpectedly’&#039;&#039;&#039;. Детальная информация — значки и все остальное — тоже исчезает с экранов &#039;&#039;Dolphin&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Видимо, проблема связана с пространством в &#039;&#039;&#039;&#039;&#039;tmp&#039;&#039;&#039;&#039;&#039;. Я обнаружил, что подкаталог &#039;&#039;&#039;&#039;&#039;kde-root&#039;&#039;&#039;&#039;&#039; в &#039;&#039;&#039;&#039;&#039;/tmp&#039;&#039;&#039;&#039;&#039; имеет размер около 8,5 ГБ и содержит очень много файлов с именами типа &#039;&#039;&#039;&#039;&#039;kconf_updateXXnnnn.tmp&#039;&#039;&#039;&#039;&#039;, где XX — подстроки вида SL, XL или MT. Похоже, что они добавляются туда примерно по файлу в 10 секунд. Если этот каталог удалить, то проблема временно решается — но только до следующего раза, а потом все повторяется. Можете ли вы объяснить, что происходит и как исправить проблему радикально — я имею в виду, может, ее создает какой-то (левый?) процесс?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Дэйв Коулсток [Dave Coulstock]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;О&#039;&#039;&#039; &#039;&#039;Kconf_update&#039;&#039; – это процесс KDE, обновляющий файлы. Чтобы не заставлять все программы читать старую и новую версии формата файла настройки при каждом его изменении, программа просто сбрасывает небольшой файл в каталог &#039;&#039;&#039;.kde4/share/apps/kconf_update&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Kconf_update&#039;&#039; замечает появление этого файла и использует информацию из него, чтобы переписать файл настройки программы в новом формате. Каждый файл обновления запускается только один раз для каждого пользователя, так что проблема, с которой Вы столкнулись, по всей видимости, вызвана повторным запуском этих файлов. Подозреваю, что обновление завершается неудачей, поэтому временные файлы не удаляются, а &#039;&#039;kconf_update&#039;&#039; не помечает их как отработавшие и продолжает пытаться запустить их снова.&lt;br /&gt;
&lt;br /&gt;
Подсказки про источник этой проблемы можно найти в файле журнала &#039;&#039;kconf_update&#039;&#039; – он хранится в &#039;&#039;&#039;~/.kde4/share/apps/kconf_update/log/update.log&#039;&#039;&#039;. Поскольку временные файлы находятся в каталоге &#039;&#039;&#039;kde-root&#039;&#039;&#039;, это – программа, запускаемая от имени root (или через &#039;&#039;sudo&#039;&#039;), поэтому ключ к решению ищите в файле &#039;&#039;&#039;/root/.kde4/share/apps/kconf_update/log/update.log&#039;&#039;&#039;. Сообщения об ошибках должны указывать имя программы и конкретный файл; файлы данных &#039;&#039;kconf_update&#039;&#039; заканчиваются строкой &#039;&#039;&#039;UPD&#039;&#039;&#039; и обычно хранятся в &#039;&#039;&#039;/usr/share/apps/kconf_update&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Вы можете удалить файл, прекратив хроническое создание временных файлов, но в итоге Ваши файлы настройки могут прийти в противоречивое состояние. Альтернатива – узнав, какой именно файл создает проблему, поискать в Web отчеты об этой конкретной проблеме; вероятно, найдутся даже готовые решения. Так как Ваша версия KDE довольно старая, вполне возможно, что проблема уже решена, и обновление избавит Вас от нее. Когда Вы идентифицируете проблемную программу, Ваши поиски в Web помогут Вам найти лучший способ действий. &#039;&#039;&#039;МС&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===5 Горести &#039;&#039;Wine&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;В&#039;&#039; Я уже устанавливал и тестировал &#039;&#039;Wine&#039;&#039;, но мне ни разу не удалось запустить никакую Windows-программу, кроме &#039;&#039;Notepad&#039;&#039;. Теперь я работаю с Ubuntu 10.04, и при попытках пользоваться &#039;&#039;Kindle for PC&#039;&#039; или &#039;&#039;Internet Explorer&#039;&#039; результат оказывается нулевым — в смысле, nada, niets, nichts, rien, шиш. &#039;&#039;Wine&#039;&#039; запускается и тут же стопорит. После стольких лет я начинаю думать, что все это надувательство. Или я не нашел некой «секретной кнопки»?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Йохан Николаас Хербшлеб [Johan Nicolaas Herbschleb]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;О&#039;&#039;&#039; Чудес &#039;&#039;Wine&#039;&#039; не сотворяет: чтобы работать с разными Windows-приложениями, эта программа должна постоянно развиваться. Значит, следует стремиться запускать новейшую версию, а ее маловероятно найти в репозиториях большинства дистрибутивов. Ubuntu 10.04 и 10.10 используют версию 1.2.1, хотя для скачивания в http://winehq.org доступна версия 1.3.13. Каждый новый релиз поддерживает все больше Windows-приложений, так что Вашим первым шагом должна стать деинстал- ляция штатной версии &#039;&#039;Wine&#039;&#039; Вашего дистрибутива и загрузка пакета для Ubuntu с http://www.winehq.org/download.&lt;br /&gt;
&lt;br /&gt;
Часто это помогает, но мантра «новейшее – всегда самое лучшее» не всегда применима к Windows-приложениям, которые Вы пытаетесь установить. Откат к более старым релизам нередко означает получение совместимости с &#039;&#039;Wine&#039;&#039;. Например, мой &#039;&#039;Kindle for PC&#039;&#039; работает с &#039;&#039;Wine&#039;&#039;, но не в самой свежей версии, хотя все же позволяет делать то, что я хочу. Изменения, внесенные в новейшую версию ПО &#039;&#039;Kindle&#039;&#039;, привели к тому, что пока эта новейшая версия с &#039;&#039;Wine&#039;&#039; не работает.&lt;br /&gt;
&lt;br /&gt;
Более старую версию можно загрузить с адреса http://tinyurl.com/kindle4wine или поискать в Web по ключевым словам &#039;&#039;&#039;‘wine’&#039;&#039;&#039; и &#039;&#039;&#039;‘kindle’&#039;&#039;&#039;. Нужный Вам инсталлятор размером 5,2 МБ. Запустите его следующей командой:&lt;br /&gt;
&lt;br /&gt;
 wine KindleForPC-installer.exe&lt;br /&gt;
&lt;br /&gt;
Эта команда установит программу, но пока не запускайте ее: скомандуйте &#039;&#039;winecfg&#039;&#039;, затем перейдите на вкладку &#039;&#039;&#039;Applications&#039;&#039;&#039;, нажмите кнопку &#039;&#039;&#039;Add Application&#039;&#039;&#039; и добавьте программу &#039;&#039;Kindle for PC&#039;&#039;. Затем выберите эту программу и установите опцию версии Windows в &#039;&#039;&#039;Windows 98&#039;&#039;&#039;, что решит некоторые проблемы с визуализацией GUI. Если Вы этого не сделаете, то не сможете видеть поля, куда Вам нужно будет вводить регистрационную информацию при первом запуске программы. Однако это можно сделать вслепую, введя свое входное имя, нажав клавишу &#039;&#039;&#039;Tab&#039;&#039;&#039;, введя пароль и, наконец, нажав клавишу &#039;&#039;&#039;Enter&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Другие программы могут потребовать аналогичных фокусов, но форумы по адресу http://forums.winehq.org плюс помощь Вашего любимого поисковика обычно помогают решить проблему. &#039;&#039;&#039;НБ&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===6 Параллельные скрипты===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;В&#039;&#039; Я хотел бы написать скрипт оболочки, работающий последовательно, пока он не подойдет к точке, когда нужно будет одновременно запустить четыре больших программы, для минимизации их совокупного времени исполнения. После чего я хотел бы продолжать работать по остальным функциям исходного скрипта, и снова в последовательном режиме. &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Прочитав LXF140, я считаю, что я мог бы использовать демона &#039;&#039;&#039;at&#039;&#039;&#039; для размножения процессов, используя что-либо наподобие &#039;&#039;&#039;now + 1 minute&#039;&#039;&#039;. Я бы модифицировал процессы так, чтобы по завершении они отправляли в файл уникальный флаг, а я потом справлялся бы с ним для определения фактически завершенных процессов. Я бы добавил еще проверку, завершились ли они все, и, если еще не все процессы завершили работу, использовал бы команду &#039;&#039;sleep&#039;&#039; с приращениями, скажем, по пять минут, чтобы дождаться завершения всех процессов. Каждый из моих процессов идет часа четыре.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Дик Бочан [Dick Bochan]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;О&#039;&#039;&#039; То, что Вы хотите, можно сделать и проще, не проверяя файлы на модификации постоянно. Ядро предоставляет средства наблюдения за изменениями файла или каталога, а пакет &#039;&#039;inotify-tools&#039;&#039; содержит пользовательское ПО, позволяющее сделать это. Я не стал бы усложнять запуск команд, добавляя &#039;&#039;at&#039;&#039; – просто припишите &#039;&#039;&#039;&amp;amp;&#039;&#039;&#039; к каждой из них, чтобы они шли в фоновом режиме:&lt;br /&gt;
&lt;br /&gt;
 process1 &amp;amp;&lt;br /&gt;
 process2 &amp;amp;&lt;br /&gt;
 …&lt;br /&gt;
&lt;br /&gt;
Если пусковая нагрузка процессов высока, вставьте между ними команды &#039;&#039;sleep&#039;&#039;, чтобы распределить нагрузку между запусками. Если каждый из этих процессов создает при выходе файл, можно использовать &#039;&#039;inotifywait&#039;&#039;, чтобы дождаться создания этих файлов, и циклы ожидания будут не нужны:&lt;br /&gt;
&lt;br /&gt;
 for i in {1..4}; do&lt;br /&gt;
  inotifywait -e CREATE -qq /tmp/myprocess/&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Здесь &#039;&#039;&#039;/tmp/myprocess&#039;&#039;&#039; – каталог, где будут создаваться файлы флагов; символ косой черты на конце велит &#039;&#039;inotifywait&#039;&#039; отслеживать изменения в содержимом каталога, а не самого каталога. &#039;&#039;Inotifywait&#039;&#039; ожидает события создания файла, а затем выходит, и опция &#039;&#039;&#039;-qq&#039;&#039;&#039; подавляет весь вывод. Цикл выполняется четыре раза, так что выход происходит по завершении всех четырех процессов и записи их флаговых файлов, вне зависимости от того, когда это случится. В идеале Ваш скрипт должен обеспечить, чтобы перед началом процессов каталог был пуст.&lt;br /&gt;
&lt;br /&gt;
Чтобы проверить успешность завершения каждого процесса, можно записать код результата в файл статуса и затем проверять каждый из них на успешность перед тем, как продолжить выполнение. Это более эффективный метод, чем циклы &#039;&#039;sleep&#039;&#039; – скрипт просто стоит и ждет, пока ядро не просигналит об изменении в каталоге.&lt;br /&gt;
&lt;br /&gt;
Вы должны иметь право модифицировать отдельные процессы для создания файлов статуса (хотя Вы дали понять, что так оно и есть). В противном случае, можно запускать их так, чтобы файлы создавались при выходе процесса. Строка&lt;br /&gt;
&lt;br /&gt;
 (process1 ; touch /tmp/myprocess/p1) &amp;amp;&lt;br /&gt;
&lt;br /&gt;
запускает команды, перечисленные в скобках, в подоболочке, которая затем отключается через &#039;&#039;&#039;&amp;amp;&#039;&#039;&#039;. После этого команды выполняются последовательно, так что когда завершается &#039;&#039;&#039;process1&#039;&#039;&#039;, &#039;&#039;touch&#039;&#039; создает флаговый файл. Альтернативные версии –&lt;br /&gt;
&lt;br /&gt;
 (process1 &amp;amp;&amp;amp; touch /tmp/myprocess/p1) &amp;amp;&lt;br /&gt;
 (process1 &amp;amp;&amp;amp; touch /tmp/myprocess/p1 || touch /tmp/myprocess/p1failed) &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Первая из них создает файл только при успешном завершении &#039;&#039;&#039;process1&#039;&#039;&#039;, и если один из процессов завершится с ошибкой, Ваш скрипт будет ждать бесконечно. Второй вариант создает другой файл, если &#039;&#039;&#039;process1&#039;&#039;&#039; завершается с ошибкой, что позволяет Вам проверить, завершились ли все процессы успешно, а потом продолжать. &#039;&#039;&#039;ПХ&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===7 Трюки с разделами===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;В&#039;&#039; С машиной моей жены возникла проблема, и я не знаю, как ее исправить. Она решила отказаться от Windows, перейдя на Fedora 14. Раньше на ее машине была система с двойной загрузкой — Windows 2000 и Fedora 8. Я обновил ее до Fedora 14 (естественно, создав сперва резервную копию ее данных), но обнаружил, что на диске много неиспользованного пространства. Вот листинг команды &#039;&#039;fdisk –l&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 Device Boot Start End Blocks Id System&lt;br /&gt;
 /dev/sda1 * 2048 514047 256000 83 Linux&lt;br /&gt;
 /dev/sda2 514048 4708351 2097152 83 Linux&lt;br /&gt;
 /dev/sda3 4708352 6805503 1048576 82 Linux/swap&lt;br /&gt;
 /dev/sda4 52693200 234436544 90871672+ f W95 Ext’d (LBA)&lt;br /&gt;
 /dev/sda5 59006808 234227699 87610446 83 Linux&lt;br /&gt;
 /dev/sda6 52697088 58955775 3129344 83 Linux&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Sda2&#039;&#039; — это каталог &#039;&#039;/, sda5&#039;&#039; — &#039;&#039;/home, sda6&#039;&#039; — &#039;&#039;/var&#039;&#039;. Я хотел бы избавиться от &#039;&#039;/dev/sda4&#039;&#039; и сделать из этого раздела раздел Linux, но так как это расширенный раздел, я не уверен, что не наврежу разделам &#039;&#039;sda5&#039;&#039; и &#039;&#039;6&#039;&#039;. При просмотре через &#039;&#039;GParted&#039;&#039; мне сообщается, что на &#039;&#039;/dev/sda4&#039;&#039; уже есть три главных раздела.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Алан Брей [Alan Bray]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;О Sda4&#039;&#039;&#039; – это действительно расширенный раздел, содержащий два логических раздела, &#039;&#039;&#039;sda5&#039;&#039;&#039; и &#039;&#039;&#039;sda6&#039;&#039;&#039;. Ваше свободное пространство расположено между &#039;&#039;&#039;sda3&#039;&#039;&#039; и &#039;&#039;&#039;sda4&#039;&#039;&#039;. Не там ли раньше размещалась Windows 2000? На этом пространстве нельзя создать новый раздел, потому что у Вас больше нет свободных главных разделов, а &#039;&#039;&#039;sda4&#039;&#039;&#039; нельзя удалить, не разрушив &#039;&#039;&#039;sda5&#039;&#039;&#039; и &#039;&#039;&#039;sda6&#039;&#039;&#039;. Опция переустановки вызывает у меня омерзение, но возможно, что в Вашем случае это будет простейшим вариантом. Поскольку у Вас два диска, и Вы предпочитаете индивидуальную схему разбиения на разделы, предлагаю использовать &#039;&#039;LVM&#039;&#039; – опцию, о которой позаботится установщик Fedora. Тогда Вам понадобятся только два физических раздела: один для &#039;&#039;&#039;/boot&#039;&#039;&#039; и один для физического тома &#039;&#039;LVM&#039;&#039;. Все остальное будет рассматриваться как логические тома внутри &#039;&#039;LVM&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Я всегда даю людям, настраивающим систему &#039;&#039;LVM&#039;&#039;, совет создавать логические тома ровно таких размеров, которые им нужны. &#039;&#039;LVM&#039;&#039; упрощает задачу увеличения размеров тома, и Вы можете создать каждый том с размером, соответствующим Вашим текущим потребностям, а все остальное пространство &#039;&#039;LVM&#039;&#039; оставить неиспользованным. При этом Вы сможете создавать новые тома или увеличивать размеры существующих всего парой щелчков мышью (или запуском пары команд). Вы больше не привязаны к физическому плану разбиения на разделы, поэтому размер каждого тома можно менять независимо от остальных.&lt;br /&gt;
&lt;br /&gt;
Если переустановка в данном случае – не вариант, можно переключиться на использование &#039;&#039;LVM&#039;&#039;, загрузившись с Live CD, удалив &#039;&#039;&#039;/dev/sda3&#039;&#039;&#039; в &#039;&#039;cfdisk&#039;&#039; или &#039;&#039;GParted&#039;&#039; и, наконец, создав новый раздел, заполняющий все пространство между &#039;&#039;&#039;sda2&#039;&#039;&#039; и &#039;&#039;&#039;sda4&#039;&#039;&#039; (примерно 200 ГБ). Пометьте этот раздел как раздел &#039;&#039;LVM&#039;&#039; и инициализируйте его командой&lt;br /&gt;
&lt;br /&gt;
 pvcreate /dev/sda3&lt;br /&gt;
&lt;br /&gt;
Затем создайте группу томов следующей командой:&lt;br /&gt;
&lt;br /&gt;
 vgcreate MyVolGroup /dev/sda3&lt;br /&gt;
&lt;br /&gt;
Вы можете присвоить группе любое имя по своему вкусу – возможно, включив в него имя хоста Вашего компьютера, чтобы сделать его уникальным. После этого создавайте логические тома с помощью следующих команд:&lt;br /&gt;
&lt;br /&gt;
 lvcreate --name var --size 5G MyVolGroup&lt;br /&gt;
 lvcreate --name home --size 15G MyVolGroup&lt;br /&gt;
&lt;br /&gt;
Они выглядят как &#039;&#039;&#039;/dev/MyVolGroup/var&#039;&#039;&#039; и &#039;&#039;&#039;/dev/MyVolGroup/home&#039;&#039;&#039;, и Вы можете создавать файловые системы и примонтировать их точно так же, как и любые другие блочные устройства. Примонтируйте и старые, и новые устройства &#039;&#039;&#039;var&#039;&#039;&#039; и скопируйте содержимое; то же самое проделайте для устройства &#039;&#039;&#039;home&#039;&#039;&#039;. Отредактируйте &#039;&#039;&#039;/etc/fstab&#039;&#039;&#039;, чтобы отразить имена новых устройств, а затем перезагрузитесь.&lt;br /&gt;
&lt;br /&gt;
Когда все это заработает, можете снова загрузиться с Live CD, удалить каталоги с &#039;&#039;&#039;/dev/sda3&#039;&#039;&#039; по &#039;&#039;&#039;/dev/sda6&#039;&#039;&#039; и воссоздать &#039;&#039;&#039;sda3&#039;&#039;&#039;, на этот раз заполнив все пространство. Пометьте его как том &#039;&#039;LVM&#039;&#039;, любым инструментом для управления файловыми системами. Наконец, велите &#039;&#039;LVM&#039;&#039; использовать новый раздел &#039;&#039;sda3&#039;&#039;, командой &lt;br /&gt;
&lt;br /&gt;
 pvresize /dev/sda3&lt;br /&gt;
&lt;br /&gt;
Как и при любой операции, манипулирующей файловыми системами и разделами, не забудьте сначала создать резервную копию данных – но при переустановке Вам так и так понадобится это сделать. &#039;&#039;&#039;ПХ&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===8 Виртуальные диски===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;В&#039;&#039; У меня есть настольный компьютер с двойной загрузкой, имеющий жесткий диск размером 320 ГБ с Windows XP и Linux Mint, причем XP установлена на одном разделе, а Linux — на другом. Они занимают около 200 ГБ дискового пространства, а примерно 100 ГБ у меня свободно. Я загрузил &#039;&#039;VirtualBox&#039;&#039; для Linux, и программа отлично запускается с помощью мастера.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Не объясните ли вы мне, как настроить виртуальную машину на свободном разделе, чтобы не попортить остальных разделов? И чтобы в будущем я мог, при необходимости, быстро от него избавиться, чтобы использовать освободившееся пространство для других целей?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Джон Джексон [John Jackson]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;О&#039;&#039;&#039; &#039;&#039;VirtualBox&#039;&#039;, как и другие эмуляторы, использует виртуальные диски, а не физические разделы. Каждый виртуальный диск для хост-системы – это просто файл, который может храниться где угодно. Вам не нужны отдельные разделы для их хранения, хотя при желании можно поступить и так. Сам я храню образы виртуальных дисков на отдельном разделе, потому что тогда они не крадут про- странство у хост-системы, даже если сверх меры разрастаются.&lt;br /&gt;
&lt;br /&gt;
Обычно размер виртуальных дисков устанавливается динамически. Это значит, что размер файла ровно таков, сколько нужно для хранения содержимого гостевой системы. Например, можно создать четыре виртуальных диска по 50 ГБ на разделе размером 100 ГБ, и они туда поместятся – по крайней мере, пока Вы не начнете их заполнять. Чтобы освободить пространство, занятое виртуальным диском, достаточно удалить файл VDI (Virtual Disk Image).&lt;br /&gt;
&lt;br /&gt;
Поэтому короткий ответ на Ваш вопрос таков: используйте &#039;&#039;GParted&#039;&#039; в Mint, чтобы создать файловую систему на свободных 100 ГБ дискового пространства. Затем, создав виртуальную машину в &#039;&#039;VirtualBox&#039;&#039;, настройте ее так, чтобы она использовала созданный на этом пространстве файл VDI. &#039;&#039;&#039;ГМ&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Большой вопрос. Как просматривать DVD в Linux Mint?===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;В&#039;&#039; Пытаюсь просмотреть диски DVD или Blu-ray на моем HPE-Pavilion 137-c, с Linux Mint 9 KDE, но у меня это не получается. Но почему? Может, это зависит от компьютера? У моего сына установлен дистрибутив Linux Mint 9 KDE на Gateway, и он спокойно смотрит DVD.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Рубен Гонсалес [Ruben Gonzalez]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;О&#039;&#039;&#039; У каждого релиза LinuxMint две версии. Одна предназначена для редистрибуции и не включает опции, легальность которых в ряде стран подвергается сомнению. Сюда относятся и библиотеки, необходимые для просмотра зашифрованных коммерческих DVD.&lt;br /&gt;
&lt;br /&gt;
Но не все потеряно. Установите пакет &#039;&#039;libdvdcss2&#039;&#039;! Сперва доберитесь до репозитория Medibuntu – полные инструкции находятся на странице &#039;&#039;&#039;Howto&#039;&#039;&#039; сайта http://medibuntu.org. После этого установите &#039;&#039;libdvdcss2&#039;&#039; через &#039;&#039;Synaptic&#039;&#039; – и любое Ваше ПО для воспроизведения DVD распознает эту библиотеку и применит ее для их расшифровки.&lt;br /&gt;
&lt;br /&gt;
Иначе обстоят дела с дисками Blu-ray, потому что алгоритмы защиты цифровых авторских прав (DRM) для них гораздо сложнее, чем для DVD. Но и тут есть опция, позволяющая воспроизводить или сдирать их для Linux. Возможно, в Вашей стране это считается незаконным – прежде чем продолжать, проверьте, так ли это. Программа &#039;&#039;MakeMKV&#039;&#039; умеет брать фильмы с диска Blu-ray на жесткий диск, откуда они воспроизводятся в любом медиа-плейере. Как вариант, программа извлечет их прямо в сетевой поток – его можно просматривать с проигрывателя типа &#039;&#039;VLC&#039;&#039;, способного принимать сетевой ввод.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;MakeMKV&#039;&#039; – только условно бесплатное ПО, но пока оно на стадии бета-тестирования и ключевой файл бесплатен; и таким останется до тех пор, пока не выйдет альтернативное ПО на основе открытого кода. Загрузите эту программу с http://www.makemkv.com. Скачать надо два файла: &#039;&#039;&#039;makemkv_vX.Y. Z_bin.tar.gz&#039;&#039;&#039; и &#039;&#039;&#039;makemkv_vX.Y. Z_oss.tar.gz&#039;&#039;&#039;, где &#039;&#039;&#039;X. Y.Z&#039;&#039;&#039; – номер версии. Распакуйте оба файла в терминале и скопируйте их в соответствующие каталоги, начав с исходного пакета:&lt;br /&gt;
&lt;br /&gt;
 tar -xf makemkv_vX.Y.Z_oss.tar.gz&lt;br /&gt;
 cd makemkv_vX.Y.Z_oss&lt;br /&gt;
&lt;br /&gt;
Затем скомпилируйте и установите ПО:&lt;br /&gt;
&lt;br /&gt;
 make -f makefile.linux&lt;br /&gt;
 sudo make -f makefile.linux install&lt;br /&gt;
&lt;br /&gt;
Повторите то же самое для двоичной сборки.&lt;br /&gt;
&lt;br /&gt;
Если возникнут сообщения об отсутствующих командах или пакетах, убедитесь, что у Вас установлены пакеты &#039;&#039;&#039;build-essential, libc6-dev, libssl-dev, libgl1-mesa-dev&#039;&#039;&#039; и &#039;&#039;&#039;libqt4-dev&#039;&#039;&#039;. Сделайте это через менеджер пакетов или командой&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install build-essential libc6-dev libssl-dev libgl1-mesa-dev libqt4-dev&lt;br /&gt;
&lt;br /&gt;
Запустите &#039;&#039;MakeMKV&#039;&#039;, откройте Ваш диск и выберите нужный заголовок и опцию &#039;&#039;&#039;Stream From The File Menu&#039;&#039;&#039;. На вид ничего не произойдет, но потом появится диалоговое окно с сообщением вроде следующего:&lt;br /&gt;
&lt;br /&gt;
 Streaming server started, web server address is&lt;br /&gt;
 http://localhost:51000/stream/title0.ts&lt;br /&gt;
&lt;br /&gt;
Запустите &#039;&#039;&#039;VLC&#039;&#039;&#039;, выберите опцию &#039;&#039;&#039;Open Network Stream&#039;&#039;&#039; из меню &#039;&#039;&#039;Media&#039;&#039;&#039; и вставьте адрес, который выведет &#039;&#039;MakeMKV&#039;&#039;. Диск Blu-ray должен начать воспроизведение. Этот метод годится и для просмотра содержимого Blu-ray на другом компьютере, без привода BD-ROM, при условии, что оба компьютера находятся в одной сети и канал связи между ними достаточно быстр. Тогда нужно будет использовать имя хоста или IP-адрес другого компьютера, а не localhost. &#039;&#039;&#039;МС&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Шаг за шагом: Трансляция Blu-Ray через &#039;&#039;MakeMKV&#039;&#039;====&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF144_93_1.jpg|Шаг 1]]&lt;br /&gt;
* &#039;&#039;&#039;1 Установите &#039;&#039;libdvdcss&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
: Первый шаг к воспроизведению DVD – убедиться через менеджер пакетов, что у вас установлена библиотека &#039;&#039;libdvdcss&#039;&#039;, и установить ее, если это не так.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF144_93_2.jpg|Шаг 2]]&lt;br /&gt;
* &#039;&#039;&#039;2 Добавьте репозиторий&#039;&#039;&#039;&lt;br /&gt;
: Если библиотека &#039;&#039;libdvdcss&#039;&#039; недоступна, добавьте Medibuntu. На сайте есть команда, которую надо ввести в терминале, чтобы добавить репозиторий.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF144_93_3.jpg|Шаг 3]]&lt;br /&gt;
* &#039;&#039;&#039;3 Откройте ваш диск Blu-ray&#039;&#039;&#039;&lt;br /&gt;
: Запустите &#039;&#039;MakeMKV&#039;&#039;, и программа обнаружит ваш привод BD и раскроет информацию о диске. Это займет несколько секунд.&lt;br /&gt;
&lt;br /&gt;
LXF144_93_4.jpg|Шаг 4&lt;br /&gt;
* &#039;&#039;&#039;4 Выберите дорожку&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;MakeMKV&#039;&#039; выделяет все дорожки, поэтому снимите выделение со всех, кроме главной. Снимите выделение с ненужных подзаголовков и аудиодорожек.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF144_93_5.jpg|Шаг 5]]&lt;br /&gt;
* &#039;&#039;&#039;5 Транслируйте поток&#039;&#039;&#039;&lt;br /&gt;
: Нажмите кнопку &#039;&#039;&#039;Stream&#039;&#039;&#039; – некоторое время будет казаться, что &#039;&#039;MakeMKV&#039;&#039; ничего не делает, а затем выведется адрес его Web-сервера.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF144_93_6.jpg|Шаг 6]]&lt;br /&gt;
* &#039;&#039;&#039;6 Не щелкайте по ссылке&#039;&#039;&#039;&lt;br /&gt;
: Вставьте адрес сервера из окна, выведенного &#039;&#039;MakeMKV&#039;&#039;, в видеопроигрыватель вроде &#039;&#039;VLC&#039;&#039; и смотрите содержимое вашего диска Blu-ray.&lt;br /&gt;
&lt;br /&gt;
==Часто задаваемые вопросы &#039;&#039;su&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Для запуска программ, требующих полномочий root, одни дистрибутивы используют &#039;&#039;sudo&#039;&#039;, а другие — более традиционный префикс (&#039;&#039;?? совершенно непонятно с каких пор команда оболочки меняющая учетные данные пользователя вдруг стала &amp;quot;префиксом&amp;quot;&#039;&#039;) &#039;&#039;su&#039;&#039;; какая из этих опций лучше?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Дело не в том, какая из этих опций лучше: они выполняют чуть разные задачи. А именно, команда &#039;&#039;sudo&#039;&#039; великолепна для предоставления прав root (&#039;&#039;совершенно не обязательно root, обидно что редакция &#039;&#039;&#039;LXF&#039;&#039;&#039; продолжает распространять это заблуждение&#039;&#039;)) конкретному пользователю, чтобы дать возможность выполнить то, что ему необходимо, не раскрывая при этом пароля root. Она дает администраторам тонкий контроль над тем, кто и что может выполнять. &#039;&#039;su&#039;&#039;, с другой стороны, дает одному пользователю доступ от имени другого – в частности, от имени root.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Это полезно знать; но мне нужен полный доступ от имени суперпользователя, значит, очевидный выбор — &#039;&#039;su&#039;&#039;?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Не столь очевидный, как вам кажется: &#039;&#039;su&#039;&#039; — сокращение не от superuser, а от switch user – переключение пользователей. &#039;&#039;su&#039;&#039; дает любому пользователю право работать от имени другого пользователя, если он знает нужный пароль. Если не указать никакого имени пользователя, то по умолчанию доступ будет предоставлен от имени root, но это не единственный вариант. Администраторы могут регистрироваться от имени других пользователей, чтобы исправить что-либо в их настройках, причем им нет нужды знать пароли этих пользователей (если root использует команду su для регистрации от имени другого пользователя, то указывать пароль не надо). Поэтому вы можете, например, исправить для пользователя &#039;&#039;crontab&#039;&#039;, дав команду:&lt;br /&gt;
&lt;br /&gt;
 su fred -c “crontab -e”&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Это интересно, но все-таки, для полного доступа от имени root, &#039;&#039;su&#039;&#039; ведь та команда, которая мне нужна?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Не совсем: &#039;&#039;su&#039;&#039;, вызванная сама по себе, даст вам привилегии суперпользователя, но вы все равно останетесь в своей исходной пользовательской среде. Все переменные, установленные для существующего пользователя, вместе с текущим каталогом, будут прежними, а путь изменяется на &#039;&#039;&#039;/sbin:/bin:/usr/sbin:/usr/bin&#039;&#039;&#039;, а значит, все, что вы установили в &#039;&#039;&#039;/usr/local&#039;&#039;&#039;, больше не будет доступно напрямую.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;А я и не знал; но это объясняет иногда наблюдаемое странное поведение. Не расскажете ли, как получить полный доступ от имени root через X-терминал к рабочему столу пользователя?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Для этого добавьте &#039;&#039;&#039;-&#039;&#039;&#039; к команде &#039;&#039;su&#039;&#039;, в самом конце, после всех остальных опций. Можно также использовать &#039;&#039;&#039;--login&#039;&#039;&#039; – так будет более удобочитаемо, но придется дольше вводить. Последняя опция предоставляет вам практически полную регистрационную среду и в 99 % случаев будет эквивалентна прямому доступу от имени суперпользователя-root, или любого другого указанного вами пользователя.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Вот это похоже на дело. Кстати, иногда мне нужно запускать от имени root графические программы, но я получаю сообщения об ошибке — мол, не настроена опция &#039;&#039;DISPLAY&#039;&#039;. Как обойти эту проблему?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Можете использовать &#039;&#039;xhost&#039;&#039; или любой другой трюк с &#039;&#039;&#039;DISPLAY&#039;&#039;&#039;, чтобы предоставить вашему пользователю, получившему администраторские права root с помощью &#039;&#039;su&#039;&#039;, доступ root для использования вашего рабочего стола; но существует более простое решение. Установите &#039;&#039;sux&#039;&#039; (произносится как ‘su ex’, а не ‘sucks’) и используйте эту команду вместо &#039;&#039;su&#039;&#039;. Она принимает те же аргументы, но устанавливает доступ к &#039;&#039;X&#039;&#039; перед вызовом &#039;&#039;su&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Краткая справка про… X-проброс==&lt;br /&gt;
&lt;br /&gt;
Основа всех графических интерфейсов Linux – &#039;&#039;X&#039;&#039;, сетевой протокол. Хотя ваш дисплей обычно связан с &#039;&#039;X&#039;&#039;-сервером на локальной машине, это вовсе не обязательно. Вам, наверное, случалось пользоваться рабочим столом на удаленном компьютере через &#039;&#039;VNC&#039;&#039; или &#039;&#039;Nx&#039;&#039;. Но недостаток этого подхода – то, что рабочий стол одного компьютера воспроизводится на другом, поскольку тогда на удаленном компьютере действительно должен быть запущен рабочий стол. А если это просто сервер без монитора, то запуск рабочего стола будет пустой тратой ресурсов.&lt;br /&gt;
&lt;br /&gt;
Вместо запуска всего рабочего стола можно просто запустить нужное вам приложение, установив соединение через &#039;&#039;SSH&#039;&#039; (то есть это безопасно даже при соединении через публичную сеть). Введите следующую команду в вашем любимом клиенте терминала:&lt;br /&gt;
&lt;br /&gt;
 ssh -X user@remote.computer &lt;br /&gt;
 someprogram&lt;br /&gt;
&lt;br /&gt;
Если &#039;&#039;someprogram&#039;&#039; – GUI-приложение, его окно должно открыться на вашем рабочем столе. Здесь следует учесть еще пару аспектов. Первый – вы должны иметь доступ к другому компьютеру через &#039;&#039;SSH&#039;&#039;, регистрируясь через пароль либо ключ. На сервере &#039;&#039;SSH&#039;&#039; другого компьютера должна быть активна опция &#039;&#039;X&#039;&#039;-проброса [X-Forwarding]. Обычно она активна по умолчанию, но лучше в этом убедиться: в файле &#039;&#039;&#039;/etc/ssh/sshd_config&#039;&#039;&#039; должна содержаться строка&lt;br /&gt;
&lt;br /&gt;
 X11Forwarding yes&lt;br /&gt;
&lt;br /&gt;
Есть еще ряд опций &#039;&#039;SSH&#039;&#039;, способных вам пригодиться. Вместо &#039;&#039;&#039;-X&#039;&#039;&#039; можно применить опцию &#039;&#039;&#039;-Y&#039;&#039;&#039;. Правда, она доступна, только если сервер &#039;&#039;SSH&#039;&#039; настроен с опцией &#039;&#039;&#039;Trusted X11 Forwarding&#039;&#039;&#039;, но в этом случае существенно ускорит вашу работу. Еще одна опция, &#039;&#039;&#039;-C&#039;&#039;&#039;, подхлестнет медленные каналы, применив сжатие всех данных, хотя для очень медленных соединений &#039;&#039;X&#039;&#039; обычно не подходит: при очень узкой полосе пропускания лучшим решением будут &#039;&#039;TightVNC&#039;&#039; или &#039;&#039;Nx&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Имейте в виду, что в Mac OS X для отображения тоже допустим &#039;&#039;X&#039;&#039;, и вы можете использовать данный метод для показа окна программы Mac на вашем дисплее Linux и наоборот.&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_87_1.jpg&amp;diff=14476</id>
		<title>Файл:LXF144 87 1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_87_1.jpg&amp;diff=14476"/>
		<updated>2012-11-20T11:39:10Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_84_1.jpg&amp;diff=14475</id>
		<title>Файл:LXF144 84 1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_84_1.jpg&amp;diff=14475"/>
		<updated>2012-11-20T11:38:57Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=LXF144:PXELinux&amp;diff=14474</id>
		<title>LXF144:PXELinux</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=LXF144:PXELinux&amp;diff=14474"/>
		<updated>2012-11-20T11:37:10Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: викификация, оформление, иллюстрация&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;: &#039;&#039;&#039;Hardcore Linux&#039;&#039;&#039; Проверьте себя на крутом проекте для продвинутых пользователей [[Категория:Учебники]]&lt;br /&gt;
&lt;br /&gt;
==Авария: Чиним поломку==&lt;br /&gt;
&lt;br /&gt;
: Хорошо спланированная система восстановления превращает мертвый кирпич в исправную машину. &#039;&#039;&#039;Джон Ламби&#039;&#039;&#039; делится наработанными решениями.&lt;br /&gt;
&lt;br /&gt;
Сутками ныряя на дно океана, команда ученых из &#039;&#039;&#039;LXF&#039;&#039;&#039; сумела проанализировать наноследы от аудиоволн в пыли на капитанском мостике «Титаника», и узнать последние слова капитана Смита перед тем, как его судно затонуло – вот они: «Да, жаль, что я не прочел эту статью про системы спасения».&lt;br /&gt;
&lt;br /&gt;
На этом уроке мы расскажем, как выбрать систему спасения, получить или собрать и испытать ее. Также мы дадим ссылки на более продвинутые системы, для любителей ремней, лонжей и строп безопасности.&lt;br /&gt;
&lt;br /&gt;
Спасательная система – это система Linux, способная запуститься на вашей машине, не трогая жесткий диск (диски), и содержащая утилиты для восстановления данных. Она должна уметь исправлять ситуации, когда «рабочая» система либо вовсе не загружается, либо загрузка не является безопасной. Вот несколько примеров, с соответствующими вариантами исправлений:&lt;br /&gt;
* &#039;&#039;&#039;Сбой или сильное повреждение диска&#039;&#039;&#039; Восстановление из резервной копии.&lt;br /&gt;
* &#039;&#039;&#039;Поврежденная структура разделов или первичный диск — например, MBR диска повреждена&#039;&#039;&#039;. Использовать &#039;&#039;TestDisk&#039;&#039; (расположен на http://www.cgsecurity.org/index.html?testdisk.html).&lt;br /&gt;
* &#039;&#039;&#039;Поврежденная корневая файловая система&#039;&#039;&#039; Применить &#039;&#039;e2fsck&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Система не загружается или нельзя выполнить вход после какого-либо обслуживания системного ПО&#039;&#039;&#039; Произвести отмену обслуживания – здесь поможет &#039;&#039;chroot&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Резервное копирование и восстановление – самые фундаментальные средства спасения, и они послужат последним прибежищем во всех перечисленных сценариях. Допустим, испарилась корневая файловая система. Это может случиться с каждым. У вас, конечно, есть резервная копия. Нет?! Тогда обратитесь к прошлым номерам (&#039;&#039;[[LXF138:Сравнение|Сравнение, LXF138]] и [[LXF142:Тема номера|Файлов больше не теряем, LXF142]]&#039;&#039;) за полезными советами.&lt;br /&gt;
&lt;br /&gt;
Простейший пример системы спасения – live CD или DVD. Читатели &#039;&#039;&#039;Linux Format&#039;&#039;&#039; получают таковой в каждом номере. Однако live CD предназначен для установки, а не для восстановления, то есть многих необходимых утилит на нем просто нет. Более того, установка одной из этих утилит в систему спасения – дело непростое. Работающий CD защищен от записи, что вызывает ограничения, и многие live CD распаковывают корневую файловую систему динамически, сильно замедляя работу. Другая система Linux, основанная на CD и предназначенная исключительно для спасения – это &#039;&#039;SystemRescueCd&#039;&#039;, который прописался на &#039;&#039;&#039;LXFDVD&#039;&#039;&#039;, начиная с номера 142.&lt;br /&gt;
&lt;br /&gt;
Мы рассмотрим две других разновидности специальных систем спасения; одну из них вы соберете и сможете использовать.&lt;br /&gt;
&lt;br /&gt;
===Спасение с флэшки===&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF144_84_1.jpg|300px]] Укажите целевой раздел для работы &#039;&#039;Slitaz Installer&#039;&#039;.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
Сейчас мы соберем систему спасения на USB-брелке (см.  &#039;&#039;Брелок или диск?&#039;&#039;). Понадобится только 120 МБ свободного места для установки компактной системы спасения, или чуть больше, если вам захочется добавить утилиты. Если у вас нет брелка достаточной вместимости, вы все-таки сможете проделать часть задания на live CD.&lt;br /&gt;
&lt;br /&gt;
Мы воспользуемся дистрибутивом Slitaz, поскольку он – один из самых компактных, но полнофункциональных систем Linux и является любимым дистрибутивом Linux Format (&#039;&#039;см. [[LXF130:Сравнение|Сравнение, LXF130]]&#039;&#039;). Он не идеален для всех и вся, но это хорошее введение в запуск Linux с брелка. Все упражнение уложится в 15–30 минут.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Slitaz 3.0 имеется на &#039;&#039;&#039;LXFDVD&#039;&#039;&#039; этого номера, то есть для нашего урока у вас есть все. Также можно скачать ISO-образ для live CD с http://www.slitaz.org/en/get. Если у вас ISO-образ, а не реальный CD, то либо запишите его на CD, либо запустите его с виртуальной машины, определив образ как CD-привод виртуальной машины. (&#039;&#039;Как это сделать, см. учебник [[LXF138:Virtualization|Виртуализация: Миграция в LXF138]].&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
Итак, Slitaz загрузился на реальной или виртуальной машине. Запустите терминал &#039;&#039;Xterm&#039;&#039;, введите &#039;&#039;su&#039;&#039; для режима root. Пароль – ‘&#039;&#039;&#039;root&#039;&#039;&#039;’. Воткните USB-брелок и убедитесь, что он виден и на нем есть разделы. Чтобы увидеть все устройства USB, введите команду:&lt;br /&gt;
&lt;br /&gt;
 less /proc/bus/usb/devices&lt;br /&gt;
&lt;br /&gt;
Чтобы проверить, является ли оно устройством SCSI – команду&lt;br /&gt;
&lt;br /&gt;
 dmesg | grep “sd[a-z]”&lt;br /&gt;
&lt;br /&gt;
И, наконец, для просмотра разделов на устройстве – команду&lt;br /&gt;
&lt;br /&gt;
 fdisk -l&lt;br /&gt;
&lt;br /&gt;
Перед запуском установщика Slitaz проверьте, есть ли Linux-раздел подходящего размера (&#039;&#039;Fdisk&#039;&#039; hex 83). Если нет, создайте его спомощью &#039;&#039;Fdisk&#039;&#039;. Укажите установщику, какой раздел брать и форматировать ли файловую систему или использовать имеющуюся.&lt;br /&gt;
&lt;br /&gt;
Для установки на жесткий диск пользуйтесь инструкциями руководства к Slitaz на http://doc.slitaz.org/en:handbook:installation. Slitaz также допускает установку на LiveUSB Media на USB-брелке. Устанавливай вы большой дистрибутив на маленькое устройство, вы, видимо, взяли бы именно такой формат, но мы так не делали.&lt;br /&gt;
&lt;br /&gt;
Примонтируйте live CD Slitaz на &#039;&#039;&#039;/media/cdrom&#039;&#039;&#039;. Если вы используете &#039;&#039;&#039;LXF132 DVD&#039;&#039;&#039;, то сначала примонтируйте DVD, и только потом – образ Slitaz, лежащий на этом DVD:&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Заголовок=Скорая помощь|Содержание=Запуская Slitaz на виртуальной машине &#039;&#039;VirtualBox&#039;&#039;, выключите EHCI-HCD – виртуальный контроллер высокоскоростного USB, чтобы использовался виртуальный контроллер UHCI-HCD. UHCI-HCD – контроллер по умолчанию для &#039;&#039;Qemu&#039;&#039; и &#039;&#039;virtmgr&#039;&#039;. Если вы пользуетесь ими, укажите для сетевого интерфейса &#039;&#039;&#039;model=e1000&#039;&#039;&#039;, поскольку именно это поддерживает ядро Slitaz по умолчанию.|Ширина=250px}}&lt;br /&gt;
&lt;br /&gt;
 mkdir /media/lxfcd&lt;br /&gt;
 mount /dev/cdrom /media/lxfcd&lt;br /&gt;
 mount -o ro,loop -t iso9660 /media/lxfcd/Distros/Slitaz/slitaz-3.0.iso /media/cdrom&lt;br /&gt;
&lt;br /&gt;
Сейчас мы готовы к переносу файлов с live CD Slitaz на USB-брелок. Вам предлагается на выбор Slitaz Installer [Установщик] или Manual Installation [Установить вручную]. Установщик всегда будет либо очищать, либо форматировать раздел, и если на нем есть данные, которые вы хотите сохранить, пользуйтесь ручным методом. Другие разделы установщик трогать не станет.&lt;br /&gt;
&lt;br /&gt;
Заметьте еще одно отличие: установщик меняет стартовые службы в &#039;&#039;&#039;/etc/rcS.conf&#039;&#039; – например, модули ядра; а ручная установка – нет, но можно отредактировать этот файл вручную. &lt;br /&gt;
&lt;br /&gt;
Файлы должны скопироваться на устройство USB. Выполните шаг в конце страницы: задайте параметр &#039;&#039;&#039;rootdelay&#039;&#039;&#039; в строке ядра &#039;&#039;Grub&#039;&#039;. Теперь отключите live CD и загрузитесь с USB-брелка.&lt;br /&gt;
&lt;br /&gt;
Cкажем, мы хотим проверить целостность раздела жесткого диска (настоящего жесткого диска, не USB-брелка). Чтобы иден-тифицировать все жесткие диски, выполните:&lt;br /&gt;
&lt;br /&gt;
 fdisk -l&lt;br /&gt;
&lt;br /&gt;
В списке должен отобразиться и ваш диск. Предположим, что это &#039;&#039;&#039;/dev/hda&#039;&#039;&#039;, а корневая файловая система &#039;&#039;&#039;/dev/hda3&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 e2fsck -v /dev/hda3&lt;br /&gt;
&lt;br /&gt;
Slitaz содержит добротный набор базовых утилит, включая web-браузер и просмотрщик PDF (можете читать статьи &#039;&#039;&#039;LXF&#039;&#039;&#039; онлайн!) Также там имеется &#039;&#039;Netcat&#039;&#039;, позволяющий пересылать данные любого типа между двумя соединенными машинами, если у вас есть доступ к командной строке обеих. Есть &#039;&#039;SSH&#039;&#039; и &#039;&#039;SCP&#039;&#039;, но это урезанные версии, отличные от тех, к которым вы привыкли. Перед их использованием прочтите это: http://www.yorkspace.com/2009/04/135. Таким образом экономят место большинство небольших дистрибутивов. Оболочка выглядит как &#039;&#039;Bash&#039;&#039;, но на самом деле это &#039;&#039;Ash&#039;&#039;, и так далее. Иногда что-то будет работать не так, как вы ожидали, так что сверяйтесь со справкой!&lt;br /&gt;
&lt;br /&gt;
===Брелок или диск?===&lt;br /&gt;
&lt;br /&gt;
На сегодняшний день популярным альтернативным оборудованием для систем спасения является флэш-привод USB, он же USB-брелок. Для хостовой системы это съемный жесткий диск. У них широкий диапазон скорости, емкости и цены. Но, в общем, они могут содержать больше данных и передавать их быстрее, чем CD или DVD, и, что более важно, допускают операции и чтения, и записи. Однако рано или поздно такие носители изнашиваются.&lt;br /&gt;
&lt;br /&gt;
Любой компьютер моложе восьми лет загрузится с любого USB-устройства при правильных установках BIOS. При входе в настройку BIOS проверьте, что разрешена загрузка с USB-устройства. Возможно, оно называется USB-BIOS. Затем поглядите на список устройств загрузки и убедитесь, что USB-брелок стоит в самом верху. Там может быть иерархия списков; в этом случае низкоуровневые списки можно найти в разделе настройки BIOS, а список верхнего уровня или Boot List – где-нибудь в другом месте. Ваш BIOS может классифицировать брелок как съемный носитель, как жесткий диск или как что-нибудь еще. Ищите и обрящете!&lt;br /&gt;
&lt;br /&gt;
===Утилиты Slitaz===&lt;br /&gt;
&lt;br /&gt;
Так что насчет средств спасения? После установки Slitaz содержит &#039;&#039;tar&#039;&#039; и &#039;&#039;gzip&#039;&#039; и немногим более того. Однако там имеется установщик RPM-пакетов и прекрасный репозиторий на http://mirror.slitaz.org/packages/3.0, где более 2300 пакетов.&lt;br /&gt;
&lt;br /&gt;
Запуская менеджер пакетов Slitaz из &#039;&#039;&#039;System Tools&#039;&#039;&#039; в первый раз, соединитесь с Интернетом, а затем перейдите на вкладку &#039;&#039;&#039;Search&#039;&#039;&#039;. В этой панели нажмите на &#039;&#039;&#039;Recharge Lists&#039;&#039;&#039;; произойдет запрос репозитория. Теперь вернитесь на главную вкладку &#039;&#039;&#039;Packages&#039;&#039;&#039; – там отобразится список доступных пакетов. Для установки, дважды щелкните по любому, который еще не установлен. Естественно, сначала вы выберете &#039;&#039;Emacs&#039;&#039;, а потом &#039;&#039;Bzip2&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
В репозитории Slitaz содержатся два пакета для резервирования/восстановления:&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;rsync&#039;&#039;&#039;&#039;&#039;&#039; Популярная программа, используемая многими, обычно с отдельным GUI.&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;Box Backup&#039;&#039;&#039;&#039;&#039;&#039; Солидного вида система онлайн-резервирования.&lt;br /&gt;
&lt;br /&gt;
Если резервирование и восстановление протестированы и работают, затраченное на это время переведено не зря, но какие утилиты нам могут понадобиться, и сколько места на диске? А это зависит от вашей конкретной установки и отводимых времени и денег. Однако при непредвиденной ситуации возможность установки дополнительных утилит на систему спасения будет преимуществом. Желательно, чтобы ваша система спасения была как можно проще: ее не придется использовать часто, но уж если придется, вы должны сразу вспомнить, как ее применить. &lt;br /&gt;
&lt;br /&gt;
Если вы пойдете дальше с системой спасения на USB-брелке и заметно расширите ее, не забудьте сделать и ее резервную копию.&lt;br /&gt;
&lt;br /&gt;
===Спасение через LAN===&lt;br /&gt;
&lt;br /&gt;
Рассмотренные системы спасения ограничены по возможностям и простоте использования, а для некоторых – временем и деньгами, нужными для их создания и поддержки.&lt;br /&gt;
&lt;br /&gt;
Сейчас мы взмахнем волшебной палочкой и покажем вам систему спасения, которой не нужны компромиссы и которая дает вам (почти) неограниченные возможности – и эта система у вас уже есть! Такой системой спасения является полный дистрибутив Linux, расположенный на отдельной машине, которая соединена с проблемной по локальной сети. Вот что сюда входит:&lt;br /&gt;
* &#039;&#039;&#039;Компьютеры&#039;&#039;&#039;&lt;br /&gt;
:*&#039;&#039;&#039;Проблемная&#039;&#039;&#039; Машина, которую спасают&lt;br /&gt;
:*&#039;&#039;&#039;Спасатель&#039;&#039;&#039; Машина, обеспечивающая службы, связанные со спасением&lt;br /&gt;
* &#039;&#039;&#039;Системы Linux (ядро и файловые системы)&#039;&#039;&#039;&lt;br /&gt;
:* &#039;&#039;&#039;Пассивная&#039;&#039;&#039; Проблемная система Linux, которую нужно спасти. Пассивная из-за того, что ее корневая файловая система не запущена, хотя на проблемной машине запущена копия ядра.&lt;br /&gt;
*: &#039;&#039;&#039;Сервер&#039;&#039;&#039; Система Linux, которая предоставляет службы сети и загрузки по сети.&lt;br /&gt;
*: &#039;&#039;&#039;Активная&#039;&#039;&#039; Система Linux, корневая файловая система которой активно работает на проблемной машине.&lt;br /&gt;
&lt;br /&gt;
На проблемной машине ядро пассивного Linux работает в сочетании с файловой системой активного. В таком раскладе мы различаем ядро и корневую файловую систему, и для спасения сочетаем их из разных источников. Почему? Потому, что ядро пассивной системы должно быть специально настроено – чтобы оно могло примонтировать свою корневую файловую систему по сети и, следовательно, привязаться к аппаратным свойствам проблемной машины, в частности, к ее сетевому адаптеру.&lt;br /&gt;
&lt;br /&gt;
На машине-спасателе сидят две системы Linux. Они могут быть и на разных дисках, и на одном, но обе должны быть полными, а их корневые файловые системы должны располагаться на разных разделах жесткого диска. Система-сервер работает на машине-спасателе и обеспечивает несколько служб для проблемной машины. Сюда входят DHCP-сервер для распределения IP-адресов и распознавания загрузчика PXE; сервер &#039;&#039;TFTP&#039;&#039; для загрузки Pxelinux и копии пассивного ядра; и сервер &#039;&#039;NFS&#039;&#039; для активной корневой файловой системы.&lt;br /&gt;
&lt;br /&gt;
====Проблемная машина====&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Заголовок=Скорая помощь|Содержание=При настройке ядра установите параметры в порядке их перечисления. Некоторые зависят от других установок и даже не предлагаются на выбор, пока не задано условие – например, &#039;&#039;&#039;CONFIG_ROOT_NFS&#039;&#039;&#039; зависит от &#039;&#039;&#039;CONFIG_IP_PNP&#039;&#039;&#039;.|Ширина=250px}}&lt;br /&gt;
&lt;br /&gt;
Проблемная машина должна иметь по крайней мере один контроллер сетевого интерфейса (NIC) с возможностью загрузки PXE – то есть NIC должен уметь получить DHCP-адрес, а после этого скачать загрузчик с DHCP-сервера. Если вы не уверены, способен ли на это ваш контроллер, войдите при следующей загрузке в настройку BIOS и проверьте список выбора загрузок. NIC, допускающий загрузку по PXE, может иметь непонятное название. Для проверки выберите устройство, перезагрузитесь и поищите анимацию в виде вращающейся диагональной линии. Если на компьютере не оказалось ни одного устройства под PXE, существуют программные (пост-BIOS) альтернативы, типа &#039;&#039;gPXE&#039;&#039; (http://etherboot.org), но они требуют больше времени на настройку и лишнего шага для загрузки этой программы с дискеты или с брелка.&lt;br /&gt;
&lt;br /&gt;
Пассивное ядро требует, чтобы в нем были встроены все компоненты для настройки сетевого интерфейса и монтирования корневой файловой системы по &#039;&#039;NFS&#039;&#039;. Сюда входят драйвер сетевого интерфейса, клиент &#039;&#039;NFS&#039;&#039;, настройка ядра и файловой системы. Следующие параметры из &#039;&#039;&#039;.config&#039;&#039;&#039; ядра должны быть установлены в &#039;&#039;&#039;Y&#039;&#039;&#039;: &#039;&#039;&#039;CONFIG_IP_PNP, CONFIG_IP_PNP_DHCP, драйвер ethernet для PXE NIC&#039;&#039;&#039; (обратите внимание – указывать как встроенный (Y) надо только один драйвер Ethernet, чтобы задать нужный при загрузке по PXE). Также установите равными &#039;&#039;&#039;Y&#039;&#039;&#039; &#039;&#039;&#039;CONFIG_EXT3_FS&#039;&#039;&#039; или &#039;&#039;&#039;CONFIG_EXT4_FS&#039;&#039;&#039; (в зависимости от типа активной корневой файловой системы) и &#039;&#039;&#039;CONFIG_NFS_FS&#039;&#039;&#039; с &#039;&#039;&#039;CONFIG_ROOT_NFS&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
После генерации этого ядра скопируйте его в каталог &#039;&#039;&#039;/tptpboot&#039;&#039;&#039; активной системы; именно там его будет искать Pxelinux (см. раздел &#039;&#039;&#039;Процедура загрузки по сети&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
====Система-сервер====&lt;br /&gt;
&lt;br /&gt;
Проверьте, все ли серверные пакеты установлены. Сюда входят: &lt;br /&gt;
* &#039;&#039;&#039;Pxelinux&#039;&#039;&#039; Это часть пакета Syslinux – см. http://syslinux.zytor.com/wiki/index.php/PXELINUX. Единственный исполняемый&lt;br /&gt;
файл, нужный в Pxelinux – это загрузчик Pxelinux &#039;&#039;&#039;pxelinux.0&#039;&#039;&#039;. Некоторые модели NIC могут потребовать достаточно новой вер-сии – для этого мы поместили на DVD &#039;&#039;&#039;pxelinux.0&#039;&#039;&#039; версии 4.03. При сомнениях пользуйтесь этим файлом.&lt;br /&gt;
* &#039;&#039;&#039;DHCP-сервер&#039;&#039;&#039; (&#039;&#039;dhcpd&#039;&#039;).&lt;br /&gt;
* &#039;&#039;&#039;TFTP-сервер&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;NFS-сервер&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
А теперь настроим несколько конфигурационных файлов, которые будут зависеть от имен и адресов в вашей системе. В примерах ниже предполагается, что &lt;br /&gt;
* NIC машины-сервера имеет IP-адрес 172.24.1.40.&lt;br /&gt;
* NIC проблемной машины имеет MAC-адрес aa:bb:cc:dd:ee:ff, и ему приписан фиксированный IP-адрес 172.24.1.42.&lt;br /&gt;
* Имя файла ядра пассивного Linux – &#039;&#039;&#039;vmlinuz-2.6.36-Passive&#039;&#039;&#039;.&lt;br /&gt;
* Активная корневая файловая система примонтирована на сервере в &#039;&#039;&#039;/mnt/A_root_fs&#039;&#039;&#039;.&lt;br /&gt;
* Файл настройки DHCP активной системы, &#039;&#039;&#039;/etc/dhcpd.conf&#039;&#039;&#039;, должен иметь примерно такой вид:&lt;br /&gt;
&lt;br /&gt;
 ddns-update-style interim;&lt;br /&gt;
 subnet 172.24.1.0 netmask 255.255.255.0 {&lt;br /&gt;
 range 172.24.1.6 172.24.1.15;&lt;br /&gt;
 default-lease-time 3600;&lt;br /&gt;
 max-lease-time 4800;&lt;br /&gt;
 option routers 172.24.1.40;&lt;br /&gt;
 option domain-name-servers 208.67.222.222;&lt;br /&gt;
 option subnet-mask 255.255.255.0;&lt;br /&gt;
 option time-offset -8;&lt;br /&gt;
 }&lt;br /&gt;
 group {&lt;br /&gt;
  filename “pxelinux.0”;&lt;br /&gt;
   host distress {&lt;br /&gt;
   hardware ethernet aa:bb:cc:dd:ee:ff;&lt;br /&gt;
   fixed-address 172.24.1.42;&lt;br /&gt;
   option host-name “distress”;&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
* Файл настройки Pxelinux для активной машины &#039;&#039;&#039;/tftpboot/pxelinux.cfg/01-aabb-cc-dd-ee-ff&#039;&#039;&#039; должен выглядеть примерно так:&lt;br /&gt;
&lt;br /&gt;
 prompt 1&lt;br /&gt;
 default linux&lt;br /&gt;
 timeout 100&lt;br /&gt;
 label linux&lt;br /&gt;
 kernel vmlinuz-2.6.36-Passive&lt;br /&gt;
 append root=/dev/nfs rw nfsroot=172.24.1.40:/mnt/A_root_fs ip=\&lt;br /&gt;
 172.24.1.42:172.24.1.40:172.24.1.40:255.255.255.0:distress::none\&lt;br /&gt;
 rootfstype=ext3&lt;br /&gt;
&lt;br /&gt;
В этом файле настройки отсутствует &#039;&#039;&#039;initrd&#039;&#039;&#039;, так как ядро само должно монтировать корневую файловую систему. Смотрите требующиеся для ядра устройства ниже, вследствие этого. &lt;br /&gt;
&lt;br /&gt;
Также заметим, что корневая файловая система монтируется ядром как &#039;&#039;&#039;rw&#039;&#039;&#039;, а не &#039;&#039;&#039;ro&#039;&#039;&#039;, так как не может проверить корневую файловую систему, примонтированную по &#039;&#039;NFS&#039;&#039;, на наличие ошибок. Время от времени на машине-сервере нужно запускать &#039;&#039;e2fsck&#039;&#039; для этой файловой системы.&lt;br /&gt;
* &#039;&#039;&#039;NFS exports&#039;&#039;&#039;&#039; добавляет пункт в &#039;&#039;&#039;/mnt/A_root_fs&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 /mnt/A_root_fs 172.24.1.42(rw,no_subtree_check,no_root_ squash)&lt;br /&gt;
&lt;br /&gt;
* Сервер TFTP должен быть настроен на использование &#039;&#039;&#039;/tftpboot&#039;&#039;&#039; в качестве своего каталога. Обычно это часть стандартной установки &#039;&#039;Xinet&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====Активная система====&lt;br /&gt;
&lt;br /&gt;
Следующие шаги необходимо проделать от имени root, когда на проблемной машине запущен пассивный Linux (то есть когда она еще не проблемная!), а на машине-спасателе запущен сервер Linux с корневой файловой системой активной машины, примонтированной в режиме чтение-запись в &#039;&#039;&#039;/mnt/A_root_fs&#039;&#039;&#039;:&lt;br /&gt;
* Скопируйте модули ядра, соответствующие &#039;&#039;&#039;vmlinuz-2.6.36-Passive&#039;&#039;&#039;. Они лежат в подкаталоге &#039;&#039;&#039;2.6.36-Passive&#039;&#039;&#039; каталога &#039;&#039;&#039;/lib/modules&#039;&#039;&#039;. Скопируйте это из пассивной корневой файловой системы Linux в такой же каталог активной корневой файловой системы, за исключением подкаталогов исходников и сборки, которые нам не нужны. Простейший способ сделать это – использовать &#039;&#039;scp&#039;&#039;. На проблемной машине введите:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 cd /lib/modules/2.6.36-Passive&lt;br /&gt;
 ssh Rescue -l root “mkdir -p /mnt/A_root_fs/lib/ modules/2.6.36-Passive”&lt;br /&gt;
 for what in k* m*; do&lt;br /&gt;
   scp -pr $what root@Rescue:/mnt/A_root_fs/lib/ modules/2.6.36-Passive/${what}&lt;br /&gt;
 done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устройства, требующиеся ядру при загрузке, должны быть предопределены в &#039;&#039;&#039;/dev/directory&#039;&#039;&#039;. Для создания узлов устройств запустите на машине-сервере следующие команды:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 cd /mnt/A_root_fs&lt;br /&gt;
 mknod dev/mem c 1 1&lt;br /&gt;
 mknod dev/null c 1 3;chmod 777 dev/null;&lt;br /&gt;
 mknod dev/kmsg c 1 11&lt;br /&gt;
 mknod dev/console c 5 1&lt;br /&gt;
 m4knod dev/ptmx c 5 2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Другие узлы устройств будут созданы &#039;&#039;udev&#039;&#039;, но эти нам нужны раньше.&lt;br /&gt;
&lt;br /&gt;
* Измените правила сети &#039;&#039;udev&#039;&#039;, чтобы предотвратить переименование им устройства Ethernet, которое используется в &#039;&#039;&#039;nfs-mount&#039;&#039;&#039;. Правила сети &#039;&#039;udev&#039;&#039; располагаются в файле с именем типа &#039;&#039;&#039;/etc/udev/rules.d/nn-net.rules&#039;&#039;&#039;, где &#039;&#039;&#039;nn&#039;&#039;&#039; – число. Добавьте пару строк для Ethernet-устройства проблемной машины, используемого в PXE загрузке, наподобие:&lt;br /&gt;
&lt;br /&gt;
 SUBSYSTEM==”net”, ACTION==”add”, KERNEL==”eth0”,NAME=”eth0”&lt;br /&gt;
 SUBSYSTEM==”net”, ACTION==”add”, SYSFS{address}==”aa:bb:cc:dd:ee:ff”, SYSFS{type}==”1”, OPTIONS:=”ignore_ device”&lt;br /&gt;
&lt;br /&gt;
Первая строка обеспечивает, чтобы любое устройство с именем &#039;&#039;&#039;eth0&#039;&#039;&#039; не переименовывалось, а вторая строка – чтобы специфический NIC игнорировался. Теперь – для гарантии, что &#039;&#039;udev&#039;&#039; не создаст на лету некоторое правило, отменяющие эти два – если файл &#039;&#039;&#039;/etc/udev/rules.d/75-persistent-net-generator.rules&#039;&#039;&#039; существует, переименуйте или сохраните его. Затем, для отключения генерации, выполните:&lt;br /&gt;
&lt;br /&gt;
 echo “# disable net-generator rules in /lib/udev” &amp;gt; /etc/udev/rules.d/75-persistent-net-generator.rules&lt;br /&gt;
&lt;br /&gt;
* Системные демоны и скрипты инициализации, способные попытаться переконфигурировать сетевой интерфейс ядра (такие как &#039;&#039;NetworkManager&#039;&#039;), должны быть отключены.&lt;br /&gt;
* Требуется специальная версия &#039;&#039;&#039;/etc/fstab&#039;&#039;&#039;, не содержащая пунктов ни для одной файловой системы локального диска, и одну – для корневой файловой системы такого формата:&lt;br /&gt;
&lt;br /&gt;
 172.24.1.40:/mnt/A_root_fs / nfs defaults 0 0&lt;br /&gt;
&lt;br /&gt;
* Средства восстановления/возврата должны быть установлены в активной машине; их можно устанавливать по необходимости использования на проблемной.&lt;br /&gt;
&lt;br /&gt;
====Процедура загрузки по сети====&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF144_87_1.jpg|300px]] В вашей системе спасения решающую роль будет играть загрузка PXE.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
Загрузите машину-спасатель с сервером Linux, примонтируйте активную корневую файловую систему в режиме чтение-запись и убедитесь, что действует правильный &#039;&#039;&#039;fstab&#039;&#039;&#039;, описанный выше. Это надо проверять всякий раз, так как активный Linux может выполняться на этой машине со своим обычным &#039;&#039;&#039;fstab&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Запустите серверы. Обратите внимание, что для Pxelinux дополнительного сервера не надо – его сервером является DHCP-сервер. После этого перейдите на проблемную машину и зайдите в настройку BIOS, выберите в качестве устройства загрузки сетевой интерфейс и загрузитесь. Система должна запросить DHCP-адрес, а затем вызвать &#039;&#039;&#039;pxelinux.0&#039;&#039;&#039;. Pxelinux получает свою конфигурацию, в которой задается ее имя и параметры пассивного ядра, включая параметры NFS-монтирования. После этого Pxelinux получает пассивное ядро и загружает его, и пассивное ядро настраивает сетевой интерфейс для NFS-монтирования корневой файловой системы, монтирует ее, и затем запускается активный Linux.&lt;br /&gt;
&lt;br /&gt;
Первым делом синхронизируйте часы на двух машинах. После этого можно заняться спасательством.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Супер-надежная сеть====&lt;br /&gt;
&lt;br /&gt;
Система спасения такого типа чуть более сложна, и ее настройка займет больше времени; и, конечно, вам потребуется второй компьютер, на котором есть два Linux. Взамен вы получите систему спасения, основанную на вашем любимом дистрибутиве, с полным набором обычно предусматриваемых функций. Загрузка будет идти быстрее, чем при любом другом способе, если скорость сети достаточно высока, и не потребуется дополнительной поддержки других ваших систем. Если у вас уже есть два компьютера и вы работаете на обоих, то стоит провести дополнительную установку и развертывание одной в качестве системы спасения. Также естественно возжелать симметрии – пусть эти машины будет системами спасения друг для друга.&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=LXF144&amp;diff=14473</id>
		<title>LXF144</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=LXF144&amp;diff=14473"/>
		<updated>2012-11-15T07:13:15Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: /* Учебники */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Linux Format 144 (5), май 2011==&lt;br /&gt;
&amp;lt;center&amp;gt;[[Изображение:LXF144.jpg|Linux Format 144 (5), май 2011]]&amp;lt;/center&amp;gt;&lt;br /&gt;
===Обзоры===&lt;br /&gt;
&lt;br /&gt;
* [[LXF144:Review1|Zbox DVD ]]&lt;br /&gt;
*: Мини-машинка – на удивление мощный инструмент работы с мультимедиа.&lt;br /&gt;
* [[LXF144:Review2|&#039;&#039;Bibble&#039;&#039; 5.2.1]]&lt;br /&gt;
*: Ни свободный, ни бесплатный... но нам все равно по душе этот редактор фото. Вот такое антагонистическое противоречие.&lt;br /&gt;
* [[LXF144:Review3|&#039;&#039;OpenShot&#039;&#039;]]&lt;br /&gt;
*: Мобилизуем свои творческие способности и слепим из видеохлама приличный клип.&lt;br /&gt;
* [[LXF144:Review4|&#039;&#039;SpaceChem&#039;&#039;]]&lt;br /&gt;
*: Головоломка, сравнимая по умственным усилиям с программированием. Бальзам на раны кодера!&lt;br /&gt;
* [[LXF144:Review5|&#039;&#039;Google Chrome&#039;&#039; 10]]&lt;br /&gt;
*: Браузер от Google не стоит на месте – обновил движок, повысил комфорт интерфейса, ускорил графику...&lt;br /&gt;
* [[LXF144:Review6|&#039;&#039;Tux Football&#039;&#039; 0.3]]&lt;br /&gt;
*: Забейте на работу и забивайте голы, да притом под музыку: это гораздо смешнее.&lt;br /&gt;
&lt;br /&gt;
===Постоянные рубрики===&lt;br /&gt;
&lt;br /&gt;
* [[LXF144:Сравнение|&#039;&#039;&#039;Сравнение&#039;&#039;&#039;:  Графопостроители]]&lt;br /&gt;
: Каждый месяц мы сравниваем тысячи программ – а вы можете отдыхать!&lt;br /&gt;
* [[LXF144:Что за штука|&#039;&#039;&#039;Что за штука...&#039;&#039;&#039; &#039;&#039;Zeitgeist&#039;&#039;?]]&lt;br /&gt;
: &#039;&#039;Zeitgeist&#039;&#039; живет и дышит тем же, что и ваш компьютер.&lt;br /&gt;
* [[LXF144:Тема номера|&#039;&#039;&#039;Тема номера&#039;&#039;&#039;: &#039;&#039;mythTV&#039;&#039;]]&lt;br /&gt;
: Следуйте нашим советам, и вы запишете ТВ-­трансляцию прямо в свой компьютер. Без шуток.&lt;br /&gt;
* [[LXF144:Interview|&#039;&#039;&#039;Интервью LXF&#039;&#039;&#039;: California dreaming]]&lt;br /&gt;
: Как превратить местечковые тусовки в полномасштабную конференцию.&lt;br /&gt;
*&#039;&#039;&#039;Спецрепортаж&#039;&#039;&#039;&lt;br /&gt;
** [[LXF144:16|16 перемен к лучшему для Ubuntu]]&lt;br /&gt;
*: Ну да, Ubuntu – самый популярный дистрибутив, но кое-что мы в нем забраковали бы.&lt;br /&gt;
** [[LXF144:helpOS|Обращение в веру Linux]]&lt;br /&gt;
*: 2011 год не станет Годом настольного Linux, если не предпринять титанических усилий.&lt;br /&gt;
** [[LXF144:projects|Управление проектами]]&lt;br /&gt;
*: В проекты свободного ПО впрягаются и лебеди, и раки, и щуки. Как организовать их слаженную работу?&lt;br /&gt;
** [[LXF144:LDAP|LDAP-аутентификация]]&lt;br /&gt;
*: Интегрируем с OpenLDAP прокси-сервер, а также почтовый и файловый серверы. Проприетарные решения отдыхают.&lt;br /&gt;
* &#039;&#039;&#039;По рецептам Д-ра Брауна&#039;&#039;&#039;&lt;br /&gt;
** [[LXF144:DrBrown1|Перемены для eth0]]&lt;br /&gt;
*: Готовится новая схема именования, якобы способствующая унификации. Но прогресс ли это?&lt;br /&gt;
** [[LXF144:DrBrown2|Тайная жизнь паролей]]&lt;br /&gt;
*: Итак, вы в курсе, что единственное, чего нет в файле &#039;&#039;&#039;passwd&#039;&#039;&#039; – это пароль; а знаете ли вы, как все это работает на самом деле?&lt;br /&gt;
** [[LXF144:DrBrown3|Запуск по расписанию]]&lt;br /&gt;
*: Взглянем поближе на некоторые уровни файлов настройки &#039;&#039;Cron&#039;&#039; и &#039;&#039;Anacron&#039;&#039;, пары утилит для создания расписания запуска регулярных задач.&lt;br /&gt;
&lt;br /&gt;
===Учебники===&lt;br /&gt;
* [[LXF144:Совет месяца|&#039;&#039;&#039;Совет месяца&#039;&#039;&#039;:   Батарея ноутбука]]&lt;br /&gt;
В этом месяце вы научитесь...&lt;br /&gt;
* [[LXF144:First_step|Любить могучий KDE]]&lt;br /&gt;
: Бездна настроек рабочего стола KDE способна вогнать Linux-новичков в ступор. Но дрейфить не надо: &#039;&#039;&#039;Боб Мосс&#039;&#039;&#039; все вам разжует и в рот положит.&lt;br /&gt;
* [[LXF144:Linux_Training|Осваивать пакеты]]&lt;br /&gt;
: &#039;&#039;&#039;Четвертая часть&#039;&#039;&#039; Тренингов от &#039;&#039;&#039;Майка Сондерса&#039;&#039;&#039; посвящена магии, скрывающейся внутри системы управления пакетами. Ни больше ни меньше.&lt;br /&gt;
* [[LXF144:WordPress|Писать в &#039;&#039;WorldPress&#039;&#039;]]&lt;br /&gt;
: Когда блог становится не просто блогом? Когда он с CMS. &#039;&#039;&#039;Энди Ченнел&#039;&#039;&#039; приглашает на прогулку по популярной платформе для публикаций, на глазах набирающей функциональность.&lt;br /&gt;
* [[LXF144:Bash|Украшать скрипты]]&lt;br /&gt;
: Конечно, скрипты &#039;&#039;Bash&#039;&#039; и так неплохи, но от графического интерфейса они сильно выигрывают. С помощью &#039;&#039;&#039;Ника Вейча&#039;&#039;&#039; командная строка станет достойной 2010-х годов.&lt;br /&gt;
* [[LXF144:codecs|Проигрывать медиа]]&lt;br /&gt;
: Ох уж эти проблемы с воспроизведением аудио и видео! Если стандартный совет «установите кодек» не помогает, обратитесь к &#039;&#039;&#039;Александру Толстому&#039;&#039;&#039;.&lt;br /&gt;
* [[LXF144:QML|Узнавать время]]&lt;br /&gt;
: Серия уроков &#039;&#039;&#039;Андрея Боровского&#039;&#039;&#039; завершается написанием на &#039;&#039;QML&#039;&#039; интерактивной программы показа точного времени.&lt;br /&gt;
* [[LXF144:erlang|Искать пароли ]]&lt;br /&gt;
: &#039;&#039;&#039;Андрей Ушаков&#039;&#039;&#039; однозначно уверен, что многоза дачность – это хорошо. Поэтому взял да и распараллелил за дачу поиска пароля по хэшу MD5.&lt;br /&gt;
* [[LXF144:PXELinux|Воскрешать ПК]]&lt;br /&gt;
: А вдруг стрясется ужасное? У вас должны быть наготове средства реанимации, считает &#039;&#039;&#039;Джон Ламби&#039;&#039;&#039;. На помощь, PXELinux!&lt;br /&gt;
&lt;br /&gt;
===[[LXF144:Ответы|Ответы]]===&lt;br /&gt;
: Услышав сигнал SOS, наши герои спешат на помощь.&lt;br /&gt;
&lt;br /&gt;
=== Школа LXF  ===&lt;br /&gt;
&lt;br /&gt;
*[[LXF144:School1|В едином стиле]] &lt;br /&gt;
: Можно ли совместить ярых антагонистов – Windows и Linux – в качестве основы для обучения? Как примирить два враждующих лагеря поклонников, расскажет &#039;&#039;&#039;Александр Казанцев&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:%D0%A6%D0%B8%D0%BA%D0%BB/Erlang&amp;diff=14472</id>
		<title>Шаблон:Цикл/Erlang</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:%D0%A6%D0%B8%D0%BA%D0%BB/Erlang&amp;diff=14472"/>
		<updated>2012-11-15T07:11:48Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{цикл|Erlang|&lt;br /&gt;
* [[LXF143:erlang|&#039;&#039;Erlang&#039;&#039;: Язык для про­цес­сов]]&lt;br /&gt;
* [[LXF144:erlang|&#039;&#039;Erlang&#039;&#039;: Много-много задач]]&lt;br /&gt;
}}&lt;br /&gt;
[[Категория:Учебники]]&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:%D0%A6%D0%B8%D0%BA%D0%BB/Erlang&amp;diff=14471</id>
		<title>Шаблон:Цикл/Erlang</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:%D0%A6%D0%B8%D0%BA%D0%BB/Erlang&amp;diff=14471"/>
		<updated>2012-11-15T07:11:38Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{цикл|Erlang|&lt;br /&gt;
* [[LXF143:erlang|&#039;&#039;Erlang&#039;&#039;: Язык для про­цес­сов]]&lt;br /&gt;
* [[LXF144:erlang|&#039;&#039;Erlang&#039;&#039;: Много-много задач&lt;br /&gt;
}}&lt;br /&gt;
[[Категория:Учебники]]&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=LXF144:erlang&amp;diff=14470</id>
		<title>LXF144:erlang</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=LXF144:erlang&amp;diff=14470"/>
		<updated>2012-11-15T07:10:12Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: викификация, оформление, иллюстрация&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;: &#039;&#039;&#039;&#039;&#039;Erlang&#039;&#039;&#039;&#039;&#039; Описывается следующей формулой: функциональный язык + процессы [[Категория:Учебники]]&lt;br /&gt;
&lt;br /&gt;
{{Цикл/Erlang}}&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;Erlang&#039;&#039;: Много-много задач==&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Андрей Ушаков&#039;&#039;&#039; завершает серию уроков по &#039;&#039;Erlang&#039;&#039; рассмотрением проблемы распараллеливания задач.&lt;br /&gt;
&lt;br /&gt;
О важности многозадачности в современных приложениях сказано уже так много, что смысла повторяться, пожалуй, нет. Многозадачность применима не всегда: в некоторых случаях сам алгоритм не поддерживает распараллеливание, в некоторых случаях побочные затраты на поддержку многозадачности (например, время переключения контекста в многопоточных приложениях) больше, чем получаемая от нее выгода. Если же многозадачность возможна и от нее есть выгода, то существует проблема разделяемого состояния: если с совместно используемыми объектами работать неграмотно, то их состояние может «испортиться».&lt;br /&gt;
&lt;br /&gt;
Конечно, при аккуратной (и правильной) работе с разделяемым состоянием проблем не возникает, но увеличивается сложность кода по сравнению с однозадачной версией. &lt;br /&gt;
&lt;br /&gt;
Большинства этих проблем в &#039;&#039;Erlang&#039;&#039; просто нет. Конечно, если алгоритм не поддерживает распараллеливание, то исправить это можно только выбором другого алгоритма. И многозадачная версия практически всегда будет больше и сложнее, чем однозадачная. С другой стороны, создание и уничтожение процессов (это процессы самого языка &#039;&#039;Erlang&#039;&#039;, а не ОС) – очень быстрая операция, памяти и ресурсов процессы потребляют мало, создавать их можно много (максимальное количество процессов по умолчанию – 32768, но, используя флаг &#039;&#039;&#039;+P&#039;&#039;&#039;, максимальное количество можно довести до 134217727). И, что является большим плюсом, процессы в &#039;&#039;Erlang&#039;&#039; полностью независимы и не содержат совместно используемых объектов. Если двум процессам необходимо взаимодействие, это взаимодействие выглядит следующим образом: один процесс посылает сообщение, а другой процесс это сообщение принимает. Посылка и обработка сообщений происходят очень быстро. Поэтому, если перед вами встает вопрос, использовать ли многозадачность в &#039;&#039;Erlang&#039;&#039; – ответ всегда один: если алгоритм позволяет это, то да.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим примитивы, которые мы будем применять для построения многозадачной программы.&lt;br /&gt;
* &#039;&#039;&#039;Pid = spawn(Fun)&#039;&#039;&#039; Создает новый процесс, который будет выполнять функцию &#039;&#039;&#039;Fun&#039;&#039;&#039; и возвращать идентификатор этого процесса (process ID). Идентификатор процесса &#039;&#039;&#039;PID&#039;&#039;&#039; – один из типов данных в &#039;&#039;Erlang&#039;&#039;; он используется для взаимодействия процессов друг с другом (см. далее).&lt;br /&gt;
* &#039;&#039;&#039;Pid! Message&#039;&#039;&#039; Посылка сообщения &#039;&#039;&#039;Message&#039;&#039;&#039; процессу с идентификатором &#039;&#039;&#039;Pid&#039;&#039;&#039;. Сообщение посылается асинхронно, и отправитель не ждет, когда получатель получит сообщение. Если необходимо, чтобы процесс-получатель мог послать отправителю что-нибудь обратно, то процесс-получатель должен знать идентификатор отправителя. Самый удобный способ сделать это – отослать &#039;&#039;&#039;Pid&#039;&#039;&#039; отправителя в сообщении, например, так: &#039;&#039;&#039;ReseiverPID! {Message,self()}&#039;&#039;&#039; (функция &#039;&#039;&#039;self()&#039;&#039;&#039; позволяет процессу узнать свой &#039;&#039;&#039;Pid&#039;&#039;&#039;).&lt;br /&gt;
* &#039;&#039;&#039;receive ... end&#039;&#039;&#039; Получение и обработка процессом сообщений из своей очереди.&lt;br /&gt;
&lt;br /&gt;
Конструкция &#039;&#039;&#039;receive&#039;&#039;&#039; выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
 receive&lt;br /&gt;
   Pattern1 [when Guard1] -&amp;gt; Expression1;&lt;br /&gt;
   Pattern2 [when Guard2] -&amp;gt; Expression2;&lt;br /&gt;
   …&lt;br /&gt;
 [after Time -&amp;gt; AfterExpression]&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Когда сообщение доставляется процессу, оно помещается в очередь сообщений данного процесса. Когда выполнение процесса попадает в конструкцию &#039;&#039;&#039;receive&#039;&#039;&#039;, процесс просматривает свою очередь сообщений и последовательно проверяет каждое сообщение на соответствие одному из шаблонов &#039;&#039;&#039;PatternN&#039;&#039;&#039; (и на соответствие &#039;&#039;&#039;guard&#039;&#039;&#039;-выражению &#039;&#039;&#039;GuardN&#039;&#039;&#039;, если такое есть). Как только соответствие будет установлено, на этом поиск оканчивается, и конструкция &#039;&#039;&#039;receive&#039;&#039;&#039; возвратит значение – соответствующее выражение &#039;&#039;&#039;ExpressionN&#039;&#039;&#039;. Если для данного сообщения ни одного соответствия не найдено, то данное сообщение откладывается обратно в очередь (оно будет просмотрено в следующей конструкции &#039;&#039;&#039;receive&#039;&#039;&#039;), и для просмотра берется следующее из очереди. Если все сообщения из очереди просмотрены и ни для одного из них не найдено соответствия, то, что будет происходить дальше, зависит от наличия секции &#039;&#039;&#039;after&#039;&#039;&#039;. Если секции &#039;&#039;&#039;after&#039;&#039;&#039; нет, то конструкция &#039;&#039;&#039;receive&#039;&#039;&#039; будет ждать, пока в очереди не появится новое сообщение, если же секция &#039;&#039;&#039;after&#039;&#039;&#039; есть, то через &#039;&#039;&#039;Time&#039;&#039;&#039; миллисекунд конструкция &#039;&#039;&#039;receive&#039;&#039;&#039; возвратит значение выражения &#039;&#039;&#039;AfterExpression&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Вот в принципе и все необходимое (для начала) знание, чтобы создавать многозадачные приложения на &#039;&#039;Erlang&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Следует сказать пару слов о создании распределенных приложений. При создании распределенных приложений используются те же самые примитивы, что и при создании многозадачных приложений. Новым тут является только понятие узла – экземпляра виртуальной машины, запущенной локально либо удаленно (для того, чтобы экземпляр виртуальной машины считался узлом, при запуске необходимо указать его имя, например, при помощи ключей &#039;&#039;&#039;-sname&#039;&#039;&#039; либо &#039;&#039;&#039;-name&#039;&#039;&#039;). После создания узла &#039;&#039;&#039;Node&#039;&#039;&#039; на нем можно создать новый процесс при помощи функции &#039;&#039;&#039;spawn: Pid = spawn(Node, Fun)&#039;&#039;&#039;. После этого вся работа с процессом на удаленном узле строится точно так же, как и с локальными процессами: используется идентификатор созданного процесса &#039;&#039;&#039;Pid&#039;&#039;&#039; для взаимодействия с ним.&lt;br /&gt;
&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Для демонстрации всего рассказанного выше (и чтобы не заскучать), давайте создадим простую распределенную систему - а точнее, создадим обычный и распределенный вариант одной и той же задачи и сравним их. Возьмем в качестве примера задачу поиска пароля по хэшу MD5 и решим ее обычным перебором. Для простоты ограничим набор символов, используемых в пароле, только цифровыми символами (0 ... 9).&lt;br /&gt;
&lt;br /&gt;
Для начала введем несколько вспомогательных функций, которые будут использоваться в обоих вариантах. Во время работы мы захотим оценить время, затрачиваемое тем или иным вариантом. Текущее время в формате &#039;&#039;&#039;{MegaSeconds, Seconds, MicroSeconds}&#039;&#039;&#039; мы можем получить, вызвав функцию &#039;&#039;&#039;now()&#039;&#039;&#039;. Вспомогательный метод &#039;&#039;&#039;calc_work_time/2&#039;&#039;&#039; позволит вычислить количество секунд между двумя измерениями:&lt;br /&gt;
&lt;br /&gt;
 calc_work_time(Now1, Now2) -&amp;gt;&lt;br /&gt;
   {MegaSecs1, Secs1, MicroSecs1} = Now1,&lt;br /&gt;
   {MegaSecs2, Secs2, MicroSecs2} = Now2,&lt;br /&gt;
   (MegaSecs2-MegaSecs1)*1000000+(Secs2-Secs1)+(MicroSecs2-MicroSecs1)*1.0e-6.&lt;br /&gt;
&lt;br /&gt;
Для поиска нам нужно уметь генерировать очередную строку, после чего вычислять для нее хэш MD5 и сравнивать с исходным. Для генерации мы каждой строке сопоставим целочисленный номер так, чтобы номера и строки располагались в одном порядке: строке “0” будет соответствовать номер 0, строке “1” – номер 1, …, строке “00” – номер 10, строке “01” – номер 11, и т.д. Вспомогательные методы &#039;&#039;&#039;generate_string_by_number/2, generate_string_by_number/4&#039;&#039;&#039; и &#039;&#039;&#039;correct_number/3&#039;&#039;&#039; реализуют данную функциональность. С точки зрения внешнего (относительно этих методов) кода, метод &#039;&#039;&#039;generate_string_by_number/2&#039;&#039;&#039; является интерфейсом к данной функциональности.&lt;br /&gt;
&lt;br /&gt;
 generate_string_by_number(0, Alphabet) -&amp;gt; [lists:nth(1,Alphabet)];&lt;br /&gt;
 generate_string_by_number(Number, Alphabet) -&amp;gt; &lt;br /&gt;
   {CorrectNumber, StringLength} = correct_number(Number,length(Alphabet), 1),&lt;br /&gt;
 generate_string_by_number(CorrectNumber, StringLength,Alphabet, []).&lt;br /&gt;
 generate_string_by_number(0, StringLength, [First|_],GeneratedPart) -&amp;gt; &lt;br /&gt;
   lists:duplicate(StringLength-length(GeneratedPart),First) ++ GeneratedPart;&lt;br /&gt;
 generate_string_by_number(Rest, StringLength, Alphabet,GeneratedPart) -&amp;gt; &lt;br /&gt;
   Index = (Rest rem length(Alphabet)),&lt;br /&gt;
   NewRest = Rest div length(Alphabet), &lt;br /&gt;
   generate_string_by_number(NewRest, StringLength, Alphabet, [lists:nth(Index+1, Alphabet)]++GeneratedPart).&lt;br /&gt;
 correct_number(Number, AlphabetCount, CheckStringLength) -&amp;gt;&lt;br /&gt;
   StringCountInRange = trunc(math:pow(AlphabetCount, CheckStringLength)),&lt;br /&gt;
 if&lt;br /&gt;
    Number &amp;lt; StringCountInRange -&amp;gt; {Number,CheckStringLength};&lt;br /&gt;
    true -&amp;gt; correct_number(Number-StringCountInRange, AlphabetCount, CheckStringLength+1)&lt;br /&gt;
 end.&lt;br /&gt;
&lt;br /&gt;
И что еще нам нужно из вспомогательных методов – это метод, позволяющий получить максимальный целочисленный номер для заданной максимальной длины строки. Это делает метод &#039;&#039;&#039;generate_number_by_string_length/2&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 generate_number_by_string_length(MaxStringLength,AlphabetCount) -&amp;gt;&lt;br /&gt;
   (AlphabetCount*(1-trunc(math:pow(AlphabetCount,MaxStringLength))) div (1-AlphabetCount))-1.&lt;br /&gt;
&lt;br /&gt;
Со вспомогательными функциями все, и теперь можно перейти к основным функциям. Рассмотрение мы начнем со случая простого последовательного поиска. В этом случае нам понадобятся всего два метода: для запуска поиска (&#039;&#039;&#039;search/0&#039;&#039;&#039;) и для просмотра очередного варианта (&#039;&#039;&#039;search/4&#039;&#039;&#039;). Обратите внимание, что поиск не содержит явного цикла для просмотра вариантов: вместо этого метод просмотра очередного варианта (&#039;&#039;&#039;search/4&#039;&#039;&#039;) вызывает рекурсивно сам себя для просмотра следующего варианта. А благодаря тому, что в этом методе рекурсия хвостовая, этот метод разворачивается в цикл. Очень элегантно, не правда ли?&lt;br /&gt;
&lt;br /&gt;
 search(SourceMD5, _, CurrentNumber, MaxNumber)&lt;br /&gt;
 when CurrentNumber &amp;gt; MaxNumber -&amp;gt; {cant_find, SourceMD5};&lt;br /&gt;
 search(SourceMD5, Alphabet, CurrentNumber, MaxNumber) -&amp;gt;&lt;br /&gt;
   GeneratedString = generate_string_by_number(CurrentNumber, Alphabet),&lt;br /&gt;
   GeneratedStringMD5 = erlang:md5(GeneratedString),&lt;br /&gt;
   if&lt;br /&gt;
      SourceMD5 == GeneratedStringMD5 -&amp;gt; GeneratedString;&lt;br /&gt;
      true -&amp;gt; search(SourceMD5, Alphabet, CurrentNumber+1, MaxNumber)&lt;br /&gt;
 end.&lt;br /&gt;
 search() -&amp;gt;&lt;br /&gt;
   Alphabet = [$0, $1, $2, $3, $4, $5, $6, $7, $8, $9],&lt;br /&gt;
   Source = “01234321”,&lt;br /&gt;
   SourceMD5 = erlang:md5(Source),&lt;br /&gt;
   Now1 = now(),&lt;br /&gt;
   Result = search(SourceMD5, Alphabet, 0, generate_number_by_string_length(10, length(Alphabet))),&lt;br /&gt;
   Now2 = now(), &lt;br /&gt;
   {calc_work_time(Now1, Now2), Result}.&lt;br /&gt;
&lt;br /&gt;
Осталось только привести объявления модуля и экспортируемых функций:&lt;br /&gt;
&lt;br /&gt;
 -module(md5_sequential_search).&lt;br /&gt;
 -export([search/0]).&lt;br /&gt;
&lt;br /&gt;
Вот и все с последовательным поиском. Запускаем среду выполнения &#039;&#039;Erlang&#039;&#039;, в консоли &#039;&#039;Erlang&#039;&#039; запускаем сначала компиляцию &#039;&#039;&#039;с(md5_sequential_search)&#039;&#039;&#039;., а потом и выполнение нашей программы &#039;&#039;&#039;md5_sequential_search:search()&#039;&#039;&#039;. При запуске на моей машине (ноутбук Acer Aspire 7520G: процессор AMD Turion64×2 TL-58 1,9 ГГц, 2ГБ ОЗУ), приложение находит искомую строку “01234321” по ее хэшу MD5 за 158,234 секунд.&lt;br /&gt;
&lt;br /&gt;
Перейдем теперь к распределенному варианту. В нем мы также используем вспомогательные функции &#039;&#039;&#039;calc_work_time/2&#039;&#039;&#039; и &#039;&#039;&#039;generate_string_by_number/2&#039;&#039;&#039;. Но, в отличие от обычного варианта, мы введем несколько ролей, которые будут соответствовать разным компонентам, выполняющимися в разных &#039;&#039;Erlang&#039;&#039;-процессах. Это следующие роли: инициатор, координатор, обработчики.&lt;br /&gt;
&lt;br /&gt;
Инициатор создает необходимое количество обработчиков (каждый в своем процессе), после чего создает координатор (тоже в своем процессе) и передает ему список идентификаторов процессов обработчиков. Координатор проходится по списку обработчиков и каждому из них посылает сообщение (&#039;&#039;&#039;{are_you_ready, CurrentPID, SourceMD5, Alphabet}&#039;&#039;&#039;) с требованием подтвердить свою готовность. Обработчик, получая данное сообщение, отправляет координатору сообщение с подтверждением готовности (&#039;&#039;&#039;{ready_master,HandlerPID}&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Координатор, после получения подтверждения о готовности, посылает сообщение с заданием на поиск хэша MD5 для строк, чей номер лежит в диапазоне &#039;&#039;&#039;[FromNumber, ToNumber]&#039;&#039;&#039; (&#039;&#039;&#039;{search,FromNumber, ToNumber}&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Обработчик при получении данного сообщения начинает поиск: если для какой-либо строки будет найдено соответствие с искомым MD5-хэшем, то координатору будет послано сообщение о том, что строка найдена (&#039;&#039;&#039;{found, GeneratedString}&#039;&#039;&#039;); если же обработчик в заданном ему диапазоне ничего не найдет, то будет послано соответствующее сообщение координатору (&#039;&#039;&#039;{not_found, HandlerPID}&#039;&#039;&#039;). Если координатор получает сообщение, что искомая строка найдена, он это сообщение пересылает инициатору и останавливает свою работу и работу обработчиков. Получив от обработчика сообщение, что в заданном диапазоне ничего не найдено, координатор посылает обработчику новое задание с новым диапазоном. Если обработчиками просмотрено все множество строк (из нашего ограничения на длину и набор символов) и не найдено ни одной строки, MD5-хэш которой совпадает с искомым, то инициатору будет послано соответствующее сообщение (&#039;&#039;&#039;{not_found}&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Вот и все о разных компонентах и их взаимодействии.&lt;br /&gt;
&lt;br /&gt;
Давайте теперь посмотрим, как это все реализовано – и начнем с обработчиков:&lt;br /&gt;
&lt;br /&gt;
 start_search_handler() -&amp;gt;&lt;br /&gt;
   receive&lt;br /&gt;
      {are_you_ready, MasterPID, SourceMD5, Alphabet} -&amp;gt;&lt;br /&gt;
         MasterPID ! {ready_master, self()},&lt;br /&gt;
         search_handler(MasterPID, SourceMD5, Alphabet)&lt;br /&gt;
 end.&lt;br /&gt;
 search_handler(MasterPID, SourceMD5, Alphabet) -&amp;gt;&lt;br /&gt;
    receive&lt;br /&gt;
       {search, FromNumber, ToNumber} -&amp;gt;&lt;br /&gt;
          portion_search(MasterPID, SourceMD5, FromNumber, ToNumber, Alphabet),&lt;br /&gt;
          search_handler(MasterPID, SourceMD5, Alphabet)&lt;br /&gt;
 end.&lt;br /&gt;
 portion_search(MasterPID, _, ToNumber, ToNumber, _) -&amp;gt;&lt;br /&gt;
    MasterPID!{not_found, self()};&lt;br /&gt;
 portion_search(MasterPID, SourceMD5, FromNumber, ToNumber, Alphabet) -&amp;gt;&lt;br /&gt;
      GeneratedString = generate_string_by_number(FromNumber, Alphabet),&lt;br /&gt;
      GeneratedStringMD5 = erlang:md5(GeneratedString),&lt;br /&gt;
 if&lt;br /&gt;
     SourceMD5 == GeneratedStringMD5 -&amp;gt; MasterPID!{found, GeneratedString};&lt;br /&gt;
     true -&amp;gt; portion_search(MasterPID, SourceMD5, FromNumber+1, ToNumber, Alphabet)&lt;br /&gt;
 end.&lt;br /&gt;
&lt;br /&gt;
Метод &#039;&#039;&#039;start_search_handler/0&#039;&#039;&#039; используется для запуска обработчика, метод &#039;&#039;&#039;search_handler/3&#039;&#039;&#039; – обработчик сообщений от координатора, в методе &#039;&#039;&#039;portion_search/5&#039;&#039;&#039; происходит поиск хэша MD5 для строк, чей номер лежит в диапазоне &#039;&#039;&#039;[FromNumber, ToNumber]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Теперь перейдем к координатору:&lt;br /&gt;
&lt;br /&gt;
 main_search_handler(MasterPID, SourceMD5, Alphabet, PortionSize, MaxNumber, HandlerPIDList) -&amp;gt;&lt;br /&gt;
    process_flag(trap_exit, true),&lt;br /&gt;
    CurrentPID = self(),&lt;br /&gt;
    lists:foreach(fun(HandlerPID) -&amp;gt;&lt;br /&gt;
         link(HandlerPID),&lt;br /&gt;
         HandlerPID ! {are_you_ready, CurrentPID, SourceMD5, Alphabet}&lt;br /&gt;
         end, HandlerPIDList),&lt;br /&gt;
  main_search_handler(MasterPID, SourceMD5, Alphabet, 0, PortionSize, MaxNumber, 0).&lt;br /&gt;
  main_search_handler(MasterPID, _, _, _, _, MaxNumber, ResponseCount)&lt;br /&gt;
  when ResponseCount &amp;gt;= MaxNumber -&amp;gt;&lt;br /&gt;
        MasterPID!{not_found},&lt;br /&gt;
        exit(stop_work);&lt;br /&gt;
  main_search_handler(MasterPID, SourceMD5, Alphabet, CurrentNumber, PortionSize, MaxNumber, ResponseCount)&lt;br /&gt;
  when CurrentNumber &amp;gt;= MaxNumber -&amp;gt;&lt;br /&gt;
     receive&lt;br /&gt;
        {stop} -&amp;gt; exit(stop_work);&lt;br /&gt;
        {found, GeneratedString} -&amp;gt; MasterPID!{found, GeneratedString},&lt;br /&gt;
        exit(stop_work);&lt;br /&gt;
        {not_found, _} -&amp;gt; main_search_handler(MasterPID, SourceMD5, Alphabet, MaxNumber, PortionSize, MaxNumber,&lt;br /&gt;
           ResponseCount+PortionSize)&lt;br /&gt;
        end;&lt;br /&gt;
  main_search_handler(MasterPID, SourceMD5, Alphabet, CurrentNumber, PortionSize, MaxNumber, ResponseCount) -&amp;gt;&lt;br /&gt;
     receive&lt;br /&gt;
        {stop} -&amp;gt; exit(stop_work);&lt;br /&gt;
        {ready_master, HandlerPID} -&amp;gt;&lt;br /&gt;
             ToNumber = min(CurrentNumber+PortionSize, MaxNumber+1),&lt;br /&gt;
        HandlerPID!{search, CurrentNumber, ToNumber},&lt;br /&gt;
        main_search_handler(MasterPID, SourceMD5, Alphabet, ToNumber, PortionSize, MaxNumber, ResponseCount);&lt;br /&gt;
     {found, GeneratedString} -&amp;gt; MasterPID!{found, GeneratedString},&lt;br /&gt;
        exit(stop_work);&lt;br /&gt;
     {not_found, HandlerPID} -&amp;gt;&lt;br /&gt;
        ToNumber = min(CurrentNumber+PortionSize, MaxNumber+1),&lt;br /&gt;
        HandlerPID!{search, CurrentNumber, ToNumber},&lt;br /&gt;
        main_search_handler(MasterPID, SourceMD5, Alphabet, ToNumber, PortionSize, MaxNumber, ResponseCount+PortionSize)&lt;br /&gt;
 end.&lt;br /&gt;
&lt;br /&gt;
Метод &#039;&#039;&#039;main_search_handler/6&#039;&#039;&#039; используется для запуска координатора и отсылки сообщений обработчикам с требованием подтвердить свою готовность; метод &#039;&#039;&#039;main_search_handler/7&#039;&#039;&#039; используется для взаимодействия с обработчиками. &lt;br /&gt;
&lt;br /&gt;
И, наконец, инициатор. На самом деле у нас два инициатора: один (метод &#039;&#039;&#039;start_search/0&#039;&#039;&#039;) – для запуска простого многозадач-ного поиска на данном узле (экземпляре виртуальной машины), другой (метод &#039;&#039;&#039;start_distributed_search/0&#039;&#039;&#039;) – для запуска распределенного поиска на разных узлах (на одном или разных компьютерах). Самая большая разница между ними в том, как (и где) создаются обработчики (координатор создается на том же узле, что и инициатор). При простом многозадачном поиске обработчики создаются вызовом &#039;&#039;&#039;spawn/1&#039;&#039;&#039; (версия &#039;&#039;&#039;spawn&#039;&#039;&#039;, в которой не указывается узел). При распределенном поиске обработчики создаются вызовом &#039;&#039;&#039;spawn/2&#039;&#039;&#039; (версия &#039;&#039;&#039;spawn&#039;&#039;&#039;, в которой указывается узел, где создается процесс). В нашем модельном инициаторе список узлов, на которых будут создаваться процессы, задается прямо в теле метода; в реальном же приложении список узлов будет, скорее всего, браться из конфигурационного файла.&lt;br /&gt;
&lt;br /&gt;
  start_distributed_search() -&amp;gt;&lt;br /&gt;
     Alphabet = [$0, $1, $2, $3, $4, $5, $6, $7, $8, $9],&lt;br /&gt;
     Source = “01234321”,&lt;br /&gt;
     SourceMD5 = erlang:md5(Source),&lt;br /&gt;
     MaxNumber = generate_number_by_string_length(10, length(Alphabet)),&lt;br /&gt;
     ProcessCount = 4,&lt;br /&gt;
     PortionSize = 100000,&lt;br /&gt;
     NodeList = [&#039;node1@beerzone2&#039;, &#039;node2@beerzone2&#039;],&lt;br /&gt;
     {HandlerPIDList, _} = lists:mapfoldl(fun(_, CurrentNodeList) -&amp;gt;&lt;br /&gt;
          [NodeHead | NodeOther] = CurrentNodeList,&lt;br /&gt;
          HandlerPID = spawn(NodeHead, fun() -&amp;gt; start_search_handler() end),&lt;br /&gt;
          {HandlerPID, NodeOther++[NodeHead]}&lt;br /&gt;
      end, NodeList, lists:seq(1, ProcessCount)),&lt;br /&gt;
      Now1 = now(),&lt;br /&gt;
      CurrentPID = self(),&lt;br /&gt;
      MainHandlerPID = spawn(fun() -&amp;gt; main_search_handler(CurrentPID, SourceMD5, Alphabet, PortionSize, &lt;br /&gt;
          MaxNumber, HandlerPIDList) end),&lt;br /&gt;
      Result = process_response(),&lt;br /&gt;
      MainHandlerPID!{stop},&lt;br /&gt;
      Now2 = now(),&lt;br /&gt;
      {calc_work_time(Now1, Now2), Result}.&lt;br /&gt;
  start_search() -&amp;gt;&lt;br /&gt;
      Alphabet = [$0, $1, $2, $3, $4, $5, $6, $7, $8, $9],&lt;br /&gt;
      Source = “01234321”,&lt;br /&gt;
      SourceMD5 = erlang:md5(Source),&lt;br /&gt;
      MaxNumber = generate_number_by_string_length(10, length(Alphabet)),&lt;br /&gt;
      ProcessCount = 2,&lt;br /&gt;
      PortionSize = 100000,&lt;br /&gt;
      HandlerPIDList = [spawn(fun() -&amp;gt; start_search_handler() end) || _ &amp;lt;- lists:seq(1, ProcessCount)],&lt;br /&gt;
      Now1 = now(),&lt;br /&gt;
      CurrentPID = self(),&lt;br /&gt;
      MainHandlerPID = spawn(fun() -&amp;gt; main_search_handler(CurrentPID, SourceMD5, Alphabet, PortionSize,&lt;br /&gt;
          MaxNumber, HandlerPIDList) end),&lt;br /&gt;
      Result = process_response(),&lt;br /&gt;
      MainHandlerPID!{stop},&lt;br /&gt;
      Now2 = now(),&lt;br /&gt;
      {calc_work_time(Now1, Now2), Result}.&lt;br /&gt;
  process_response() -&amp;gt;&lt;br /&gt;
      receive&lt;br /&gt;
           Response -&amp;gt; Response&lt;br /&gt;
 end.&lt;br /&gt;
&lt;br /&gt;
Осталось только привести объявления модуля и экспортируемых функций:&lt;br /&gt;
&lt;br /&gt;
 -module(md5_distributed_search).&lt;br /&gt;
 -export([start_search/0, start_distributed_search/0]).&lt;br /&gt;
&lt;br /&gt;
Чтобы запустить распределенный поиск, необходимо сделать следующее. Предположим, что имя компьютера – &#039;&#039;&#039;beerzone2&#039;&#039;&#039; (как у меня). Мы хотим запустить обработчики на узлах &#039;&#039;&#039;node1@beerzone2, node2@beerzone2&#039;&#039;&#039;. В теле программы, в методе &#039;&#039;&#039;start_distributed_search/0&#039;&#039;&#039; устанавливаем список узлов &#039;&#039;&#039;NodeList&#039;&#039;&#039; в &#039;&#039;&#039;[&#039;node1@beerzone2&#039;, &#039;node2@beerzone2&#039;]&#039;&#039;&#039;. После этого мы создаем три экземпляра консоли: в двух мы запускаем виртуальную машину с ключами &#039;&#039;&#039;-sname node1&#039;&#039;&#039; и &#039;&#039;&#039;-sname node2&#039;&#039;&#039;, а в третьей – виртуальную машину с ключом &#039;&#039;&#039;-sname main&#039;&#039;&#039; (очень важно, чтобы все взаимодействующие узлы в распределенной системе имели имена одного типа: либо короткие, либо длинные). В главной консоли (запущенной с ключом &#039;&#039;&#039;-sname main&#039;&#039;&#039;) запускаю сначала компиляцию &#039;&#039;&#039;с(md5_distributed_search)&#039;&#039;&#039;., а потом и выполнение нашей программы &#039;&#039;&#039;md5_distributed_search:start_distributed_search()&#039;&#039;&#039;. При запуске на моей машине (ноутбук Acer Aspire 7520G: процессор AMD Turion64 x2 TL-58 1,9 ГГц, 2 ГБ ОЗУ), приложение находит искомую строку “01234321” по ее хэшу MD5 за 76,984 секунды.&lt;br /&gt;
&lt;br /&gt;
===В качестве заключения===&lt;br /&gt;
&lt;br /&gt;
Итак, написать распределенную систему для решения любой задачи легко. Язык &#039;&#039;Erlang&#039;&#039; позволяет создавать любое серверное и распределенное ПО любой сложности, по производительности не уступающее такому же ПО, написанному на других языках, а по качеству кода и надежности сильно превосходящее их.&lt;br /&gt;
&lt;br /&gt;
===Полезные сайты и книги===&lt;br /&gt;
&lt;br /&gt;
* http://www.erlang.org/ – главный сайт (с документацией и исходным кодом среды).&lt;br /&gt;
* http://www.trapexit.org/ – сайт &#039;&#039;Erlang&#039;&#039;-сообщества (форум, вики, решения, учебные пособия, справочные материалы).&lt;br /&gt;
* http://erlanger.ru/ – сайт русского &#039;&#039;Erlang&#039;&#039;-сообщества.&lt;br /&gt;
* http://groups.google.com/group/erlang-russian – русское &#039;&#039;Erlang&#039;&#039;-сообщество на Google.&lt;br /&gt;
* http://www.tryerlang.org/ – онлайн-интерпретатор &#039;&#039;Erlang&#039;&#039;.&lt;br /&gt;
* Martin Logan, Eric Merritt, and Richard Carlsson “Erlang and OTP in Action”.&lt;br /&gt;
* Francesco Cesarini, Simon Thompson “Erlang Programming A Concurrent Approach to Software Development”.&lt;br /&gt;
* Joe Armstrong “Programming Erlang: Software for a Concurrent World”.&lt;br /&gt;
&lt;br /&gt;
===История &#039;&#039;Erlang&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1982–1985&#039;&#039;&#039; Эксперименты в Ericsson Computer Science Laboratory по программированию в области телекоммуникаций на более чем 20 языках. Вывод: нужен высокоуровневый символический язык для достижения высокой производительности труда (наподобие &#039;&#039;Lisp, Prolog, Parlog&#039;&#039; и т.д.).&lt;br /&gt;
* &#039;&#039;&#039;1985–1986&#039;&#039;&#039; Эксперименты с &#039;&#039;Lisp, Prolog, Parlog&#039;&#039; и т.д. Вывод: язык должен содержать примитивы для поддержки параллелизма и восстановления после сбоев. Он должен также поддерживать детализацию параллелизма, чтобы один асинхронный процесс телефонии соответствовал одному процессу в языке. Т.о., было принято решение разработать свой собственный язык, основываясь на &#039;&#039;Lisp, Prolog&#039;&#039; и &#039;&#039;Parlog&#039;&#039;, но с поддержкой параллелизма и восстановления после сбоев на уровне языка.&lt;br /&gt;
* &#039;&#039;&#039;1987&#039;&#039;&#039; Первые эксперименты с &#039;&#039;Erlang&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;1988 Фаза 1&#039;&#039;&#039;: Прототип показан внешним пользователям. &#039;&#039;Erlang&#039;&#039; вышел за пределы лаборатории.&lt;br /&gt;
* &#039;&#039;&#039;1989 Фаза 2&#039;&#039;&#039;: Воссоздана 1/10 полной MD-110 системы. Итог: создание программ более чем в 10 раз эффективнее, чем в &#039;&#039;PLEX&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;1990&#039;&#039;&#039; &#039;&#039;Erlang&#039;&#039; представлен на ISS’90, что привело к появлению новых пользователей, например, Bellcore.&lt;br /&gt;
* &#039;&#039;&#039;1991&#039;&#039;&#039; Версия &#039;&#039;Erlang&#039;&#039; выпущена для пользователей. &#039;&#039;Erlang&#039;&#039; представлен на Telecom’91. Появилась новая функциональность, такая как ASN/1 – компилятор, графический интерфейс и т.д.&lt;br /&gt;
* &#039;&#039;&#039;1992&#039;&#039;&#039; Появление большого числа новых пользователей &#039;&#039;Erlang. Erlang&#039;&#039; портирован на большинство платформ: VxWorks, PC, Macintosh и т.д.&lt;br /&gt;
* &#039;&#039;&#039;1993&#039;&#039;&#039; В &#039;&#039;Erlang&#039;&#039; добавлена поддержка распределенных вычислений. Принято решение продавать реализацию &#039;&#039;Erlang&#039;&#039; внешним организациям.&lt;br /&gt;
* &#039;&#039;&#039;1998&#039;&#039;&#039; Реализация &#039;&#039;Erlang&#039;&#039; становится opensource.&lt;br /&gt;
* &#039;&#039;&#039;2006&#039;&#039;&#039; Поддержка симметричной многопроцессорности встроена в исполняющую среду и виртуальную машину &#039;&#039;Erlang&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_79_1.jpg&amp;diff=14469</id>
		<title>Файл:LXF144 79 1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_79_1.jpg&amp;diff=14469"/>
		<updated>2012-11-14T06:45:19Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_78_2.jpg&amp;diff=14468</id>
		<title>Файл:LXF144 78 2.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_78_2.jpg&amp;diff=14468"/>
		<updated>2012-11-14T06:45:10Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_78_1.jpg&amp;diff=14467</id>
		<title>Файл:LXF144 78 1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_78_1.jpg&amp;diff=14467"/>
		<updated>2012-11-14T06:45:01Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_77_1.jpg&amp;diff=14466</id>
		<title>Файл:LXF144 77 1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:LXF144_77_1.jpg&amp;diff=14466"/>
		<updated>2012-11-14T06:44:52Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxformat.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:%D0%A6%D0%B8%D0%BA%D0%BB/QML&amp;diff=14465</id>
		<title>Шаблон:Цикл/QML</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxformat.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:%D0%A6%D0%B8%D0%BA%D0%BB/QML&amp;diff=14465"/>
		<updated>2012-11-14T06:43:04Z</updated>

		<summary type="html">&lt;p&gt;Crazy Rebel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{цикл|QML|&lt;br /&gt;
* [[LXF142:QML|&#039;&#039;Qt&#039;&#039; и &#039;&#039;QML&#039;&#039;: Язык ин­тер­фей­са]]&lt;br /&gt;
* [[LXF143:QML|&#039;&#039;QML&#039;&#039; на службе приложений &#039;&#039;Qt&#039;&#039;]]&lt;br /&gt;
* [[LXF144:QML|&#039;&#039;QML&#039;&#039;: Пишем программу]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Категория:Учебники]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Андрей Боровский]]&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>
	</entry>
</feed>