<?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>Linux, Java y programación &#187; compilación</title>
	<atom:link href="http://casidiablo.net/tag/compilacion/feed/" rel="self" type="application/rss+xml" />
	<link>http://casidiablo.net</link>
	<description>Blog de Java, Programación y Linux</description>
	<lastBuildDate>Fri, 11 Nov 2011 05:41: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>Instalar/reinstalar VMware 7 en Linux con el kernel 2.6.32</title>
		<link>http://casidiablo.net/error-vmware-linux-kernel/</link>
		<comments>http://casidiablo.net/error-vmware-linux-kernel/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 18:19:07 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[2.6.32]]></category>
		<category><![CDATA[compilación]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[módulos]]></category>
		<category><![CDATA[vmware]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=3520</guid>
		<description><![CDATA[Si has intentado instalar VMware 7 sobre una máquina Linux corriendo el kernel 2.6.32 tal vez hayas tenido problemas. También, como en mi caso, tener VMware instalado con el kernel 2.6.31 y actualizar a 2.6.32 resulta en problemas al recompilar los módulos (específicamente el vmnet y el vmci). Los errores que arroja VMware al momento [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Ferror-vmware-linux-kernel%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Instalar%2Freinstalar%20VMware%207%20en%20Linux%20con%20el%20kernel%202.6.32%22%20%7D);"></div>
<p style="text-align: justify;">Si has intentado instalar VMware 7 sobre una máquina Linux corriendo el kernel 2.6.32 tal vez hayas tenido problemas. También, como en mi caso, tener VMware instalado con el kernel 2.6.31 y actualizar a 2.6.32 resulta en problemas al recompilar los módulos (específicamente el vmnet y el vmci).</p>
<p style="text-align: justify;">Los errores que arroja VMware al momento de tratar de recompilar los módulos son similares a esto:</p>
<p style="text-align: center;"><a href="http://casidiablo.net/wordpress/wp-content/uploads/2009/12/error-vmware.png"><img class="size-full wp-image-3522 aligncenter" title="error-vmware" src="http://casidiablo.net/wordpress/wp-content/uploads/2009/12/error-vmware.png" alt="error-vmware" width="382" height="341" /></a></p>
<p style="text-align: justify;">Errores con el vmnet que se muestran en consola:</p>
<div class="consola">CC [M]  /tmp/vmware-root/modules/vmnet-only/vnetUserListener.o<br />
/tmp/vmware-root/modules/vmnet-only/vnetUserListener.c: En la función ‘VNetUserListenerEventHandler’:<br />
/tmp/vmware-root/modules/vmnet-only/vnetUserListener.c:240: error: ‘TASK_INTERRUPTIBLE’ no se declaró aquí (primer uso en esta función)<br />
/tmp/vmware-root/modules/vmnet-only/vnetUserListener.c:240: error: (Cada identificador no declarado solamente se reporta una vez<br />
/tmp/vmware-root/modules/vmnet-only/vnetUserListener.c:240: error: para cada funcion en la que aparece.)<br />
/tmp/vmware-root/modules/vmnet-only/vnetUserListener.c: En la función ‘VNetUserListenerRead’:<br />
/tmp/vmware-root/modules/vmnet-only/vnetUserListener.c:282: error: ‘TASK_INTERRUPTIBLE’ no se declaró aquí (primer uso en esta función)<br />
/tmp/vmware-root/modules/vmnet-only/vnetUserListener.c:282: error: declaración implícita de la función ‘signal_pending’<br />
/tmp/vmware-root/modules/vmnet-only/vnetUserListener.c:282: error: declaración implícita de la función ‘schedule’<br />
make[2]: *** [/tmp/vmware-root/modules/vmnet-only/vnetUserListener.o] Error 1<br />
make[1]: *** [_module_/tmp/vmware-root/modules/vmnet-only] Error 2<br />
make[1]: se sale del directorio `/usr/src/linux-2.6.32&#8242;<br />
make: *** [vmnet.ko] Error 2</div>
<p style="text-align: justify;">Errores con el vmci (Virtual Machine Communication Interface) que se muestran en consola:</p>
<div class="consola">CC [M]  /tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.o<br />
In file included from /tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:48:<br />
/tmp/vmware-root/modules/vmci-only/./include/pgtbl.h: En la función ‘PgtblVa2MPN’:<br />
/tmp/vmware-root/modules/vmci-only/./include/pgtbl.h:301: error: puntero deferenciado a tipo de dato incompleto<br />
/tmp/vmware-root/modules/vmci-only/./include/pgtbl.h: En la función ‘PgtblVa2Page’:<br />
/tmp/vmware-root/modules/vmci-only/./include/pgtbl.h:373: error: puntero deferenciado a tipo de dato incompleto<br />
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c: En la función ‘VMCIHost_SignalCall’:<br />
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:328: error: ‘TASK_NORMAL’ no se declaró aquí (primer uso en esta función)<br />
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:328: error: (Cada identificador no declarado solamente se reporta una vez<br />
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:328: error: para cada funcion en la que aparece.)<br />
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c: En la función ‘VMCIHost_WaitForCallLocked’:<br />
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:370: error: puntero deferenciado a tipo de dato incompleto<br />
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:370: error: ‘TASK_INTERRUPTIBLE’ no se declaró aquí (primer uso en esta función)<br />
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:378: error: declaración implícita de la función ‘schedule’<br />
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:386: error: puntero deferenciado a tipo de dato incompleto<br />
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:386: error: ‘TASK_RUNNING’ no se declaró aquí (primer uso en esta función)<br />
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:390: error: declaración implícita de la función ‘signal_pending’<br />
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c: En la función ‘VMCI_SignalEvent’:<br />
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:682: error: ‘TASK_NORMAL’ no se declaró aquí (primer uso en esta función)<br />
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c: En la función ‘VMCI_WaitOnEventInterruptible’:<br />
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:739: error: puntero deferenciado a tipo de dato incompleto<br />
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:739: error: ‘TASK_INTERRUPTIBLE’ no se declaró aquí (primer uso en esta función)<br />
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:751: error: puntero deferenciado a tipo de dato incompleto<br />
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:751: error: ‘TASK_RUNNING’ no se declaró aquí (primer uso en esta función)<br />
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c: En la función ‘VMCIHost_GetUserMemory’:<br />
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:1438: error: puntero deferenciado a tipo de dato incompleto<br />
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:1440: error: puntero deferenciado a tipo de dato incompleto<br />
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:1459: error: puntero deferenciado a tipo de dato incompleto<br />
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:1487: error: puntero deferenciado a tipo de dato incompleto<br />
make[2]: *** [/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.o] Error 1<br />
make[1]: *** [_module_/tmp/vmware-root/modules/vmci-only] Error 2<br />
make[1]: se sale del directorio `/usr/src/linux-2.6.32&#8242;<br />
make: *** [vmci.ko] Error 2</div>
<p style="text-align: justify;">La <a href="http://blog.chmouel.com/2009/12/05/vmware-vmplayer-and-kernel-2-6-32/">solución</a> la comentan en Chmouel Blog y me la a sugerido <a href="http://casidiablo.net/author/c0rtex/">Cortex</a>, aunque hablan solamente de errores en el vmnet y no en el vmci. De cualquier forma, la solución prácticamente la misma:</p>
<ul>
<li><code>cd /tmp</code></li>
<li><code>tar xf /usr/lib/vmware/modules/source/vmnet.tar</code></li>
<li>Entramos al directorio (<code>cd vmnet-only</code>)</li>
<li>Abrimos el archivo <code>vnetUserListener.c</code> con un editor de texto</li>
<li>Añadimos esto al final de todos los <em>includes</em>:
<pre class="brush: cpp; pad-line-numbers: false; title: ; toolbar: false; notranslate">add this line #include &quot;compat_sched.h&quot;</pre>
</li>
<li>Salimos del directorio (cd /tmp)</li>
<li>Reemplazamos el arvhivo vmnet de vmware con el que hemos editado:<br />
<code>sudo tar cf /usr/lib/vmware/modules/source/vmnet.tar vmnet-only</code></li>
</ul>
<p>Lo anterior es para evitar el problema con vmnet&#8230; con esto puedes intentar correr de nuevo VMWare. Si lo que ahora falla es el vmci puedes hacer lo mismo pero con el archivo <code>/usr/lib/vmware/modules/source/vmci.tar</code>.<br />
Luego de esto, intentamos iniciar VMware o VMplayer los cuales recompilarán los módulos esta vez sin problemas:</p>
<p style="text-align: center;"><a href="http://casidiablo.net/wordpress/wp-content/uploads/2009/12/vmware-compilacion-correcta.png"><img class="size-full wp-image-3523 aligncenter" title="vmware-compilacion-correcta" src="http://casidiablo.net/wordpress/wp-content/uploads/2009/12/vmware-compilacion-correcta.png" alt="vmware-compilacion-correcta" width="382" height="341" /></a></p>
<h3>SEO thing XD&#8230;</h3>
<p>Pongo los errores como salen en inglés por si alguien los busca así <img src='http://casidiablo.net/wordpress/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<div class="consola">CC [M] /tmp/vmware-root/modules/vmnet-only/vnetEvent.o<br />
CC [M] /tmp/vmware-root/modules/vmnet-only/vnetUserListener.o<br />
/tmp/vmware-root/modules/vmnet-only/vnetUserListener.c: In function ‘VNetUserListenerEventHandler’:<br />
/tmp/vmware-root/modules/vmnet-only/vnetUserListener.c:240: error: ‘TASK_INTERRUPTIBLE’ undeclared (first use in this function)<br />
/tmp/vmware-root/modules/vmnet-only/vnetUserListener.c:240: error: (Each undeclared identifier is reported only once<br />
/tmp/vmware-root/modules/vmnet-only/vnetUserListener.c:240: error: for each function it appears in.)<br />
/tmp/vmware-root/modules/vmnet-only/vnetUserListener.c: In function ‘VNetUserListenerRead’:<br />
/tmp/vmware-root/modules/vmnet-only/vnetUserListener.c:282: error: ‘TASK_INTERRUPTIBLE’ undeclared (first use in this function)<br />
/tmp/vmware-root/modules/vmnet-only/vnetUserListener.c:282: error: implicit declaration of function ‘signal_pending’<br />
/tmp/vmware-root/modules/vmnet-only/vnetUserListener.c:282: error: implicit declaration of function ‘schedule’<br />
make[2]: *** [/tmp/vmware-root/modules/vmnet-only/vnetUserListener.o] Error 1<br />
make[1]: *** [_module_/tmp/vmware-root/modules/vmnet-only] Error 2<br />
make[1]: Leaving directory `/opt/temp/linux-2.6.32′<br />
make: *** [vmnet.ko] Error 2<br />
Failed to compile module vmci</div>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/error-vmware-linux-kernel/feed/</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
		<item>
		<title>Trabajando con el Kernel Linux (II)</title>
		<link>http://casidiablo.net/trabajando-con-el-kernel-linux-ii/</link>
		<comments>http://casidiablo.net/trabajando-con-el-kernel-linux-ii/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 14:00:02 +0000</pubDate>
		<dc:creator>Cortex</dc:creator>
				<category><![CDATA[artículos]]></category>
		<category><![CDATA[bsd]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[camara]]></category>
		<category><![CDATA[compilación]]></category>
		<category><![CDATA[driver]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[sysctl]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=3306</guid>
		<description><![CDATA[Anterior artículo&#8230; Continuando con la serie de posts dedicados al Kernel, hoy vamos a hablar sobre las cámaras web y la herramienta sysctl. Cámaras Web En la actualidad, el kernel tiene muy buen soporte para las cámaras web, tanto las integradas como las externas. Basado en mi experiencia, nunca he tenido ningún problema con dispositivos [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Ftrabajando-con-el-kernel-linux-ii%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Trabajando%20con%20el%20Kernel%20Linux%20%28II%29%22%20%7D);"></div>
<p><a title="Trabajando con el Kernel Linux (I)" href="http://casidiablo.net/trabajando-con-el-kernel-linux-i/">Anterior artículo&#8230;</a></p>
<p>Continuando con la serie de posts dedicados al Kernel, hoy vamos a hablar sobre las cámaras web y la herramienta <strong>sysctl</strong>.</p>
<h2>Cámaras Web</h2>
<p style="text-align: center"><img class="alignnone size-full wp-image-3324" src="http://casidiablo.net/wordpress/wp-content/uploads/2009/09/webcam_pinguino.jpg" alt="webcam_pinguino" width="214" height="195" /></p>
<p>En la actualidad, el kernel tiene muy buen soporte para las cámaras web, tanto las integradas como las externas. Basado en mi experiencia, nunca he tenido ningún problema con dispositivos de captura de video en Linux aunque me imaginó que en algún hardware habrá incompatibilidades. La ventaja es que los desarrolladores del kernel cada día trabajan por mejorarlo y desarrollando controladores para maximizar el soporte en la mayor cantidad de máquinas posibles.<span id="more-3306"></span></p>
<p>Lo primero que debemos hacer es identificar la <em>referencia</em> del dispositivo. Si tienes un portatil y lo que buscas es hacer funcionar la cámara integrada que trae, usando el <a title="Linux UVC driver and tools" href="http://linux-uvc.berlios.de/">driver UVC</a> sería suficiente:</p>
<pre>Device Drivers  ---&gt;
     &lt;*&gt; Multimedia support  ---&gt;
          [*]   Video capture adapters  ---&gt;
               [*]   Autoselect pertinent encoders/decoders and other helper chips
               [*]   V4L USB devices  ---&gt;
                    &lt;*&gt;   USB Video Class (UVC)
                          [*]     UVC input events device support</pre>
<p>Ahora, en caso de que la cámara sea externa debes conectarla y hacer un <strong>lsusb</strong>. Hay tantos modelos disponibles que sería difícil hacer una guía definitiva, además de que ya existe un <a title="Linux Webcam HOWTO" href="http://www.tldp.org/HOWTO/Webcam-HOWTO/">completo HOWTO que explica esto</a>. Lo que haré, será mostrar un ejemplo haciendo uso de una vieja cámara <strong>Genius</strong> que tengo. Si la conecto y hago un <strong>dmesg</strong> puedo ver la información del dispositivo:</p>
<div class="consola">[ 4601.153221] usb 5-1: New USB device found, idVendor=093a, idProduct=2471<br />
[ 4601.153228] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0<br />
[ 4601.153235] usb 5-1: Product: CIF Single Chip<br />
[ 4601.153241] usb 5-1: Manufacturer: Pixart Imaging Inc.</div>
<p>Ahora <strong>lsusb</strong>:</p>
<div class="consola">Bus 005 Device 003: ID 093a:2471 Pixart Imaging, Inc.</div>
<p>Teniendo el <strong>ID</strong>, debemos buscar cuál es el módulo necesario para esta cámara. <a title="GSPCA V4L2 - Webcams" href="http://moinejf.free.fr/webcam.html">Aquí tienes una larga lista</a> de IDs con su respectivo módulo. Si buscamos también en la <a title="Linux Kernel Driver DataBase" href="http://cateee.net/lkddb">base de datos de drivers del kernel</a> veremos la <a href="http://cateee.net/lkddb/web-lkddb/USB_GSPCA_PAC207.html">configuración</a> que debemos hacer y el módulo a activar. El driver en cuestión es: <strong>gspca_pac207.</strong></p>
<pre>&lt;*&gt;   GSPCA based webcams  ---&gt;
     &lt;M&gt;   Pixart PAC207 USB Camera Driver</pre>
<p>Si compilaste como módulo no olvides agregarlo al inicio del sistema (si es lo que deseas). En Gentoo con OpenRC y Baselayout 2:</p>
<div class="consola"># echo &#8216;modules_2_6=&#8221;${modules_2_6} gspca_pac207&#8243;&#8216; &gt;&gt; /etc/conf.d/modules</div>
<p>Para esta cámara es necesario tener instalada la librería <strong>v4l (Video 4 Linux)</strong>.</p>
<div class="consola"># emerge -av media-libs/libv4l</div>
<div class="nota">En general, este es el proceso para todos las cámaras, aunque en algunas puede haber variaciones. Con los enlaces que expuse anteriormente debe ser suficiente para encontrar la información relativa a tu hardware.</div>
<p>Y listo. Reiniciamos con el nuevo kernel y usamos cualquier programa como <strong>cheese</strong> para comprobar que todo funciona bien.</p>
<h2>Sysctl</h2>
<p>A raíz de un <a title="arpunk" href="http://casidiablo.net/trabajando-con-el-kernel-linux-i/#comment-7291">comentario de arpunk</a>, he decidido posponer uno de los temas que iba a tocar en este artículo y hablar sobre <strong>sysctl.</strong></p>
<p>El kernel Linux es tan flexible que te permite modificar la manera en que trabaja, dinámicamente, a través del comando <em>sysctl</em>. Sysctl provee de una interfaz que permite examinar y cambiar cientos de parámetros en núcleos Linux y BSD. Gracias a esta herramienta podemos modificar y optimizar el kernel sin tener que recompilarlo. Los cambios son realizados inmediatamente e incluso pueden ser definidos como persistentes, de manera que continúen después de reiniciar.</p>
<p>Para ver los parámetros actuales del kernel en ejecución:</p>
<div class="consola">sysctl -a<br />
sysctl -n vm.swappiness</div>
<p>Con el segundo lo que hacemos es ver el valor de un determinado parámetro, en este caso <strong>vm.swappiness</strong>. Suponiendo que quisiéramos decirle al kernel que <a title="Swappiness" href="http://kerneltrap.org/node/3000">use más la memoria RAM que la swap</a> ó habilitar el <em>forwarding</em> en IPv4, bastaría con cambiar el valor de estas <em>variable</em>s:</p>
<div class="consola">sysctl vm.swappiness=10<br />
sysctl net.ipv4.conf.all.forwarding=1</div>
<p>Recuerda que las modificaciones que hagas con este comando serán temporales, y la próxima vez que reinicies el sistema se cargarán los valores por defecto. Para cambiar este comportamiento, hay que editar el archivo <em>/etc/sysctl.conf</em></p>
<div class="consola">echo &#8216;net.ipv4.conf.all.forwarding=1&#8242; &gt;&gt; /etc/sysctl.conf</div>
<p><strong>Básicamente</strong> eso es sysctl. El tema podría tornarse más extenso pero la idea de estos artículos, es tan sólo, recopilar conceptos en torno al kernel Linux. Para más información <a title="man sysctl" href="http://linux.die.net/man/8/sysctl">man sysctl</a>.</p>
<p>Hasta aquí por hoy. En el próximo artículo hablaremos un poco de optimizaciones para el procesador y de otras buenas prácticas a la hora de compilar el núcleo.</p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/trabajando-con-el-kernel-linux-ii/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Trabajando con el Kernel Linux (I)</title>
		<link>http://casidiablo.net/trabajando-con-el-kernel-linux-i/</link>
		<comments>http://casidiablo.net/trabajando-con-el-kernel-linux-i/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 16:12:14 +0000</pubDate>
		<dc:creator>Cortex</dc:creator>
				<category><![CDATA[artículos]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[compilación]]></category>
		<category><![CDATA[configuración]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[lcd]]></category>
		<category><![CDATA[microfono]]></category>
		<category><![CDATA[pantalla]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=3256</guid>
		<description><![CDATA[Hola a todos! Otra vez yo, Cortex, que hace un buen rato no me pasaba por aquí. Hoy me gustaría hablar sobre un tema en el que seguro todos tenemos muchas lagunas, configurar el kernel. Si alguna vez has instalado ó intentando instalar Gentoo te habrás dado cuenta que en el ritual de instalación debes [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Ftrabajando-con-el-kernel-linux-i%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Trabajando%20con%20el%20Kernel%20Linux%20%28I%29%22%20%7D);"></div>
<p>Hola a todos! Otra vez yo, <strong>Cortex</strong>, que hace un buen rato no me pasaba por aquí.</p>
<p><img style="float: right" src="http://casidiablo.net/wordpress/wp-content/uploads/2009/07/logo-gentoo.png" alt="" width="147" height="155" />Hoy me gustaría hablar sobre un tema en el que seguro todos tenemos muchas lagunas,<strong> configurar el kernel</strong>. Si alguna vez has instalado ó intentando instalar Gentoo te habrás dado cuenta que en el <em>ritual</em> de instalación debes de compilar tu propio núcleo, incluyendo también la configuración del mismo. Desde mi experiencia, este suele ser un punto en el que la mayoría de usuarios se quedan; es cierto que también existe <strong>genkernel</strong>, una herramienta que facilita por completo este proceso  pero que también, entre otras cosas, ralentiza mucho el arranque.</p>
<p>Casi la totalidad de distribuciones Linux, incluyen en su sistema un kernel con soporte para la mayor cantidad de hardware posible y en el booteo hay un <em>script</em> que se encarga de identificar el perfil del equipo en cuestión y cargar los módulos respectivos (sonido, disco, sistemas de archivos, etc.). Este sistema me parece excelente, puesto que sobretodo al usuario nuevo le ahorra mucho trabajo a la hora de poner a funcionar su distribución, pero como dije anteriormente no es lo más óptimo, <strong>sobretodo si queremos el mejor rendimiento posible.</strong><span id="more-3256"></span></p>
<p>No pretendo con esta entrada crear una guía completa de configuración del kernel. Primero, porque mis conocimientos en este tema son limitados, o sino que lo diga <a title="It Should Work..." href="http://vierito.es/wordpress"><strong>Javi</strong></a>, que siempre le toca aguantarse mis quejas porque no me funcionan bien las cosas <img src='http://casidiablo.net/wordpress/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  Y segundo, porque todos tenemos necesidades diferentes y puede que algunos necesiten soporte para determinadas cosas que otros no. Lo que sí me gustaría es hablar sobre buenas prácticas a la hora de trabajar con el núcleo y sobre problemas muy comunes que surgen cuando hacemos una configuración desde 0, como dispositivos que no funcionan, entre otras cosas. <strong>El post está abierto a cualquier aporte/mejora/correción que quieran hacer</strong>.</p>
<h2>Brillo en pantallas LCD</h2>
<p>Son varias las personas que alguna vez me han preguntado como pueden hacer funcionar las teclas para definir la intensidad del brillo de la pantalla. Si usas portatil, habrás notado que es una funcionalidad demasiado útil y que además es muy maluco tener que trabajar únicamente con el brillo que el laptop <em>haya decidido definir al ser encendido</em>.</p>
<ul>
<li><strong>Lo primer es activar el controlador:</strong></li>
</ul>
<pre>Device Drivers  ---&gt;
     Graphics Support ---&gt;
          [*] Lowlevel video output switch controls
          [*] Backlight &amp; LCD device support  ---&gt;
               &lt;*&gt;   Lowlevel LCD controls
               &lt;*&gt;     Platform LCD controls
               -*-   Lowlevel Backlight controls
               &lt;*&gt;     Generic (aka Sharp Corgi) Backlight Drive
      Display device support  ---&gt;
           &lt;*&gt; Display panel/monitor support</pre>
<ul>
<li><strong>Ahora nos dirigimos a las opciones de ACPI y activamos el manejo de video:</strong></li>
</ul>
<pre>Power management and ACPI options  ---&gt;
     [*] ACPI (Advanced Configuration and Power Interface) Support  ---&gt;
          &lt;*&gt;   Video</pre>
<p>Y con esto bastaría recompilar para disfrutar del brillo <img src='http://casidiablo.net/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>/proc/config.gz</h2>
<p>Una opción que quizás muchos no conocen es la de poder acceder a la configuración del kernel en ejecución a través del archivo <em>/proc/config.gz</em>. Actívemosla y curémosnos en salud ante la pérdida del preciado <em>.config</em>.</p>
<pre>General setup  ---&gt;
     &lt;*&gt; Kernel .config support
     [*]   Enable access to .config through /proc/config.gz</pre>
<p>Para disponer del archivo de configuración:</p>
<div class="consola">zcat /proc/config.gz &gt; .config</div>
<h2>Sonido como módulo</h2>
<p>Entre los problemas más comunes en Linux está el sonido. Sobretodo si trabajamos con versiones de ALSA muy viejas ya que nos toca recurir a <em>hacks</em> ó pasar parámetros a la hora de cargar los módulos. <strong>Por si no está claro para alguien</strong>, <strong>ALSA</strong> (Advanced Linux Sound Architecture) a grosso modo, es el encargado de la gestión del sonido en Linux, reemplazando al obsoleto OSS. No es la única opción, pero sí la mejor en la mayoría de los casos.</p>
<p>Existen 3 formas de instalar ALSA:</p>
<ul>
<li>Desde los drivers del kernel (estáticamente)<em></em></li>
<li>Desde los drivers del kernel (módulo)</li>
<li>Drivers externos (<a href="http://www.alsa-project.org/main/index.php/Main_Page">alsa-drivers</a>)</li>
</ul>
<p>La más recomendada es la segunda. Las ventaja de compilar el sonido como módulo es que no tenemos que preocuparnos de identificar cual es el controlador apropiado para nuestra tarjeta, sino, simplemente dejar hacer su trabajo a <em>alsaconf</em> y usar <em>alsamixer</em> para definir el volumen. Aparte de que también se obtiene un mejor rendimiento.</p>
<p><a href="http://wonkabar.org/2009/09/01/three-ways-to-install-alsa-drivers/">Si quieres profundizar un poco en el tema puedes leer este artículo.</a></p>
<p>No pondré aquí las opciones que se  necesitan activar en el núcleo, puesto que en la <a title="ALSA - Gentoo" href="http://www.gentoo.org/doc/es/alsa-guide.xml">documentación de Gentoo</a> está todo perfectamente explicado. Más bien hablemos sobre los <strong>micrófonos integrados</strong>, esos que a veces resulta tan difícil hacer funcionar.</p>
<div class="nota">Si se ha compilado el núcleo como se explica en el anterior enlace, y además, se está usando la última versión de ALSA (<strong>recomendado</strong>) el micrófono ya debe de funcionar, sólo falta configurarlo.</div>
<p>Abrimos en una shell <strong>alsamixer</strong> y presionando la tecla Tabulador nos movemos a los <strong>dispositivos de Captura</strong>. Debemos cambiar en <em>Input Source, Mic</em> por <em>Front Mic</em> y también verificar que los dispositivos <em>Capture</em> y <em>Digital</em> no están mudos y además que tengan el volumen al 100%.</p>
<p>Guardamos la configuración</p>
<div class="consola"># alsactl store</div>
<p>Ahora abrimos cualquier aplicación para captura de audio y probamos con los dispositivos disponibles a ver cual funciona. <strong>Eso es todo.</strong></p>
<p>No quiero alargar más el post, de momento es suficiente. Más adelante veremos como podemos hacer funcionar las <strong>cámaras web</strong> en Linux y algunas otras cosas.</p>
<p>Cualquier comentario será bien recibido, ¡Hasta pronto!</p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/trabajando-con-el-kernel-linux-i/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Video Tutorial Java #2 &#8211; Uso de variables y resolución de errores de compilación</title>
		<link>http://casidiablo.net/video-tutorial-java-variables-depuracion-errores-compilacion/</link>
		<comments>http://casidiablo.net/video-tutorial-java-variables-depuracion-errores-compilacion/#comments</comments>
		<pubDate>Thu, 22 Jan 2009 01:21:39 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[video tutoriales]]></category>
		<category><![CDATA[compilación]]></category>
		<category><![CDATA[depuración]]></category>
		<category><![CDATA[errores]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[variables]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=2759</guid>
		<description><![CDATA[Bueno amigos, he aquí el segundo video tutorial de programación en Java. En esta ocasión hablo sobre la declaración y uso de variables, y presento un ejemplo sencillo en el que se suman el valor de dos enteros. En la segunda parte del video explico un tema que, considero, es bastante importante para las personas [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fvideo-tutorial-java-variables-depuracion-errores-compilacion%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Video%20Tutorial%20Java%20%232%20-%20Uso%20de%20variables%20y%20resoluci%C3%B3n%20de%20errores%20de%20compilaci%C3%B3n%22%20%7D);"></div>
<p style="text-align: justify;">Bueno amigos, he aquí el segundo video tutorial de programación en Java. En esta ocasión hablo sobre la declaración y uso de variables, y presento un ejemplo sencillo en el que se suman el valor de dos enteros.</p>
<p style="text-align: justify;">En la segunda parte del video explico un tema que, considero, es bastante importante para las personas que están iniciando su proceso de aprendizaje en Java, y es el cómo encarar y depurar los errores de compilación que se presentan en el transcurso de cualquier programa. Esta vez intenté explicar todo un poco más detalladamente, lo que resultó un video de poco más de 20 minutos.</p>
<p style="text-align: justify;">El problema es que, según veo, en Vimeo te permiten subir solamente un video en HD por semana; para no tener limitaciones es necesario pagar para obtener una cuenta Plus. Por lo tanto verán que éste no tiene una buena resolución; si alguien se anima a donar algo en mi cuenta de Paypal (<a class="tooltip" title="Sí, no me he equivocado. CasTidiablo, con T" href="mailto:castidiablo@gmail.com">castidiablo@gmail.com</a>), o comprar un banner, estaría muy agradecido, ya que me permitirá subir videos  regularmente con una mejor imagen, y no cada semana. La verdad es que me gusta que las cosas que hago salgan bien, y ver que el video está borroso es bastante frustrante (además Youtube no me deja subir videos tan largos, ni es elegante <img src='http://casidiablo.net/wordpress/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ).</p>
<p style="text-align: justify;">De igual forma, si desean ver el video en una mejor resolución (1280&#215;800), <a href="http://casidiablo.net/descargar/Video+Tutorial+Java+2">pueden descargarlo de Vimeo</a>.</p>
<h3>Video en Vimeo</h3>
<p><object width="640" height="401" data="http://vimeo.com/moogaloop.swf?clip_id=2911635&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1" type="application/x-shockwave-flash"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=2911635&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1" /></object><br />
<a class="tooltip download" title="Requiere registro en Vimeo" href="http://casidiablo.net/descargar/Video+Tutorial+Java+2">Descargar video</a></p>
<h3>Video en Blip.tv</h3>
<p><embed src="http://blip.tv/play/AeiOA5OibA" type="application/x-shockwave-flash" width="640" height="430" allowscriptaccess="always" allowfullscreen="true"></embed></p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/video-tutorial-java-variables-depuracion-errores-compilacion/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>

