<?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; linux</title>
	<atom:link href="http://casidiablo.net/category/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://casidiablo.net</link>
	<description>Blog de Java, Programación y Linux</description>
	<lastBuildDate>Mon, 08 Mar 2010 03:41:21 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Vino oficial de Debian</title>
		<link>http://casidiablo.net/vino-oficial-de-debian/</link>
		<comments>http://casidiablo.net/vino-oficial-de-debian/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 23:54:14 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[off-topic]]></category>
		<category><![CDATA[vino]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=3647</guid>
		<description><![CDATA[

Esta pequeña entrada la pongo porque me pareció bastante curioso&#8230; se trata de un vino oficial de Debian que, por cierto, se ve delicioso. Según me cuentan, el vino lo presentaron en el Debconf que se hizo en extremadura españa.

Aunque la foto de la derecha me deja algo desconcertado&#8230; ¿por qué le toman la foto [...]]]></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%3A%2F%2Fcasidiablo.net%2Fvino-oficial-de-debian%2F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fcasidiablo.in%2FaHkubO%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Vino%20oficial%20de%20Debian%22%20%7D);"></div>
<p>Esta pequeña entrada la pongo porque me pareció bastante curioso&#8230; se trata de un vino oficial de Debian que, por cierto, se ve delicioso. Según me cuentan, el vino lo presentaron en el <a href="http://www.debian.org/News/2009/20090722">Debconf que se hizo en extremadura españa</a>.</p>
<p align="center"><img src="http://casidiablo.net/wordpress/wp-content/uploads/2010/02/debian-vino.jpg" title="debian vino" width="300" height="450" /><a href="http://www.flickr.com/photos/aigarius/3745140041/"><img src="http://casidiablo.net/wordpress/wp-content/uploads/2010/02/vino-debian.jpg" title="vino debian" width="300" height="450" /></a></p>
<p>Aunque la foto de la derecha me deja algo desconcertado&#8230; ¿por qué le toman la foto al lado de un Mac Book? En fin&#8230; <a href="http://www.cafe-libertad.de/shop/essen-trinken/wein-rum/debian-wein.html?id=271&#038;category=17&#038;___store=english&#038;___from_store=espanol">puedes adquirir tu propio vino por 5.8 euros</a> más costes de envío (supongo).</p>
<p> Gracias a petox que me lo envió por correo <img src='http://casidiablo.net/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Más información: http://wiki.debian.org/DebianWine</p>


	<div class="etiquetas">Etiquetas: <a href="http://casidiablo.net/tag/debian/" rel="tag nofollow">Debian</a>, <a href="http://casidiablo.net/tag/linux/" rel="tag nofollow">linux</a>, <a href="http://casidiablo.net/tag/vino/" rel="tag nofollow">vino</a><br /></div>
]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/vino-oficial-de-debian/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Códigos de shell script útiles en cualquier programa</title>
		<link>http://casidiablo.net/codigos-de-shell-script-utiles/</link>
		<comments>http://casidiablo.net/codigos-de-shell-script-utiles/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 03:23:46 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[Arch Linux]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[bsd]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[comandos]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=3588</guid>
		<description><![CDATA[

A continuación voy a poner algunos snippets de código de shell script que me han sido siempre útiles cuando escribo algún script. La mayoríá funcinoan en cualquier shell de Unix, aunque algunos requieren que sean ejecutados por Bash.
Evitar que usuarios sin privilegios ejecuten el script
Algunos scripts realizan tareas administrativas por lo cual podríamos querer que [...]]]></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%3A%2F%2Fcasidiablo.net%2Fcodigos-de-shell-script-utiles%2F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22C%C3%B3digos%20de%20shell%20script%20%C3%BAtiles%20en%20cualquier%20programa%22%20%7D);"></div>
<p style="text-align: justify;"><img src="http://casidiablo.net/wordpress/wp-content/uploads/2010/01/bash.png" alt="shell script" title="shell script" width="80" height="80" style="float:left;padding:5px;" />A continuación voy a poner algunos snippets de código de shell script que me han sido siempre útiles cuando escribo algún script. La mayoríá funcinoan en cualquier shell de Unix, aunque algunos requieren que sean ejecutados por <strong>Bash</strong>.</p>
<h3>Evitar que usuarios sin privilegios ejecuten el script</h3>
<p style="text-align: justify;">Algunos scripts realizan tareas administrativas por lo cual podríamos querer que solo el usuario root ejecute el script. En ese caso podemos usar algo como esto:</p>
<p><!--INFOLINKS_OFF-->
<pre class="brush: bash;">#!/bin/bash
if [[ $EUID -ne 0 ]]; then
echo &quot;Este script debe ser ejecutado por el usuario root&quot; 1&gt;&amp;2
    exit 1
fi</pre>
<p><!--INFOLINKS_ON--></p>
<h3>Permitir la ejecución del script solo a un usuario específico</h3>
<p style="text-align: justify;">De manera similar al código anterior, podríamos querer que solo un usuario específico ejecute el script. Lo hacemos así:</p>
<p><!--INFOLINKS_OFF-->
<pre class="brush: bash;">#!/bin/bash
AUTHORIZED_USER=&quot;usuario_permitido&quot;
if [ $USER != $AUTHORIZED_USER ]; then
    echo &quot;Este script debe ser ejecutado por el usuario $AUTHORIZED_USER&quot; 1&gt;&amp;2
    exit 1
fi</pre>
<p><!--INFOLINKS_ON--></p>
<h3>Verificar que un servicio/proceso se está ejecutando</h3>
<p style="text-align: justify;">Si queremos saber si existen procesos de algún servicio o programa ejecutándose podríamos usar este script (en este caso verifica que el demonio de Apache esté corriendo):</p>
<p><span id="more-3588"></span></p>
<p><!--INFOLINKS_OFF-->
<pre class="brush: bash;">#!/bin/sh
SERVICE='httpd'
if ps ax | grep -v grep | grep $SERVICE &gt; /dev/null
then
    echo &quot;El servicio $SERVICE esta ejecutandose&quot;
else
    echo &quot;Chanfle! El servicio $SERVICE esta detenido&quot;
fi</pre>
<p><!--INFOLINKS_ON--></p>
<h3>Verificar que una variable esté asignada/tenga datos</h3>
<p style="text-align: justify;">Hay bastantes maneras de hacer esto en shell script&#8230; la que considero más sencilla y concisa es esta:</p>
<p><!--INFOLINKS_OFF-->
<pre class="brush: bash;">#!/bin/bash
FOO=
: ${FOO:?&quot;No existe la variable FOO o no tiene datos&quot;}
echo &quot;esto nunca se va a imprimir&quot;</pre>
<p><!--INFOLINKS_ON--></p>
<p style="text-align: justify;">El anterior script verifica si una variable existe y tiene datos; si esto no se cumple, el script se cierra. Podemos usar esta variación en donde solo comprobamos que la variable exista, sin importar si tiene datos o no:</code></p>
<p><!--INFOLINKS_OFF-->
<pre class="brush: bash;">#!/bin/bash
FOO=
: ${FOO?&quot;No existe la variable FOO&quot;}
echo &quot;esto si se va a imprimir&quot;</pre>
<p><!--INFOLINKS_ON--></p>
<h3>Crear un archivo de bloqueo</h3>
<p style="text-align: justify;">A veces debemos asegurarnos que el script no se ejecute dos o más veces simultáneas. Para ello podemos hacer uso de los archivos de bloqueo. Esta es una versión sencilla de un script que nos permite hacer esto:</p>
<p><!--INFOLINKS_OFF-->
<pre class="brush: bash;">#!/bin/bash
lockfile=/var/lock/loquesea.lock
if [ ! -e $lockfile ]; then
   touch $lockfile
   echo &quot;hago muchas cosas importantes aqui&quot;
   rm $lockfile
else
   echo &quot;ya hay otro proceso corriendo&quot;
fi</pre>
<p><!--INFOLINKS_ON--></p>
<p style="text-align: justify;">En este caso, se verifica que el archivo loquesea.lock exista. En caso de que exista, el script NO ejecuta sus tareas. Si no existe, crea el archivo, ejecuta las tareas que deba ejecutar y lo elimina.</p>
<p style="text-align: justify;">Pero, esto no es del todo fiable. ¿Qué pasaría si mientras nuestro script se está ejecutando es cerrado abruptamente (con Ctrl^c por ejemplo)? En ese caso el archivo de bloqueo no se borraría, y por lo tanto, no nos permitiría ejecutar el script de nuevo.</p>
<p style="text-align: justify;">Para cubrir esos casos, podríamos hacer uso del comando <strong><code>trap</code></strong> que nos permite ejecutar comandos en caso que nuestro script termine de manera inesperada. Esta es una versión más avanzada que además guarda dentro del archivo de bloqueo el PID del script que lo ejecuta:</p>
<p><!--INFOLINKS_OFF-->
<pre class="brush: bash;">#!/bin/bash
lockfile=/var/lock/loquesea.lock
if ( set -o noclobber; echo &quot;$$&quot; &gt; &quot;$lockfile&quot;) 2&gt; /dev/null;
then
    trap 'rm -f &quot;$lockfile&quot;; exit $?' INT TERM EXIT
    echo &quot;hago muchas cosas aqui tranquilamente&quot;
    rm -f &quot;$lockfile&quot;
    trap - INT TERM EXIT
else
    echo &quot;Ya hay otro proceso de este script ejecutandose&quot;
    echo &quot;corriendo con el PID: $(cat $lockfile)&quot;
fi</pre>
<p><!--INFOLINKS_ON--></p>
<p style="text-align: justify;">Entendamos un poco mejor el comando <strong><code>trap</code></strong>. La sintaxis del mismo es básicamente esta: <code>trap <strong>comando</strong> signal [signal ...]</code>; donde signal es la señal de terminación que quieres atrapar. Si quieres ver una lista de los signals disponibles puedes ejecutar el comando kill -l. Para el caso anterior se usaron los signals <code><strong>INT</strong></code> (captura la terminación producida por un Ctrl^c), <code><strong>TERM</strong></code> (terminación producida por el comando kill) y <code><strong>EXIT</strong></code> (terminación normal de un script, bien sea porque ya no hay más líneas que ejecutar o porque se encuentra con el comando exit).</p>
<h3>Menú de opciones</h3>
<p style="text-align: justify;">Para hacer un menú en donde permitimos al usuario seleccionar una serie de opciones podemos usar el siguiente esquema:</p>
<p><!--INFOLINKS_OFF-->
<pre class="brush: bash;">#!/bin/bash
clear
while :
do
 echo &quot; Escoja una opcion &quot;
 echo &quot;1. quien soy?&quot;
 echo &quot;2. cuanto espacio tengo&quot;
 echo &quot;3. que es esto?&quot;
 echo &quot;4. Salir&quot;
 echo -n &quot;Seleccione una opcion [1 - 4]&quot;
 read opcion
 case $opcion in
  1) echo &quot;este eres:&quot;;
     whoami;;
  2) echo &quot;tienes esto&quot;;
     df;;
  3) uname -r;;
  4) echo &quot;chao pues parcero&quot;;
     exit 1;;
  *) echo &quot;$opc es una opcion invalida. Es tan dificil?&quot;;
     echo &quot;Presiona una tecla para continuar...&quot;;
     read foo;;
esac
done</pre>
<p><!--INFOLINKS_ON--></p>
<h3>Pedir confirmación antes de ejecutar un script</h3>
<p>A veces es útil hacer que el usuario confirme la ejecución de un lote de sentencias, es decir, el típico mensaje que pide al usuario escribir <code><strong>yes</strong></code> o <code><strong>no</strong></code>. Esto lo podemos hacer así:</p>
<p><!--INFOLINKS_OFF-->
<pre class="brush: bash;">#!/bin/bash
while true; do
    echo
    read -p &quot;esta seguro de hacer lo que sea que vaya a hacer &quot; yn
    case $yn in
        yes ) break;;
        no ) exit;;
        * ) echo &quot;por favor responda yes o no&quot;;;
    esac
done
echo &quot;si se ejecuta esto es que aceptaste&quot;
</pre>
<p><!--INFOLINKS_ON--></p>
<h3>Fuentes de información</h3>
<ul>
<li><a href="http://stackoverflow.com/">StackOverflow - La más valiosa sin duda alguna</a></li>
<li><a href="http://www.davidpashley.com/articles/writing-robust-shell-scripts.html">Writing Robust Bash Shell Scripts</a></li>
<li><a href="http://www.cyberciti.biz/tips/shell-root-user-check-script.html">nixCraft</a></li>
</ul>


	<div class="etiquetas">Etiquetas: <a href="http://casidiablo.net/tag/comandos/" rel="tag nofollow">comandos</a>, <a href="http://casidiablo.net/tag/linux/" rel="tag nofollow">linux</a>, <a href="http://casidiablo.net/tag/script/" rel="tag nofollow">script</a>, <a href="http://casidiablo.net/tag/shell/" rel="tag nofollow">shell</a>, <a href="http://casidiablo.net/tag/unix/" rel="tag nofollow">unix</a><br /></div>
]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/codigos-de-shell-script-utiles/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Montar particiones/slices de *BSD en Linux</title>
		<link>http://casidiablo.net/montar-particione-bsd-linux/</link>
		<comments>http://casidiablo.net/montar-particione-bsd-linux/#comments</comments>
		<pubDate>Fri, 01 Jan 2010 05:03:03 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[bsd]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[netbsd]]></category>
		<category><![CDATA[openbsd]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=3556</guid>
		<description><![CDATA[


A veces es necesario trabajar con el sistema de archivos UFS (el que viene por defecto en FreeBSD, OpenBSD, NetBSD, etc.) desde Linux. En este pequeño artículo explicaré cómo configurar el kernel de tal manera que quede habilitado el soporte de lectura y escritura de UFS. Me enfocaré en FreeBSD, que es donde hice las [...]]]></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%3A%2F%2Fcasidiablo.net%2Fmontar-particione-bsd-linux%2F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Montar%20particiones%2Fslices%20de%20%2ABSD%20en%20Linux%22%20%7D);"></div>
<p style="text-align: center;"><img class="size-full wp-image-3547 aligncenter" title="tux_beastie" src="http://casidiablo.net/wordpress/wp-content/uploads/2009/12/tux_beastie.png" alt="" width="450" height="243" /></p>
<p style="text-align: justify;">A veces es necesario trabajar con el sistema de archivos UFS (el que viene por defecto en FreeBSD, OpenBSD, NetBSD, etc.) desde Linux. En este pequeño artículo explicaré cómo configurar el kernel de tal manera que quede habilitado el soporte de lectura y escritura de UFS. Me enfocaré en FreeBSD, que es donde hice las pruebas.</p>
<p style="text-align: justify;">Tengamos en cuenta además que el esquema de particiones de FreeBSD es distinto al de Linux. Este solo necesita una &#8216;partición&#8217; primaria (llamadas slices en BSD) para administrar las particiones que utilizará el sistema, y cada una de esas particiones tiene un esquema de nombres en particular. Puesto que dicho esquema algunas veces no es soportado por nuestro kernel, activaremos también esta opción (de lo contrario solo podremos montar la raiz del sistema FreeBSD mas no sus particiones).</p>
<p style="text-align: justify;">
<h3>0. Preparando el kernel</h3>
<p style="text-align: justify;">Tal vez ya tengas soporte para UFS, pero para esta entrada asumiré que no es así.</p>
<p style="text-align: justify;">Así que, vamos a la configuración del kernel (en este momento estoy usando Linux kernel 2.6.32):</p>
<p><span id="more-3556"></span></p>
<div class="consola">cd /usr/src/linux<br />
make menuconfig</div>
<p style="text-align: justify;">Ahora, vamos a activar estas opciones:</p>
<div class="consola">-&gt; File systems<br />
-&gt; Miscellaneous filesystems<br />
&lt;*&gt; UFS file system support (read only)<br />
[*] UFS file system write support</div>
<p style="text-align: justify;">Verás algo como esto:</p>
<p style="text-align: center;"><img title="linux-kernel-menuconfig-ufs" src="http://casidiablo.net/wordpress/wp-content/uploads/2009/12/linux-kernel-menuconfig-ufs.png" alt="linux-kernel-menuconfig-ufs" /></p>
<div class="nota"><strong>Importante:</strong> el soporte para escritura en UFS2 está en desarrollo y puede ser peligroso. Úsalo bajo tu propio riesgo <img src='http://casidiablo.net/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </div>
<p style="text-align: justify;">Ahora, habilitaremos el soporte para FreeBSD disklabel:</p>
<div class="consola">-&gt; File systems<br />
-&gt; Partition Types<br />
[*] Advanced partition selection<br />
[*] PC BIOS (MSDOS partition tables) support<br />
[*]    BSD disklabel (FreeBSD partition tables)</div>
<p style="text-align: justify;">Verás algo como esto:</p>
<p style="text-align: center;"><img title="linux-kernel-menuconfig-ufs" src="http://casidiablo.net/wordpress/wp-content/uploads/2009/12/linux-kernel-menuconfig-ufs-2.png" alt="linux-kernel-menuconfig-ufs" /></p>
<p style="text-align: justify;">Bien, con estas opciones habilitadas solo nos queda compilar e instalar el kernel:</p>
<div class="consola">make &amp;&amp; cp arch/x86_64/boot/bzImage /boot/kernel-2.6.32</div>
<div class="nota"><strong>Nota:</strong> Estoy asumiendo que ya te desenvuelves perfectamente con el kernel, es decir, que tienes experiencia compilando y configurándolo. Si no es el caso, deberías aprender: es divertido.</div>
<p style="text-align: justify;">
<h3>1. Buscando los nombres de las particiones</h3>
<p style="text-align: justify;">Cuando estamos trabajando con FreeBSD, los nombres que se asignan a las particiones son del tipo: /dev/ad0s3a. Pero, como estamos trabajando con Linux, en realidad seguiremos usando nombres del tipo /dev/sda* o /dev/hda*. Así que, gracias al soporte para FreeBSD Disklabel que hemos habilitado, podemos trabajar con los nombres convencionales:</p>
<div class="consola">cat /proc/partitions</div>
<p style="text-align: justify;">Verás algo como esto:</p>
<div class="consola">major minor  #blocks  name<br />
8        0  244198584 sda<br />
8        1   41624383 sda1<br />
8        2  158497290 sda2<br />
8        3   39076695 sda3<br />
8        4    5000184 sda4<br />
8        5     524288 sda5<br />
8        6    4194304 sda6<br />
8        7    5223424 sda7<br />
8        8     524288 sda8<br />
8        9   28610391 sda9</div>
<p style="text-align: justify;">
<h3>2. Montando las particiones UFS</h3>
<p style="text-align: justify;">Para montar una partición UFS ejecutaremos el siguiente comando (supongamos que /dev/sda7 es una de las particiones *BSD):</p>
<div class="consola">mount -t ufs -o ufstype=ufs2 /dev/sda7 /media/freebsd</div>
<p style="text-align: justify;">Por supuesto, podemos añadir una entrada al archivo /etc/fstab para que la partición se monte automáticamente al iniciar el sistema operativo:</p>
<div class="consola">/dev/sda7        /media/freebsd    ufs        ufstype=ufs2    0 0</div>
<p style="text-align: justify;">¡Eso es todo! Si tienes algún problema o sugerencia no dudes en comentar.</p>


	<div class="etiquetas">Etiquetas: <a href="http://casidiablo.net/tag/bsd/" rel="tag nofollow">bsd</a>, <a href="http://casidiablo.net/tag/freebsd/" rel="tag nofollow">FreeBSD</a>, <a href="http://casidiablo.net/tag/linux/" rel="tag nofollow">linux</a>, <a href="http://casidiablo.net/tag/netbsd/" rel="tag nofollow">netbsd</a>, <a href="http://casidiablo.net/tag/openbsd/" rel="tag nofollow">openbsd</a><br /></div>
]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/montar-particione-bsd-linux/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Mounting *BSD partitions/slices on Linux</title>
		<link>http://casidiablo.net/mount-freebsd-partition-slice-linux/</link>
		<comments>http://casidiablo.net/mount-freebsd-partition-slice-linux/#comments</comments>
		<pubDate>Fri, 01 Jan 2010 05:02:03 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[bsd]]></category>
		<category><![CDATA[netbsd]]></category>
		<category><![CDATA[openbsd]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=3544</guid>
		<description><![CDATA[


Some times it&#8217;s necessary to work with UFS (the default filesystem on FreeBSD, OpenBSD, NetBSD, etc.) from your linux box. Here I&#8217;ll explain how to do so by configuring your kernel in order to enable UFS read/write support. We&#8217;ll focus on FreeBSD.
Also, as you should know, FreeBSD uses its own hard disk partition scheme on [...]]]></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%3A%2F%2Fcasidiablo.net%2Fmount-freebsd-partition-slice-linux%2F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Mounting%20%2ABSD%20partitions%2Fslices%20on%20Linux%22%20%7D);"></div>
<p style="text-align: center;"><img class="size-full wp-image-3547 aligncenter" title="tux_beastie" src="http://casidiablo.net/wordpress/wp-content/uploads/2009/12/tux_beastie.png" alt="" width="450" height="243" /></p>
<p style="text-align: justify;">Some times it&#8217;s necessary to work with UFS (the default filesystem on FreeBSD, OpenBSD, NetBSD, etc.) from your linux box. Here I&#8217;ll explain how to do so by configuring your kernel in order to enable UFS read/write support. We&#8217;ll focus on FreeBSD.</p>
<p style="text-align: justify;">Also, as you should know, FreeBSD uses its own hard disk partition scheme on your PC. It requires only one entry in the primary partition table of your disk and manages it similarly to DOS extended partitions, putting in its first sector a new partition table in BSD disklabel format. So we&#8217;ll enable support for reading these disklabels; otherwise we just will be able to mount the root &#8217;slice&#8217; of FreeBSD but not the partitions &#8216;inside&#8217;.</p>
<p style="text-align: justify;">
<h3>0. Preparing your kernel</h3>
</p>
<p style="text-align: justify;">You may already have support for UFS and BSD disklabel format, but I&#8217;ll assume that you have built your kernel by your self and/or don&#8217;t have those options enabled.</p>
<p style="text-align: justify;">So, let&#8217;s get into the menu configuration of your kernel (I&#8217;m using Linux kernel 2.6.32):</p>
<p><span id="more-3544"></span></p>
<div class="consola">cd /usr/src/linux<br />
make menuconfig</div>
<p style="text-align: justify;">Now, we are going to activate these options:</p>
<div class="consola">-&gt; File systems<br />
-&gt; Miscellaneous filesystems<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;*&gt; UFS file system support (read only)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[*] UFS file system write support</div>
<p style="text-align: justify;">It&#8217;ll look like this:</p>
<p style="text-align: center;"><img src="http://casidiablo.net/wordpress/wp-content/uploads/2009/12/linux-kernel-menuconfig-ufs.png" alt="linux-kernel-menuconfig-ufs" title="linux-kernel-menuconfig-ufs" />
</p>
<div class="nota"><strong>Important:</strong> write support for UFS2 is on development and could be dangerous. Use it at your own risk <img src='http://casidiablo.net/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </div>
<p style="text-align: justify;">Now, we&#8217;ll enable the FreeBSD disklabel support:</p>
<div class="consola">-&gt; File systems<br />
&nbsp;&nbsp;&nbsp;&nbsp;-&gt; Partition Types<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[*] Advanced partition selection<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[*] PC BIOS (MSDOS partition tables) support<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[*]&nbsp;&nbsp;&nbsp;&nbsp;BSD disklabel (FreeBSD partition tables)</div>
<p style="text-align: justify;">It&#8217;ll look like this:</p>
<p style="text-align: center;"><img src="http://casidiablo.net/wordpress/wp-content/uploads/2009/12/linux-kernel-menuconfig-ufs-2.png" alt="linux-kernel-menuconfig-ufs" title="linux-kernel-menuconfig-ufs" />
</p>
<p style="text-align: justify;">OK&#8230; with these options enabled we just need to compile our kernel and install it:</p>
<div class="consola">make &amp;&amp; cp arch/x86_64/boot/bzImage /boot/kernel-2.6.32</div>
<div class="nota"><strong>Note:</strong> I&#8217;m assuming you already know how to work with the kernel&#8230; the line above will work fine for me, but some of you guys will use other kind of settings for your boot loader (for instance, those of you who use initramfs). In conclusion: I expect you know how to compile and configure your kernel for this kind of situations.</div>
<p style="text-align: justify;">
<h3>1. Looking for partitions names</h3>
</p>
<p style="text-align: justify;">When working with FreeBSD, the disks device names are like this: /dev/ad0s3a. But, as we are working with Linux, we&#8217;ll have the traditional /dev/sda* or /dev/hda* names. So, thanks to the FreeBSD Disklabel support that we&#8217;ve just added, we can do this in order to know the devices names:</p>
<div class="consola">cat /proc/partitions</div>
<p style="text-align: justify;">You&#8217;ll get something like this:</p>
<div class="consola">major minor  #blocks  name<br />
8        0  244198584 sda<br />
8        1   41624383 sda1<br />
8        2  158497290 sda2<br />
8        3   39076695 sda3<br />
8        4    5000184 sda4<br />
8        5     524288 sda5<br />
8        6    4194304 sda6<br />
8        7    5223424 sda7<br />
8        8     524288 sda8<br />
8        9   28610391 sda9</div>
<p style="text-align: justify;">
<h3>2. Mounting UFS</h3>
</p>
<p style="text-align: justify;">In order to mount a UFS partition you&#8217;ll need to type this (suppose /dev/sda7 is one of the *BSD partitions):</p>
<div class="consola">mount -t ufs -o ufstype=ufs2 /dev/sda7 /media/freebsd</div>
<p style="text-align: justify;">Of course, you can add an entry to your /etc/fstab file so the partition get mounted each time you boot your system:</p>
<div class="consola">/dev/sda7        /media/freebsd    ufs        ufstype=ufs2    0 0</div>
<p style="text-align: justify;">That&#8217;s it. Let me know if you have any problem. And sorry for my English, I&#8217;m just learning <img src='http://casidiablo.net/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>


	<div class="etiquetas">Etiquetas: <a href="http://casidiablo.net/tag/bsd/" rel="tag nofollow">bsd</a>, <a href="http://casidiablo.net/tag/freebsd/" rel="tag nofollow">FreeBSD</a>, <a href="http://casidiablo.net/tag/linux/" rel="tag nofollow">linux</a>, <a href="http://casidiablo.net/tag/netbsd/" rel="tag nofollow">netbsd</a>, <a href="http://casidiablo.net/tag/openbsd/" rel="tag nofollow">openbsd</a><br /></div>
]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/mount-freebsd-partition-slice-linux/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Configurar GRUB y GRUB2 para cargar FreeBSD</title>
		<link>http://casidiablo.net/modificar-grub-iniciar-bsd/</link>
		<comments>http://casidiablo.net/modificar-grub-iniciar-bsd/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 03:53:09 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[bsd]]></category>
		<category><![CDATA[grub]]></category>
		<category><![CDATA[how-to]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=3534</guid>
		<description><![CDATA[

Al instalar sistemas operativos adicionales a los que tenemos generalmente nos dan la opción de instalar un boot loader en el MBR. Esto sobre escribe nuestro anterior boot loader (GRUB o Lilo en la mayoría de los casos), así que es preferible no tocar el MBR.
En este pequeño tip les mostraré cómo configurar GRUB para [...]]]></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%3A%2F%2Fcasidiablo.net%2Fmodificar-grub-iniciar-bsd%2F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Configurar%20GRUB%20y%20GRUB2%20para%20cargar%20FreeBSD%22%20%7D);"></div>
<p style="text-align: justify;"><img style="float: left;" title="freebsd-linux" src="http://casidiablo.net/wordpress/wp-content/uploads/2009/12/freebsd-linux.jpg" alt="linux freebsd" />Al instalar sistemas operativos adicionales a los que tenemos generalmente nos dan la opción de instalar un boot loader en el MBR. Esto sobre escribe nuestro anterior boot loader (GRUB o Lilo en la mayoría de los casos), así que es preferible no tocar el MBR.</p>
<p style="text-align: justify;">En este pequeño tip les mostraré cómo configurar GRUB para iniciar aquel hermoso sistema FreeBSD que acabas de instalar junto a tu Linux. La verdad es muy sencillo, lo único que debes hacer es añadir lo siguiente al archivo <strong>/boot/grub/menu.lst</strong>:</p>
<div class="consola">title  FreeBSD 8.0<br />
root   (hd0,a)<br />
kernel /boot/loader</div>
<p style="text-align: justify;">Una breve explicación:</p>
<ul>
<li style="text-align: justify;"><strong>title  FreeBSD 8.0 </strong>: Crea un nuevo ítem en el menú y le pone el título &#8216;FreeBSD 8.0&#8242; (en realidad puedes colocar lo que quieras).</li>
<li style="text-align: justify;"><strong>root   (hd0,a)</strong> : Seleccionamos la partición raíz donde se encuentra FreeBSD. En el ejemplo hd0 es el primer disco duro (hda en Linux). En GRUB hda es hd0. Así, por ejemplo, hda2 (segunda partición del primer disco) es hd0,1 en Grub. Además, recuerda que FreeBSD usa nombres del tipo a, b, c para representar los nombres de las particiones. Si tuvieras instalado FreeBSD en la tercera partición entonces tendrías que usar:<strong> root   (hd0,2,a)</strong></li>
<li style="text-align: justify;"><strong>kernel /boot/loader</strong> : Se usa para cargar la imagen de boot principal. FreeBSD usa /boot/loader para cargar el resto del kernel y OS.</li>
</ul>
<p style="text-align: justify;">
<h3>Actualizaci&oacute;n: entrada para GRUB2</h3>
</p>
<p style="text-align: justify;">Si est&aacute;s usando GRUB2 entonces deber&aacute;s modificar tu archivo <code>/boot/grub/grub.cfg</code> y a&ntilde;adir esto:</p>
<div class="consola">menuentry &#8220;FreeBSD 8.0&#8243; {<br />
	set root=(hd0,1,a)<br />
	chainloader +1<br />
}</div>
<p>Fuente: <a href="http://lists.freebsd.org/pipermail/freebsd-hackers/2004-May/006944.html">Lista de correo FreeBSD</a> | <a href="http://forums.freebsd.org/showthread.php?t=5918">Foros FreeBSD</a></p>


	<div class="etiquetas">Etiquetas: <a href="http://casidiablo.net/tag/bsd/" rel="tag nofollow">bsd</a>, <a href="http://casidiablo.net/tag/freebsd/" rel="tag nofollow">FreeBSD</a>, <a href="http://casidiablo.net/tag/grub/" rel="tag nofollow">grub</a>, <a href="http://casidiablo.net/tag/how-to/" rel="tag nofollow">how-to</a>, <a href="http://casidiablo.net/tag/linux/" rel="tag nofollow">linux</a>, <a href="http://casidiablo.net/tag/tips/" rel="tag nofollow">tips</a><br /></div>
]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/modificar-grub-iniciar-bsd/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Redimensionar partición NTFS [consola]</title>
		<link>http://casidiablo.net/cambiar-tamano-particion-ntfs-linux/</link>
		<comments>http://casidiablo.net/cambiar-tamano-particion-ntfs-linux/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 00:22:03 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[Arch Linux]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[bsd]]></category>
		<category><![CDATA[linux. unix]]></category>
		<category><![CDATA[ntfs]]></category>
		<category><![CDATA[partición]]></category>
		<category><![CDATA[redimensionar]]></category>
		<category><![CDATA[resize]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=3530</guid>
		<description><![CDATA[

Entre tanto trabajo, estudio y procrastinación me queda poco tiempo para publicar cosas&#8230; así que al menos iré poniendo pequeños tips que considero útiles. En esta ocasión un tip simple, redimensionar una partición con NTFS desde la consola. Para ello usaremos el comando ntfsresize que viene dentro del paquete ntfsprogs (Gentoo/Debian/Arch/FreeBSD/) o ntfstools (Ubuntu): http://www.linux-ntfs.org/
Instalación
Gentoo:
emerge [...]]]></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%3A%2F%2Fcasidiablo.net%2Fcambiar-tamano-particion-ntfs-linux%2F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Redimensionar%20partici%C3%B3n%20NTFS%20%5Bconsola%5D%22%20%7D);"></div>
<p style="text-align: justify;">Entre tanto trabajo, estudio y procrastinación me queda poco tiempo para publicar cosas&#8230; así que al menos iré poniendo pequeños tips que considero útiles. En esta ocasión un tip simple, redimensionar una partición con NTFS desde la consola. Para ello usaremos el comando ntfsresize que viene dentro del paquete ntfsprogs (Gentoo/Debian/Arch/FreeBSD/) o ntfstools (Ubuntu): <a href="http://www.linux-ntfs.org/">http://www.linux-ntfs.org/</a></p>
<h3>Instalación</h3>
<p><strong>Gentoo:</strong></p>
<div class="consola">emerge -av ntfsprogs</div>
<p><strong>FreeBSD:</strong></p>
<div class="consola">cd /usr/ports/sysutils/ntfsprogs<br />
make &amp;&amp; make install clean</div>
<p><strong>Ubuntu:</strong></p>
<div class="consola">aptitude install ntfstools</div>
<p><strong>Debian:</strong></p>
<div class="consola">apt-get install ntfsprogs</div>
<p><strong>Arch:</strong></p>
<div class="consola">pacman -S ntfsprogs</div>
<p style="text-align: justify;">
<h3>Uso&#8230;</h3>
</p>
<p style="text-align: justify;">El uso es bastante simple&#8230; para inspeccionar una partición, conocer cuanto espacio disponible tiene y cuanto es el mínimo/máximo que podemos asignarle ejecutamos lo siguiente:</p>
<div class="consola">ntfsresize -if /dev/sda2</div>
<p style="text-align: justify;">Donde /dev/sda2 corresponde a la partición que queremos tratar. Supongamos que, por ejemplo, queremos redimensionar la partición a 34GB, ejecutamos lo siguiente para hacer un test de solo lectura:</p>
<div class="consola">ntfsresize -n -s 34G /dev/sda2</div>
<p style="text-align: justify;">El flag -n indica que NO se harán cambios reales sobre el disco, mientras que -s especifica el nuevo tamaño (k kilobytes, M para megabytes, G gigabytes). Si todo va bien con el test procedemos con el cambio real:</p>
<div class="consola">ntfsresize -f -s 34G /dev/sda2</div>


	<div class="etiquetas">Etiquetas: <a href="http://casidiablo.net/tag/bsd/" rel="tag nofollow">bsd</a>, <a href="http://casidiablo.net/tag/linux-unix/" rel="tag nofollow">linux. unix</a>, <a href="http://casidiablo.net/tag/ntfs/" rel="tag nofollow">ntfs</a>, <a href="http://casidiablo.net/tag/particion/" rel="tag nofollow">partición</a>, <a href="http://casidiablo.net/tag/redimensionar/" rel="tag nofollow">redimensionar</a>, <a href="http://casidiablo.net/tag/resize/" rel="tag nofollow">resize</a>, <a href="http://casidiablo.net/tag/windows/" rel="tag nofollow">Windows</a><br /></div>
]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/cambiar-tamano-particion-ntfs-linux/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<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 de [...]]]></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%3A%2F%2Fcasidiablo.net%2Ferror-vmware-linux-kernel%2F%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>:<br />
<!--INFOLINKS_OFF-->
<pre class="brush: cpp; pad-line-numbers: false; toolbar: false;">add this line #include &quot;compat_sched.h&quot;</pre>
<p><!--INFOLINKS_ON-->
</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>


	<div class="etiquetas">Etiquetas: <a href="http://casidiablo.net/tag/2-6-32/" rel="tag nofollow">2.6.32</a>, <a href="http://casidiablo.net/tag/compilacion/" rel="tag nofollow">compilación</a>, <a href="http://casidiablo.net/tag/error/" rel="tag nofollow">error</a>, <a href="http://casidiablo.net/tag/kernel/" rel="tag nofollow">kernel</a>, <a href="http://casidiablo.net/tag/linux/" rel="tag nofollow">linux</a>, <a href="http://casidiablo.net/tag/modulos/" rel="tag nofollow">módulos</a>, <a href="http://casidiablo.net/tag/vmware/" rel="tag nofollow">vmware</a><br /></div>
]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/error-vmware-linux-kernel/feed/</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
		<item>
		<title>Recuperar archivos eliminados usando Foremost [configuración manual]</title>
		<link>http://casidiablo.net/restaurar-archivos-eliminados-accidentalmente/</link>
		<comments>http://casidiablo.net/restaurar-archivos-eliminados-accidentalmente/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 05:58:39 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[artículos]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[archivos]]></category>
		<category><![CDATA[carving]]></category>
		<category><![CDATA[eliminados]]></category>
		<category><![CDATA[ext2]]></category>
		<category><![CDATA[ext3]]></category>
		<category><![CDATA[ext4]]></category>
		<category><![CDATA[foremost]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[ntfs]]></category>
		<category><![CDATA[recovery]]></category>
		<category><![CDATA[recuperar]]></category>
		<category><![CDATA[tip]]></category>
		<category><![CDATA[undelete]]></category>
		<category><![CDATA[videos]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=3487</guid>
		<description><![CDATA[


¡Hola a todos! Hace un par de días perdí la partición donde tenía mi /home. Afortunadamente pude recuperar el 98% de los archivos que necesitaba. Es decir, en realidad no me interesaba recuperar imágenes, música, etc&#8230; lo único importante era recuperar los archivos PHP con los que había estado trabajando.
Aclaro esto puesto que esta entrada [...]]]></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%3A%2F%2Fcasidiablo.net%2Frestaurar-archivos-eliminados-accidentalmente%2F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Recuperar%20archivos%20eliminados%20usando%20Foremost%20%5Bconfiguraci%C3%B3n%20manual%5D%22%20%7D);"></div>
<p style="text-align: justify;">
<p style="text-align: justify;">¡Hola a todos! Hace un par de días perdí la partición donde tenía mi /home. Afortunadamente pude recuperar el 98% de los archivos <em>que necesitaba</em>. Es decir, en realidad no me interesaba recuperar imágenes, música, etc&#8230; lo único importante era recuperar los archivos PHP con los que había estado trabajando.</p>
<p style="text-align: justify;">Aclaro esto puesto que esta entrada se va a enfocar en la configuración manual de <a href="http://foremost.sourceforge.net/">Foremost</a>, un programa para hacer carving, de tal manera que rescatemos solamente aquello que realmente nos interesa. Existen otros programas, pero este fue el que realmente me ayudó en esos momentos de pánico.</p>
<p style="text-align: justify;">¿Cómo funciona? Foremost trabaja con imágenes generadas con dd o particiones directamente, y se basa en el análisis de encabezados y footers de los archivos para &#8216;extraer&#8217; lo que se pueda salvar.</p>
<div class="nota"><strong>Importante:</strong> si has eliminado accidentalmente algún archivo lo primero, después de blasfemar un rato, es evitar hacer cualquier tipo de escritura de datos sobre la misma. Esto es porque tus datos en realidad aún están allí, y el único riesgo que tienen de ser eliminados es que se sobrescriban datos en el mismo sector en donde se encuentran.</div>
<p><span id="more-3487"></span></p>
<p style="text-align: justify;">Dicho esto, tienes dos opciones:</p>
<ul style="text-align: justify;">
<li>Si tienes otra partición con suficiente espacio para almacenar un backup de la partición a ser tratada, puedes usar el comando dd y luego trabajar sobre esa imagen. <a href="http://casidiablo.net/crear-un-backup-o-imagen-del-disco-duro/">En esta entrada se explica con más detalle cómo hacer esto</a>.</li>
<li style="text-align: justify;">Si no tienes espacio (tal como me ocurrió a mi), puedes trabajar directamente sobre la partición (i.e. el archivo /dev/sdaX ó /dev/hdbX, etc.). Solo ten en mente que NO deberías montar dicha partición, al menos no en modo de lectura-escritura.</li>
</ul>
<p style="text-align: justify;">
<h3>Instalación de Foremost</h3>
<p style="text-align: justify;">La instalación es bastante sencilla ya que Foremost se incluye en prácticamente todos los repositorios de cualquier distribución. Así que puedes usar tu gestor de paquetes preferido. Siendo tan sencilla la instalación por repositorios, solo me queda mostrar la instalación manual que es incluso más sencilla&#8230; descargamos la última versión de Foremost (1.5.6 al momento de escribir esta entrada), descomprimimos, compilamos e instalamos:</p>
<div class="consola">wget http://foremost.sourceforge.net/pkg/foremost-1.5.6.tar.gz<br />
tar xfzv foremost-1.5.6.tar.gz<br />
cd foremost-1.5.6<br />
make &amp;&amp; make install</div>
<p style="text-align: justify;">
<h3>Ejemplo básico de uso de Foremost</h3>
<p style="text-align: justify;">El siguiente comando de ejemplo es un de los tantos cientos de miles que te encontrarás en la red&#8230; no me enfocaré mucho en este aspecto porque ya se encuentra muy bien documentado:</p>
<div class="consola">foremost -t pdf -i imagen.iso -o pdfs-recuperados</div>
<p style="text-align: justify;">Básicamente le estamos diciendo al Foremost que busque archivos de tipo PDF en el archivo de imagen (creado con dd) imagen.iso y que los guarde en pdfs-recuperados. Lo único que nos interesa recalcar en este punto es que Foremost tiene un set de archivos predefinidos de los cuales conoce su header y footer (como los PDFs en este caso); este set se compone de los archivos más comunes (imágenes  y videos en diferentes formatos, archivos de office, zips, etc.) Pero&#8230; ¿qué pasa con otro tipo de archivos menos comunes? Tranquilo, ya vamos para allá <img src='http://casidiablo.net/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p style="text-align: justify;">
<h3>Ejemplo de configuración del Foremost</h3>
<p style="text-align: justify;">Foremost puede ser configurado mediante un archivo (por defecto: <code>/etc/foremost.conf</code>) de tal manera que no tengamos que especificar el tipo de archivo a buscar y, lo que es mejor, podemos definir nuestros propios tipos de archivos. En nuestro ejemplo, te meterás en mis zapatos, te imaginarás que has perdido el trabajo de tres días y que tu objetivo es rescatar unos cuantos archivos de PHP.</p>
<p style="text-align: justify;">Entonces&#8230; ¿por donde comenzar? Bien&#8230; lo primero es echar un vistazo al archivo /etc/foremost.conf en donde puedes encontrar patrones de búsqueda para diferentes tipos de archivo (de hecho, son las que usa Foremost cuando usamos el flag <code>-t</code>). La sintáxis de estos patrones es sencilla y consta de una sola línea; esta línea tiene los siguientes parámetros separados por espacios o tabulaciones:</p>
<ul>
<li>Extensión del archivo&#8230; ¿debo explicar esto?</li>
<li>Definir si se debe hacer distinción entre mayúsculas y minúsculas al buscar el header y footer del archivo. Pon &#8216;y&#8217; si deseas que sea case-sensitive o &#8216;n&#8217; en caso contrario.</li>
<li>Tamaño máximo del archivo.</li>
<li>Encabezado: lo que se debe buscar en los encabezados de los archivos; puede ser especificado en texto plano o, mejor aún, en hexadecimal.</li>
<li>Footer (opcional): lo que se debe buscar al final de los archivos; puede ser especificado en texto plano o, mejor aún, en hexadecimal.</li>
</ul>
<p style="text-align: justify;">Por ejemplo, este es uno de los que se encuentra configurados por defecto en el Foremost:</p>
<p><code>jpg          y          20000000          \xff\xd8\xff\xe1          \xff\xd9</code></p>
<p style="text-align: justify;">Básicamente busca archivos con extensión .jpg y con un tamaño máximo de 20000000 bytes. Además especifica uno de los posibles encabezados que un archivo tipo JPEG puede tener (<code>\xff\xd8\xff\xe1</code>) y su footer (<code>\xff\xd9</code>).</p>
<p style="text-align: justify;">Como puedes ver, el encabezado y el footer pueden ser especificados en hexadecimal. Esto es bastante útil ya que en muchos casos no necesitamos simples archivos de texto sino que podríamos querer recuperar uno binario. En cualquier caso, es recomendable usar hexadecimal&#8230; pero ¿cómo se qué debo poner? Bien&#8230; recuerda que tu misión es recuperar los archivos PHP, así que&#8230; ¿qué tal si creamos uno para ver cómo se ve en hexadecimal?</p>
<p style="text-align: justify;">Creamos entonces un archivo con el siguiente contenido y lo guardamos como <em>test.php</em>:</p>
<p><!--INFOLINKS_OFF-->
<pre class="brush: php;">&lt;?php
if($meLoTire){
	echo &quot;o_O mode-panic:on&quot;;
}
?&gt;</pre>
<p><!--INFOLINKS_ON--></p>
<p style="text-align: justify;">Ahora debemos abrir este archivo con algún editor hexadecimal. Si usas Gnome, Ghex es una buena opción (sino, también)&#8230; lo instalas desde los repositorios y con él abres el archivo que acabas de crear&#8230; este lucirá así:</p>
<p><a href="http://casidiablo.net/wordpress/wp-content/uploads/2009/12/ghex.png"><img class="aligncenter size-full wp-image-3499" title="ghex" src="http://casidiablo.net/wordpress/wp-content/uploads/2009/12/ghex.png" alt="ghex" width="640" height="469" /></a></p>
<p style="text-align: justify;">¡Ahora ya podemos configurar Foremost como expertos, puesto que ya sabemos qué hexadecimales poner! Cada caracter del archivo que creamos equivale a un valor en hexadecimal y nos interesa enfocarnos en la representación hexadecimal de &#8220;&lt;?php&#8221; puesto que así comienzan los archivos en los que estamos interesados.</p>
<p style="text-align: justify;">Así que para este caso, los hexadecimales son 3C, 3F, 70, 68 y 70. Por lo tanto podemos crear un nuevo patrón dentro de /etc/foremost.conf que luzca algo así:</p>
<p><code>php y 100000 \x3C\x3F\x70\x68\x70</code></p>
<p style="text-align: justify;">Si queremos ser más precisos podemos especificar el footer:</p>
<p><code>php y 100000 \x3c\x3f\x70\x68\x70 \7d\0a\3f\x3e</code></p>
<p style="text-align: justify;">Fíjate que he definido un footer bastante concreto que hará que Foremost busque archivos que finalicen con un &#8216;}&#8217; seguido de un &#8216;Enter&#8217; (retorno de carro) y finalmente con &#8220;?&gt;&#8221;. Una vez hayamos terminado de configurar los patrones con los que queramos iniciar la búsqueda, guardamos y cerramos el archivo.</p>
<p style="text-align: justify;">Puesto que es el archivo por defecto no es necesario especificarlo al momento de ejecutar Foremost. Esto por supuesto implica que puedes crear un archivo con patrones en cualquier otro lado, y en tales casos debes referencialo con el flag -c. ¡Que comience el carving!</p>
<div class="consola">foremost -i /dev/sda1 -o ~/recuperados/</div>
<p style="text-align: justify;">Como puedes ver, no especificamos ningún tipo  de archivo así que Foremost se enfocará en aquellos configurados en el archivo .conf. Además, en este caso estamos especificando directamente la partición. Esto podría llevar un rato, así que tienes tiempo de leer algo entretenido ¿qué tal esta bonita <a href="http://www.gentoo.org/doc/en/vi-guide.xml">guía sobre Vi</a>? ¿o esta otra sobre un hermoso <a href="http://www.gentoo.org/doc/en/gentoo-freebsd.xml">Gentoo/BSD</a>?</p>
<p style="text-align: justify;">Una vez Foremost haya terminado su trabajo&#8230; el tuyo apenas comienza. Aunque Foremost es un excelente programa, los resultados no pueden ser 100% confiables (¿hay algo que lo sea?). Y para empeorar las cosas, Foremost NO recupera los nombres de los archivos. En vez de ello, crea una secuencia de archivos numéricos con la extensión; cosas como 8392383874.php ó 239492782.php ¿chévere, no?</p>
<p style="text-align: justify;">Todo parece que pasaremos un buen rato jugando con nuestro querido amigo GREP; y es que este maravilloso comando puede ser realmente útil en estos casos. Así que aquí van algunos comandos que te podrían servir:</p>
<ul>
<li style="text-align: justify;"><code>grep busqueda changos.ext</code><br />
Busca la cadena &#8216;busqueda&#8217; dentro del archivo changos.ext</li>
<li style="text-align: justify;">¿qué tal una búsqueda en todos los archivos? Esto podría servir para nuestro caso de los PHP:<br />
<code>cat *.php | grep -l cosa_a_buscar</code></li>
<li style="text-align: justify;">¿y si queremos buscar un string en varios archivos que se encuentran en diferentes directorios? Este comando es de los que más uso a diario:<br />
<code>find /ruta/ -exec grep -l cosa_a_buscar {} \;</code></li>
</ul>
<p style="text-align: justify;">
<h3>Cosas por considerar</h3>
</p>
<p style="text-align: justify;">
<ul>
<li style="text-align: justify;">Existe una gran probabilidad que los datos recuperados no estén del todo bien formados. Por ejemplo, podrían tener &#8220;basura&#8221; dentro. Esto es posible de corregir en archivos de texto, ya que solo necesitas un editor decente y un par de minutos para &#8220;ver qué te sirve&#8221;.</li>
<li style="text-align: justify;">Si los archivos recuperados tienen basura dentro, es mejor usar editores de texto en consola que no se quejan tanto al momento de editarlos. Gedit simplemente no los abre.</li>
<li style="text-align: justify;">Algunas veces los archivos quedan fragmentados; esto es, en un archivo recuperado queda una parte de lo que buscas, y en otro queda el restante. Por esto, es bastante útil que uses herramientas como Meld (excelente por cierto).  Considera este ejemplo de la vida real: en el archivo blablaa.php tenía parte inicial del archivo mientras que en blebelbel.php tenía el resto:</li>
</ul>
<p style="text-align: center;"><a href="http://casidiablo.net/wordpress/wp-content/uploads/2009/12/meld_1280.png"><img class="size-full wp-image-3501 aligncenter" title="meld_640" src="http://casidiablo.net/wordpress/wp-content/uploads/2009/12/meld_640.png" alt="meld_640" width="640" height="331" /></a></p>
<p style="text-align: justify;">Esto es difícil de notar &#8216;a ojo&#8217;, por lo que puedo decir que Meld me salvó el trasero una vez más (y de paso se ganó una donación). Así, combinando el trabajo de Foremost y la ayuda de Meld pude recuperar prácticamente todo lo que necesitaba.</p>
<p style="text-align: justify;">Pero, te repito, si fuesen archivos binarios los que quieres rescatar la cosa sería mucho más difícil. En este caso, &#8216;la basura&#8217; se puede identificar fácilmente dentro del archivo, y de la misma manera se puede eliminar. En una archivo binario sin embargo es un poco más difícil.</p>
<p style="text-align: justify;">
<h3>Otros buenos programas con propósitos similares</h3>
</p>
<p style="text-align: justify;">
<ul>
<li><a href="http://www.cgsecurity.org/wiki/PhotoRec">TestDisk (aka, PhotoRec)</a></li>
<li><a href="http://www.digitalforensicssolutions.com/Scalpel/">Scalpel</a></li>
<li><a href="http://www.student.dtu.dk/~s042078/magicrescue/">Magic Rescue</a></li>
<li><a href="http://www.sleuthkit.org/autopsy/desc.php">Sleuth Kit y Autopsy</a></li>
<li><a href="http://www.sleuthkit.org/">Sleuthkit</a></li>
</ul>
<p><br/><br/><br/></p>


	<div class="etiquetas">Etiquetas: <a href="http://casidiablo.net/tag/archivos/" rel="tag nofollow">archivos</a>, <a href="http://casidiablo.net/tag/carving/" rel="tag nofollow">carving</a>, <a href="http://casidiablo.net/tag/eliminados/" rel="tag nofollow">eliminados</a>, <a href="http://casidiablo.net/tag/ext2/" rel="tag nofollow">ext2</a>, <a href="http://casidiablo.net/tag/ext3/" rel="tag nofollow">ext3</a>, <a href="http://casidiablo.net/tag/ext4/" rel="tag nofollow">ext4</a>, <a href="http://casidiablo.net/tag/foremost/" rel="tag nofollow">foremost</a>, <a href="http://casidiablo.net/tag/ide/" rel="tag nofollow">ide</a>, <a href="http://casidiablo.net/tag/linux/" rel="tag nofollow">linux</a>, <a href="http://casidiablo.net/tag/ntfs/" rel="tag nofollow">ntfs</a>, <a href="http://casidiablo.net/tag/recovery/" rel="tag nofollow">recovery</a>, <a href="http://casidiablo.net/tag/recuperar/" rel="tag nofollow">recuperar</a>, <a href="http://casidiablo.net/tag/tip/" rel="tag nofollow">tip</a>, <a href="http://casidiablo.net/tag/undelete/" rel="tag nofollow">undelete</a>, <a href="http://casidiablo.net/tag/videos/" rel="tag nofollow">videos</a>, <a href="http://casidiablo.net/tag/wordpress/" rel="tag nofollow">wordpress</a><br /></div>
]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/restaurar-archivos-eliminados-accidentalmente/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Usando b43 para tarjetas inalámbricas BCM43xx en Linux</title>
		<link>http://casidiablo.net/usando-b43-para-tarjetas-inalambricas-bcm4312-en-linux/</link>
		<comments>http://casidiablo.net/usando-b43-para-tarjetas-inalambricas-bcm4312-en-linux/#comments</comments>
		<pubDate>Fri, 04 Dec 2009 02:40:36 +0000</pubDate>
		<dc:creator>Cortex</dc:creator>
				<category><![CDATA[artículos]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[noticias]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[b43]]></category>
		<category><![CDATA[broadcom]]></category>
		<category><![CDATA[inalambrica]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=3476</guid>
		<description><![CDATA[

Hola a todos!
Otra vez Cortex, que llevaba un buen rato sin pasarse por aquí.
Para los que aún no se han enterado, el día de hoy se hizo estable la versión 2.6.32 del kernel Linux. Como siempre, incluyendo múltiples mejoras, varios añadidos y correcciones. Por mencionar algunas de las cosas nuevas, encontraremos soporte 3D para los [...]]]></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%3A%2F%2Fcasidiablo.net%2Fusando-b43-para-tarjetas-inalambricas-bcm4312-en-linux%2F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Usando%20b43%20para%20tarjetas%20inal%C3%A1mbricas%20BCM43xx%20en%20Linux%22%20%7D);"></div>
<p>Hola a todos!</p>
<p>Otra vez <strong>Cortex</strong>, que llevaba un buen rato sin pasarse por aquí.</p>
<p>Para los que aún no se han enterado, el día de hoy se hizo <strong>estable la versión 2.6.32 del kernel Linux</strong>. Como siempre, <a title="What's new in Linux 2.6.32" href="http://www.h-online.com/open/features/What-s-new-in-Linux-2-6-32-872271.html">incluyendo múltiples mejoras, varios añadidos y correcciones</a>. Por mencionar algunas de las cosas nuevas, encontraremos soporte 3D para los chips gráficos Radeon más nuevos (algo que sé que muchos estaban esperando) así como soporte para KMS, Devtmpfs con lo cual se pretende tener un Linux independiente de Udev, mejoras en el sistema de archivos Btrfs, mejor manejo de memoria y mucho más.</p>
<p>Algo que todos los usuarios de tarjetas inalámbricas <strong>BCM43xx</strong> estabamos esperando, era el soporte de éste chipset por el driver <strong>b43.</strong> ¿Motivos? Muchos. Por ejemplo, no podíamos poner nuestra tarjeta en modo monitor y eso ya es mucho que decir.</p>
<p>En ésta nueva versión del kernel, ya hay soporte para éste tipo de chipsets y lo más recomendable es hacer la migración inmediata. No hay comparación alguna con el driver <strong>broadcom-sta</strong>, se nota un mejor funcionamiento, algo que los usuarios Windows podían disfrutar desde hace un buen rato ya.</p>
<p>Veamos como podemos disfrutar de éste driver.</p>
<p>Lo primero, es decir, que se necesita hacer uso de la versión <strong>2.6.32</strong> de Linux; ninguna versión anterior servirá. Si aún no te animas a compilar tus kernel personalizados (algo de lo que habíamos hablado <a title="Trabajando con el Kernel Linux (I)" href="http://casidiablo.net/trabajando-con-el-kernel-linux-i/">I</a> <a title="Trabajando con el Kernel Linux (II)" href="http://casidiablo.net/trabajando-con-el-kernel-linux-ii/">II</a> <a title="Trabajando con el Kernel Linux (III) – Buscando drivers de dipositivos PCI" href="http://casidiablo.net/identificando-drivers-pci-kernel-linux/">III</a>), la opción que te queda es esperar a que los desarrolladores de tu distribución incluyan el paquete precompilado con ésta versión. Si usas la ramas estables, probablemente pasará un buen tiempo antes de que ésto ocurra.</p>
<div class="nota">Éste driver <strong>sólo</strong> soporta los nuevos dispositivos <em>BCM43xx IEEE 802.11G,</em> pero no los viejos <em>IEEE 802.11B. </em>Éstos son soportados por el driver <strong>b43legacy</strong>. Para saber si tu tarjeta broadcom ya es soportada por éste driver, <a title="B43 PCI Devices" href="http://wireless.kernel.org/en/users/Drivers/b43#Known_PCI_devices">revisa aquí.</a></div>
<p>El proceso lo llevaré acabo desde mi <strong>Gentoo</strong>.</p>
<p>1. Instalamos <strong>gentoo-sources-2.6.32</strong></p>
<div class="consola">emerge &#8211;sync<br />
ACCEPT_KEYWORDS=&#8221;~arch&#8221; emerge -av gentoo-sources</div>
<p>2. Configuramos el kernel normalmente y agregamos el soporte</p>
<pre> Device Drivers --&gt;
   Network device support --&gt;
     Wireless LAN
       [*] Wireless LAN (IEEE 802.11)
       &lt;*&gt;   Broadcom 43xx wireless support (mac80211 stack)
       [ ]     Broadcom 43xx PCMCIA device support
       [*]     Broadcom 43xx debugging</pre>
<p>3. Compilamos, copiamos kernel a /boot y modificamos GRUB</p>
<div class="consola">make &amp;&amp; make modules_install<br />
mount /boot<br />
cp arch/x86_64/bzImage /boot/gentoo-2.6.32<br />
vim /boot/grub/grub.conf</div>
<p>4. Una vez instalado el kernel, procedemos a instalar <strong>b43-fwcutter</strong> y el firmware. La versión que incluye <strong>hoy</strong>, tu distribución, no te servirá. Descarguemos la versión en desarrollo</p>
<div class="consola">git clone http://git.bu3sch.de/git/b43-tools.git<br />
cd b43-tools/fwcutter<br />
make<br />
cd ..</div>
<div class="nota"><strong>Nota:</strong> En caso de que recibas un error, debido a la falta de la librería cURL, recompila <em>dev-util/git</em> con el USE flag <strong>curl</strong>.</div>
<p>5. Descarguemos e instalemos el firmware</p>
<div class="consola">export FIRMWARE_INSTALL_DIR=&#8221;/lib/firmware&#8221;<br />
wget http://downloads.openwrt.org/sources/broadcom-wl-4.178.10.4.tar.bz2<br />
tar xjf broadcom-wl-4.178.10.4.tar.bz2<br />
cd broadcom-wl-4.178.10.4/linux<br />
sudo ../../fwcutter/b43-fwcutter -w &#8220;$FIRMWARE_INSTALL_DIR&#8221; wl_apsta.o</div>
<p>6. Reiniciamos</p>
<p>Una vez hayamos terminado de reiniciar, como root comprobamos que la interfaz esté funcionando:</p>
<div class="consola">iwconfig<br />
ifconfig wlan1 up<br />
iwlist wlan1 scan</div>
<p>¡Eso es todo! ¡A disfrutar <em>sanamente</em> del modo monitor!</p>


	<div class="etiquetas">Etiquetas: <a href="http://casidiablo.net/tag/b43/" rel="tag nofollow">b43</a>, <a href="http://casidiablo.net/tag/broadcom/" rel="tag nofollow">broadcom</a>, <a href="http://casidiablo.net/tag/gentoo/" rel="tag nofollow">gentoo</a>, <a href="http://casidiablo.net/tag/inalambrica/" rel="tag nofollow">inalambrica</a>, <a href="http://casidiablo.net/tag/linux/" rel="tag nofollow">linux</a><br /></div>
]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/usando-b43-para-tarjetas-inalambricas-bcm4312-en-linux/feed/</wfw:commentRss>
		<slash:comments>30</slash:comments>
		</item>
		<item>
		<title>Manual instalación Gentoo paso a paso</title>
		<link>http://casidiablo.net/tutorial-instalacion-gentoo/</link>
		<comments>http://casidiablo.net/tutorial-instalacion-gentoo/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 21:42:37 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[gentoo]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[manual]]></category>
		<category><![CDATA[tip]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=3416</guid>
		<description><![CDATA[


En este pequeño manual explicare la manera de instalar Gentoo de una forma sencilla, simple, ilustrada y rápida, este proceso incluye instalación de Gentoo para x86 y AMD (32bits y 64bits), a su vez, puede también tomarse este manual como una opción alternativa a los manuales Oficiales de Gentoo&#8230;
Descargar [licencia cc]
Página del autor


	Etiquetas: gentoo, linux, [...]]]></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%3A%2F%2Fcasidiablo.net%2Ftutorial-instalacion-gentoo%2F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Manual%20instalaci%C3%B3n%20Gentoo%20paso%20a%20paso%22%20%7D);"></div>
<p style="text-align: center;"><img class="size-full wp-image-3419 aligncenter" title="vaquita-gentoo" src="http://casidiablo.net/wordpress/wp-content/uploads/2009/11/vaquita-gentoo.jpg" alt="vaquita-gentoo" width="600" height="363" /></p>
<p style="text-align: justify;"><em>En este pequeño manual explicare la manera de instalar Gentoo de una forma sencilla, simple, ilustrada y rápida, este proceso incluye instalación de Gentoo para x86 y AMD (32bits y 64bits), a su vez, puede también tomarse este manual como una opción alternativa a los manuales Oficiales de Gentoo&#8230;</em></p>
<p><a class="download tooltip" title="En formato PDF" href="http://casidiablo.net/descargar/Instalacion+Gentoo">Descargar</a> [<a href="http://creativecommons.org/licenses/by-nc-sa/2.5/mx/">licencia cc</a>]</p>
<p><a href="http://tinyurl.com/yj8wp8n">Página del autor</a></p>


	<div class="etiquetas">Etiquetas: <a href="http://casidiablo.net/tag/gentoo/" rel="tag nofollow">gentoo</a>, <a href="http://casidiablo.net/tag/linux/" rel="tag nofollow">linux</a>, <a href="http://casidiablo.net/tag/manual/" rel="tag nofollow">manual</a>, <a href="http://casidiablo.net/tag/tip/" rel="tag nofollow">tip</a>, <a href="http://casidiablo.net/tag/tutorial/" rel="tag nofollow">tutorial</a>, <a href="http://casidiablo.net/tag/wordpress/" rel="tag nofollow">wordpress</a><br /></div>
]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/tutorial-instalacion-gentoo/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
