<?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>Tamkovich.com: Телеком/VoIP блог &#187; Linux</title>
	<atom:link href="http://tamkovich.com/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://tamkovich.com</link>
	<description>Современные технологии: Asterisk, SIP, Kamailio, Linux, Cisco, Linksys</description>
	<lastBuildDate>Mon, 30 Jan 2012 11:42:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Как безболезненно увеличить дисковое пространство в Linux или удивительная система LVM</title>
		<link>http://tamkovich.com/2011/09/lvm/</link>
		<comments>http://tamkovich.com/2011/09/lvm/#comments</comments>
		<pubDate>Tue, 27 Sep 2011 08:03:55 +0000</pubDate>
		<dc:creator>MeteoZond</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[RAID]]></category>

		<guid isPermaLink="false">http://tamkovich.com/?p=2216</guid>
		<description><![CDATA[Появилась задача увеличить объем дискового пространства на хостинговом сервере. Т.к. в качестве панели управления используется ISPmanager, монтирование нового раздела в отдельную папку проблемы бы не решило. По совету коллег решил призвать в помощь LVM (Logical volume manager). Управление логическими томами (Logical Volume Management — LVM) существует в Linux, начиная с версий ядра 2.4v1 и 2.6.9v2. [...]]]></description>
			<content:encoded><![CDATA[<p align=justify>Появилась задача увеличить объем дискового пространства на хостинговом сервере. Т.к. в качестве панели управления используется ISPmanager, монтирование нового раздела в отдельную папку проблемы бы не решило. По совету коллег решил призвать в помощь LVM (Logical volume manager).</p>
<p align=justify>Управление логическими томами (Logical Volume Management — LVM) существует в Linux, начиная с версий ядра 2.4v1 и 2.6.9v2.<br />
Что же такое LVM, Logical volume manager, Управление логическими томами или менеджер логических томов?<br />
LVM &#8211; это дополнительный уровень абстракции между привычными логическими/физическими дисками и файловой системой. Эта система позволяет нам объединять несколько физических дисков, разделов на физическом диске, рейд массивов в логический том на котором мы создаем файловую систему. Также у нас появляются возможности быстрых бекапов, перемещения файловой системы с, например, двух HDD по 40гб на один 80гб без выключения компьютера/сервера, увеличения/уменьшения размеров логического тома на ходу (тут надо оговориться про то что файловая система должна поддерживать данные функции).<br />
В общем это удивительная система которая добавляет гибкости и удобства в работу с накопителями данных.</p>
<p><span id="more-2216"></span></p>
<p align=justify>Итак, имеем сервер IBM x3560, два диска уже установлены и работают в зеркале, операционная система CentOS 5.5. Выключаем сервер, устанавливаем еще два диска, объединяем их в рейд 1. Загружаем операционную систему и видим что появился новый неразмеченный раздел <strong>/dev/sdb</strong>.</p>
<p align=justify>До добавления второго рейд массива картина была следующая:<br />
Зеркало видно как <strong>/dev/sda</strong>, <strong>/dev/mapper/VolGroup01-LogVol00</strong> это <strong>/</strong><br />
<strong>/dev/sda1</strong> это <strong>/boot</strong></p>
<p align=justify>Небольшая ремарка, необходимо чтобы <strong>boot</strong> раздел был вне логического тома, иначе загрузиться не получится. Смотрим что нам покажет <strong>pvdisplay</strong>:</p>
<pre>[root@vh ~]# <strong>pvdisplay</strong>
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               VolGroup01
  PV Size               136.51 GB / not usable 8.33 MB
  Allocatable           yes (but full)
  PE Size (KByte)       32768
  Total PE              4368
  Free PE               0
  Allocated PE          4368
  PV UUID               4tSPMO-UJzY-d21j-Mlvi-FfoK-1puC-bERapz</pre>
<p align=justify>Тут надо сказать что у LVM есть три уровня:
<ul>
<li> <strong>PV</strong> это <strong>physical volume</strong>, так сказать физический уровень (целые диски или разделы)
<li> <strong>VG</strong> это <strong>volume group</strong>, на этом уровне объединяем <strong>PV</strong> в группу
<li> <strong>LV</strong> это <strong>logical volume</strong>, логический уровень, объединение <strong>VG</strong> в единый раздел на котором можно создавать файловую систему.
</ul>
</p>
<p align=justify>Видим у нас есть <strong>VG</strong> по имени <strong>VolGroup01</strong> которая находится на <strong>PV /dev/sda2</strong></p>
<p align=justify><strong>lvdisplay</strong> нам говорит следующее:</p>
<pre><strong>[root@vh ~]# lvdisplay</strong>
  --- Logical volume ---
  LV Name                /dev/VolGroup01/LogVol00
  VG Name                VolGroup01</pre>
<p align=justify><strong>LV</strong> который нам необходимо будет расширить называется <strong>/dev/VolGroup01/LogVol00</strong></p>
<p align=justify>Далее наши действия:
<ul>
<li> Инициализируем новый физический диск командой: <strong>pvcreate /dev/sdb</strong>
<li> Добавляем новый физический диск к нашей существующей <strong>VG VolGroup1</strong>: <strong>vgextend VolGroup01 /dev/sdb</strong>
<li> Расширяем наш <strong>LV</strong> по имени <strong>/dev/VolGroup01/LogVol00</strong> на количество общего пространства содержащегося в <strong>/dev/sbd</strong>: <strong>lvextend /dev/VolGroup01/LogVol00 /dev/sdb</strong>
</ul>
</p>
<p align=justify>Теперь осталось изменить размер файловой системы: <strong>resize2fs -p /dev/VolGroup01/LogVol00</strong> Всё, в моем случае я увеличил объем доступного дискового пространства в два раза.
</p>
<pre>[root@vh ~]# <strong>df -h</strong>
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup01-LogVol00
                      259G   85G  161G  35% /
/dev/sda1              99M   19M   75M  21% /boot
tmpfs                 2.0G     0  2.0G   0% /dev/shm</pre>
<pre>[root@vh ~]# <strong>pvdisplay</strong>
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               VolGroup01
  PV Size               136.51 GB / not usable 8.33 MB
  Allocatable           yes (but full)
  PE Size (KByte)       32768
  Total PE              4368
  Free PE               0
  Allocated PE          4368
  PV UUID               4tSPMO-UJzY-d21j-Mlvi-FfoK-1puC-bERapz

  --- Physical volume ---
  PV Name               /dev/sdb
  VG Name               VolGroup01
  PV Size               136.61 GB / not usable 17.00 MB
  Allocatable           yes (but full)
  PE Size (KByte)       32768
  Total PE              4371
  Free PE               0
  Allocated PE          4371
  PV UUID               YMX3a0-deJr-VrCL-5zrO-z65K-RJ62-vSrCHJ</pre>
<pre>[root@vh ~]# <strong>vgdisplay</strong>
  --- Volume group ---
  VG Name               VolGroup01
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               273.09 GB
  PE Size               32.00 MB
  Total PE              8739
  Alloc PE / Size       8739 / 273.09 GB
  Free  PE / Size       0 / 0
  VG UUID               CGsscq-7UDT-3qUB-82DW-IzeK-3Ab9-iTG6Pq</pre>
<pre>[root@vh ~]# <strong>lvdisplay</strong>
  --- Logical volume ---
  LV Name                /dev/VolGroup01/LogVol00
  VG Name                VolGroup01
  LV UUID                P6aTcD-KMw6-jFUF-Cpio-C3CW-tMh2-DwLmD4
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                267.28 GB
  Current LE             8553
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

  --- Logical volume ---
  LV Name                /dev/VolGroup01/LogVol01
  VG Name                VolGroup01
  LV UUID                vd0uP2-DkST-L4ob-EAZT-N4jP-Jw1h-EUBh0l
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                5.81 GB
  Current LE             186
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1
</pre>
<p><strong>/dev/VolGroup01/LogVol01</strong> в нашем случае это swap.</p>
<p align=justify>
Также рекомендую к прочтению следующие статьи:
<ul>
<li><a href="http://xgu.ru/wiki/LVM">http://xgu.ru/wiki/LVM</a>
<li><a href="http://www.ibm.com/developerworks/ru/library/l-lvm2/">http://www.ibm.com/developerworks/ru/library/l-lvm2/</a>
<li><a href="http://habrahabr.ru/blogs/linux/67283/">http://habrahabr.ru/blogs/linux/67283/</a>
</ul></p>
]]></content:encoded>
			<wfw:commentRss>http://tamkovich.com/2011/09/lvm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Защита Asterisk от SIP атак с помощью iptables</title>
		<link>http://tamkovich.com/2011/06/defending-asterisk-from-sip-flood-with-iptables/</link>
		<comments>http://tamkovich.com/2011/06/defending-asterisk-from-sip-flood-with-iptables/#comments</comments>
		<pubDate>Sat, 18 Jun 2011 16:46:23 +0000</pubDate>
		<dc:creator>Сергей Тамкович</dc:creator>
				<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Безопасность]]></category>
		<category><![CDATA[SIP]]></category>

		<guid isPermaLink="false">http://tamkovich.com/?p=2170</guid>
		<description><![CDATA[Думаю все слышали про программу Fail2ban, а некоторые даже умеют настраивать её для работы с логом Asterisk. Действительно, вылавливая строки вида &#171;failed for &#8217;127.0.0.1&#8242; &#8211; Wrong password&#187; и &#171;failed for &#8217;127.0.0.1&#8242; &#8211; Peer is not supposed to register&#187; &#8211; можно существенно сократить количество мусорного SIP трафика. Однако, есть несколько неприятных ситуаций, в которых анализ лога [...]]]></description>
			<content:encoded><![CDATA[<p align=justify>
Думаю все слышали про программу <a href=/2009/04/asterisk-sip-security/ >Fail2ban</a>, а некоторые даже умеют настраивать её для работы с логом <a href=http://tamkovich.com/asterisk/ >Asterisk</a>.  Действительно, вылавливая строки вида &laquo;failed for &#8217;127.0.0.1&#8242; &#8211; Wrong password&raquo; и &laquo;failed for &#8217;127.0.0.1&#8242; &#8211; Peer is not supposed to register&raquo; &#8211; можно существенно сократить количество мусорного <a href=http://tamkovich.com/tag/sip/ >SIP</a> трафика. Однако, есть несколько неприятных ситуаций, в которых анализ лога <a href=http://tamkovich.com/asterisk/ >Asterisk</a> не поможет. Например, в случае когда злоумышленник посылает запрос REGISTER без идентификационных данных &#8211; в логе никогда не появится сообщение &laquo;Wrong password&raquo;.
</p>
<p align=justify>
Лично я не особо боюсь того, что к моей системе подберут пароль одного из клиентов. Вероятность данного события мала, поскольку все пароли в системе стойкие. И даже если пароль подберут, у большинства клиентов установлено ограничение на 1-2 одновременных вызова. Для меня неприятность <a href=http://tamkovich.com/tag/sip/ >SIP</a> брутфорса заключается в другом. Дело в том, что в <a href=http://tamkovich.com/asterisk/ >Asterisk</a> вся <a href=http://tamkovich.com/tag/sip/ >SIP</a> UDP сигнализация обрабатывается одним единственным тредом. Обработка <a href=http://tamkovich.com/tag/sip/ >SIP</a> трафика &#8211; ресурсоёмкий процесс, 7-8 мегабит мусорных запросов заставляют <a href=http://tamkovich.com/asterisk/ >Asterisk</a> полностью скушать ядро процессора (например Intel E5335, E5405). Когда ядро полностью съедено, происходит вытеснение полезного <a href=http://tamkovich.com/tag/sip/ >SIP</a> трафика &#8211; мусорным. Перестают работать DTMF у клиентов использующих <a href=http://tamkovich.com/tag/sip/ >SIP</a> INFO. Начинаются проблемы с установкой новых и завершением существующих соединений. И вот это &#8211; основная угроза которую несут роботы-брутфорсеры.
</p>
<p><span id="more-2170"></span></p>
<p align=justify>
Так как же бороться с проблемами о которых нет сообщений в логах? Очень просто &#8211; необходимо сгенерировать сообщение о проблеме самому, тогда всю остальную часть нашей системы противодействия (например программу fail2ban) можно будет оставить без изменений. Характерным признаком брутфорса является большое количество <a href=http://tamkovich.com/tag/sip/ >SIP</a> пакетов в единицу времени. Посчитать количество пакетов в единицу времени можно с помощью модуля iptables под названием recent. В интернете есть много примеров как с помощью модуля recent отбрасывают пакеты приходящие с частотой выше определённой. Мы, вместо отбрасывания, будем генерировать сообщения для нашей системы обнаружения атак (например fail2ban). Такой подход имеет свои недостатки и преимущества. Основным недостатком является, то что на обработку сообщений будут тратиться ресурсы системы, тогда как отбрасывание пакета условно бесплатное. Преимуществ чуть больше: мы сможем воспользоваться всеми возможностями нашей системы обнаружения атак, такими как белые списки IP адресов, единообразный учёт всех обнаруженных атак и так далее.
</p>
<p align=justify>
От теории &#8211; к практике! Подготовим скелет из правил iptables:</p>

<div class="wp_syntax"><div class="code"><pre class="iptables" style="font-family:monospace;">-A INPUT -p udp --dport 5060 -j SCAMBLOCK
-A INPUT -p udp --dport 5060 -m recent --set --name SIP
-A INPUT -p udp --dport 5060 -m recent --update --seconds 2 --hitcount 60 --name SIP \
-j LOG --log-prefix &quot;SIP flood detected: &quot;</pre></div></div>

<p>Первое правило проверяет наш пакет по цепочке SCAMBLOCK. В данной цепочке хранятся заблокированные IP адреса, если пакет совпадает с одним из адресов этой цепочки &#8211; он отбрасывается. Если пакет не отброшен, то во втором правиле он помечается для учёта под именем <a href=http://tamkovich.com/tag/sip/ >SIP</a>. Третье правило считает не превысил ли данный пакет указанное количество (60) за указанное время (2 секунды). Если количество не превышено &#8211; правило игнорируется, если превышено &#8211; выполняется действие. В нашем случае в системный лог пишется детальная информация о пакете начинающаяся со строки &laquo;<a href=http://tamkovich.com/tag/sip/ >SIP</a> flood detected: &laquo;. Количество пакетов и время считаются отдельно для каждого источника. Таким образом получается, что мы ограничили скорость приёма <a href=http://tamkovich.com/tag/sip/ >SIP</a> пакетов от каждого незаблокированного IP адреса на уровне 30 пакетов в секунду. Для меня данное ограничение является комфортным, с одной стороны все клиенты, даже самые крупнные, шлют пакеты с одного IP адреса со скоростями ниже 30 пакетов/с, с другой стороны, 30 пакетов в секунду практически не отражаютя на работе системы. Возможно, что эту величину следует подправлять в ту или иную сторону в зависимости от производительности сервера, количества и типа абонентов.
</p>
<p align=justify>
В некоторых системах встроенное ограничение модуля recent на параметр hitcount весьма небольшое, например в CentOS это ограничение составляет 20 пакетов. Если вы попробуете выполнить приведенную выше команду, то получите следующую ошибку:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">iptables <span style="color: #660033;">-A</span> INPUT <span style="color: #660033;">-p</span> udp <span style="color: #660033;">--dport</span> <span style="color: #000000;">5060</span> <span style="color: #660033;">-m</span> recent <span style="color: #660033;">--update</span> <span style="color: #660033;">--seconds</span> <span style="color: #000000;">2</span> <span style="color: #660033;">--hitcount</span> <span style="color: #000000;">60</span> <span style="color: #660033;">--name</span> SIP \
<span style="color: #660033;">-j</span> LOG <span style="color: #660033;">--log-prefix</span> <span style="color: #ff0000;">&quot;SIP flood detected: &quot;</span>
iptables: Unknown error <span style="color: #000000;">4294967295</span></pre></div></div>

<p>Или вот так, для 64 битных систем:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">iptables <span style="color: #660033;">-A</span> INPUT <span style="color: #660033;">-p</span> udp <span style="color: #660033;">--dport</span> <span style="color: #000000;">5060</span> <span style="color: #660033;">-m</span> recent <span style="color: #660033;">--update</span> <span style="color: #660033;">--seconds</span> <span style="color: #000000;">2</span> <span style="color: #660033;">--hitcount</span> <span style="color: #000000;">60</span> <span style="color: #660033;">--name</span> SIP \
<span style="color: #660033;">-j</span> LOG <span style="color: #660033;">--log-prefix</span> <span style="color: #ff0000;">&quot;SIP flood detected: &quot;</span>
iptables: Unknown error <span style="color: #000000;">18446744073709551615</span></pre></div></div>

<p>Изменить максимальное ограничение можно передав модулю recent специальный параметр при загрузке. Для этого создадим файл /etc/modprobe.d/ipt.conf и пропишем в нём интересующий нас параметр:</p>

<div class="wp_syntax"><div class="code"><pre class="modprobe" style="font-family:monospace;">options ipt_recent ip_pkt_list_tot=60</pre></div></div>

<p>Будьте осторожны увеличивая данное ограничение, помните что вместе с ним увеличивается память, требуемая для хранения последних пакетов, а также количество циклов процессора требуемые на их обработку.
</p>
<p align=justify>
Ну вот и всё, теперь любой флуд на порт 5060 будет обнаружен с помощью модуля recent пакета iptables. Сообщение об обнаруженном флуде будет направлено в системный лог где его сможет увидеть наша любимая система обнаружения атак (например fail2ban). iptables не ограничивает нас одним лишь системным логом, действию LOG можно указать уровень (level) и facility сообщения, а в настройках Syslog перенаправить данные сообщения в отдельный файл. Сами же сообщения о <a href=http://tamkovich.com/tag/sip/ >SIP</a> флуде будут выглядеть вот так:
</p>

<div class="wp_syntax"><div class="code"><pre class="log" style="font-family:monospace;">Jun 17 23:54:44 sip2 kernel: SIP flood detected: IN=eth0 OUT= MAC=00:21:5e:db:15:b8:00:0f:34:f8:28:7f:08:00 SRC=184.172.62.3 DST=192.168.224.217 LEN=370 TOS=0x00 PREC=0x00 TTL=47 ID=0 DF PROTO=UDP SPT=5495 DPT=5060 LEN=350
Jun 17 23:54:44 sip2 kernel: SIP flood detected: IN=eth0 OUT= MAC=00:21:5e:db:15:b8:00:0f:34:f8:28:7f:08:00 SRC=184.172.62.3 DST=192.168.224.217 LEN=369 TOS=0x00 PREC=0x00 TTL=47 ID=0 DF PROTO=UDP SPT=5495 DPT=5060 LEN=349
Jun 17 23:54:44 sip2 kernel: SIP flood detected: IN=eth0 OUT= MAC=00:21:5e:db:15:b8:00:0f:34:f8:28:7f:08:00 SRC=184.172.62.3 DST=192.168.224.217 LEN=370 TOS=0x00 PREC=0x00 TTL=47 ID=0 DF PROTO=UDP SPT=5495 DPT=5060 LEN=350</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://tamkovich.com/2011/06/defending-asterisk-from-sip-flood-with-iptables/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Как сгенерировать случайный пароль в Linux/BSD</title>
		<link>http://tamkovich.com/2011/02/generating-random-password-linux-bsd/</link>
		<comments>http://tamkovich.com/2011/02/generating-random-password-linux-bsd/#comments</comments>
		<pubDate>Fri, 18 Feb 2011 07:58:42 +0000</pubDate>
		<dc:creator>Сергей Тамкович</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://tamkovich.com/?p=1731</guid>
		<description><![CDATA[Сгенерировать случайный пароль к вашей Linux/BSD системе &#8211; очень просто, для этого достаточно в вашем любимом шеле выполнить следующую команду: &#60; /dev/urandom tr -dc _A-Z-a-z-0-9 &#124; head -c8]]></description>
			<content:encoded><![CDATA[<p align=justify>
Сгенерировать случайный пароль к вашей Linux/BSD системе &#8211; очень просто, для этого достаточно в вашем любимом шеле выполнить следующую команду:
</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>urandom <span style="color: #c20cb9; font-weight: bold;">tr</span> <span style="color: #660033;">-dc</span> _A-Z-a-z-<span style="color: #000000;">0</span>-<span style="color: #000000;">9</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">head</span> <span style="color: #660033;">-c8</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://tamkovich.com/2011/02/generating-random-password-linux-bsd/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Пересобираем FreeType (SubPixel Rendering, ByteCode Interpreter)</title>
		<link>http://tamkovich.com/2011/02/recompiling-freetype-with-subpixel-rendering-bytecode-interpreter/</link>
		<comments>http://tamkovich.com/2011/02/recompiling-freetype-with-subpixel-rendering-bytecode-interpreter/#comments</comments>
		<pubDate>Thu, 10 Feb 2011 08:50:38 +0000</pubDate>
		<dc:creator>Сергей Тамкович</dc:creator>
				<category><![CDATA[Desktop]]></category>
		<category><![CDATA[Разное]]></category>

		<guid isPermaLink="false">http://tamkovich.com/?p=1729</guid>
		<description><![CDATA[В популярном дистрибутиве linux &#8211; Fedora, стандартная библиотека freetype имеет ряд ограничений: в ней выключены алгоритмы subpixel rendering и bytecode interpreter т.к. эти алгоритмы защищены патентами на территории некоторых стран (см. США). В результате, отображаемые шрифты на экране выглядят коряво. Существует два простых способа включить эти алгоритмы. Во-первых, можно подключить репозиторий с исправленной версией freetype. [...]]]></description>
			<content:encoded><![CDATA[<p align=justify>
В популярном дистрибутиве linux &#8211; Fedora, стандартная библиотека freetype имеет ряд ограничений: в ней выключены алгоритмы subpixel rendering и bytecode interpreter т.к. эти алгоритмы защищены патентами на территории некоторых стран (см. США). В результате, отображаемые шрифты на экране выглядят коряво. Существует два простых способа включить эти алгоритмы. Во-первых, можно подключить репозиторий с исправленной версией freetype. Во-вторых, можно пересобрать freetype вручную.
</p>
<p align=justify>
Пересобирается freetype очень просто, для начала необходимо скачать и установить пакет src.rpm соответствующий вашей версии библиотеки freetype &#8211; проще всего сделать это с помощью утилиты yumdownloader. Затем необходимо запустить утилиту rpmbuild с параметрами указывающими на активацию subpixel rendering и bytecode interpreter. И, наконец, устанавливаем готовые пакеты RPM в нашу систему. Выглядит это вот так:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> ~
yumdownloader <span style="color: #660033;">--source</span> freetype
rpm <span style="color: #660033;">-i</span> freetype<span style="color: #000000; font-weight: bold;">*</span>.rpm
rpmbuild <span style="color: #660033;">-bb</span> <span style="color: #660033;">--with</span> bytecode_interpreter <span style="color: #660033;">--with</span> subpixel_rendering rpmbuild<span style="color: #000000; font-weight: bold;">/</span>SPECS<span style="color: #000000; font-weight: bold;">/</span>freetype.spec
rpm <span style="color: #660033;">-Uvh</span> <span style="color: #660033;">--force</span> rpmbuild<span style="color: #000000; font-weight: bold;">/</span>RPMS<span style="color: #000000; font-weight: bold;">/</span>i686<span style="color: #000000; font-weight: bold;">/</span>freetype-<span style="color: #000000; font-weight: bold;">*</span>
<span style="color: #c20cb9; font-weight: bold;">rm</span> rpmbuild<span style="color: #000000; font-weight: bold;">/</span>RPMS<span style="color: #000000; font-weight: bold;">/</span>i686<span style="color: #000000; font-weight: bold;">/</span>freetype-<span style="color: #000000; font-weight: bold;">*</span></pre></div></div>
</p>
]]></content:encoded>
			<wfw:commentRss>http://tamkovich.com/2011/02/recompiling-freetype-with-subpixel-rendering-bytecode-interpreter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android 2.3 работает с mifare!</title>
		<link>http://tamkovich.com/2010/12/android-2-3-reads-mifare/</link>
		<comments>http://tamkovich.com/2010/12/android-2-3-reads-mifare/#comments</comments>
		<pubDate>Mon, 06 Dec 2010 21:05:32 +0000</pubDate>
		<dc:creator>Сергей Тамкович</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Безопасность]]></category>
		<category><![CDATA[Разное]]></category>

		<guid isPermaLink="false">http://tamkovich.com/?p=1637</guid>
		<description><![CDATA[Вчера анонсировали новую версию linux для телефона &#8211; Android 2.3: На мой взгляд, самое интересное в этом анонсе &#8211; технология с непонятным названием NFC (Near Field Communication) представленная под занавес. NFC это технология связи способная, помимо прочего, работать с RFID метками. Если внимательно присмотреться к ролику, то можно заметить, что с помощью мобильного телефона считывается [...]]]></description>
			<content:encoded><![CDATA[<p align=justify>
Вчера анонсировали новую версию linux для телефона &#8211; Android 2.3:
</p>
<p><object width="700" height="418"><param name="movie" value="http://www.youtube.com/v/Jx3pdWBlZ34?fs=1&amp;hl=ru_RU&amp;hd=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Jx3pdWBlZ34?fs=1&amp;hl=ru_RU&amp;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="700" height="418"></embed></object></p>
<p align=justify>
На мой взгляд, самое интересное в этом анонсе &#8211; технология с непонятным названием NFC (Near Field Communication) представленная под занавес. NFC это технология связи способная, помимо прочего, работать с RFID метками. Если внимательно присмотреться к ролику, то можно заметить, что с помощью мобильного телефона считывается метка mifare ultralight. Внедрение технологии NFC делает работу с метками mifare доступной любому обладателю телефона с Android. Если кто не в курсе, mifare очень любят в России транспортные компании. Различные версии mifare используются в бесконтактных проездных на метро, электрички, автобусы, троллейбусы и т.д. С появлением в широком доступе телефонов способных читать/писать метки mifare &#8211; можно ожидать всплеска интереса к генерации/клонированию транспортных карт.</p>
]]></content:encoded>
			<wfw:commentRss>http://tamkovich.com/2010/12/android-2-3-reads-mifare/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Интервью с разработчиком ФС Reiser4</title>
		<link>http://tamkovich.com/2010/12/interview-edward-shishkin-reiser4/</link>
		<comments>http://tamkovich.com/2010/12/interview-edward-shishkin-reiser4/#comments</comments>
		<pubDate>Mon, 06 Dec 2010 10:45:52 +0000</pubDate>
		<dc:creator>Сергей Тамкович</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[FS]]></category>

		<guid isPermaLink="false">http://tamkovich.com/?p=1630</guid>
		<description><![CDATA[Для тех кто пропустил сие интересное интервью и на ЛОРе и на Хабре. Эдуард Шишкин &#8211; ведущий и, пока, единственный разработчик файловой системы Reiser4, отвечает на вопросы рунета. — Как обстоят дела с продвижением reiser4 в ядро? Технических препятствий для этого я уже не вижу: все проблемы из знаменитого «списка для включения» решены. Осталось только [...]]]></description>
			<content:encoded><![CDATA[<p align=justify>
Для тех кто пропустил сие интересное интервью и на ЛОРе и на Хабре. Эдуард Шишкин &#8211; ведущий и, пока, единственный разработчик файловой системы Reiser4, отвечает на вопросы рунета.
</p>
<blockquote><p>
<b>— Как обстоят дела с продвижением reiser4 в ядро?</b></p>
<p>Технических препятствий для этого я уже не вижу: все проблемы из знаменитого «списка для включения» решены. Осталось только прояснить отношения с VFS, а соответствующая статья для публикации пока ещё не готова.</p>
<p>Вообще, продвижение reiser4 в ядро Линукс имеет сейчас низкий приоритет. Просто, потом нужно будет мгновенно реагировать на все изменения в VFS/block layer. А у меня не всегда есть такая возможность. В -mm ветке же никто от меня этого не требует. Если что-то ломается, Эндрю Мортон просто шлёт уведомление. А я, когда нахожу время, исправляю.</p>
<p>По поводу популярных прогнозов, что «reiser4 в ядро не включат и она умрёт», хочу сказать, что не понимаю навязчивую идею «путёвки в жизнь», якобы даваемой включением проекта в основную ветку ядра Линукс. Reiser4 — это результат 18-летних исследований в области хранения данных, не привязанный к конкретной операционной системе. Результат, над которым работало много ученых. Не включат в Линуксе — включат в другой ОС, где наши идеи покажутся интересными. На Линуксе свет клином не сошёлся…</p>
<p><b>— Есть ли смысл провести что-то вроде рекламной кампании о reiser4 для улучшения её имиджа?</b></p>
<p>Лучшая рекламная кампания — это объяснить людям, как она работает. Ибо все смотрят на её код, и никто ничего не понимает. Вот вам и Open Source. Каким образом это объяснять? Только статьями, публикуемыми в авторитетных изданиях. И уж, конечно, ни о какой Википедии не может быть и речи. Википедия хороша для освещения творчества художников эпохи Ренессанса. А страница вашего проекта здесь рискует превратиться в отхожее место для компетиторов.
</p></blockquote>
<p align=justify>
<a href=http://habrahabr.ru/blogs/linux/108629/>Интервью</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tamkovich.com/2010/12/interview-edward-shishkin-reiser4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Настройки core dump в CentOS</title>
		<link>http://tamkovich.com/2010/10/core-dump-centos/</link>
		<comments>http://tamkovich.com/2010/10/core-dump-centos/#comments</comments>
		<pubDate>Wed, 06 Oct 2010 08:11:14 +0000</pubDate>
		<dc:creator>Сергей Тамкович</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://tamkovich.com/?p=1545</guid>
		<description><![CDATA[При разработке программных модулей к сложным проектам, таким как Asterisk, Kamailio и т.д. Неизбежны ошибки приводящие к &#171;выпаданию корки&#187;. Современные операционные системы позволяют тонко регулировать параметры дампа памяти процесса (core dump). По умолчанию, многие дистрибутивы linux не сохраняют core dump, или сохраняют его не так, как этого бы хотелось разработчику. Хорошо когда есть вспомогательный скрипт, [...]]]></description>
			<content:encoded><![CDATA[<p align=justify>
При разработке программных модулей к сложным проектам, таким как <a href=http://tamkovich.com/asterisk/ >Asterisk</a>, Kamailio и т.д. Неизбежны ошибки приводящие к &laquo;выпаданию корки&raquo;. Современные операционные системы позволяют тонко регулировать параметры дампа памяти процесса (core dump). По умолчанию, многие дистрибутивы linux не сохраняют core dump, или сохраняют его не так, как этого бы хотелось разработчику. Хорошо когда есть вспомогательный скрипт, выставляющий все необходимые параметры. Такой, как safe_asterisk например. Но когда такого скрипта нет настройку необходимо произвести в ручную. На помощь придёт краткая, но чрезвычайно полезная заметка Артёма Носова &#8211; <a href=http://blog.unixstyle.ru/index.php?/archives/77-core-dump-CentOS.html>Специфика получения core dump в CentOS</a>.
</p>
<blockquote><p>
В обычной ситуации достаточно указать в /etc/sysctl.conf параметры<br />
kernel.core_uses_pid = 1<br />
kernel.core_pattern = /var/tmp/core.%p.%e.%s<br />
fs.suid_dumpable = 1<br />
Выполнить<br />
sysctl -p;<br />
ulimit -c unlimited<br />
&#8230;
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://tamkovich.com/2010/10/core-dump-centos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android на iPhone</title>
		<link>http://tamkovich.com/2010/05/android-on-iphone/</link>
		<comments>http://tamkovich.com/2010/05/android-on-iphone/#comments</comments>
		<pubDate>Sat, 29 May 2010 18:49:03 +0000</pubDate>
		<dc:creator>Сергей Тамкович</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://tamkovich.com/?p=1296</guid>
		<description><![CDATA[David Wang продемонстрировал работу операционной системы Android на iPhone. Android установлен параллельно с iPhone OS. Выбор загружаемой ОС осуществляется с помощью специального загрузчика &#8211; OpeniBoot. На данный момент работоспособны все основные функции &#8211; GSM звонки, SMS, Wi-Fi и музыка. Блог проекта &#8211; linuxoniphone.blogspot.com]]></description>
			<content:encoded><![CDATA[<p align=justify>
David Wang продемонстрировал работу операционной системы Android на iPhone. Android установлен параллельно с iPhone OS. Выбор загружаемой ОС осуществляется с помощью специального загрузчика &#8211; OpeniBoot. На данный момент работоспособны все основные функции &#8211; GSM звонки, SMS, Wi-Fi и музыка. Блог проекта &#8211; <a href=http://linuxoniphone.blogspot.com/>linuxoniphone.blogspot.com</a>
</p>
<p><center><br />
<object width="640" height="505"><param name="movie" value="http://www.youtube.com/v/5yO2KQHkt4A&#038;hl=ru_RU&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/5yO2KQHkt4A&#038;hl=ru_RU&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="505"></embed></object><br />
</center></p>
]]></content:encoded>
			<wfw:commentRss>http://tamkovich.com/2010/05/android-on-iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Регулярное удаление старых файлов с помощью cron и find</title>
		<link>http://tamkovich.com/2010/05/remove-old-files-from-cron/</link>
		<comments>http://tamkovich.com/2010/05/remove-old-files-from-cron/#comments</comments>
		<pubDate>Mon, 24 May 2010 12:34:03 +0000</pubDate>
		<dc:creator>Сергей Тамкович</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://tamkovich.com/?p=1291</guid>
		<description><![CDATA[Если вы записываете разговоры проходящие через ваш Asterisk, вы можете столкнуться с переполнением диска. Что бы избежать этой проблемы, надо регулярно удалять старые записи с сервера. Операции над файлами старше определённого возраста &#8211; стандартная возможность команды find. Делается это следующим образом: find /var/spool/asterisk/monitor -mtime +90 -exec rm &#123;&#125; \; find выполнит команду указанную в параметре [...]]]></description>
			<content:encoded><![CDATA[<p align=justify>
Если вы записываете разговоры проходящие через ваш <a href=http://tamkovich.com/asterisk/ >Asterisk</a>, вы можете столкнуться с переполнением диска. Что бы избежать этой проблемы, надо регулярно удалять старые записи с сервера. Операции над файлами старше определённого возраста &#8211; стандартная возможность команды find. Делается это следующим образом:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">find</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>spool<span style="color: #000000; font-weight: bold;">/</span>asterisk<span style="color: #000000; font-weight: bold;">/</span>monitor <span style="color: #660033;">-mtime</span> +<span style="color: #000000;">90</span> <span style="color: #660033;">-exec</span> <span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span><span style="color: #7a0874; font-weight: bold;">&#125;</span> \;</pre></div></div>

<p>find выполнит команду указанную в параметре exec, для каждого файла чье содержимое не менялось последние mtime суток. Т.е. в данном примере файлы записанные более 90 суток назад &#8211; будут удалены. Добавляем эту строку в crontab:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000;">12</span> <span style="color: #000000;">2</span> <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000; font-weight: bold;">*</span> root <span style="color: #c20cb9; font-weight: bold;">find</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>spool<span style="color: #000000; font-weight: bold;">/</span>asterisk<span style="color: #000000; font-weight: bold;">/</span>monitor <span style="color: #660033;">-mtime</span> +<span style="color: #000000;">90</span> <span style="color: #660033;">-exec</span> <span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span><span style="color: #7a0874; font-weight: bold;">&#125;</span> \;</pre></div></div>

<p>И теперь старые файлы будут удаляться каждую ночь автоматически &#8211; cron-ом.</p>
]]></content:encoded>
			<wfw:commentRss>http://tamkovich.com/2010/05/remove-old-files-from-cron/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PS3 + Linux = GameOver</title>
		<link>http://tamkovich.com/2010/03/ps3-linux-gameover/</link>
		<comments>http://tamkovich.com/2010/03/ps3-linux-gameover/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 08:35:38 +0000</pubDate>
		<dc:creator>Сергей Тамкович</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PS3]]></category>
		<category><![CDATA[Sony]]></category>

		<guid isPermaLink="false">http://tamkovich.com/?p=1159</guid>
		<description><![CDATA[Вчера, новостное агентство :) LOR, сообщило, что поддержка Linux полностью убрана из PS3. Полностью &#8211; в смысле совсем. Теперь опции &#171;Other OS&#187; не будет не только в PS3 Slim, но и в &#171;старых&#187; PS3. Нововведение появится в прошивке 3.21 которая будет выпущена 1го апреля. Возможно этот шаг вызван ковырянием geohotz-a в супервизоре. А может быть [...]]]></description>
			<content:encoded><![CDATA[<p align=justify>
Вчера, новостное агентство :) LOR, <a href=http://www.linux.org.ru/news/hardware/4715915 >сообщило</a>, что поддержка Linux полностью убрана из PS3. Полностью &#8211; в смысле совсем. Теперь опции &laquo;Other OS&raquo; не будет не только в PS3 Slim, но и в &laquo;старых&raquo; PS3. Нововведение появится в прошивке 3.21 которая будет выпущена 1го апреля. Возможно этот шаг вызван <a href=http://tamkovich.com/2010/01/playstation3-hacked-ps3/ >ковырянием geohotz-a в супервизоре</a>. А может быть это всего лишь первоапрельская шутка. Скоро узнаем.
</p>
<p align=justify>
К сожалению у меня, так и не дошли руки написать заметку об установке Linux на PS3, 3 месяца я носил образ Fedora 12 PPC на ноутбуке, а вот 2 недели назад, даже записал его на болванку :)
</p>
<p><span id="more-1159"></span><br />
<img src=/wp-content/uploads/2010/03/fedora12ppc.jpg ></p>
<h2>Добавлено 04.04.2010</h2>
<p align=justify>
К сожалению это была не шутка. Прошивка 3.21 вышла &#8211; OtherOS убрали.</p>
]]></content:encoded>
			<wfw:commentRss>http://tamkovich.com/2010/03/ps3-linux-gameover/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

