<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Bozaro</title>
	<atom:link href="http://www.bozaro.ru/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bozaro.ru</link>
	<description>Мой личный блог</description>
	<lastBuildDate>Fri, 06 Jan 2012 16:19:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Перепрошивка SonyEricsson X8</title>
		<link>http://www.bozaro.ru/2012/01/04/sonyericssonx8/</link>
		<comments>http://www.bozaro.ru/2012/01/04/sonyericssonx8/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 07:02:09 +0000</pubDate>
		<dc:creator>Bozaro</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[CyanogenMod]]></category>
		<category><![CDATA[Firmware]]></category>
		<category><![CDATA[SonyEricsson]]></category>

		<guid isPermaLink="false">http://www.bozaro.ru/?p=256</guid>
		<description><![CDATA[Зачем оно надо Штатная прошивка у SonyEricsson X8 застыла на версии 2.1, что не очень приятно. При установки прошивки от CyanogenMod версия обновляется до 2.3.7 и добавляются следующие возможности (из коробки): Установка приложений в карту памяти; Возможность расшарить интернет с мобилы через WiFi; Приложение работают заметно быстрее, хотя Angry Birds все еще тормозит; Более вменяемый [...]]]></description>
			<content:encoded><![CDATA[<h1>Зачем оно надо</h1>
<p>Штатная прошивка у SonyEricsson X8 застыла на версии 2.1, что не очень приятно.</p>
<p>При установки прошивки от CyanogenMod версия обновляется до 2.3.7 и добавляются следующие возможности (из коробки):</p>
<ol>
<li>Установка приложений в карту памяти;</li>
<li>Возможность расшарить интернет с мобилы через WiFi;</li>
<li>Приложение работают заметно быстрее, хотя Angry Birds все еще тормозит;</li>
<li>Более вменяемый лаунчер;</li>
<li>Лента SMS в виде чата;</li>
<li>Root-доступ.</li>
</ol>
<p>Из минусов:</p>
<ol>
<li>При перепрошивке теряются все настройки телефона (купленные через маркет приложения повторно покупать не придется);</li>
<li>Возможно, что на альтернативной прошивке будут какие-либо проблемы;</li>
<li>Возможна потеря гарантии.<span id="more-256"></span></li>
</ol>
<h1>Отмазка</h1>
<p>То, что описанный в данном тексте алгоритм сработал у меня, не значит, что он сработает у всех.</p>
<p>Теоретически, хоть и маловероятно, можно превратить аппарат в кирпич. Все что вы делаете &#8211; вы делаете на свой страх и риск.</p>
<h1>Нам понадобится:</h1>
<ol>
<li>Телефон SonyEricsson X8 и карта памяти.<br />
Без телефона нечего прошивать, а карта памяти нужна для копирования туда прошивки.<br />
Карта должна быть отформатированна файловой системой FAT32 (обычно оно уже так и есть) и на ней должно быть около 100Мб свободного пространства для прошивки.</li>
<li>SonyEricsson Update Service<br />
<a href="http://www.sonyericsson.com/cws/support/mobilephones/downloads/subject/updateservice/xperiax1?cc=gb&amp;lc=en"> http://www.sonyericsson.com/cws/support/mobilephones/downloads/subject/updateservice/xperiax1?cc=gb&amp;lc=en</a><br />
Эта утилита позволяет вернуть заводскую прошивку.</li>
<li>FlashTool<br />
<a href="http://androxyde.github.com/Flashtool/"> http://androxyde.github.com/Flashtool/</a><br />
Утилита для перепрошивки. Сильно упрощает процедуру установки прошивки, избавляя от рутования и ручной устнановки загрузчика.</li>
<li>Модифицированное ядро (E15_nAa)<br />
<a href="http://code.google.com/p/minicm/downloads/list"> http://code.google.com/p/minicm/downloads/list</a><br />
Ядро и загрузчик для перепрошивки при помощи Flashtool. Из него нам нужен только загрузчик.</li>
<li>Прошивка<br />
<a href="http://download.cyanogenmod.com/?type=stable&amp;device=shakira"> http://download.cyanogenmod.com/?type=stable&amp;device=shakira</a><br />
Собственно прошивка.</li>
<li>Софт от Google<br />
<a href="http://wiki.cyanogenmod.com/wiki/Latest_Version/Google_Apps">http://wiki.cyanogenmod.com/wiki/Latest_Version/Google_Apps</a><br />
Это различный необходимый для жизни софт от Google. В него, например, входит:</p>
<ul>
<li>Маркет;</li>
<li>Синхронизация контактов с GMail;</li>
<li>Голосовой поиск от Google.</li>
</ul>
</li>
</ol>
<h1>Общая последовательность действий:</h1>
<p><strong>Важно: все настройки телефона будут потеряны.</strong></p>
<ol>
<li>Для начала надо привести телефон в рабочее состояние (сброситься до заводской прошивки).<br />
Тут все просто:</p>
<ul>
<li>Запускаем SonyEricsson Update Service;</li>
<li>Выбираем там телефон;</li>
<li>Выключаем телефон выниманием батареи;</li>
<li>Возвращаем батарею на место. Телефон не включаем;</li>
<li>Зажимаем на телефоне кнопку назад;</li>
<li>Вставляем USB-шнур, кнопку назад при этом не отпускаем;</li>
<li>Запускаем перепрошивку и ждем.</li>
</ul>
</li>
<li>Записываем данные на карту памяти.<br />
В корень карты памяти надо сбросить прошивку и архив с софтом от Google. В моем случае это файлы:</p>
<ul>
<li>update-cm-7.1.0-X8-signed.zip</li>
<li>gapps-gb-20110828-signed.zip</li>
</ul>
</li>
<li>Копируем в директорию C:\Flashtool\firmwares\ ядро и прошивку. У прошивки при этом надо сменить расширение на ftf.<br />
В моем случае получились файлы:</p>
<ul>
<li>E15_nAa-08_2.6.29.6-nAa-08.ftf</li>
<li>update-cm-7.1.0-X8-signed.zip</li>
</ul>
</li>
<li>Устанавливаем загрузчик:
<ul>
<li>Выключаем телефон при помощи кнопки выключения.</li>
<li>Запускаем FlashTool и жмем на молнию.</li>
<li>Выбираем режим FlashMode.</li>
<li>Выбираем прошивку с именем E15 и устанавливаем галочку &laquo;Exclude Kernel&raquo; (должен остаться в списке только файл loader.sin)</li>
<li>Жмем &laquo;ОК&raquo;.</li>
<li>Зажимаем кнопку &laquo;назад&raquo; на выключенном телефоне и подключаем его по USB.</li>
<li>Ждем пока появится сообщение &laquo;Now unplug the device and power it on&raquo;.</li>
<li>Отключаем телефон от USB.</li>
<li>Включаем телефон. Он должен корректно загрузиться.<br />
Если во время загрузки нажимать кнопку &laquo;назад&raquo;, то должно появиться меню восстановления.</li>
</ul>
</li>
<li>Устанавливаем ядро:
<ul>
<li>Выключаем телефон при помощи кнопки выключения.</li>
<li>Запускаем FlashTool и жмем на молнию.</li>
<li>Выбираем режим FlashMode.</li>
<li>Выбираем прошивку без имени и устанавливаем галочки &laquo;Exclude System&raquo;, &laquo;Exclude Baseband&raquo; (должен остаться в списке только файл kernel.sin)</li>
<li>Жмем &laquo;ОК&raquo;.</li>
<li>Зажимаем кнопку &laquo;назад&raquo; на выключенном телефоне и подключаем его по USB.</li>
<li>Ждем пока появится сообщение &laquo;Now unplug the device and power it on&raquo;.</li>
<li>Отключаем телефон от USB.</li>
<li>Включаем телефон. Он не должен загрузиться. Вместо логотипа SonyEricsson должна появиться буква X.</li>
</ul>
</li>
<li>Устанавливаем прошивку:
<ul>
<li>Выключаем телефон выниманием батареи;</li>
<li>Включаем телефон и истерично нажимаем кнопку &laquo;назад&raquo;, пока не попадем в режим восстановления.</li>
<li>Чистим кэш и настройки (без этого прошивка может не загрузиться):
<ul>
<li>wipe data/factory reset</li>
<li>wipe cache partition</li>
</ul>
</li>
<li>Устанавливаем прошивку:
<ul>
<li>install zip from sdcard &gt; choose zip from sdcard &gt; update-cm-7.1.0-X8-signed.zip</li>
</ul>
</li>
<li>Устанавливаем софт от Google:
<ul>
<li>install zip from sdcard &gt; choose zip from sdcard &gt; gapps-gb-20110828-signed.zip</li>
</ul>
</li>
<li>Перезагружаем телефон:
<ul>
<li>reboot system now</li>
</ul>
<p>Телефон должен корректно загрузиться.</li>
</ul>
</li>
<li>Радуемся.</li>
</ol>
<h1>Решение проблем</h1>
<h2>Проблема с нестабильной работой сети (3G+WiFi)</h2>
<p>Обнаружилась проблема с отваливающейся передачей данных. Пока не решена, но рецепт, возможно, есть здесь: <a href="http://forum.xda-developers.com/showpost.php?p=19187110&amp;postcount=2407">http://forum.xda-developers.com/showpost.php?p=19187110&amp;postcount=2407</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bozaro.ru/2012/01/04/sonyericssonx8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Жесткая перезагрузка Linux</title>
		<link>http://www.bozaro.ru/2011/05/23/linux-force-reboot/</link>
		<comments>http://www.bozaro.ru/2011/05/23/linux-force-reboot/#comments</comments>
		<pubDate>Mon, 23 May 2011 03:59:22 +0000</pubDate>
		<dc:creator>Bozaro</dc:creator>
				<category><![CDATA[Без рубрики]]></category>

		<guid isPermaLink="false">http://www.bozaro.ru/?p=248</guid>
		<description><![CDATA[К сожалению, иногда команды reboot в Linux не достаточно для перезагрузки. Из-за этого появляется желание перезагрузить комп, находящийся за несколько километров, без выполнения корректной остановки демонов и т.п., то есть удаленно его Reset-нуть. Выполнить это можно командой: echo 1 &#62; /proc/sys/kernel/sysrq echo b &#62; /proc/sysrq-trigger Аналогичная конструкций для выключения компьютера: echo 1 &#62; /proc/sys/kernel/sysrq echo [...]]]></description>
			<content:encoded><![CDATA[<p>К сожалению, иногда команды reboot в Linux не достаточно для перезагрузки. Из-за этого появляется желание перезагрузить комп, находящийся за несколько километров, без выполнения корректной остановки демонов и т.п., то есть удаленно его Reset-нуть.</p>
<p>Выполнить это можно командой:</p>
<pre>echo 1 &gt; /proc/sys/kernel/sysrq
echo b &gt; /proc/sysrq-trigger</pre>
<p>Аналогичная конструкций для выключения компьютера:</p>
<pre>echo 1 &gt; /proc/sys/kernel/sysrq
echo o &gt; /proc/sysrq-trigger</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.bozaro.ru/2011/05/23/linux-force-reboot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Конвертация ext2/ext3/ext4 в btrfs</title>
		<link>http://www.bozaro.ru/2011/05/23/btrfs-convert/</link>
		<comments>http://www.bozaro.ru/2011/05/23/btrfs-convert/#comments</comments>
		<pubDate>Mon, 23 May 2011 03:41:55 +0000</pubDate>
		<dc:creator>Bozaro</dc:creator>
				<category><![CDATA[Без рубрики]]></category>

		<guid isPermaLink="false">http://www.bozaro.ru/?p=243</guid>
		<description><![CDATA[Решил я пощупать файловую систему btrfs, в основном, чтобы пощупать сжатие и дедубликацию данных. Первое, что пришло в голову &#8211; сконвертировать существующий раздел из ext3 в btrfs. Для конвертации выполнил штатную утилиту: btrfs-convert /dev/mapper/LVM-DISK1 По прошествии некоторого времени конвертация была успешно завершена, но результат меня сильно озадачил: при выполнении команды df разница &#171;размер &#8211; (использовано [...]]]></description>
			<content:encoded><![CDATA[<p>Решил я пощупать файловую систему btrfs, в основном, чтобы пощупать сжатие и дедубликацию данных.</p>
<p>Первое, что пришло в голову &#8211; сконвертировать существующий раздел из ext3 в btrfs. Для конвертации выполнил штатную утилиту:</p>
<pre>btrfs-convert /dev/mapper/LVM-DISK1</pre>
<p>По прошествии некоторого времени конвертация была успешно завершена, но результат меня сильно озадачил: при выполнении команды df разница &laquo;размер &#8211; (использовано + доступно)&raquo; была более 100Гб при размере раздела 400Гб. То есть, <strong>было &laquo;потеряно&raquo; более 25% дискового пространства</strong>. Я нашел две причины такого поведения&#8230;<span id="more-243"></span></p>
<h2>Причина 1. Резервная копия для восстановления ext3</h2>
<p>Причина оказалась достаточно проста: утилита btrfs-convert при изменении файловой системы, сохраняет метаданные ext3 для возможности отката. То есть, после конвертации в файловой системе уже будет один снимок &#8211; данные на момент конвертации.</p>
<p>В этом легко убедиться, если выполнить команду вида:</p>
<pre>btrfs subvolume list /mnt/disk1/</pre>
<p>Для удаления снимка можно воспользоваться командой:</p>
<pre>btrfs subvolume delete /mnt/disk1/ext2_saved</pre>
<p>После этого кол-во свободного места неторопливо поползло вверх.</p>
<h2>Причина 2. Не оптимальная структура файловой системы</h2>
<p>После выполнения команды:</p>
<pre>btrfs fi df /mnt/disk1/</pre>
<p>Я обратил внимание на безумный размер метаданных &#8211; их меньше чем данных всего раза в четыре.</p>
<p>После перестроения дерева командой:</p>
<pre>btrfs fi balance /mnt/disk1/</pre>
<p>Кол-во метаданных уменьшилось до 1Гб, а кол-во &laquo;потерянного&raquo; места &#8211; до 4Гб.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bozaro.ru/2011/05/23/btrfs-convert/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Восстановление OpenVZ-контейнера Gentoo после обновления</title>
		<link>http://www.bozaro.ru/2010/10/29/openvz-gentoo-repair/</link>
		<comments>http://www.bozaro.ru/2010/10/29/openvz-gentoo-repair/#comments</comments>
		<pubDate>Fri, 29 Oct 2010 05:45:43 +0000</pubDate>
		<dc:creator>Bozaro</dc:creator>
				<category><![CDATA[Серверный софт]]></category>
		<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[OpenVZ]]></category>
		<category><![CDATA[Восстановление]]></category>

		<guid isPermaLink="false">http://www.bozaro.ru/?p=225</guid>
		<description><![CDATA[На странице http://wiki.openvz.org/Download/template/precreated есть шаблон для Gentoo. Если его установить а потом обновить до актуальной версии, то после перезагрузки он перестанет запускать демоны. В том числе, перестанет работать SSH. После изучения страницы http://wiki.openvz.org/Gentoo_template_creation удалось сформулировать принцип приведения контейнера в рабочее состояние. Восстановление запуска SSH Для начала, надо восстановить запуск демона ssh. В противном случае, сделать [...]]]></description>
			<content:encoded><![CDATA[<p>На странице <a href="http://wiki.openvz.org/Download/template/precreated" target="_blank">http://wiki.openvz.org/Download/template/precreated </a>есть шаблон для Gentoo.</p>
<p>Если его установить а потом обновить до актуальной версии, то после перезагрузки он перестанет запускать демоны. В том числе, перестанет работать SSH.</p>
<p>После изучения страницы <a href="http://wiki.openvz.org/Gentoo_template_creation" target="_blank">http://wiki.openvz.org/Gentoo_template_creation</a> удалось сформулировать принцип приведения контейнера в рабочее состояние.</p>
<h2>Восстановление запуска SSH</h2>
<p>Для начала, надо восстановить запуск демона ssh. В противном случае, сделать что-либо с виртуальной машиной затруднительно.</p>
<p>Если у вас есть возможность выполнить какой-либо скрипт внутри контейнера (например, через vzctl enter), то данный шаг можно пропустить.</p>
<p>Для этого нужно каким-либо образом закоментировать в файле <code>/sbin/rc</code> строку (у меня это была строка 249), добавив в начало символ решетки (#):</p>
<pre># try mount -n ${mntcmd:--t sysfs sysfs /sys -o noexec,nosuid,nodev}</pre>
<p>После этого нужно перезапустить контейнер.<span id="more-225"></span></p>
<h2>Исправление шероховатостей контейнера</h2>
<p>Исправить внутренние проблемы контейнера (убрать запуск лишних скриптов и т.п.) можно скриптом:</p>
<pre># Make /etc/mtab a symlink to /proc/mounts
rm -f /etc/mtab
ln -s /proc/mounts /etc/mtab

# Replace /etc/fstab
echo "proc /proc proc defaults 0 0" &gt; /etc/fstab

# Edit /etc/inittab and put a hash mark (#) at the beginning of the lines containing:
# c?:1235:respawn:/sbin/agetty 38400 tty? linux
F=/etc/inittab
sed -e 's/^c[0-9].*tty[0-9]/#\0/g' $F &gt; $F~
chmod --reference=$F $F~ &amp;&amp; mv -f $F~ $F

# Disable unneeded init scripts
rm /etc/runlevels/boot/checkroot
rm /etc/runlevels/boot/consolefont

# Edit /sbin/rc and put a hash mark (#) at the beginning of line 224:
# try mount -n ${mntcmd:--t sysfs sysfs /sys -o noexec,nosuid,nodev}
F=/sbin/rc
sed -e 's/^[^#]*try mount.*sysfs/#\0/g' $F &gt; $F~
chmod --reference=$F $F~ &amp;&amp; mv -f $F~ $F

# To ensure that this change isn't automatically overwritten on update, add the
# following to /etc/make.conf:
# CONFIG_PROTECT="/sbin/rc"
echo 'CONFIG_PROTECT="/sbin/rc"' &gt;&gt; /etc/make.conf

# Set up udev
mknod /lib/udev/devices/ttyp0 c 3 0
mknod /lib/udev/devices/ptyp0 c 2 0
mknod /lib/udev/devices/ptmx c 5 2

F=/etc/conf.d/rc
sed -e 's/.*RC_DEVICES=".*"/RC_DEVICES="udev"/g' $F | \
sed -e 's/.*RC_DEVICE_TARBALL=".*"/RC_DEVICE_TARBALL="no"/g' &gt; $F~
chmod --reference=$F $F~ &amp;&amp; mv -f $F~ $F</pre>
<p>Надеюсь, эти изыскания помогут и не только мне <img src='http://www.bozaro.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.bozaro.ru/2010/10/29/openvz-gentoo-repair/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Локальный DNS на DD-WRT</title>
		<link>http://www.bozaro.ru/2010/10/29/%d0%bb%d0%be%d0%ba%d0%b0%d0%bb%d1%8c%d0%bd%d1%8b%d0%b9-dns-%d0%bd%d0%b0-dd-wrt/</link>
		<comments>http://www.bozaro.ru/2010/10/29/%d0%bb%d0%be%d0%ba%d0%b0%d0%bb%d1%8c%d0%bd%d1%8b%d0%b9-dns-%d0%bd%d0%b0-dd-wrt/#comments</comments>
		<pubDate>Fri, 29 Oct 2010 04:58:11 +0000</pubDate>
		<dc:creator>Bozaro</dc:creator>
				<category><![CDATA[Скрипты]]></category>
		<category><![CDATA[DD-WRT]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[dnsmasq]]></category>
		<category><![CDATA[Маньячество]]></category>
		<category><![CDATA[Скрипт]]></category>

		<guid isPermaLink="false">http://www.bozaro.ru/?p=220</guid>
		<description><![CDATA[Так уж получилось, что моя домашняя сеть разнесена географически. Для обеспечения прозрачной маршрутизации я пробросил IP-over-IP тунель, но у этого решения остался один существенный недостаток &#8211; DNS оставался в каждой подсети свой. От идеи поднять общий DNS-сервер я сразу отказался, так как каждая сеть должна работать независимо от работоспособности другой сети. Принцип решения данной проблемы: [...]]]></description>
			<content:encoded><![CDATA[<p>Так уж получилось, что моя домашняя сеть разнесена географически.</p>
<p>Для обеспечения прозрачной маршрутизации я пробросил <a href="?p=171" target="_blank">IP-over-IP тунель</a>, но у этого решения остался один существенный недостаток &#8211; DNS оставался в каждой подсети свой.</p>
<p>От идеи поднять общий DNS-сервер я сразу отказался, так как каждая сеть должна работать независимо от работоспособности другой сети.</p>
<p>Принцип решения данной проблемы:</p>
<ol>
<li>На DD-WRT установлен DNS-сервер Dnsmasq. Он не только работает, как кэширующий DNS-сервер, но и возвращает A и PTR для записей, которые перечислены в файле /etc/hosts на точке доступа;</li>
<li>Файл /etc/hosts на точке доступа не статичен &#8211; он может измениться внутренним DHCP-сервером и при перезагрузке точки доступа;</li>
<li>Для того, чтобы Dnsmasq перечитал файл, ему нужно отправить HUP сигнал: killall -1 dnsmasq</li>
</ol>
<p>В результате я написал на python небольшой скрипт: <a href="http://www.bozaro.ru/wp-content/uploads/2010/10/dns-ddwrt.zip">dns-ddwrt</a>.</p>
<p>Этот скрипт:</p>
<ol>
<li>скачивает с моих точек доступа по SSH исходные файлы hosts;</li>
<li>объединяет их;</li>
<li>добавляет к этому списку перечень виртуальных OpenVZ машин;</li>
<li>записывает полученный результат обратно на точки доступа и перезапускает на них dnsmasq.</li>
</ol>
<p>Скрипт поставил в cron и радуюсь <img src='http://www.bozaro.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.bozaro.ru/2010/10/29/%d0%bb%d0%be%d0%ba%d0%b0%d0%bb%d1%8c%d0%bd%d1%8b%d0%b9-dns-%d0%bd%d0%b0-dd-wrt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Сборка шаблона Gentoo для OpenVZ</title>
		<link>http://www.bozaro.ru/2010/10/29/gentoo-openvz-template/</link>
		<comments>http://www.bozaro.ru/2010/10/29/gentoo-openvz-template/#comments</comments>
		<pubDate>Fri, 29 Oct 2010 03:53:50 +0000</pubDate>
		<dc:creator>Bozaro</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[Серверный софт]]></category>
		<category><![CDATA[Скрипты]]></category>
		<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[OpenVZ]]></category>
		<category><![CDATA[Скрипт]]></category>

		<guid isPermaLink="false">http://www.bozaro.ru/?p=214</guid>
		<description><![CDATA[На странице http://wiki.openvz.org/Download/template/precreated есть шаблон для Gentoo. Этот шаблон датирован 2008-ым годом и с тех пор не обновлялся. При этом, если обновить уже установленный контейнер, то после его перезагрузки перестаюст стартовать демоны. Пошаговая инструкция для сборки контейнера есть на: http://wiki.openvz.org/Gentoo_template_creation. После прочтения этого руководства я написал скрипт, который позволяет собрать шаблон из архивов stage-3 и [...]]]></description>
			<content:encoded><![CDATA[<p>На странице <a href="http://wiki.openvz.org/Download/template/precreated" target="_blank">http://wiki.openvz.org/Download/template/precreated </a>есть шаблон для Gentoo.</p>
<p>Этот шаблон датирован 2008-ым годом и с тех пор не обновлялся. При этом, если обновить уже установленный контейнер, то после его перезагрузки перестаюст стартовать демоны.</p>
<p>Пошаговая инструкция для сборки контейнера есть на: <a href="http://wiki.openvz.org/Gentoo_template_creation">http://wiki.openvz.org/Gentoo_template_creation</a>.</p>
<p>После прочтения этого руководства я написал скрипт, который позволяет собрать шаблон из архивов stage-3 и portage: <a href="http://www.bozaro.ru/wp-content/uploads/2010/10/openvz.zip">openvz.zip</a></p>
<p>Скрипт должен запускаться под рутом. Сборка может производиться из любой Linux-системы (не обязательно из Gentoo).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bozaro.ru/2010/10/29/gentoo-openvz-template/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Установка Sun Java Wireless Toolkit на Ubuntu Linux 64 bit</title>
		<link>http://www.bozaro.ru/2010/07/21/wtk_64bit_linux/</link>
		<comments>http://www.bozaro.ru/2010/07/21/wtk_64bit_linux/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 03:56:38 +0000</pubDate>
		<dc:creator>Bozaro</dc:creator>
				<category><![CDATA[Софт для разработки ПО]]></category>
		<category><![CDATA[J2ME]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[WTK]]></category>

		<guid isPermaLink="false">http://www.bozaro.ru/?p=200</guid>
		<description><![CDATA[Для сборки и запуска в эмуляторе JavaME-приложений нужно установить Sun Java Wireless Toolkit (далее WTK). К сожалению, на 64-ом Linux возникает серьезная проблема &#8211; родной версии для 64-ого Linux нет. В 32-х битной не запускается эмулятор. Все проблемы 32-х битной версии WTK связаны с тем, что для её сборки была использована 32-х битная версия Java. [...]]]></description>
			<content:encoded><![CDATA[<p>Для сборки и запуска в эмуляторе JavaME-приложений нужно установить Sun Java Wireless Toolkit (далее WTK). К сожалению, на 64-ом Linux возникает серьезная проблема &#8211; родной версии для 64-ого Linux нет. В 32-х битной не запускается эмулятор.</p>
<p>Все проблемы 32-х битной версии WTK связаны с тем, что для её сборки была использована 32-х битная версия Java. И, если установить 32-х битную верию Java, то все зарботает.</p>
<p>Таким образом у меня получился следующий алгоритм установки:<span id="more-200"></span></p>
<ol>
<li>Устанавлием 32-х битную версию Java:
<ul>
<li>Идем на сайт <span style="text-decoration: line-through;">Sun</span> Oracle и скачиваем не RPM-файл с JDK для Linux (не Linux 64): <a href="http://java.sun.com/javase/downloads/widget/jdk6.jsp">http://java.sun.com/javase/downloads/widget/jdk6.jsp</a></li>
<li>Получаем из .bin-файла .deb-файл, выполнив следующие команды:
<pre>sudo apt-get install java-package
DEB_BUILD_GNU_TYPE=i486-linux-gnu DEB_BUILD_ARCH=i386 fakeroot make-jpkg jdk-6u21-linux-i586.bin</pre>
</li>
<li>К сожалению, в полученном файле лежит битый postinst скрипт. Его надо удалить:
<pre>sudo dpkg-deb -x sun-j2sdk1.6_1.6.0+update21_amd64.deb temp/
sudo dpkg-deb -e sun-j2sdk1.6_1.6.0+update21_amd64.deb temp/DEBIAN
sudo rm temp/DEBIAN/postinst
dpkg-deb -b temp/ sun-j2sdk1.6_1.6.0+update21_amd64.deb
sudo rm -fR temp</pre>
</li>
<li> И после этого можно собственно установить 32-х битный JDK:
<pre>sudo dpkg -i sun-j2sdk1.6_1.6.0+update21_amd64.deb</pre>
</li>
</ul>
</li>
<li>Собственно установка Sun Java Wireless Toolkit:
<ul>
<li>Идем на сайт Oracle и скачиваем версию для Linux: <a href="http://java.sun.com/products/sjwtoolkit/download.html">http://java.sun.com/products/sjwtoolkit/download.html</a></li>
<li>Запускаем всежескаченный файл: sun_java_wireless_toolkit-2.5.2_01-linuxi486.bin.sh. Когда он спросит путь к JDK, указываем: /usr/lib/j2sdk1.6-sun/bin/</li>
</ul>
</li>
</ol>
<p>Вот, собственно, и все.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bozaro.ru/2010/07/21/wtk_64bit_linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Настройка сервера Firefox Sync</title>
		<link>http://www.bozaro.ru/2010/06/26/firefox-sync-server/</link>
		<comments>http://www.bozaro.ru/2010/06/26/firefox-sync-server/#comments</comments>
		<pubDate>Sat, 26 Jun 2010 05:15:11 +0000</pubDate>
		<dc:creator>Bozaro</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Firefox Sync]]></category>
		<category><![CDATA[Паранойя]]></category>
		<category><![CDATA[Синхронизация]]></category>

		<guid isPermaLink="false">http://www.bozaro.ru/?p=193</guid>
		<description><![CDATA[Некоторое время назад я узнал, что для синхронизации настроек Firefox между несколькими компьютерами можно использовать Firefox Sync. При этом, что интересно, со своим сервером. Установить собственный сервер оказалось очень просто: Скачать на WEB-сервер скрипт: http://people.mozilla.org/~telliott/weave_minimal.tgz Данный скрипт написан на PHP и использует для хранения контактов SQLite. Прописать скрипт в настройках апача: Alias /weave /&#60;путь до [...]]]></description>
			<content:encoded><![CDATA[<p>Некоторое время назад я узнал, что для синхронизации настроек Firefox между несколькими компьютерами можно использовать Firefox Sync. При этом, что интересно, со своим сервером.</p>
<p>Установить собственный сервер оказалось очень просто:<span id="more-193"></span></p>
<ol>
<li>Скачать на WEB-сервер скрипт: <a href="http://people.mozilla.org/~telliott/weave_minimal.tgz">http://people.mozilla.org/~telliott/weave_minimal.tgz</a><br />
Данный скрипт написан на PHP и использует для хранения контактов SQLite.</li>
<li>Прописать скрипт в настройках апача:
<pre>Alias /weave /&lt;путь до скрипта&gt;/index.php</pre>
</li>
<li>Создать пользователя, воспользовавшись скриптом:
<pre>php create_user
</pre>
</li>
<li>Дать права для доступа к файлу базы данных пользователю, от имени которого запущен WEB-сервер.</li>
<li>Проверить скрипт.<br />
Для пользователя dummy адрес должен выглядеть как-то так:</p>
<p>https://localhost/weave/1.0/dummy/info/collection</li>
</ol>
<p>Собственно все.</p>
<p>Ссыдки по теме:</p>
<ol>
<li><a href="http://tobyelliott.wordpress.com/2009/09/11/weave-minimal-server/">http://tobyelliott.wordpress.com/2009/09/11/weave-minimal-server/</a></li>
<li><a href="https://wiki.mozilla.org/Labs/Weave/API">https://wiki.mozilla.org/Labs/Weave/API</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.bozaro.ru/2010/06/26/firefox-sync-server/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Установка DD-WRT на D-Link DIR-320</title>
		<link>http://www.bozaro.ru/2010/06/20/dd-wrt-on-dlink-dir-320/</link>
		<comments>http://www.bozaro.ru/2010/06/20/dd-wrt-on-dlink-dir-320/#comments</comments>
		<pubDate>Sun, 20 Jun 2010 16:31:11 +0000</pubDate>
		<dc:creator>Bozaro</dc:creator>
				<category><![CDATA[Сети]]></category>
		<category><![CDATA[D-Link DIR-320]]></category>
		<category><![CDATA[DD-WRT]]></category>

		<guid isPermaLink="false">http://www.bozaro.ru/?p=188</guid>
		<description><![CDATA[Недавно прикупил в магазине точку доступа D-Link DIR-320 с намерением поставить на неё прошивку DD-WRT. Все делал по инструкции &#8211; прошивка по tftp заливается, но толку с этого ноль: после перезагрузки точки доступа она кажет по адресу 192.168.0.1 страницу для перепрошивки. Оказывается, что перепрошить её можно еще проще: заливаем через штатную WEB-морду официальной прошивки прошивку: [...]]]></description>
			<content:encoded><![CDATA[<p>Недавно прикупил в магазине точку доступа D-Link DIR-320 с намерением поставить на неё прошивку DD-WRT.</p>
<p>Все делал по инструкции &#8211; прошивка по tftp заливается, но толку с этого ноль: после перезагрузки точки доступа она кажет по адресу 192.168.0.1 страницу для перепрошивки.</p>
<p>Оказывается, что перепрошить её можно еще проще:</p>
<ol>
<li>заливаем через штатную WEB-морду официальной прошивки прошивку: <a href="http://www.bozaro.ru/wp-content/uploads/2010/06/DIR320-wimax-1.2.6.zip">DIR320-wimax-1.2.6</a> (2.7Mb);</li>
<li>заливаем через штатную WEB-морду свежеустановленной  прошивки любую другую &#8211; в моем случае DD-WRT.</li>
</ol>
<p>К сожалению, я запамятовал, где подсмотрел этот рецепт <img src='http://www.bozaro.ru/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.bozaro.ru/2010/06/20/dd-wrt-on-dlink-dir-320/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Настройка IP-over-IP туннеля между DD-WRT и Ubuntu Linux</title>
		<link>http://www.bozaro.ru/2010/05/25/ipip-ddwrt-linux/</link>
		<comments>http://www.bozaro.ru/2010/05/25/ipip-ddwrt-linux/#comments</comments>
		<pubDate>Tue, 25 May 2010 04:41:41 +0000</pubDate>
		<dc:creator>Bozaro</dc:creator>
				<category><![CDATA[Сети]]></category>
		<category><![CDATA[DD-WRT]]></category>
		<category><![CDATA[EoIP]]></category>
		<category><![CDATA[IP-over-IP]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.bozaro.ru/?p=171</guid>
		<description><![CDATA[Встала задача &#8211; пробросить туннель между двумя SOHO-сетями с минимальными затратами. Сеть A: функцию маршрутизатора выполняет компьютер на Linux Ubuntu 8.10, интернет через PPPoE; Сеть B: маршрутизатор D-Link DIR-300 rev. B1, интернет приходит по Ethernet-у. В обоих сетях от провайдера получен белый IP. Кол-во компьютеров в каждой сетки более одного. Сети должны быть связаны, но [...]]]></description>
			<content:encoded><![CDATA[<p>Встала задача &#8211; пробросить туннель между двумя SOHO-сетями с минимальными затратами.</p>
<ol>
<li>Сеть A: функцию маршрутизатора выполняет компьютер на Linux Ubuntu 8.10, интернет через PPPoE;</li>
<li>Сеть B: маршрутизатор D-Link DIR-300 rev. B1, интернет приходит по Ethernet-у.</li>
</ol>
<p>В обоих сетях от провайдера получен белый IP. Кол-во компьютеров в каждой сетки более одного.</p>
<p>Сети должны быть связаны, но при этом максимально автономны (у каждой свой DNS и DHCP-сервер).</p>
<h3>Алгоритм решения у меня был следующий:</h3>
<ol>
<li>Установить на D-Link DIR-300 rev. B1 прошивку DD-WRT v24-sp2;</li>
<li>Настроить туннель IP-over-IP между DD-WRT и Linux;</li>
<li>Настроить маршрутизацию между подсетями через тунель.</li>
</ol>
<p><em><strong>Важный момент: трафик в туннеле передается в открытом виде. Каким образом его можно зашифровать я не разбирался.</strong></em></p>
<p>Теперь по каждому пункту подробнее&#8230;<span id="more-171"></span></p>
<h3>Установка DD-WRT на D-Link DIR-300 rev. B1</h3>
<p>Существует как минимум две разновидности DIR-300: rev A и rev B. Судя по всему, они между собой внутри имеют мало общего.</p>
<p>На DIR-300 rev B прошивка DD-WRT устанавливается через штатный WEB-интерфейс без каких-либо проблем.</p>
<p>Надо отметить, что доступная под DIR-300 прошивка не имеет встроенной поддержки OpenVPN. Так же на маршрутизатор не получится поставить дополнительные пакеты &#8211; нет карты памяти и USB-порта.</p>
<p>Воспользоваться <a href="http://www.bitsum.com/firmware_mod_kit.htm">Firmware Modification Kit</a> для установки OpenVPN внутрь прошивки, у меня так же не получилось (утилитка отказалась распаковывать прошивку, сославшись на неизвестный формат образа). Таким образом от использования OpenVPN пришлось отказаться.</p>
<h3>Настройка туннеля между DD-WRT и Linux</h3>
<p>Для начала, нужно четко понимать, что туннели бывают разные. В процессе разбирательства я столкнулся со следующими:</p>
<ol>
<li>OpenVPN &#8211; самый идеологически правильный вариант, но от него пришлось отказаться из-за нежелания самому собирать прошивку из исходников. Обладает следующими особенностями:
<ol>
<li>Качественное шифрование трафика;</li>
<li>В качестве транспорта используется TCP или UDP. Оба протокола корректно обрабатываются NAT-ами;</li>
<li>Клиент-серверная архитектура. Клиент может быть с серым IP-адресом.</li>
</ol>
</li>
<li>EoIP (Ethernet Over IP, протокол etherip &#8211; 97) &#8211; загадочный зверь, поддерживаемый DD-WRT из коробки.<br />
Теоретически позволяет настроить мост между двумя DD-WRT с минимальными усилиями, но я не нашел по нему никакой документации касательно Linux. Модуль для поддержки этого протокола etherip.ko в моем ядре так же отсутсвовал.</li>
<li>IPIP (IP Over IP, ipencap &#8211; 4) &#8211; протокол для инкапсуляции IP-пакетов в IP-пакеты.<br />
Собственно его я и использовал. Для работы использует модуль ядра ipip.ko. Этот протокол был как в Linux, так и в DD-WRT.</li>
<li>GRE (Generic Routing Encapsulation, gre &#8211; 47) &#8211; протокол для инкапсуляции всего и всея в IP-пакеты.<br />
В теории, туннель в GRE должен настраиваться точно так же, как и в IP-over-IP, но я не пробовал.</li>
</ol>
<p>Во всех случаях, кроме OpenVPN, туннель существует отдельно от шифрования.</p>
<h4>Адреса сети</h4>
<p>Все дальнейшие примеры будут исходить из того, что будут использоваться следующие адреса:</p>
<p>Сеть A (Linux Ubuntu):</p>
<ol>
<li>Внутренняя сеть: 192.168.1.0/24</li>
<li>Адрес сервера внутри туннеля: 192.168.0.1</li>
<li>Внешний адрес сервера: 89.123.1.234</li>
</ol>
<p>Сеть B (DD-WRT):</p>
<ol>
<li>Внутренняя сеть: 192.168.2.0/24</li>
<li>Адрес сервера внутри туннеля: 192.168.0.2</li>
<li>Внешний адрес сервера: 89.123.2.234</li>
</ol>
<p>Предполагается, что обе сети по отдельности функционируют и имеют доступ в интернет с белым IP.</p>
<h4>Настройка туннеля в Linux Ubuntu</h4>
<p>Для настройки сети необходимо добавить в файл /etc/network/interfaces следующие строки:</p>
<pre>auto tun1
iface tun1 inet static
    # Адрес машины внутри туннелся. Соединения точка-точка, по этому маска из одних единиц
    address 192.168.0.1
    netmask 255.255.255.255
    # Адрес внутренний адрес машины, с которой установлен тунель
    pointopoint 192.168.0.2
    # Размер MTU
    mtu 1480
    # Перед поднятием интерфейса нужно создать тунель, что мы тут и делаем
    pre-up iptunnel add tun1 mode ipip local 89.123.1.234 remote 89.123.2.234 ttl 255
    up ifconfig tun1 multicast
    # Весь трафик в соседнюю сеть надо завернуть в тунель
    up route add -net 192.168.2.0/24 gw 192.168.0.2 dev tun1
    # Удаляем туннель после удаления интерфейса
    post-down iptunnel del tun1</pre>
<p>В примере используется имя интерфейса tun1, но, в принципе, его можно назвать как угодно.</p>
<p>Размер MTU может быть различным. Для его вычисления надо взять минимальный MTU от интерфейсов, смотрящих в интернет (это можно сделать командой ifconfig), и вычесть из него заголовок пакета ipip, которые равен 20 байтам.</p>
<p>Основная борьба под Linux начитается с фаерволом. У меня она свелась к добавлению следующих правил в файл /var/lib/ufw/user.rules (но это сильно зависит от конкретного случая):</p>
<pre>-A ufw-user-input   -p ipencap -i ppp0 -j ACCEPT
-A ufw-user-input   -i tun1 -j ACCEPT
-A ufw-user-forward -i tun1 -j ACCEPT</pre>
<p>Для того, чтобы предыдущие изменения вступили в силу, необходимо выполнить команды:</p>
<pre>sudo ifup tun1
sudo /etc/init.d/ufw restart</pre>
<p>Для диагностики могу посоветовать следующий порядок действий:</p>
<ol>
<li>Проверить наличие туннеля:
<pre>~$ ip tunnel show
tunl0: ip/ip  remote any  local any  ttl inherit  nopmtudisc
tun1: ip/ip  remote 83.123.1.234  local 83.123.2.234  ttl 255</pre>
</li>
<li>Проверить, поднялся ли интерфейс:
<pre>~$ ifconfig tun1
tun1      Link encap:IPIP Tunnel  HWaddr
 inet addr:192.168.0.1  P-t-P:192.168.0.2  Mask:255.255.255.255
 UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1480  Metric:1
 RX packets:0 errors:0 dropped:0 overruns:0 frame:0
 TX packets:81 errors:0 dropped:0 overruns:0 carrier:0
 collisions:0 txqueuelen:0
 RX bytes:0 (0.0 B)  TX bytes:6478 (6.4 KB)</pre>
<p>Здесь надо отметить, что кол-во RX-пакетов должно расти при пинговании той стороны даже в том случае, если маршрутизатор на той стороне выключен.<br />
То есть если идет попытка пинговать адрес 192.168.0.2 или 192.168.2.100, то RX должен увеличиваться. В противном случае надо искать проблему в фаерволе.</li>
<li>Проверить, проходят ли пакеты через нужные правила iptables.<br />
Для этого можно воспользоваться ключем -v. Он показывает сколько пакетов и байт прошло через указанное правило.</li>
<li>Проверить, уходят ли пакеты во внешний интерфейс:
<pre>sudo ~$ tcpdump -i ppp0 -n proto ipencap</pre>
</li>
</ol>
<h4>Настройка туннеля в DD-WRT</h4>
<p>Алгоритм настройки тот же, что и в Linux, только без /etc/network/interfaces.</p>
<p>Сначала надо обкатать эти команды через SSH, и только потом заносить в Administration &gt; Commands.</p>
<p>Для поднятия интерфейса нужно выполнить следующие команды (их позже надо будет внести в Administration &gt; Commands &gt; Startup):</p>
<pre>/sbin/insmod ipip
/usr/sbin/ip tunnel add tun1 mode ipip remote 89.123.1.234 local 89.123.2.234 ttl 255
ifconfig tun1 192.168.0.2 pointopoint 192.168.0.1 mtu 1480 up
route add -net 192.168.1.0/24 gw 192.168.0.1</pre>
<p>Для пропускания пакетов через фаервол нужно выполнить команды (их позже надо будет внести в Administration &gt; Commands &gt; Firewall):</p>
<pre>iptables -I INPUT 2 -p ipencap -s 89.123.1.234 -j ACCEPT
iptables -I INPUT 3 -i tun1 -j ACCEPT
iptables -I FORWARD 1 -o tun1 -j ACCEPT
iptables -I FORWARD 2 -i tun1 -j ACCEPT</pre>
<p>Если все прошло успешно, то подсети 192.168.1.0/24 и 192.168.2/24 должны прозрачно общаться друг с другом.</p>
<p>Для диагностики справедливы те же принципы, что и для Linux.</p>
<p>После того, как ping-и ходят в обе стороны имеет смысл проверить размер MTU (при неправильном MTU может не работать передача  больших IP-пакетов):<br />
Для проверки вычисления размера MTU проще всего выполнить ping с крупным размером  пакета, например:</p>
<pre>ping -s 1500 -M do -c 10 192.168.2.1</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.bozaro.ru/2010/05/25/ipip-ddwrt-linux/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

