<?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>Freedom Interface &#187; linux</title>
	<atom:link href="http://www.freedominterface.org/category/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.freedominterface.org</link>
	<description>Pensamentos livres</description>
	<lastBuildDate>Thu, 27 Oct 2011 11:04:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Log channels Asterisk</title>
		<link>http://www.freedominterface.org/2011/10/27/log-channels-asterisk/</link>
		<comments>http://www.freedominterface.org/2011/10/27/log-channels-asterisk/#comments</comments>
		<pubDate>Thu, 27 Oct 2011 11:04:50 +0000</pubDate>
		<dc:creator>Eduardo Ramos</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[asterisk]]></category>
		<category><![CDATA[dicas]]></category>

		<guid isPermaLink="false">http://www.freedominterface.org/?p=578</guid>
		<description><![CDATA[No asterisk, além dos logs padrão, é possível definir seus próprios logs. Para isto, basta criar um novo log channel dentro do arquivo logger.conf. Veja o exemplo: Acrescente o a seguinte linha no arquivo logger.conf  na seção logfiles: Na console do asterisk, digite: Pronto, um novo arquivo de log está sendo gerado na pasta de [...]]]></description>
			<content:encoded><![CDATA[<p>No asterisk, além dos logs padrão, é possível definir seus próprios logs. Para isto, basta criar um novo log channel dentro do arquivo logger.conf. Veja o exemplo:</p>
<p>Acrescente o a seguinte linha no arquivo logger.conf  na seção logfiles:</p>
<pre class="brush: plain; title: ; notranslate">

test =&gt; notice,warning
</pre>
<p>Na console do asterisk, digite:</p>
<pre class="brush: plain; title: ; notranslate">

pbx*CLI&gt; logger reload
</pre>
<p>Pronto, um novo arquivo de log está sendo gerado na pasta de logs do asterisk com as informações de notice e warning.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedominterface.org/2011/10/27/log-channels-asterisk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gerar coredump em programa C</title>
		<link>http://www.freedominterface.org/2011/09/13/gerar-coredump-em-programa-c/</link>
		<comments>http://www.freedominterface.org/2011/09/13/gerar-coredump-em-programa-c/#comments</comments>
		<pubDate>Tue, 13 Sep 2011 17:43:39 +0000</pubDate>
		<dc:creator>Eduardo Ramos</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[c programming]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[dicas]]></category>

		<guid isPermaLink="false">http://www.freedominterface.org/?p=568</guid>
		<description><![CDATA[Quando um programa termina inexperadamente, o Linux pode gerar um dump da área de memória deste programa no momento do crash, para depuração. Acontece que o seu ambiente pode estar configurado para não gerar esse dump. Uma maneira de conferir isto é executando o seguinte comando: O número retornado é o tamanho máximo que o [...]]]></description>
			<content:encoded><![CDATA[<p>Quando um programa termina inexperadamente, o Linux pode gerar um dump da área de memória deste programa no momento do crash, para depuração. Acontece que o seu ambiente pode estar configurado para não gerar esse dump. Uma maneira de conferir isto é executando o seguinte comando:</p>
<pre class="brush: bash; title: ; notranslate"># ulimit -c</pre>
<p>O número retornado é o tamanho máximo que o coredump pode ter em kb. Caso seja 0, significa que não será gerado coredump. Para garantir a geração, o valor pode ser especificado como infinito:</p>
<pre class="brush: bash; title: ; notranslate"># ulimit -c unlimited</pre>
<p>O problema é que seu programa pode estar rodando em uma sessão diferente, e assim, os limites podem varias. Desta maneira, o próprio programa pode alterar este parâmetro em tempo de execução. Segue um pequeno código de exemplo:</p>
<pre class="brush: cpp; title: ; notranslate">
#include &lt;signal.h&gt;
#include &lt;sys/time.h&gt;
#include &lt;sys/resource.h&gt;

int main(int ac,char *av[]) {
struct rlimit limit;
limit.rlim_cur=RLIM_INFINITY;
limit.rlim_max=RLIM_INFINITY;

setrlimit(RLIMIT_CORE,&amp;limit);
printf(&quot;%d\n&quot;,10/0);

return 0;
}
</pre>
<p>Neste exemplo, foi usada a struct rlimit. Seus membros são rlim_cur e rlim_max, sendo eles softlimit e hardlimit respectivamente. O valor definido para ambos foi infinito (RLIM_INFINITY). Para efetivar a alteração, usa-se a função setrlimit. Veja que este código exemplo irá terminar  em crash, pois há uma divisão por zero e o coredump deverá ser gerado.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedominterface.org/2011/09/13/gerar-coredump-em-programa-c/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>procps-dev</title>
		<link>http://www.freedominterface.org/2011/03/09/procps-dev/</link>
		<comments>http://www.freedominterface.org/2011/03/09/procps-dev/#comments</comments>
		<pubDate>Wed, 09 Mar 2011 19:12:55 +0000</pubDate>
		<dc:creator>Eduardo Ramos</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[slackware]]></category>
		<category><![CDATA[utilidades]]></category>
		<category><![CDATA[dicas]]></category>
		<category><![CDATA[shell script]]></category>

		<guid isPermaLink="false">http://www.freedominterface.org/?p=556</guid>
		<description><![CDATA[Essa semana precisei implementar uma função da biblioteca libproc para que meu programa só permitisse uma instância. O problema é que eu precisava dos headers do pacote procps, mas por padrão o Slackware não instala. Por isso, precisei fazer manualmente, baixar o pacote, desempacotar e copiar para a pasta de headers. Não sei se futuramente [...]]]></description>
			<content:encoded><![CDATA[<p>Essa semana precisei implementar uma função da biblioteca libproc para que meu programa só permitisse uma instância. O problema é que eu precisava dos headers do pacote procps, mas por padrão o Slackware não instala.</p>
<p>Por isso, precisei fazer manualmente, baixar o pacote, desempacotar e copiar para a pasta de headers. Não sei se futuramente esses valiosos arquivos serão inclusos no pacote oficial, mas de qualquer maneira, eu criei um SlackBuild que possa ajudar quem está na mesma que eu.</p>
<pre class="brush: bash; title: ; notranslate">
#!/bin/bash
MIRROR=${MIRROR:-http://ftp.belnet.be/packages/slackware/slackware_source/}
VERSION=${VERSION:-3.2.7}
ARCH=noarch
BUILD=${BUILD:-2duderamos}
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-procps-dev

rm -rf $PKG
rm -rf $TMP/procps-$VERSION
if [ ! -f procps-${VERSION}.tar.gz ];then
  wget &quot;${MIRROR}/a/procps/procps-${VERSION}.tar.gz&quot; || exit 1
fi

cd $TMP

tar xzvf $CWD/procps-$VERSION.tar.gz || exit 1

mkdir -p $PKG/install
mkdir -p $PKG/usr/include/procps
mkdir -p $PKG/lib

cd $TMP/procps-$VERSION
cp proc/*.h $PKG/usr/include/procps
cat $CWD/slack-desc &gt; $PKG/install/slack-desc
cat $CWD/doinst.sh &gt; $PKG/install/doinst.sh

cd $PKG

makepkg -l y -c n $TMP/procps-dev-$VERSION-$ARCH-$BUILD.txz

rm -rf $TMP/procps-$VERSION.tar.gz
rm -rf $TMP/procps-$VERSION
rm -rf $PKG
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.freedominterface.org/2011/03/09/procps-dev/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Youtube URL offset</title>
		<link>http://www.freedominterface.org/2011/02/11/youtube-url-offset/</link>
		<comments>http://www.freedominterface.org/2011/02/11/youtube-url-offset/#comments</comments>
		<pubDate>Fri, 11 Feb 2011 16:42:17 +0000</pubDate>
		<dc:creator>Eduardo Ramos</dc:creator>
				<category><![CDATA[curiosidade]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[vídeos]]></category>
		<category><![CDATA[dicas]]></category>

		<guid isPermaLink="false">http://www.freedominterface.org/?p=532</guid>
		<description><![CDATA[Hoje, por acaso, acabei descobrindo uma coisa muito interessante no Youtube. É possível abrir um vídeo não só pelo início, mas por qualquer parte dele. Não sei se ficou claro, mas segue a dica: http://www.youtube.com/watch?v=[video id]#at=[tempo de offset em segundos] Exemplo: http://www.youtube.com/watch?v=EShea9vWFtI#at=30 Vai começar o vídeo METNAL &#8211; Perfect Strangers (Deep Purple Cover) &#8211; Curitiba a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.youtube.com"><img class="alignleft" src="http://www.treinaweb.com.br/blog/wp-content/uploads/2010/09/youtube.jpg" alt="Youtube" width="115" height="90" /></a>Hoje, por acaso, acabei descobrindo uma coisa muito interessante no Youtube. É possível abrir um vídeo não só pelo início, mas por qualquer parte dele.</p>
<p>Não sei se ficou claro, mas segue a dica:</p>
<p>http://www.youtube.com/watch?v=<strong>[video id]</strong>#at=<strong>[tempo de offset em segundos]</strong></p>
<p>Exemplo:</p>
<p><a href="http://www.youtube.com/watch?v=EShea9vWFtI#at=30">http://www.youtube.com/watch?v=EShea9vWFtI#at=30</a></p>
<p>Vai começar o vídeo <strong>METNAL &#8211; Perfect Strangers (Deep Purple Cover) &#8211; Curitiba</strong> a partir de <strong>30</strong> segundos do início.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedominterface.org/2011/02/11/youtube-url-offset/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>AltGr em Linux no Acer Aspire 7520</title>
		<link>http://www.freedominterface.org/2010/12/04/keymap-de-acer-aspire-7520-no-linux/</link>
		<comments>http://www.freedominterface.org/2010/12/04/keymap-de-acer-aspire-7520-no-linux/#comments</comments>
		<pubDate>Sat, 04 Dec 2010 17:48:07 +0000</pubDate>
		<dc:creator>Eduardo Ramos</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[dicas]]></category>
		<category><![CDATA[slackware]]></category>

		<guid isPermaLink="false">http://www.freedominterface.org/?p=465</guid>
		<description><![CDATA[Tive um problema com o teclado do meu notebook. Mesmo que eu carregasse a layout correta, br-abnt2, a combinação das teclas AltGr + q e AltGr + w não produziam os caracteres &#8216;/ &#8216;e &#8216;?&#8217; respectivamente no console. Dentro do KDE4 funcionava perfeitamente. A solução foi adicionar ao arquivo /usr/share/kbd/keymaps/i386/include/linux-with-alt-and-altgr.inc do meu Slackware64 13.1 as [...]]]></description>
			<content:encoded><![CDATA[<p>Tive um problema com o teclado do meu notebook. Mesmo que eu carregasse a layout correta, br-abnt2, a combinação das teclas AltGr + q e AltGr + w não produziam os caracteres &#8216;/ &#8216;e &#8216;?&#8217; respectivamente no console. Dentro do KDE4 funcionava perfeitamente.<br />
A solução foi adicionar ao arquivo /usr/share/kbd/keymaps/i386/include/linux-with-alt-and-altgr.inc do meu Slackware64 13.1 as seguintes linhas:</p>
<pre class="brush: plain; title: ; notranslate">
altgr keycode  16 = slash
altgr keycode  17 = question
</pre>
<p>Com isto, adicionei no mapeamento do teclado a combinação necessária. Para carregar, usei o comando:</p>
<pre class="brush: bash; title: ; notranslate">
loadkeys br-abnt2
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.freedominterface.org/2010/12/04/keymap-de-acer-aspire-7520-no-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>docalls</title>
		<link>http://www.freedominterface.org/2010/11/29/docalls/</link>
		<comments>http://www.freedominterface.org/2010/11/29/docalls/#comments</comments>
		<pubDate>Mon, 29 Nov 2010 16:10:21 +0000</pubDate>
		<dc:creator>Eduardo Ramos</dc:creator>
				<category><![CDATA[utilidades]]></category>
		<category><![CDATA[asterisk]]></category>
		<category><![CDATA[shell script]]></category>

		<guid isPermaLink="false">http://www.freedominterface.org/?p=458</guid>
		<description><![CDATA[Quem ainda não foi &#8216;vítima&#8217; de uma chamada de telemarketing? Embora muitos achem isto chato, empresas continuam usando esta técnica para divulgar seus produtos. Para os usuários de VoIP, e mais especificamente Asterisk, o docalls, pequeno script shell, pode te ajudar a gerar &#8216;malas-diretas&#8217; de voz. O seu funcionamento é baseado no módulo pbx_spool.so do [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-thumbnail wp-image-459" title="Telemarketing" src="http://www.freedominterface.org/wp-content/uploads/2010/11/telemarketing-150x150.jpg" alt="" width="150" height="150" />Quem ainda não foi &#8216;vítima&#8217; de uma chamada de telemarketing? Embora muitos achem isto chato, empresas continuam usando esta técnica para divulgar seus produtos. Para os usuários de VoIP, e mais especificamente Asterisk, o docalls, pequeno script shell, pode te ajudar a gerar &#8216;malas-diretas&#8217; de voz.</p>
<p>O seu funcionamento é baseado no módulo pbx_spool.so do Asterisk, e portanto, este deverá estar carregado para funcionar. Ele pode ser baixado <a href="http://www.freedominterface.org/projetos/docalls">aqui</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedominterface.org/2010/11/29/docalls/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Repositório local Slackware</title>
		<link>http://www.freedominterface.org/2010/11/24/repositorio-local-slackware/</link>
		<comments>http://www.freedominterface.org/2010/11/24/repositorio-local-slackware/#comments</comments>
		<pubDate>Wed, 24 Nov 2010 19:52:48 +0000</pubDate>
		<dc:creator>Eduardo Ramos</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[slackware]]></category>
		<category><![CDATA[dicas]]></category>

		<guid isPermaLink="false">http://www.freedominterface.org/?p=444</guid>
		<description><![CDATA[Que usuário Slackware nunca pensou em criar em sua rede um repositório local dos pacotes current? Bem&#8230; eu já. Como tenho vários servidores Slackware em minha rede, seria muito mais fácil puxar tudo de uma vez e manter sincronizado a cada período. Pesquisando na Internet como eu poderia fazer isso, encontrei a solução implementada por [...]]]></description>
			<content:encoded><![CDATA[<p>Que usuário Slackware nunca pensou em criar em sua rede um repositório<img class="alignright size-thumbnail wp-image-445" title="Pacotes" src="http://www.freedominterface.org/wp-content/uploads/2010/11/image_preview-150x150.png" alt="" width="150" height="150" /> local dos pacotes current? Bem&#8230; eu já. Como tenho vários servidores Slackware em minha rede, seria muito mais fácil puxar tudo de uma vez e manter sincronizado a cada período.</p>
<p>Pesquisando na Internet como eu poderia fazer isso, encontrei a solução implementada por Eric Hameleers em seu <a href="http://alien.slackbook.org/blog/local-slackware-mirror/" target="_blank">blog</a>. Logo baixei e fiz funcionar. Pronto, agora só me falta configurar o slackpkg de todos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedominterface.org/2010/11/24/repositorio-local-slackware/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>linkfailover 1.0 testado e aprovado</title>
		<link>http://www.freedominterface.org/2010/11/23/linkfailover-1-0-testado-e-aprovado/</link>
		<comments>http://www.freedominterface.org/2010/11/23/linkfailover-1-0-testado-e-aprovado/#comments</comments>
		<pubDate>Tue, 23 Nov 2010 18:38:24 +0000</pubDate>
		<dc:creator>Eduardo Ramos</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[redes]]></category>
		<category><![CDATA[servidores]]></category>
		<category><![CDATA[c programming]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[dicas]]></category>

		<guid isPermaLink="false">http://www.freedominterface.org/?p=429</guid>
		<description><![CDATA[Hoje finalmente consegui implantar uma solução para falha de links no meu Linux. O linkfailover assume um gateway como sendo primário e uma lista de outros alternativos. Caso o primário falhe, ele busca na lista de alternativos um que esteja disponível para assumir a saída de pacotes. Acredito que existam outras implementações para essa solução, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.freedominterface.org/wp-content/uploads/2010/11/bifurcacao1.jpg"><img class="alignleft size-thumbnail wp-image-430" style="margin: 5px;" title="Bifurcação" src="http://www.freedominterface.org/wp-content/uploads/2010/11/bifurcacao1-150x150.jpg" alt="" width="150" height="150" /></a>Hoje finalmente consegui implantar uma solução para falha de links no meu Linux. O linkfailover assume um gateway como sendo primário e uma lista de outros alternativos. Caso o primário falhe, ele busca na lista de alternativos um que esteja disponível para assumir a saída de pacotes. Acredito que existam outras implementações para essa solução, mas esta foi a que casou perfeitamente com a minha necessidade. Faça o download <a href="http://www.freedominterface.org/projetos/linkfailover">aqui</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedominterface.org/2010/11/23/linkfailover-1-0-testado-e-aprovado/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Montar partição de VM em host</title>
		<link>http://www.freedominterface.org/2010/10/26/montar-particao-de-vm-em-host/</link>
		<comments>http://www.freedominterface.org/2010/10/26/montar-particao-de-vm-em-host/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 20:02:17 +0000</pubDate>
		<dc:creator>Eduardo Ramos</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[utilidades]]></category>
		<category><![CDATA[virtualização]]></category>
		<category><![CDATA[dicas]]></category>

		<guid isPermaLink="false">http://www.freedominterface.org/?p=407</guid>
		<description><![CDATA[Há momentos em que é necessário trabalhar com um disco ou partição de um servidor Linux sem que ele seja usado no boot. Normalmente em PCs usamos um disco de boot que nos entrega um shell para darmos comandos. Geralmente isto é feito para depuração de problemas na partição. Em máquinas virtuais baseadas no KVM, [...]]]></description>
			<content:encoded><![CDATA[<p>Há momentos em que é necessário trabalhar com um disco ou partição de um servidor Linux sem que ele seja usado no boot. Normalmente em PCs usamos um disco de boot que nos entrega um shell para darmos comandos. Geralmente isto é feito para depuração de problemas na partição.</p>
<p>Em máquinas virtuais baseadas no KVM, é possível montar uma partição de uma máquina virtual no servidor hospedeiro. Para isto, basta usar o módulo Network block driver (nbd). Para habilitar, verifique se sua configuração do kernel contém &#8220;CONFIG_BLK_DEV_NBD=m&#8221; ou &#8220;CONFIG_BLK_DEV_NBD=y&#8221;. Caso seja um módulo, basta carregá-lo com o modprobe.</p>
<pre class="brush: bash; title: ; notranslate">modprobe nbd max_part=63</pre>
<p>Mais informações, use: modinfo nbd.</p>
<p>No pacote do qemu-kvm, vem uma ferramenta chamada qemu-nbd. Com ela, basta conectar algum dos arquivos de bloco nbd à imagem do disco virtual. No meu caso:</p>
<pre class="brush: bash; title: ; notranslate">qemu-nbd -c /dev/nbd0 /dev/logical/dns2</pre>
<p>.</p>
<p>Ele critou outros arquivos de blocos, representando todas as partições do meu disco virtual: /dev/nbd0p1, /dev/nbd0p2 e /dev/nbd0p3. Com isto, basta eu montar este bloco a alguma pasta do sistema, como no exemplo:</p>
<pre class="brush: bash; title: ; notranslate">mount /dev/nbd0p1 /mnt/tmp</pre>
<p>Vale lembrar que o hospedeiro precisa ter suporte ao sistema de arquivos da partição que será montada.</p>
<p>Para desconectar, é preciso desmontar as partições montadas anteriormente e desconectar o dispositivo.</p>
<pre class="brush: bash; title: ; notranslate">qemu-nbd -d /dev/nbd0</pre>
<p>Mais informações use &#8220;qemu-nbd -h&#8221; ou &#8220;man qemu-nbd&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedominterface.org/2010/10/26/montar-particao-de-vm-em-host/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Estender partição</title>
		<link>http://www.freedominterface.org/2010/10/20/estender-particao/</link>
		<comments>http://www.freedominterface.org/2010/10/20/estender-particao/#comments</comments>
		<pubDate>Wed, 20 Oct 2010 14:53:00 +0000</pubDate>
		<dc:creator>Eduardo Ramos</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[servidores]]></category>
		<category><![CDATA[utilidades]]></category>
		<category><![CDATA[virtualização]]></category>
		<category><![CDATA[lvm2]]></category>

		<guid isPermaLink="false">http://www.freedominterface.org/?p=384</guid>
		<description><![CDATA[Como toda invenção, meu aprendizado é orientado à necessidade. Recentemente passei por um sufoco de espaço em disco em uma máquina virtual minha, que opera sobre um servidor Linux com KVM. Para melhor gerência, meus discos virtuais estão alocados como volumes lógicos LVM2, o que facilitou muito meu trabalho neste momento. No meu caso, eu [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-medium wp-image-400 alignleft" title="Mesa" src="http://www.freedominterface.org/wp-content/uploads/2010/10/1110-1112-Extend-a-Bench-2-300x133.jpg" alt="" width="300" height="133" />Como toda invenção, meu aprendizado é orientado à necessidade. Recentemente passei por um sufoco de espaço em disco em uma máquina virtual minha, que opera sobre um servidor Linux com KVM. Para melhor gerência, meus discos virtuais estão alocados como volumes lógicos LVM2, o que facilitou muito meu trabalho neste momento.</p>
<p>No meu caso, eu tinha uma VM montada sobre um volume de 10GB, e eu desejava expandir este espaço para 30GB, sem ter que anexar outro volume. Segui rigorosamente estes passos: parar a VM, expandir o volume lógico, dar boot com um CD ou pendrive de boot da distribuição, recriar a tabela de partições com o fdisk com os novos valores, estender a partição ext4 com resize2fs. Acompanhe mais detalhadamente abaixo.</p>
<h3>Volume lógico</h3>
<p>Antes de mais nada, a máquina virtual deverá estar desligada. No servidor hypervisior, execute o seguinte comando:</p>
<pre class="brush: bash; title: ; notranslate">lvextend -L +20G /dev/logical/plutus</pre>
<p>Isto faz com que meu volume lógico &#8216;plutus&#8217; seja aumentado em 20GiB (veja <a href="http://blogdovicente.com/2009/12/17/qual-a-diferenca-entre-gib-e-gb/" target="_blank">diferença entre GiB e GB</a>)</p>
<h3>Partição física do disco virtual</h3>
<p>Depois de o volume esticado, basta dar o boot na máquina virtual usando um disco de boot externo. Isto é importante porque vamos mexer na estrutura básica das partições. No meu caso eu uso Slackware64 13.1 e fdisk, mas nada impede de usar outra distro e ferramenta. O importante é que não haja formatação na finalização do processo. Aqui, assume-se que você saiba usar a ferramenta escolhida.</p>
<p>Na minha VM, eu tenho duas partições: / (root ou barra) como sda1 de 9,5GiB e swap como sda2 0,5GiB. Neste passo, preciso entrar no fdisk no dispositivo sda e excluir as duas partições. Mas calma! Isto não fará com que você perca seus dados, pois estamos apenas mexendo no mapeamento das partições, onde começa e termina o que. Depois de excluir, criei a partição número 1, que corresponde ao / com o tamanho de 29,5GiB e o restante para swap. Aqui é importantíssimo que se observe o início da partição 1, que deverá estar no mesmo bloco da anterior. Caso contrário, os dados ficarão inacessíveis. Feito isto, basta salvar a nova tabela de partições.</p>
<h3>Estendendo a partição ext4</h3>
<p>Aproveitando que não estamos rodando em cima do disco em questão, vamos efetivar o tamanho da partição útil do sistema. Para isto usarei o comando resize2fs do pacote e2fsprogs. Este passo é muito simples, basta usar o comando:</p>
<pre class="brush: bash; title: ; notranslate">resize2fs /dev/sda1</pre>
<p>Isto fará com que ele aumente a partição ext4 para o máximo possível, no caso 29,5GiB. É provável que ele solicite uma checagem com o fsck antes de fazer isto. Basta usar o comando:</p>
<pre class="brush: bash; title: ; notranslate">fsck /dev/sda1</pre>
<h3>Finalização</h3>
<p>Agora, basta testar. Antes mesmo de um boot no disco principal, tente montara nova partição:</p>
<pre class="brush: bash; title: ; notranslate">mount /dev/sda1 /mnt</pre>
<p>Se tudo correu bem, você poderá navegar na nova partição pelo ponto de montagem /mnt. Agora basta dar um reboot usando o disco principal.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedominterface.org/2010/10/20/estender-particao/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

