<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-3570404401678257802</atom:id><lastBuildDate>Mon, 16 Nov 2009 15:09:42 +0000</lastBuildDate><title>Algo de Linux</title><description>Algunas cosas interesantes sobre LinEx, Linux en general, software libre...</description><link>http://enavas.blogspot.com/</link><managingEditor>noreply@blogger.com (Esteban M. Navas)</managingEditor><generator>Blogger</generator><openSearch:totalResults>205</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/AlgoDeLinux" type="application/rss+xml" /><feedburner:emailServiceId>AlgoDeLinux</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570404401678257802.post-2004684540844272971</guid><pubDate>Fri, 13 Nov 2009 08:44:00 +0000</pubDate><atom:updated>2009-11-13T11:09:06.804+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">comandos</category><category domain="http://www.blogger.com/atom/ns#">linux</category><title>El shell de linux: Comando rename - Renombrado masivo de archivos</title><description>Cuando se trabaja fundamentalmente en terminales de línea de comandos nos viene muy bien conocer herramientas como &lt;span style="font-weight: bold;"&gt;rename&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;rename&lt;/span&gt; es un comando que nos permite renombrar archivos de forma masiva desde la shell de Linux, es decir, que no tenemos más que ejecutar un comando para renombrar una lista de archivos con un patrón común.&lt;br /&gt;&lt;br /&gt;La sintaxis del comando rename es muy sencilla:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;rename perlexpr [ archivos ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Dónde:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;perlexpr&lt;/span&gt; es una expresión regular en lenguaje Perl.&lt;/li&gt;&lt;li&gt; y &lt;span style="font-weight: bold;"&gt;[archivos]&lt;/span&gt; es la lista de archivos a los que afectará el comando.&lt;/li&gt;&lt;/ul&gt;Quizás lo más complicado sea hacer las expresiones regulares.&lt;br /&gt;&lt;br /&gt;Veamos un ejemplo sencillo: Imaginemos que queremos cambiar la extensión de los archivos &lt;span style="font-weight: bold;"&gt;.txt&lt;/span&gt; del directorio actual por &lt;span style="font-weight: bold;"&gt;.csv&lt;/span&gt; . No tendremos más que ejecutar el comando rename de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# rename 's/\.txt/\.csv/' *.txt&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;'s/\.txt/\.csv/' es la expresión regular que dice "cambia .txt por .csv".&lt;/li&gt;&lt;li&gt;* .txt es la lista de archivos a los que hay que aplicarles el cambio.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Otro ejemplo: Supongamos que queremos convertir a minúsculas todos los caracteres del conjunto de archivos contenidos en el directorio actual:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# rename 'y/A-Z/a-z/' *&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;'y/A-Z/a-z/' es la expresión regular que dice "cambia los caracteres mayúsculas por minúsculas".&lt;/li&gt;&lt;li&gt;* le dice al comando que lo haga en todos los archivos.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Otro ejemplo: Imaginemos que queremos eliminar la extensión de todos los archivos que tengan extensión .bak en el directorio actual:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# rename 's/\.bak$//' *.bak&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;'s/\.bak$//' le dice al comando que renombre los archivos terminados en .bak por el nombre del archivo sin .bak, es decir, que elimine el .bak.&lt;/li&gt;&lt;li&gt;*.bak le dice al comando que actúe sólo en los archivos con extensión .bak del directorio actual.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;En estos ejemplos hemos trabajado sólo en el directorio actual, pero se puede especificar un directorio cualquiera. Por ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# rename 's/gestor/profesor/' /home/profesor/archivos/*&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una cuestión importante: Si estoy trabajando en un script bash y quiero utilizar una variable del script en la expresión regular de perl, tengo que exportarla para convertirla en una variable de entorno:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;export USUARIO&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una vez exportada, ya puedo usarla en la expresión regular haciendo referencia a ella de la siguiente manera: &lt;span style="font-weight: bold;"&gt;$ENV{'USUARIO'}&lt;/span&gt; Viéndolo en el ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# rename 's/gestor/$ENV{'USUARIO'}/' /home/profesor/$USUARIO/.nautilus/metafiles/*&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570404401678257802-2004684540844272971?l=enavas.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlgoDeLinux/~4/1XniK0Xtrxc" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/AlgoDeLinux/~3/1XniK0Xtrxc/el-shell-de-linux-comando-rename.html</link><author>noreply@blogger.com (Esteban M. Navas)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://enavas.blogspot.com/2009/11/el-shell-de-linux-comando-rename.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570404401678257802.post-7858073748841063148</guid><pubDate>Wed, 04 Nov 2009 16:52:00 +0000</pubDate><atom:updated>2009-11-04T18:08:54.327+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">software</category><title>KolourPaint: El Paint de Linux</title><description>A veces uso capturas de pantalla para explicar alguna cuestión sobre un cuadro de diálogo de una aplicación o una ventana y me gusta marcar y escribir sobre la imagen para añadir comentarios. Hoy necesitaba una aplicación sencilla para hacer ésto, no tenía ninguna a mano y no iba a utilizar gimp para una cosa tan simple.&lt;br /&gt;&lt;br /&gt;Buscando un poco en google, encontré justo lo que necesitaba: &lt;span style="font-weight: bold;"&gt;KolourPaint&lt;/span&gt;, una aplicación similar al Paint de Windows, pero con mayor funcionalidad y la posibilidad de abrir gran cantidad de tipos de archivos de imagen.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_SU6N90soq2U/SvG0ZgvtiRI/AAAAAAAAALA/E_HkXAkGeSA/s1600-h/KolourPaint.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 429px; height: 249px;" src="http://3.bp.blogspot.com/_SU6N90soq2U/SvG0ZgvtiRI/AAAAAAAAALA/E_HkXAkGeSA/s320/KolourPaint.png" alt="" id="BLOGGER_PHOTO_ID_5400295778573715730" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Lo tenemos tanto en los repositorios de Debian como en los de Ubuntu. Así que podemos instalarlo mediante synaptic o directamente desde un terminal con:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# apt-get install kolourpaint&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una vez instalado, se añadirá una entrada al menú Gráficos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570404401678257802-7858073748841063148?l=enavas.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlgoDeLinux/~4/lSkri-JP6OI" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/AlgoDeLinux/~3/lSkri-JP6OI/kolourpaint-el-paint-de-linux.html</link><author>noreply@blogger.com (Esteban M. Navas)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_SU6N90soq2U/SvG0ZgvtiRI/AAAAAAAAALA/E_HkXAkGeSA/s72-c/KolourPaint.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://enavas.blogspot.com/2009/11/kolourpaint-el-paint-de-linux.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570404401678257802.post-1045604516910519256</guid><pubDate>Tue, 27 Oct 2009 20:05:00 +0000</pubDate><atom:updated>2009-10-29T16:45:57.035+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">software</category><title>Analizar los logs de access.log de squid</title><description>Me he dado cuenta, viendo los reports de sarg, que el mayor consumo de ancho de banda de mi centro se lo llevan las actualizaciones de windows update de los ciclos. Así que, me he puesto a trabajar en intentar reducir ese consumo mediante el proxy-caché squid.&lt;br /&gt;&lt;br /&gt;No voy a entrar en detalles de cómo configurar squid porque lo que ahora me interesa es terminar de configurarlo para que cachee lo máximo posible. Aunque intentaré hacerlo en otro artículo, más que nada para recordar cómo monté el proxy, por si necesito hacerlo en otro momento.&lt;br /&gt;&lt;br /&gt;Para hacer pruebas, he necesitado analizar los logs del archivo access.log, en el que hay un montón de líneas que al principio pueden parecernos complicadas, pero que cuando nos familiarizamos con ellas entenderemos cómo funciona el cacheo de archivos.&lt;br /&gt;&lt;br /&gt;Lo primero que he hecho es  hacer pasar el tráfico de una máquina por el proxy. Esto es fácil si tenemos un servidor dhcp en el que hacemos que la puerta de enlace asignada sea la ip del proxy.&lt;br /&gt;&lt;br /&gt;Luego, en el proxy he ejecutado el comando tail para que me vaya mostrando lo que se va almacenando en el access.log:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# tail -f /var/log/squid/access.log&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y he comenzado a realizar actualizaciones en la máquina cliente para ver cómo trabaja el proxy.&lt;br /&gt;&lt;br /&gt;Al ejecutar el comando, tail -f /var/log/squid/access.log veremos circular por la pantalla una serie de mensajes.&lt;br /&gt;&lt;br /&gt;Básicamente, &lt;a name="SQUIDCONF"&gt;hay &lt;span style="font-weight: bold;"&gt;2 tipos de mensajes&lt;/span&gt;:&lt;br /&gt;&lt;/a&gt;&lt;ul&gt;&lt;li&gt;Mensajes que &lt;a name="SQUIDCONF"&gt;comienzan con "&lt;span style="font-weight: bold;"&gt;TCP_&lt;/span&gt;": Se refieren a peticiones que nos llegan por el puerto &lt;span style="font-weight: bold;"&gt;HTTP&lt;/span&gt;.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a name="SQUIDCONF"&gt;&lt;/a&gt;&lt;a name="SQUIDCONF"&gt;Mensajes que comienzan con "&lt;span style="font-weight: bold;"&gt;UDP_&lt;/span&gt;": Se refieren a peticiones que llegan por el puerto &lt;span style="font-weight: bold;"&gt;ICP&lt;/span&gt;.&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:130%;"&gt;Veamos los &lt;span style="font-weight: bold;"&gt;mensajes TCP&lt;/span&gt;, que son los que nos interesan para estudiar las peticiones que nos llegan por el puerto HTTP y realizar el cacheo:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;TCP_ HIT:&lt;/span&gt; Hay una copia válida del objeto solicitado en la caché. Por tanto, se servirá el objeto desde la caché.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;TCP_MISS&lt;/span&gt;: El objeto solicitado no se encontraba en la caché. Por tanto, squid tendrá que descargarlo desde internet.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;TCP_REFRESH_HIT:&lt;/span&gt; El objeto solicitado estaba en la caché, pero es viejo. Se hace una petición de traer un archivo más nuevo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;TCP_REF_FAIL_HIT&lt;/span&gt;: El ojeto solicitado estaba en la caché, pero era viejo. La petición de validación del objeto falló. Por lo tanto se servirá el objeto de la caché.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;TCP_REFRESH_MISS: &lt;/span&gt;El objeto solicitado estaba en la caché, pero era viejo. Se hizo una petición de trajer un objeto más nuevo y se trajo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;TCP_CLIENT_REFRESH: &lt;/span&gt;Este mensaje nos indica que el cliente abre una página que tiene orden de obtener siempre un archivo nuevo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;TCP_CLIENT_REFRESH_MISS:  &lt;/span&gt;El cliente solicita el refresco de una web determinada, pidiendo una nueva versión.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;TCP_IMS_HIT: &lt;/span&gt;El cliente ha solicitado una nueva versión de un objeto que estaba cacheado, pero se encuentra que el objeto de la caché aún no estaba caducado, es decir, que ya era lo más nuevo posible.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;TCP_IMS_MISS&lt;/span&gt;: El cliente solicita nueva copia acerca de un objeto viejo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;TCP_SWAPFAIL:  &lt;/span&gt;Se cree que el objeto se encuentra en la caché, pero por alguna razón no se puede acceder.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;TCP_DENIED: &lt;/span&gt;Se deniega el acceso a dicha petición. Veamos las posibles denegaciones:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;TCP_DENIED/400&lt;/span&gt; indica que la petición tenía una mala sintaxis. El usuario (o un link a una página web) hizo algo mal.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;TCP_DENIED/401&lt;/span&gt; indica que la página requiere autorización. &lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;TCP_DENIED/403 &lt;/span&gt;lo más probable es que sea un sitio bloqueado por una de las listas de control de acceso del Squid.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;TCP_DENIED/407 &lt;/span&gt;indica que el proxy está configurado para usar alguna forma de autenticación y esta autenticación está fallando. &lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Mensajes UDP&lt;/span&gt; con los que podemos encontrarnos:&lt;/span&gt;&lt;div class="FORMALPARA"&gt;&lt;p&gt;&lt;a name="SQUIDCONF"&gt;&lt;b&gt;UDP_HIT: &lt;/b&gt;Nos informa de que tenemos una copia válida del objeto solicitado en la cache.&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="FORMALPARA"&gt;&lt;p&gt;&lt;a name="SQUIDCONF"&gt;&lt;b&gt;UDP_MISS: &lt;/b&gt;Indica que el objeto que ha sido solicitado no está en nuestra cache.&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;span style="font-size:130%;"&gt;Además, veremos también códigos de resultado de la fuente de la página:&lt;br /&gt;&lt;/span&gt;&lt;div class="FORMALPARA"&gt;&lt;p&gt;&lt;a name="SQUIDCONF"&gt;&lt;b&gt;FIRST_UP_PARENT: &lt;/b&gt;El objeto ha sido pedido al padre que aparece disponible el primero en nuestra lista. Esto tiene lugar cuando utilizamos una jerarquía de cachés.&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="FORMALPARA"&gt;&lt;p&gt;&lt;a name="SQUIDCONF"&gt;&lt;b&gt;SIBLING_HIT: &lt;/b&gt;El objeto ha sido pedido a uno de nuestros proxies hermanos que responde con un UDP_HIT.&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="FORMALPARA"&gt;&lt;p&gt;&lt;a name="SQUIDCONF"&gt;&lt;b&gt;DIRECT: &lt;/b&gt;El objeto solicitado ha sido servido directamente por el servidor original.&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="FORMALPARA"&gt;&lt;p&gt;&lt;a name="SQUIDCONF"&gt;&lt;b&gt;NONE: &lt;/b&gt;El objeto solicitado no es servido por ningún compañero.&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;Por otra parte, es interesante también observar los mensajes del archivo&lt;span style="font-weight: bold;"&gt; /var/log/squid/store.log&lt;/span&gt;. Si al descargar un archivo por primera vez, hacemos un:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# tail -f /var/log/squid/store.log&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Veremos un mensaje con un &lt;span style="font-weight: bold;"&gt;GET&lt;/span&gt; por el que nos damos cuenta de que el archivo va a ser descargado, y cuando el archivo termine de descargarse, veremos un mensaje con un &lt;span style="font-weight: bold;"&gt;SWAPOUT&lt;/span&gt;, que nos indica que el archivo ha sido sacado de la caché para ofrecérselo al cliente.&lt;br /&gt;&lt;br /&gt;Si volvemos a descargar el mismo archivo y no hay una versión más nueva en internet, ya no veremos un GET, sino que encontraremos un mensaje de &lt;span style="font-weight: bold;"&gt;SWAPOUT&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Si queremos ver estadísticas de resultados, recomiendo instalar &lt;span style="font-weight: bold;"&gt;Calamaris&lt;/span&gt;, un generador de informes de la actividad de caché que nos permitirá obtener datos estadísticos de uso de la caché de squid en formato ASCII o HTML.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570404401678257802-1045604516910519256?l=enavas.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlgoDeLinux/~4/i9xungnWWfU" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/AlgoDeLinux/~3/i9xungnWWfU/analizar-los-logs-de-accesslog-de-squid.html</link><author>noreply@blogger.com (Esteban M. Navas)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://enavas.blogspot.com/2009/10/analizar-los-logs-de-accesslog-de-squid.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570404401678257802.post-8071461778919183122</guid><pubDate>Mon, 28 Sep 2009 09:29:00 +0000</pubDate><atom:updated>2009-09-28T11:45:13.904+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">errores</category><title>Problemas con splash en grub</title><description>Siempre he tenido una imagen de fondo en grub, pero de un tiempo a esta parte, con las actualizaciones, dejó de aparecer. Me he puesto a buscar algo de información y he encontrado cuál es el problema.&lt;br /&gt;&lt;br /&gt;La entrada que cargaba la imagen de grub es la siguiente:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;splashimage=(hd0,3)/boot/grub/splashimages/calavera.xpm.gz&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Por lo visto, ahora, para que se cargue la imagen de splash, dicha imagen tiene que llamarse &lt;span style="font-weight: bold;"&gt;splash.xpm.gz&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Lo que he hecho es crear en /boot/grub/ un enlace a la imagen del directorio /boot/grub/splashimages/ que quiero cargar, llamándola splash.xpm.gz. Por ejemplo:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ln -s /boot/grub/splashimages/calavera.xpm.gz /boot/grub/splash.xpm.gz&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Después he cambiado la entrada que carga el splash en grub por:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;splashimage=(hd0,3)/boot/grub/splash.xpm.gz&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y listo. Vuelvo a tener imagen de splash en grub.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570404401678257802-8071461778919183122?l=enavas.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlgoDeLinux/~4/JWQV1mibfzw" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/AlgoDeLinux/~3/JWQV1mibfzw/problemas-con-splash-en-grub.html</link><author>noreply@blogger.com (Esteban M. Navas)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://enavas.blogspot.com/2009/09/problemas-con-splash-en-grub.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570404401678257802.post-3076366353083331949</guid><pubDate>Thu, 24 Sep 2009 20:58:00 +0000</pubDate><atom:updated>2009-09-24T23:18:51.760+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">herramientas</category><category domain="http://www.blogger.com/atom/ns#">software</category><title>mkisofs: Crear iso</title><description>&lt;p&gt;Podemos crear un iso de un directorio utilizando el programa &lt;span style="font-weight: bold;"&gt;mkisofs&lt;/span&gt;.&lt;br /&gt;de la siguiente manera:&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;#  mkisofs -o archivo.iso /directorio&lt;/p&gt;&lt;p&gt;Y si queremos crear el iso de un directorio que arranque con grub, añadiremos un directorio /boot al directorio de la imagen con un grub y el fichero stage2_eltorito dentro de boot/grub/.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Si tenemos debian y un kernel de 64 bits, encontraremos el fichero stage2_eltorito en el directorio:&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;/usr/lib/grub/x86_64-pc/&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Y si nuestro kernel es de 32 bits, el fichero estará en:&lt;br /&gt;&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;/usr/lib/grub/i386-pc/&lt;/p&gt;&lt;p&gt;Una vez listo el directorio del que vayamos a crear el fichero iso, ejecutaremos el comando mkisofs.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Veamos un ejemplo: Imaginemos que tenemos un directorio llamado &lt;span style="font-weight: bold;"&gt;cd&lt;/span&gt;, a partir del que vamos a crear un iso llamado &lt;span style="font-weight: bold;"&gt;cd_boot.iso&lt;/span&gt; con una etiqueta de disco: &lt;span style="font-weight: bold;"&gt;etiqueta&lt;/span&gt;:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;# mkisofs  -V etiqueta -no-iso-translate -U -nobak -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o cd_boot.iso cd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para rematar, una vez creado el archivo iso, podemos crear su hash md5. De este modo, si alguien quiere descargarlo, podrá comprobar que la descarga es correcta y el archivo no ha sido manipulado:&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;# md5sum archivo.iso  &gt; archivo.iso.md5&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Una vez creado el hash md5 y almacenado en un archivo, podemos comprobar&lt;br /&gt;&lt;/p&gt;&lt;p&gt;md5sum -c archivo.iso.md5 si el hash md5 del archivo coincide con el del fichero descargado de la siguiente manera:&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;# md5sum -c cd_boot.iso.md5&lt;/p&gt;&lt;p&gt;Si al ejecutar este comando, obtenemos un mensaje como el siguiente, sabemos que hemos descargado el archivo perfectamente:&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;cd_boot.iso: La suma coincide&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570404401678257802-3076366353083331949?l=enavas.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlgoDeLinux/~4/k0sZpmRdb70" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/AlgoDeLinux/~3/k0sZpmRdb70/mkisofs-crear-iso.html</link><author>noreply@blogger.com (Esteban M. Navas)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://enavas.blogspot.com/2009/09/mkisofs-crear-iso.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570404401678257802.post-7766326514834901132</guid><pubDate>Thu, 24 Sep 2009 20:48:00 +0000</pubDate><atom:updated>2009-09-24T22:57:47.012+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">herramientas</category><category domain="http://www.blogger.com/atom/ns#">errores</category><title>Error al ejecutar Trinity Rescue Kit: trk not found on cd</title><description>Hace mucho tiempo que no escribo nada en el blog por falta de tiempo. Pero aprovechando que me preguntaron por este error al ejecutar Trinity Rescue Kit, lo escribo en este artículo ahora que recuerdo a qué se debía cuando me sucedió a mí.&lt;br /&gt;&lt;br /&gt;El problema de que nos aparezca el siguiente error: &lt;span style="font-weight: bold;"&gt;trk not found on cd&lt;/span&gt; en Trinity Rescue Kit v3 está habitualmente en que el disco debe tener como etiqueta: TRK_3.3.&lt;br /&gt;&lt;br /&gt;Y si tenemos montado TRK en una partición de un disco externo, por ejemplo, tendremos que etiquetar la partición como TRK_3.3. Además de que la partición sea la cuarta del disco.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570404401678257802-7766326514834901132?l=enavas.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlgoDeLinux/~4/ckAvP147ilI" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/AlgoDeLinux/~3/ckAvP147ilI/error-al-ejecutar-trinity-rescue-kit.html</link><author>noreply@blogger.com (Esteban M. Navas)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://enavas.blogspot.com/2009/09/error-al-ejecutar-trinity-rescue-kit.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570404401678257802.post-1927381393547408337</guid><pubDate>Mon, 06 Jul 2009 12:39:00 +0000</pubDate><atom:updated>2009-07-06T14:45:22.505+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">software</category><category domain="http://www.blogger.com/atom/ns#">windows</category><title>Cambiar IP pública del router Comtrend en JDownloader</title><description>JDownloader es una aplicación multiplataforma hecha en java que sirve para descargar desde sitios tipo rapidshare, megaupload, etc...&lt;br /&gt;&lt;br /&gt;Para los que usen JDownloader y tengan un router Comtrend, es posible renovar automáticamente la IP pública de nuestro router, escribiendo el siguiente conjunto de instrucciones en el apartado de configuración que se muestra en la imagen:&lt;br /&gt;&lt;br /&gt;[[[HSRC]]]&lt;br /&gt; [[[STEP]]]&lt;br /&gt;    [[[REQUEST]]]&lt;br /&gt;       GET /rebootinfo.cgi HTTP/1.1&lt;br /&gt;       Host: %%%routerip%%%&lt;br /&gt;       Authorization: Basic %%%basicauth%%%&lt;br /&gt;    [[[/REQUEST]]]&lt;br /&gt; [[[/STEP]]]&lt;br /&gt;[[[/HSRC]]]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_SU6N90soq2U/SlHw__LylcI/AAAAAAAAAK4/LzeFHn_6zdg/s1600-h/Pantallazo-jDownloader+0.6.193.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 206px;" src="http://1.bp.blogspot.com/_SU6N90soq2U/SlHw__LylcI/AAAAAAAAAK4/LzeFHn_6zdg/s320/Pantallazo-jDownloader+0.6.193.png" alt="" id="BLOGGER_PHOTO_ID_5355326414003541442" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570404401678257802-1927381393547408337?l=enavas.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlgoDeLinux/~4/KFhujq50w4w" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/AlgoDeLinux/~3/KFhujq50w4w/cambiar-ip-publica-del-router-comtrend.html</link><author>noreply@blogger.com (Esteban M. Navas)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_SU6N90soq2U/SlHw__LylcI/AAAAAAAAAK4/LzeFHn_6zdg/s72-c/Pantallazo-jDownloader+0.6.193.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://enavas.blogspot.com/2009/07/cambiar-ip-publica-del-router-comtrend.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570404401678257802.post-9056558990747709702</guid><pubDate>Sat, 04 Jul 2009 08:49:00 +0000</pubDate><atom:updated>2009-07-04T11:07:51.883+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">eeePC</category><category domain="http://www.blogger.com/atom/ns#">linux</category><title>Actualizar BIOS del EEEPC 701</title><description>Es posible actualizar de una forma sencilla la BIOS de nuestro eeepc utilizando un pendrive formateado en FAT16.&lt;br /&gt;&lt;br /&gt;Para actualizar la bios, lo primero que haremos será  buscar en la web de soporte de Asus la última versión disponible y descargarla:&lt;br /&gt;&lt;a href="http://support.asus.com/download/download.aspx?SLanguage=es-ES"&gt;http://support.asus.com/download/download.aspx?SLanguage=es-ES&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Imaginemos que hemos descargado la última versión disponible: 701-ASUS-1302.zip&lt;br /&gt;&lt;br /&gt;Descomprimimos el fichero:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# unzip 701-ASUS.1302.zip&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Al descomprimirlo, tendremos el fichero con la nueva BIOS. En el ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;701-ASUS-1302.ROM&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Lo renombramos para que tenga el nombre 701.ROM:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# mv 701-ASUS-1302.ROM 701.ROM&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y lo copiamos al pendrive. Es &lt;span style="font-weight: bold;"&gt;importante&lt;/span&gt; que el pendrive esté formateado en &lt;span style="font-weight: bold;"&gt;FAT16&lt;/span&gt;. Al menos a mí no me ha funcionado teniéndolo formateado en FAT32.&lt;br /&gt;&lt;br /&gt;Una vez que tenemos el fichero 701.ROM en el pendrive, apagaremos nuestro EEEPC 701, conectaremos el pendrive y lo encenderemos. Cuando comience a encenderse, pulsaremos &lt;span style="font-weight: bold;"&gt;Alt+F2&lt;/span&gt; para iniciar la herramienta de actualización de la BIOS. Ésta herramienta buscará el fichero 701.ROM en el pendrive y actualizará su bios.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Importante&lt;/span&gt;: No interrumpir el proceso y asegurarse de que el portátil tiene la batería cargada. Lo mejor es tener carga en la batería y al mismo tiempo mantenerlo conectado a la red eléctrica, por si acaso.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570404401678257802-9056558990747709702?l=enavas.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlgoDeLinux/~4/uqgTzzD4oH4" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/AlgoDeLinux/~3/uqgTzzD4oH4/actualizar-bios-del-eeepc-701.html</link><author>noreply@blogger.com (Esteban M. Navas)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://enavas.blogspot.com/2009/07/actualizar-bios-del-eeepc-701.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570404401678257802.post-8904905347318209707</guid><pubDate>Sun, 21 Jun 2009 15:13:00 +0000</pubDate><atom:updated>2009-06-21T17:40:03.626+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">comandos</category><category domain="http://www.blogger.com/atom/ns#">linux</category><title>sshfs: Montar directorios remotos de forma segura</title><description>&lt;span style="font-weight: bold;"&gt;sshfs&lt;/span&gt; es una herramienta muy útil para todos aquellos que administramos sistemas linux.&lt;br /&gt;&lt;br /&gt;Es bastante interesante porque nos permite montar directorios remotos usando ssh y trabajar con sistemas de archivos remotos como si fueran locales, con el añadido de que al utilizar ssh, la comunicación es segura.&lt;br /&gt;&lt;br /&gt;Lógicamente, para montar un directorio remoto vía sshfs, el servidor tendrá que tener un servidor ssh.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Instalar sshfs en la máquina cliente.-&lt;/span&gt;&lt;br /&gt;En cuanto al cliente, deberá disponer de soporte FUSE (Filesystem in User Space) en el kernel, algo seguro si la versión del kernel es igual o posterior a la versión 2.6.14.&lt;br /&gt;&lt;br /&gt;Podemos comprobar si tenemos cargado el módulo fuse de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# lsmod | grep fuse&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Si obtenemos una línea parecida a la siguiente, es que está cargado:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;fuse                   60956  3&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Si no estuviera, cargado, lo cargamos:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# modprobe fuse&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# depmod -A&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una vez que tenemos cargado el módulo fuse, instalaremos sshfs:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# apt-get install sshfs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y ya podremos montar directorios remotos vía ssh.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Montar directorios remotos usando sshfs.-&lt;/span&gt;&lt;br /&gt;Cuando queramos montar un directorio de una máquina remota vía sshfs, no tendremos más que ejecutar:&lt;br /&gt;&lt;br /&gt;# &lt;strong&gt;sshfs usuarioremoto@servidor:dir_remoto dir_local&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Por ejemplo, si queremos montar el directorio &lt;span style="font-style: italic;"&gt;/backup&lt;/span&gt; que tenemos en una máquina remota llamada &lt;span style="font-style: italic;"&gt;recursos&lt;/span&gt;, como &lt;span style="font-style: italic;"&gt;root&lt;/span&gt;, en el directorio local &lt;span style="font-style: italic;"&gt;/mnt/backup&lt;/span&gt;, ejecutaremos el siguiente comando:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# sshfs root@recursos:/backup /mnt/backup&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una vez hecho ésto, si entramos dentro del directorio /mnt/backup, veremos el contenido del directorio /backup de la máquina recursos.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Desmontar un directorio remoto montado vía sshfs.-&lt;/span&gt;&lt;br /&gt;Cuando queramos desmontar un directorio de una máquina remota vía sshfs, no tendremos más que ejecutar:&lt;br /&gt;&lt;br /&gt;# &lt;span style="font-weight: bold;"&gt;fusermount -u dir_local&lt;/span&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Siguiendo con el ejemplo anterior: Si queremos desmontar el directorio que teníamos montado en &lt;span style="font-style: italic;"&gt;/mnt/backup&lt;/span&gt;, ejecutaremos:&lt;br /&gt;&lt;br /&gt;# &lt;span style="font-weight: bold;"&gt;fusermount -u /mnt/backup&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570404401678257802-8904905347318209707?l=enavas.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlgoDeLinux/~4/bvc8ylFQMmQ" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/AlgoDeLinux/~3/bvc8ylFQMmQ/sshfs-montar-directorios-remotos-de.html</link><author>noreply@blogger.com (Esteban M. Navas)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://enavas.blogspot.com/2009/06/sshfs-montar-directorios-remotos-de.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570404401678257802.post-2932653641265663583</guid><pubDate>Mon, 15 Jun 2009 09:44:00 +0000</pubDate><atom:updated>2009-06-15T12:23:46.629+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">comandos</category><category domain="http://www.blogger.com/atom/ns#">linux</category><title>killall en Lenny</title><description>He instalado un Debian Lenny mínimo sin entorno gráfico para un servidor y me he dado cuenta de que no tenía el comando &lt;span style="font-weight:bold;"&gt;killall&lt;/span&gt;. Como lo necesitaba, he estado buscando y he encontrado que esta utilidad está disponible al instalar el paquete &lt;span style="font-weight:bold;"&gt;psmisc&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570404401678257802-2932653641265663583?l=enavas.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlgoDeLinux/~4/fgEZkinYgvI" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/AlgoDeLinux/~3/fgEZkinYgvI/killall-en-lenny.html</link><author>noreply@blogger.com (Esteban M. Navas)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://enavas.blogspot.com/2009/06/killall-en-lenny.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570404401678257802.post-6379703636387933491</guid><pubDate>Wed, 10 Jun 2009 15:37:00 +0000</pubDate><atom:updated>2009-06-11T17:00:00.478+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">herramientas</category><category domain="http://www.blogger.com/atom/ns#">software</category><title>Administración centralizada de equipos mediante PUPPET</title><description>&lt;span style="font-weight: bold;"&gt;PUPPET&lt;/span&gt; es una herramienta que facilita el trabajo de un administrador de sistemas permitiéndole hacer instalaciones, actualizaciones, cambios de configuraciones, etc... en equipos remotos. Lo que evita tener que desplazar un técnico para realizar dichas modificaciones.&lt;br /&gt;&lt;br /&gt;Puppet se compone de varios elementos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Un servidor -&gt; &lt;span style="font-weight: bold;"&gt;puppetmaster&lt;/span&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Un servicio para los clientes -&gt; &lt;span style="font-weight: bold;"&gt;puppetd&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Un &lt;span style="font-weight: bold;"&gt;lenguaje declarativo&lt;/span&gt; para definir lo que se quiere hacer en los clientes.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Un sistema para obtener datos de los clientes -&gt; &lt;span style="font-weight: bold;"&gt;facter&lt;/span&gt;.&lt;/li&gt;&lt;/ul&gt;Un detalle &lt;span style="font-weight: bold;"&gt;importante&lt;/span&gt; para entender puppet es tener en cuenta  que el servidor define, mediante el lenguaje declarativo de puppet, los &lt;strong&gt;estados&lt;/strong&gt;  que se desea tener en los clientes. Y no es necesario definir las instrucciones que hay que ejecutar para lograr esos estados.&lt;br /&gt;&lt;br /&gt;Por ejemplo: Supongamos que queremos que en nuestros clientes debe estar instalado el paquete sshfs. Para garantizar que esté instalado tan sólo tendremos que escribir una regla como la siguiente en el servidor:&lt;p style="font-weight: bold;"&gt;package { "sshfs":&lt;br /&gt;ensure =&gt; installed&lt;br /&gt;}&lt;/p&gt;Y puppet se encargará de que se instale si el paquete no está instalado aún, sin tener que preocuparnos de hacer ningún procedimiento para instalarlo.&lt;br /&gt;&lt;br /&gt;Además hay un principio fundamental en puppet: el principio de idempotencia. No importa el número de veces que se ejecute una regla. El efecto debe ser como si sólo se hubiera ejecutado una vez. Además, puppet se encargará de no ejecutar una regla si el objetivo final se ha conseguido.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Comunicación entre el cliente y el servidor puppet.&lt;/span&gt;&lt;br /&gt;La comunicación entre el cliente y el servidor es cifrada mediante SSL.&lt;br /&gt;Para garantizar que esta comunicación sea cifrada, el servidor puppet tiene una pequeña autoridad certificada que maneja certificados X509.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Instalación de puppet.&lt;/span&gt;&lt;br /&gt;Para instalar puppet, tendremos que hacer varias cosas:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Instalar un servidor puppet.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Configurar el servidor puppet.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Instalar el cliente puppet en todas las máquinas que queramos administrar.&lt;/li&gt;&lt;li&gt;Configurar el cliente puppet.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:130%;"&gt;Instalar un servidor puppet.&lt;/span&gt;&lt;br /&gt;Instalar un servidor puppet es tan sencillo como instalar el paquete &lt;span style="font-weight: bold;"&gt;puppetmaster&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# apt-get install puppetmaster&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Se resolverán todas las dependencias y se instalarán todos los paquetes necesarios.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Configurar el servidor puppet.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Primer paso.- Configurar el servidor de ficheros.&lt;/span&gt;&lt;br /&gt;Para poder servir ficheros a los clientes puppet, lo primero que tenemos que hacer es modificar el fichero &lt;span style="font-weight: bold;"&gt;/etc/puppet/fileserver.conf&lt;/span&gt;. En este fichero especificaremos a qué rango de máquinas de la red queremos servirles ficheros. Ésto se hace en la sección [files] de dicho fichero. Por ejemplo, si mi red es la 192.168.1.0 y quiero servir ficheros de puppet a todas las máquinas de esta red, añadiré una línea allow:&lt;br /&gt;&lt;br /&gt;[files]&lt;br /&gt; path /etc/puppet/files&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;     allow 192.168.1.0/24&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En este fichero también se puede usar &lt;span style="font-weight: bold;"&gt;deny&lt;/span&gt; para denegar el acceso a ciertas máquinas. Y da igual el orden que coloquemos el allow y el deny. El allow prevalece sobre el deny.&lt;br /&gt;Además, tanto en el &lt;span style="font-weight: bold;"&gt;allow&lt;/span&gt; como en el &lt;span style="font-weight: bold;"&gt;deny&lt;/span&gt;, se puede especificar tanto un rango de red como un nombre de dominio. Ejemplo: allow *.valledeljerte3&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Segundo paso.- Modificar el el fichero /etc/puppet/puppet.conf&lt;/span&gt;&lt;br /&gt;Por defecto, este fichero contiene la localización de los directorios de logs, de datos, de certificados ssl, etc. Como  los valores por defecto nos sirven para hacer una configuración básica, tan sólo le añadimos las dos líneas que he resaltado en negrita:&lt;br /&gt;&lt;br /&gt;  [main]&lt;br /&gt;  logdir=/var/log/puppet&lt;br /&gt;  vardir=/var/lib/puppet&lt;br /&gt;  ssldir=/var/lib/puppet/ssl&lt;br /&gt;  rundir=/var/run/puppet&lt;br /&gt;  factpath=$vardir/lib/facter&lt;br /&gt;  pluginsync=true&lt;br /&gt;&lt;br /&gt;  [puppetmasterd]&lt;br /&gt;  templatedir=/var/lib/puppet/templates&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    certname=puppetdptos&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    autosign=false&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En la primera línea añadida (&lt;span style="font-weight: bold;"&gt;certname=puppetdptos&lt;/span&gt;) estamos indicando que el servidor de certificación se llama &lt;span style="font-weight: bold;"&gt;puppetdptos&lt;/span&gt; (es el nombre de la máquina en la que hemos instalado puppetmaster).&lt;br /&gt;&lt;br /&gt;En la segunda (autosign=false) estamos indicando al servidor que no debe firmar las peticiones de certificados que le lleguen de forma automática. Si quisiéramos que el servidor firmase todas las peticiones de certificados que le llegasen, pondríamos autosign=true. La opción por defecto es autosign=false, con lo que no sería necesario especificar esta opción. La pongo más que nada por si en algún momento quiero que el servidor firme de forma automática los certificados.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tercer paso.- Crear el esqueleto manifests.&lt;/span&gt;&lt;br /&gt;Si no estuviera creado el directorio de clases y/o el directorio manifests, lo creamos:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# mkdir -p /etc/puppet/manifests/classes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Cuarto&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; paso.- Crear el fichero site.pp&lt;br /&gt;&lt;/span&gt;Este es un fichero de control fundamental del servidor puppet. Podríamos crearlo con:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# touch /etc/puppet/manifests/site.pp&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Supongamos  que en el directorio /etc/puppet/manifests/classes/ hemos creado un fichero llamado test_class.pp con el siguiente contenido:&lt;br /&gt;&lt;br /&gt;  class test_class {&lt;br /&gt;      file {"/tmp/fichero.test":&lt;br /&gt;                ensure =&gt; present,&lt;br /&gt;                mode =&gt; 744,&lt;br /&gt;                 owner =&gt; root,&lt;br /&gt;                 group =&gt; root&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;&lt;p&gt;En este archivo hemos definido la clase test_class, que contiene una definición del tipo &lt;em&gt;file&lt;/em&gt; que se puede leer de la siguiente forma: Debe existir el archivo /tmp/fichero.test con permisos 744 y debe pertenecer al usuario root y al grupo root.&lt;br /&gt;&lt;/p&gt; &lt;p&gt;Existen otros tipos de definición que podemos utilizar y que son particularmente útiles&lt;span style="font-weight: bold;"&gt;. &lt;/span&gt;Por ejemplo:&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;package&lt;/strong&gt;, para el manejo de de software.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;exec&lt;/strong&gt;, para ejecutar comandos en el sistema del cliente.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;cron&lt;/strong&gt;, para programar tareas en el sistema del cliente.&lt;/li&gt;&lt;li&gt; Existen muchos más tipos de definiciones. Podemos verlas en el &lt;a href="http://reductivelabs.com/trac/puppet/wiki/TypeReference#resources" class="external text" title="http://reductivelabs.com/trac/puppet/wiki/TypeReference#resources" rel="nofollow"&gt;Type Reference&lt;/a&gt; de Puppet.&lt;/li&gt;&lt;/ul&gt;Podemos añadir un contenido básico al fichero &lt;span style="font-weight: bold;"&gt;site.pp&lt;/span&gt;, y utilizar en él la clase test_class creada en anteriormente:&lt;br /&gt;&lt;br /&gt;  # Importamos todas las clases del directorio classes&lt;br /&gt;  import "classes/*.pp"&lt;br /&gt;&lt;br /&gt;  # En node default incluimos las tareas para todos los nodos&lt;br /&gt;  node default {&lt;br /&gt;      include test_class&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  # Definimos un nodo de pruebas&lt;br /&gt;  node "a25-pro" inherits default {&lt;br /&gt;      # include clase_a_probar&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;Crearemos las tareas en el directorio /etc/puppet/manifests/classes y las llamaremos con include en el nodo de pruebas. Las ejecutaremos. Y si todo va bien, pasaremos la tarea al nodo default para que se ejecute en todos los clientes.&lt;br /&gt;&lt;br /&gt;Una vez terminada la configuración del servidor puppet, si no está iniciado, lo iniciamos:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# /etc/init.d/puppetmaster start&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;No es necesario reiniciarlo después de hacer cambios en los ficheros de configuración. El servidor está monitoreando los archivos de configuración y los reelerá a los pocos segundos de ser modificados.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Instalar un cliente puppet.&lt;/span&gt;&lt;br /&gt;Instalar un cliente puppet es tan sencillo como instalar el paquete &lt;span style="font-weight: bold;"&gt;puppet&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# apt-get install puppet&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Se resolverán todas las dependencias y se instalarán todos los paquetes necesarios.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Configurar el cliente puppet.&lt;/span&gt;&lt;br /&gt;Configurar el cliente puppet es más sencillo aún. Lo único que tendremos que hacer es editar el fichero &lt;span style="font-weight: bold;"&gt;/etc/puppet/puppet.conf&lt;/span&gt; y añadir una línea server=servidorpuppet.&lt;br /&gt;En la línea server=XXXXXXXXXXXXX podemos indicar:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;La dirección ip del servidor puppet.&lt;/li&gt;&lt;li&gt;O el nombre de dicho servidor, si tenemos un servidor de dns en la red.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;El contenido básico del fichero /etc/puppet/puppet.conf en el cliente podría ser el siguiente:&lt;br /&gt;&lt;br /&gt;  [main]&lt;br /&gt;  &lt;span style="font-weight: bold;"&gt;server=puppetdptos&lt;/span&gt;&lt;br /&gt;  logdir=/var/log/puppet&lt;br /&gt;  vardir=/var/lib/puppet&lt;br /&gt;  ssldir=/var/lib/puppet/ssl&lt;br /&gt;  rundir=/var/run/puppet&lt;br /&gt;  factpath=$vardir/lib/facter&lt;br /&gt;  # pluginsync=true&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;Funcionamiento de puppet y comprobaciones.&lt;/span&gt;&lt;br /&gt;No olvidemos que para que el sistema funcione, deben estar iniciados puppetmaster en el servidor y puppet en el cliente. Si no lo están, los iniciamos:&lt;/p&gt;&lt;p&gt;# /etc/init.d/puppetmaster start (en el servidor)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# /etc/init.d/puppet start (en el cliente)&lt;br /&gt;&lt;/p&gt; &lt;p&gt;Si hubiera algún problema en el funcionamiento, lo mejor es echar un vistazo a los logs, que se encuentran almacenados en /var/log/puppet&lt;/p&gt;&lt;p&gt;El tiempo predeterminado de contacto del cliente con el servidor es de 30 minutos, cosa que podemos cambiar (Se define en segundos).&lt;/p&gt;&lt;p&gt;Para probar si una tarea se ejecuta correctamente en un cliente, paramos puppet y ejecutamos puppetd -t:&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;# /etc/init.d/puppet stop&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;# puppetd -t&lt;/p&gt;&lt;p&gt;Una vez comprobado que las tareas se han ejecutado, volvemos a iniciar el servicio:&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;# /etc/init.d/puppet start&lt;/p&gt;&lt;p&gt;No es necesario reiniciar puppet ni puppetmaster después de hacer cambios en los ficheros de configuración. El servidor está monitoreando los archivos de configuración y los reelerá a los pocos segundos de ser modificados.&lt;br /&gt;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;Gestión de certificados en el servidor.&lt;/span&gt;&lt;br /&gt;Cuando un cliente intenta comunicarse con el &lt;em&gt;puppetmaster&lt;/em&gt;, el servidor se encargará de comprobar si sus certificados son válidos.&lt;br /&gt;&lt;/p&gt;   Si tenemos configurado nuestro servidor con autosign=false (opción por defecto), podemos comprobar si hay peticiones de certificados pendientes de firmar, ejecutando:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# puppetca --list&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Por otra parte, si al ejecutar el comando anterior, vemos que la máquina a24-pro.valledeljerte3 ha hecho una petición y su certificado no ha sido firmado aún, podemos firmárselo con:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# puppetca --sign a24-pro.valledeljerte3&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Si quisiéramos revocar el certificado concedido a esta máquina, haríamos lo siguiente:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# puppetca --revoke a24-pro.valledeljerte3&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y si quisiéramos limpiar los ficheros relacionados con la petición de certificación de un host para que se vuelva a hacer una petición de certificado:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# puppetca --clean a24-pro.valledeljerte3&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570404401678257802-6379703636387933491?l=enavas.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlgoDeLinux/~4/mjnJwmMzpz4" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/AlgoDeLinux/~3/mjnJwmMzpz4/administracion-centralizada-de-equipos.html</link><author>noreply@blogger.com (Esteban M. Navas)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://enavas.blogspot.com/2009/06/administracion-centralizada-de-equipos.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570404401678257802.post-6688437916706213962</guid><pubDate>Fri, 05 Jun 2009 16:27:00 +0000</pubDate><atom:updated>2009-06-06T15:04:35.066+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">wii</category><category domain="http://www.blogger.com/atom/ns#">backup</category><category domain="http://www.blogger.com/atom/ns#">software</category><title>WBFS: Wii Backup File System</title><description>&lt;span style="font-weight: bold;"&gt;WBFS&lt;/span&gt; (&lt;span style="font-weight: bold;"&gt;Wii Backup File System&lt;/span&gt;) es un sistema de ficheros que sirve para almacenar backups de juegos wii, de forma eficiente en un disco duro. Lo más interesante es que no sólo podemos almacenarlos, sino que, además, podemos jugar directamente con ellos utilizando un USB Loader.&lt;br /&gt;&lt;br /&gt;Este sistema puede ser útil para tener copia de nuestros juegos originales Wii en un disco duro USB y jugar con ellos utilizando un USB Loader. De este modos, conservaremos en mejor estado los discos originales.&lt;br /&gt;&lt;br /&gt;Algo que hay que mencionar es que cada juego Wii se almacena en un DVD de al menos 4,7GB que no se aprovecha totalmente.&lt;br /&gt;El sistema de ficheros WBFS es eficiente porque conoce el sistema de ficheros de los discos wii y copia a las particiones WBFS tan sólo la parte que es realmente necesaria, eliminando información "basura".&lt;br /&gt;Esta idea no es nueva. La herramienta WiiScrubber también saca partido de ello.&lt;br /&gt;&lt;br /&gt;Suponiendo que tengamos instalado un USB Loader en la Wii, vamos a ver cómo sacar partido de WBFS en linux.&lt;br /&gt;&lt;br /&gt;Si tenemos un disco duro USB dedicado exclusivamente para este propósito, tan sólo tendremos que eliminar las particiones que tenga y crear una única partición que pasaremos a formato wbfs.&lt;br /&gt;Otra posibilidad es que tengamos un disco duro multimedia cerca de nuestra consola. Reducimos el tamaño de la partición que tenga para crear una nueva partición en formato wbfs.&lt;br /&gt;Es importante que la partición a usar para los backups sea wbfs. No vale tener un USB con una partición FAT o NTFS o EXT3.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Lo primero: Instalar las herramientas en linux:&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;Para crear y activar particiones wbfs necesitaremos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Un gestor de particiones, como por ejemplo: gparted.&lt;/li&gt;&lt;li&gt;wbfs.&lt;/li&gt;&lt;li&gt;Un gui para manejar nuestros backups de forma cómoda. Recomiendo &lt;span style="font-weight: bold;"&gt;wiithon&lt;/span&gt;, una herramienta hecha en python. Se puede manejar de forma sencilla en la línea de comandos y tiene unos scripts nautilus para trabajar desde gnome. Además incorpora wbfs.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Instalar gparted&lt;/span&gt; es tan sencillo como tirar de repositorios:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# apt-get update; apt-get install gparted&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para instalar wiithon, primero lo descargamos:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# wget http://www.speedyshare.com/data/790517126/16340244/92166603/wiithon%20v0.98%20r6.tar.gz&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La última versión a día de hoy es la 0.98.&lt;br /&gt;&lt;br /&gt;Lo que descargamos es el código fuente. Para instalarlo lo primero será descomprimirlo:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# tar xfvz wiithon v0.98 r6.tar.gz&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una vez descomprimido, tendremos un directorio con el código fuente: &lt;span style="font-weight: bold;"&gt;wiithon&lt;/span&gt;. Nos introducimos en él:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# cd wiithon&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Si tenemos instalada una versión y queremos actualizarla, el autor nos recomienda desinstalar la anterior e instalar la nueva.&lt;br /&gt;&lt;br /&gt;Para desinstalar la versión anterior hacemos:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# make uninstall&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Después, instalamos la nueva versión:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# make install&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y listo. Si todo ha ido bien, ya tendremos wiithon instalado y podremos manejarlo mediante comandos.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Manejar wiithon desde la línea de comandos (sacado de la ayuda):&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;* Ver la ayuda:&lt;/span&gt;&lt;br /&gt;wiithon ayuda&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;* Listar juegos:&lt;/span&gt;&lt;br /&gt;wiithon&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;* Añadir ISO's especificando una lista:&lt;/span&gt;&lt;br /&gt;wiithon “juego1.iso” “juego2.iso″ ...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;* Añadir ISO's usando comodines (La expresión solo afecta al directorio actual, no es recursivo):&lt;/span&gt;&lt;br /&gt;wiithon *.iso&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;* Buscar y Añadir ISO’s recursivamente. Busca todos las imagenes isos RECURSIVAMENTE, incluso tambien busca dentro de RAR, a falta de implementar zip), tal vez necesites sudo apt-get install rar:&lt;/span&gt;&lt;br /&gt;wiithon buscar&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;* Borrar juegos. Especificando el juego mediante un menú.:&lt;/span&gt;&lt;br /&gt;wiithon borrar&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;* Borrar juegos. Podemos borrar con el IDGAME.:&lt;/span&gt;&lt;br /&gt;wiithon borrar IDJUEGO&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;* Borrar juegos. Podemos borrar con el IDGAME obtenido a partir de un ISO local. El archivo ISO local NO es borrado:&lt;/span&gt;&lt;br /&gt;wiithon borrar “./wii/mario.iso”&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;* Renombrar juegos. Especificando el juego mediante un menú.:&lt;/span&gt;&lt;br /&gt;wiithon renombrar&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;* Renombrar juegos, puedes cambiar el nombre de los juegos ya metidos en HD, útil para que nos enteremos cuando estemos con el USB Loader:&lt;/span&gt;&lt;br /&gt;wiithon renombrar IDGAME “Mario Kart Wii”&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;* Extraer juegos a un archivo ISO. Podemos extraer un juego de la partición wbfs y almacenarlo en un archivo iso. El juego es especificado mediante un menú:&lt;/span&gt; wiithon extraer&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;* Extraer juegos a un archivo ISO. OJO! : El archivo ISO de salida pertenecerá al usuario root:&lt;/span&gt;&lt;br /&gt;wiithon extraer IDJUEGO&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;* Descargar todas las caratulas automaticamente a 160×225. Ojo puede que el servidor te banee, si te ocurre intentalo 5 minutos más tarde:&lt;/span&gt;&lt;br /&gt;wiithon caratulas&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;*Descargar la caratulas de un juego especificado por su IDGAME, la imagen es bajada a 160×225. El comando es un singular, es “caratula” ya que “caratulas” descarga todo:&lt;/span&gt;&lt;br /&gt;wiithon caratula IDGAME&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Descargar la caratulas de un juego especificado por menú, la imagen es bajada a 160×225. El comando es un singular, es “caratula” ya que “caratulas” descarga todo:&lt;/span&gt;&lt;br /&gt;wiithon caratula&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Comprobar Integridad de los juegos. Muchos de nuestros juegos pueden estar corruptos sin aún saberlo debido a el bug de borrado de las primeras versiones de WBFS&lt;/span&gt;:&lt;br /&gt;wiithon comprobar&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Instar juegos desde el DVD, al estilo del usb loader, pero algo más lento porque dumpea a ISO y cuando termina mete la ISO:&lt;/span&gt;&lt;br /&gt;wiithon instalar&lt;br /&gt;&lt;br /&gt;Por otra parte, tendremos que instalar una serie de herramientas que necesitaremos también:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;nautilus-actions&lt;/li&gt;&lt;li&gt;imagemagick&lt;/li&gt;&lt;li&gt;rar&lt;/li&gt;&lt;/ul&gt;Las instalamos:&lt;br /&gt;&lt;strong&gt;#apt-get install nautilus-actions imagemagick rar&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Es sencillo de instalar, pero por si a alguien le parece complicado, puede descargar un paquete debian desde la siguiente dirección e instalarlo con dpkg:&lt;br /&gt;&lt;a href="http://www.mediafire.com/?9amueyatlvn"&gt;http://www.mediafire.com/?9amueyatlvn&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Si ahora queremos tener la posibilidad de &lt;span style="font-weight: bold;"&gt;usar wiithon mediante nautilus&lt;/span&gt;, tendremos que instalar los scripts de nautilus que el autor nos proporciona y que encontraremos en el directorio wiithon:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;wiithon&lt;strong&gt;1&lt;/strong&gt;.schemas&lt;/li&gt;&lt;li&gt;wiithon&lt;strong&gt;2&lt;/strong&gt;.schemas&lt;/li&gt;&lt;li&gt;wiithon&lt;strong&gt;3&lt;/strong&gt;.schemas&lt;/li&gt;&lt;li&gt;wiithon&lt;strong&gt;4&lt;/strong&gt;.schemas&lt;/li&gt;&lt;li&gt;wiithon&lt;strong&gt;5&lt;/strong&gt;.schemas&lt;/li&gt;&lt;li&gt;wiithon&lt;strong&gt;6&lt;/strong&gt;.schemas&lt;/li&gt;&lt;li&gt;wiithon&lt;strong&gt;7&lt;/strong&gt;.schemas&lt;/li&gt;&lt;li&gt;wiithon&lt;strong&gt;8&lt;/strong&gt;.schemas&lt;/li&gt;&lt;/ul&gt;Para instalarlos, en gnome, abrimos el menú &lt;span style="font-weight: bold;"&gt;Sistema -&gt; Preferencias -&gt; Configuración de acciones de Nautilus&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Se nos mostrará una pantalla similar a la siguiente:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_SU6N90soq2U/SipJ_eozEUI/AAAAAAAAAKo/pwO95OqnBOs/s1600-h/Acciones+de+Nautilus.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 272px;" src="http://1.bp.blogspot.com/_SU6N90soq2U/SipJ_eozEUI/AAAAAAAAAKo/pwO95OqnBOs/s320/Acciones+de+Nautilus.png" alt="" id="BLOGGER_PHOTO_ID_5344165262733283650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;Si tenemos acciones de wiithon de versiones anteriores, el autor nos recomienda borrarlas&lt;/strong&gt; porque seguramente hayan sido actualizadas.&lt;p&gt;Una vez borradas las acciones, si las teníamos instaladas, hacemos clic en el botón: &lt;span style="font-weight: bold;"&gt;Importar/Exportar&lt;/span&gt;.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Al hacer clic en Importar/Exportar se nos abrirá una ventana similar a la siguiente:&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_SU6N90soq2U/SipK4s7VTaI/AAAAAAAAAKw/z28emeRK8VU/s1600-h/Importar-Exportar+configuraci%C3%B3n.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 290px;" src="http://4.bp.blogspot.com/_SU6N90soq2U/SipK4s7VTaI/AAAAAAAAAKw/z28emeRK8VU/s320/Importar-Exportar+configuraci%C3%B3n.png" alt="" id="BLOGGER_PHOTO_ID_5344166245821664674" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;En tipo de configuración: ponemos automático.&lt;/p&gt;&lt;p&gt;Y pulsamos en el botón de los puntos suspensivos para seleccionar el esquema a importar.&lt;/p&gt;&lt;p&gt;Tendremos que importar los 8 ficheros, uno a uno:&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;1. wiithon&lt;strong&gt;1&lt;/strong&gt;.schemas&lt;br /&gt;2. wiithon&lt;strong&gt;2&lt;/strong&gt;.schemas&lt;br /&gt;3. wiithon&lt;strong&gt;3&lt;/strong&gt;.schemas&lt;br /&gt;4. wiithon&lt;strong&gt;4&lt;/strong&gt;.schemas&lt;br /&gt;5. wiithon&lt;strong&gt;5&lt;/strong&gt;.schemas&lt;br /&gt;6. wiithon&lt;strong&gt;6&lt;/strong&gt;.schemas&lt;br /&gt;7. wiithon&lt;strong&gt;7&lt;/strong&gt;.schemas&lt;br /&gt;8. wiithon&lt;strong&gt;8&lt;/strong&gt;.schemas&lt;/p&gt;  &lt;p&gt;Una vez importados, tendremos que reiniciar nautilus para que estas opciones se nos muestren en los menús de contexto:&lt;/p&gt;&lt;p&gt;#&lt;em&gt;&lt;/em&gt; &lt;strong&gt;killall nautilus&lt;/strong&gt;&lt;/p&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Segundo: Crear las particiones:&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;Como ya hemos dicho anteriormente, no vale tener un USB con una partición EXT3, FAT o NTFS. Para almacenar los backups y que sean jugables, se necesita tener una partición en formato &lt;span style="font-weight: bold;"&gt;wbfs&lt;/span&gt; creada exclusivamente para ésto.&lt;br /&gt;&lt;br /&gt;Para crear las particiones mediante gparted, lo primero es abrir gparted. Podemos abrirlo ejecutando en un terminal:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# gparted&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;O desde el menú: &lt;span style="font-style: italic; font-weight: bold;"&gt;Sistema-&gt;Administración-&gt;Editor de particiones&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Una vez abierto gparted, en la parte superior derecha nos aparecerá un dispositivo seleccionado. Hacemos clic para seleccionar el disco USB que queramos particionar (también podemos seleccionar el disco USB en el menú, &lt;span style="font-weight: bold; font-style: italic;"&gt;GParted-&gt;Dispositivos&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;Como el disco es USB, debería ser un dispositivo del tipo&lt;span style="font-style: italic;"&gt; /dev/sdx&lt;/span&gt; donde x es la letra que identifica el disco duro: sda, sdb ... El disco duro de nuestro ordenador será probablemente sda, así que el disco usb externo será sdb. Tened cuidado de no equivocaros para no cargaros el disco duro de vuestro ordenador.&lt;br /&gt;&lt;br /&gt;Una vez seleccionado el disco USB, veréis las particiones que tiene. Debemos desmontar las que aparecen montadas. Podemos desmontarlas con &lt;span style="font-style: italic;"&gt;click derecho-&gt;desmontar&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Ahora tenemos dos opciones:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-style: italic;"&gt;BORRAR TODO Y CREAR UNA SOLA PARTICION&lt;/span&gt;: &lt;/span&gt;Si queremos usar el disco usb tan sólo para almacenar los backups de juegos (no podremos usar el disco para nada más, puesto que el formato wbfs es tan sólo para wii).  Haremos &lt;span style="font-style: italic;"&gt;click derecho sobre las particiones que queremos borrar,&lt;/span&gt; y luego en el &lt;span style="font-style: italic;"&gt;menú Editar-&gt;Aplicar todas las operaciones&lt;/span&gt;. Se borrarán las particiones  del disco. Una vez borradas crearemos una partición haciendo &lt;span style="font-style: italic;"&gt;click derecho -&gt;Nuevo&lt;/span&gt; en el espacio sin asignar, pondremos la nueva partición como &lt;span style="font-style: italic;"&gt;partición primaria&lt;/span&gt; y en sistema de archivos pondremos &lt;span style="font-style: italic;"&gt;sin formatear.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-style: italic;"&gt;REDIMENSIONAR UNA PARTICIÓN PARA HACER ESPACIO PARA OTRA NUEVA:&lt;/span&gt;&lt;/span&gt; Si tenemos datos y no queremos perderlos, podemos redimensionar una de las particiones que tengamos para encogerla y dejar espacio libre. Haremos &lt;span style="font-style: italic;"&gt;Click derecho -&gt;Redimensionar / Mover&lt;/span&gt; sobre la partición a redimensionar. Indicaremos el nuevo tamaño de disco que queremos tener en la partición a reducir y nos dirá el espacio que nos quedará libre para la nueva partición de backups. Hacemos click en &lt;span style="font-style: italic;"&gt;Redimensionar / Mover&lt;/span&gt; y aplicamos los cambios con &lt;span style="font-style: italic;"&gt;Editar-&gt;Aplicar todas las operaciones&lt;/span&gt;.&lt;span style="font-style: italic;"&gt;&lt;/span&gt; Una vez se ha redimensionado la partición (tardará un tiempo), nos habrá quedado un espacio en el disco USB sin asignar. Hacemos click con el botón derecho en el &lt;span style="font-style: italic;"&gt;espacio sin asignar-&gt;Nuevo&lt;/span&gt; y ponemos la nueva partición como&lt;span style="font-style: italic;"&gt; partición primaria&lt;/span&gt;. En sistema de archivos indicamos &lt;span style="font-style: italic;"&gt;sin formatear&lt;/span&gt;.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Una vez que tengamos la partición para backups creada, tendremos que inicializarla para que podamos usarla con WBFS.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Tercero: Inicializar la partición wbfs.&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;Para inicializar la partición utilizamos la aplicación wbfs de la siguiente manera:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# wbfs -p /dev/sdXY init&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;sustituyendo X por la letra de unidad del dispositivo USB.&lt;/li&gt;&lt;li&gt;sustituyendo Y por el número de partición.&lt;/li&gt;&lt;/ul&gt;Por ejemplo, si hemos creado una partición sdb2 en el dispositivo USB para usar con wbfs, ejecutaremos el comando wbfs de la siguiente manera:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# wbfs -p /dev/sdb2 init&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una vez hecho ésto, habremos inicializado el sistema de archivos en la partición creada. Ahora tan sólo tendremos que usar wiithon o nautilus para añadir, borrar, renombrar, extraer... juegos en la partición.&lt;br /&gt;&lt;br /&gt;Por último, tan sólo me queda mencionar que wiithon nos facilita la tarea de trabajar con wbfs. No obstante, también podríamos añadir isos usando directamente wbfs. Por ejemplo, si quisiéramos añadir un backup de un juego llamado "backuporiginal.iso" a la partición wbfs sdb2, haríamos lo siguiente:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# wbfs -p /dev/sdb2 add /home/backups/backuporiginal.iso&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570404401678257802-6688437916706213962?l=enavas.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlgoDeLinux/~4/oB56yUEG1_8" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/AlgoDeLinux/~3/oB56yUEG1_8/wbfs-wii-backup-file-system.html</link><author>noreply@blogger.com (Esteban M. Navas)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_SU6N90soq2U/SipJ_eozEUI/AAAAAAAAAKo/pwO95OqnBOs/s72-c/Acciones+de+Nautilus.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://enavas.blogspot.com/2009/06/wbfs-wii-backup-file-system.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570404401678257802.post-9109138567073954129</guid><pubDate>Wed, 01 Apr 2009 15:41:00 +0000</pubDate><atom:updated>2009-04-01T21:50:46.997+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">software</category><title>Montar un servidor de terminales con LTSP</title><description>Últimamente he tenido que montar un par de servidores de terminales. Así que, por si se me olvida lo que he hecho, que se me olvidará... voy a escribir este artículo, y si tengo que volver a hacerlo ya tengo un punto de partida.&lt;br /&gt;No voy a entrar, de momento, en detalles sobre como instalar un servidor dhcp, que es necesario para dar ip a los terminales. Ya lo haré cuando tenga un poco más de tiempo.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ltsp.sourceforge.net/"&gt;LTSP&lt;/a&gt; (Linux Terminal Server Project) es un proyecto que nos proporciona un conjunto aplicaciones que nos permitirán conectar muchos equipos con pocos recursos a un servidor Linux. Estos equipos serán clientes ligeros del servidor.&lt;br /&gt;&lt;br /&gt;Las aplicaciones que ejecutemos en los clientes correrán directamente en el servidor, que aceptará entradas y mostrará su salida en las pantallas de los clientes ligeros. No obstante, LTSP, en su versión 5, dispone de una herramienta experimental, llamada &lt;span style="font-weight: bold;"&gt;localapps&lt;/span&gt; que nos permite hacer que algunas aplicaciones se ejecuten en el cliente.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;Para montar un servidor de terminales, tendremos que instalar los siguientes paquetes, como mínimo:&lt;br /&gt;&lt;ul&gt;&lt;li style="font-weight: bold;"&gt;ltsp-server&lt;/li&gt;&lt;li&gt;Un servidor tftp, como por ejemplo: &lt;span style="font-weight: bold;"&gt;atftp&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Un servidor dhcp: como &lt;span style="font-weight: bold;"&gt;dhcp3-server&lt;/span&gt; o &lt;span style="font-weight: bold;"&gt;dnsmasq&lt;/span&gt;. En nuestros centros usamos &lt;span style="font-weight: bold;"&gt;dhcp3-server-ldap&lt;/span&gt; porque usamos ldap como backend para almacenar los datos.&lt;/li&gt;&lt;/ul&gt;Si usamos nfs para servir la imagen a nuestros terminales, instalaremos además:&lt;br /&gt;&lt;ul style="font-weight: bold;"&gt;&lt;li&gt;nfs-kernel-server&lt;/li&gt;&lt;/ul&gt;Y si nuestros terminales reciben la imagen via nbd, instalaremos el paquete:&lt;br /&gt;&lt;ul style="font-weight: bold;"&gt;&lt;li&gt;nbd-server&lt;/li&gt;&lt;/ul&gt;Se necesitan algunos paquetes más, pero como son dependencias, al instalar los paquetes que hemos dicho, se instalarán todos los demás que son necesarios.&lt;br /&gt;&lt;br /&gt;Un paquete necesario, que se me olvidaba mencionar, es &lt;span style="font-weight: bold;"&gt;openssh-server&lt;/span&gt;, dado que el tráfico entre el servidor y los clientes viaja encriptado. Pero bueno, es un paquete que se suele tener instalado.&lt;br /&gt;&lt;br /&gt;En cualquier caso, si no queremos instalar uno a uno los paquetes mencionados, siempre podemos instalar el paquete &lt;span style="font-weight: bold;"&gt;ltsp-server-standalone&lt;/span&gt; y se instalará todo lo necesario para montar un servidor de terminales:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# apt-get install ltsp-server-standalone&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En nuestros centros las imágenes se sirven mediante nbd. Yo tengo instalados tanto nfs-kernel-server como nbd-server. Y con unos pequeños cambios puedo usar un sistema u otro. Por defecto, se usa nfs, así que, luego veremos cómo cambiar a nbd.&lt;br /&gt;&lt;br /&gt;ltsp se instala en /opt. Por lo que, al terminar la instalación, tendremos el siguiente directorio: &lt;span style="font-weight: bold;"&gt;/opt/ltsp&lt;/span&gt;&lt;br /&gt;En este directorio se guardará tanto el sistema que compartimos por nfs como las imágenes que servimos vía nbd.&lt;br /&gt;Cuando creemos las imágenes para los clientes, tendremos un subdirectorio por cada tipo de imagen que sirvamos a los terminales. Por ejemplo, si vamos a servir imágenes i386, en /opt/ltsp tendremos un directorio &lt;span style="font-weight: bold;"&gt;/opt/ltsp/i386&lt;/span&gt;. En cuanto a las imágenes a servir por nbd, se almacenarán en &lt;span style="font-weight: bold;"&gt;/opt/ltsp/images&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Una vez instalados los paquetes, si usamos nfs, tendremos que compartir el directorio /opt/ltsp. Ésto lo haremos añadiendo la siguiente línea al directorio &lt;span style="font-weight: bold;"&gt;/etc/exports&lt;/span&gt; del servidor de terminales:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/opt/ltsp   *(ro,no_root_squash,async)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una vez añadida, hacemos que el servidor nfs relea el archivo /etc/exports ejecuntando en un terminal el comando:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# exportfs -ra&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El siguiente paso, será configurar el servidor dhcp que hayamos instalado. De momento, como he dicho anteriormente, no voy entrar en detalles, y, cuando tenga más tiempo, por si a alguien le interesa, publicaré un artículo más detallado explicando cómo configurar dhcp3-server o dnsmasq. En cualquier caso, podemos ver ejemplos sobre cómo configurar dhcp en&lt;span style="font-weight: bold;"&gt; /usr/share/doc/ltsp-server/examples/dhcpd.conf &lt;/span&gt;o&lt;span style="font-weight: bold;"&gt; /etc/ltsp/dhcpd.conf&lt;/span&gt; y adaptarlos a nuestra red.&lt;br /&gt;&lt;br /&gt;El siguiente paso, será crear el S.O. para los clientes. Como mis clientes son de arquitectura i386, ejecutamos la herramienta ltsp-build-client, que creará el entorno necesario para los clientes en /opt/ltsp/i386:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# ltsp-build-client --arch i386&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Eso sí. Tendremos que tener un buen ancho de banda, porque se bajará un montón de paquetes para crear el entorno chroot. Si no disponemos de un buen ancho de banda, siempre podemos tirar de un mirror local. Yo tengo un mirror local en un disco duro externo y es lo que uso para crear el chroot.&lt;br /&gt;&lt;br /&gt;Hay dos archivos en el chroot que nos permiten personalizar el cliente:&lt;br /&gt;&lt;ul style="font-weight: bold;"&gt;&lt;li&gt;/etc/lts.conf&lt;br /&gt;&lt;/li&gt;&lt;li&gt;/etc/default/ltsp-client-setup. &lt;/li&gt;&lt;/ul&gt;Podemos ver ejemplos de configuración en &lt;span style="font-weight: bold;"&gt;/usr/share/doc/ltsp-client&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Si quisiéramos &lt;span style="font-weight: bold;"&gt;actualizar los paquetes del entorno chroot&lt;/span&gt; para los clientes, primero hacemos el chroot:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# chroot /opt/ltsp/i386&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ahora que estamos en el entorno chroot de los terminales, ejecutamos:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# mount -t proc proc /proc&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Actualizamos la lista de paquetes:&lt;br /&gt;&lt;br /&gt; &lt;span style="font-weight: bold;"&gt;# apt-get update&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y actualizamos los paquetes:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# apt-get upgrade&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una vez terminada la actualización del chroot, desmontamos /proc:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# umount /proc&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y tecleamos el comando &lt;span style="font-weight: bold;"&gt;exit&lt;/span&gt; para salir del chroot.&lt;br /&gt;&lt;br /&gt;Si nuestro kernel ha sido actualizado, tendremos que ejecutar el comando ltsp-update-kernels para asegurarnos de que nuestro chroot use la última versión:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# ltsp-update-kernels&lt;/span&gt;&lt;br /&gt;&lt;p&gt;Todos nuestros clientes usarán el último kernel la próxima vez que se reinicien.&lt;/p&gt;&lt;p&gt;Por último, si estamos usando nbd, ejecutaremos &lt;span style="font-weight: bold;"&gt;ltsp-update-image&lt;/span&gt; para que se cree una versión actualizada de la imagen que se servirá a los terminales:&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;# ltsp-update-image --arch i386&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;La primera vez que montemos el servidor de terminales, ejecutaremos:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# ltsp-update-sshkeys&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Como el servidor de terminales se comunica con los clientes mediante un canal encriptado, la primera vez es necesario que se creen los certificados SSL. Sin la ejecución de este comando ningún cliente podrá hacer login en el servidor.&lt;br /&gt;&lt;br /&gt;También tendremos que ejecutar &lt;span style="font-weight: bold;"&gt;ltsp-update-sshkeys&lt;/span&gt; cuando en el cliente intentemos hacer login y recibamos un error diciéndonos algo así como que "&lt;span style="font-weight: bold;"&gt;Este esquipo no está autorizado para conectarse al servidor&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;Eso sí. Es importante que cuando tengamos que hacer un &lt;span style="font-weight: bold;"&gt;ltsp-update-sshkeys&lt;/span&gt;,  &lt;span style="font-weight: bold;"&gt;primero&lt;/span&gt; ejecutemos un &lt;span style="font-weight: bold;"&gt;ltsp-update-sshkeys&lt;/span&gt; y &lt;span style="font-weight: bold;"&gt;seguidamente&lt;/span&gt; hagamos un&lt;span style="font-weight: bold;"&gt; ltsp-update-image&lt;/span&gt;. Y no al revés. También habrá que hacerlo cuando, por lo que sea, cambiemos la IP del servidor de terminales.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Qué usar: ¿nfs o nbd?&lt;/span&gt;&lt;br /&gt;En Debian, por defecto, se usa nfs para servir el sistema a los terminales.&lt;br /&gt;La ventaja que tiene usar nfs es que no es necesario crear una imagen. Se usa directamente el sistema montado en /opt/ltsp/i386.&lt;br /&gt;Como desventaja, podemos decir que a mayor número de usuarios el sistema se ralentiza.&lt;br /&gt;&lt;br /&gt;Si usamos nbd para servir el sistema a los terminales, la desventaja es que es necesario hacer una imagen comprimida (ltsp-update-image).&lt;br /&gt;La ventaja está en que a mayor número de usuarios el sistema no se hace más lento, si no que se mantiene igual.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;¿Cómo cambiar de nfs a nbd?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Primero.-&lt;/span&gt; Para usar nbd, lo primero que tenemos que hacer es instalar dos módulos en el chroot:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;squashfs&lt;/li&gt;&lt;li&gt;aufs&lt;/li&gt;&lt;/ul&gt;Para ello, hacemos el chroot:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# chroot /opt/ltsp/i386&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; Ahora que estamos en el entorno chroot de los terminales, ejecutamos:&lt;br /&gt;&lt;br /&gt; &lt;span style="font-weight: bold;"&gt;# mount -t proc proc /proc&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; Actualizamos la lista de paquetes:&lt;br /&gt; &lt;br /&gt;  &lt;span style="font-weight: bold;"&gt;# apt-get update&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;E instalamos los paquetes que nos instalan los módulos squashfs y aufs:&lt;br /&gt;&lt;br /&gt; &lt;span style="font-weight: bold;"&gt;# apt-get install squashfs-modules-2.6.26-1-686&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;aufs-modules-2.6.26-1-686&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ojo. En el ejemplo tenemos instalado el kernel 2.6.26-1-686, por lo que instalamos los paquetes squashfs y aufs para ese módulo.&lt;br /&gt;&lt;br /&gt;Una vez instalados, actualizamos el initrd:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# update-initramfs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; Una vez terminado, desmontamos /proc:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# umount /proc&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y tecleamos el comando &lt;span style="font-weight: bold;"&gt;exit&lt;/span&gt; para salir del chroot.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Segundo.-&lt;/span&gt; Vamos a modificar dos ficheros:&lt;br /&gt;&lt;ul style="font-weight: bold;"&gt;&lt;li&gt;/opt/ltsp/i386/boot/pxelinux.cfg/default&lt;/li&gt;&lt;li&gt;/opt/ltsp/i386/etc/default/ltsp-client-setup&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;En el fichero &lt;span style="font-weight: bold;"&gt;/opt/ltsp/i386/boot/pxelinux.cfg/default&lt;/span&gt; viene una línea como la siguiente: DEFAULT vmlinuz ro initrd=initrd.img quiet root=/dev/nfs ip=dhcp boot=nfs&lt;br /&gt;Para que no se use nfs, la comentamos y ponemos una como la siguiente:&lt;br /&gt;DEFAULT vmlinuz ro initrd=initrd.img quiet&lt;br /&gt;&lt;br /&gt;Para no tener que acordarme, así es como tengo el fichero  &lt;span style="font-weight: bold;"&gt;/opt/ltsp/i386/boot/pxelinux.cfg/default:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# Para usar nfs&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;#DEFAULT vmlinuz ro initrd=initrd.img quiet root=/dev/nfs ip=dhcp boot=nfs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# Para usar nbd&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;DEFAULT vmlinuz ro initrd=initrd.img quiet&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Cuando quiero usar nbd comento la línea nfs y cuando quiero usar nfs comento la línea nbd&lt;br /&gt;&lt;br /&gt;Una vez modificado el primer fichero, tenemos que modificar &lt;span style="font-weight: bold;"&gt;/opt/ltsp/i386/etc/default/ltsp-client-setup&lt;/span&gt;&lt;br /&gt;En este segundo fichero lo único que tenemos que cambiar es el parámetro &lt;span style="font-weight: bold;"&gt;root-write-method=" "&lt;/span&gt; por &lt;span style="font-weight: bold;"&gt;root-write-method="aufs"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una vez modificados los dos ficheros, como el primero afecta al kernel, ejecutamos un ltsp-update-kernels:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# ltsp-update-kernels&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y como usamos nbd, una vez hecho el ltsp-update-kernels haremos el ltsp-update-image:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# ltsp-update-image --arch i386&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Si queremos volver a usar nfs, lo único que tendremos que hacer es modificar los dos ficheros anteriores. No tenemos que volver a crear la imagen, puesto que, mediante nfs, no se usan imágenes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570404401678257802-9109138567073954129?l=enavas.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlgoDeLinux/~4/R-3wff-noBg" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/AlgoDeLinux/~3/R-3wff-noBg/montar-un-servidor-de-terminales-con.html</link><author>noreply@blogger.com (Esteban M. Navas)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">5</thr:total><feedburner:origLink>http://enavas.blogspot.com/2009/04/montar-un-servidor-de-terminales-con.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570404401678257802.post-7684128307685624543</guid><pubDate>Thu, 26 Mar 2009 17:33:00 +0000</pubDate><atom:updated>2009-05-01T13:23:12.130+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">comandos</category><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">software</category><title>Usar teclado numérico como sustituto del ratón</title><description>En ocasiones, necesitamos usar el ratón y éste no funciona porque alguien se lo ha cargado y muchas veces los usuarios son tan destructivos que incluso lo rompen a propósito. Para evitar tener que estar reponiendo ratones continuamente, podemos configurar el teclado numérico como sustituto del ratón, de manera que los números 1,2,3,4,6,7,8 y 9 nos servirán para desplazar el puntero y, el número 5 nos hará de botón izquierdo.&lt;br /&gt;&lt;br /&gt;En Debian y distribuciones derivadas podemos añadir un fichero al directorio &lt;span style="font-weight: bold;"&gt;/usr/share/gconf/defaults/&lt;/span&gt; donde especificaremos nuestras preferencias de inicio, como por ejemplo, activar el uso del teclado numérico como sustituto del ratón. ¿Y cómo lo hacemos? Pues muy fácil: Creamos un fichero llamado 25_mispreferencias dentro del directorio anterior:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# touch /usr/share/gconf/defaults/25_mispreferencias&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ahora, para activar la posibilidad de usar el teclado numérico como sustituto del ratón, no tendremos más que añadir una línea como la siguiente al archivo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# echo "/desktop/gnome/accesibility/keyboard/mousekeys_enable true" &gt;&gt; &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;/usr/share/gconf/defaults/25_mispreferencias&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Ahora, cada vez que el usuario desee usar el teclado numérico como sustituto del ratón, no tendrá más que activar dicha posibilidad pulsando las teclas &lt;span style="font-weight: bold;"&gt;Ctrl+Shift+Bloq.Num&lt;/span&gt;&lt;br /&gt;Para desactivarlo, no tenemos más que volver a pulsar la misma combinación de teclas.&lt;br /&gt;&lt;br /&gt;Pero si queremos que esta posibilidad se encuentre activada siempre al inicio, añadiremos otra línea más al fichero de preferencias:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# echo "/desktop/gnome/accesibility/keyboard/enable true" &gt;&gt;&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;/usr/share/gconf/defaults/25_mispreferencias&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una vez configuradas las opciones por defecto para gconf, ejecutaremos el comando:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# update-gconf-defaults &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y listo. Una cosa tremendamente útil en lugares donde se rompen demasiados ratones.&lt;br /&gt;&lt;br /&gt;Una última cosa: Usando este método definimos las opciones por defecto de gconf. Pero, si el usuario modifica su configuración particular, por ejemplo mediante gconf-editor, prevalecerá la configuración del usuario sobre la configuración por defecto.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570404401678257802-7684128307685624543?l=enavas.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlgoDeLinux/~4/4Nmo7ufV5Jw" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/AlgoDeLinux/~3/4Nmo7ufV5Jw/usar-teclado-numerico-como-sustituto.html</link><author>noreply@blogger.com (Esteban M. Navas)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://enavas.blogspot.com/2009/03/usar-teclado-numerico-como-sustituto.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570404401678257802.post-1051742506377512034</guid><pubDate>Wed, 25 Mar 2009 23:20:00 +0000</pubDate><atom:updated>2009-03-26T09:42:40.486+01:00</atom:updated><title>update-alternatives: Configurar alternativas en Debian</title><description>Se nota que últimamente tengo bastante parado el blog. Bueno, la verdad es que es porque estoy hasta arriba de trabajo y no me queda mucho tiempo libre para escribir nuevos posts. Pero, como me interesa tener ésto anotado en algún sitio, aprovecho y lo publico en el blog.&lt;br /&gt;&lt;br /&gt;A veces tenemos diferentes programas o incluso dos paquetes que nos proporcionan dos versiones diferentes de un programa con más o menos la misma funcionalidad; &lt;span style="font-weight: bold;"&gt;update-alternatives&lt;/span&gt; es un script escrito en Perl que nos proporciona una manera de asegurarnos de cuál será la aplicación a usar por defecto de entre varias instaladas para el mismo propósito.&lt;br /&gt;&lt;br /&gt;Por ejemplo: Nos han proporcionado un cd de instalación de debian con dos entornos de escritorio: gnome y lxde,  con la intención de que podamos instalar el mismo sistema en una máquina independientemente de que tenga muchos o pocos recursos, y se ha establecido que, por defecto se use lxde.&lt;br /&gt;Pues bien, si queremos instalar el sistema con una máquina que tiene recursos de sobra, podemos hacer que se use gnome por defecto, mediante update-alternatives. Para ello, abrimos un terminal y ejecutamos:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# update-alternatives --config x-session-manager&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Se nos mostrará la lista de alternativas que provee x-session-manager y podremos elegir la que queremos usar por defecto.&lt;br /&gt;&lt;br /&gt;Del mismo modo, podemos cambiar cuál es el editor que se debe usar por defecto en nuestro sistema, con tan sólo ejecutar en un terminal:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# update-alternatives --config editor&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y así podremos configurar una larga lista de aplicaciones por defecto. En el directorio &lt;span style="font-weight: bold;"&gt;/etc/alternatives&lt;/span&gt; las encontraremos.&lt;br /&gt;&lt;br /&gt;Si queremos configurar todas las posibles alternativas, una tras otra, ejecutaremos:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;# update-alternatives --all&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Nos irá preguntando una por una. Y en el caso de que sólo haya una opción, nos informará de ello.&lt;br /&gt;&lt;br /&gt;Por otra parte, también podremos crear nuestra propia alternativa:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# update-alternatives --install nombre_genérico enlace programa prioridad&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Imaginemos que tan sólo tenemos instalado gnome. Pero instalamos lxde y queremos que ésta sea la opción a usar por defecto:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# update-alternatives --install /usr/bin/lxde x-session-manager /usr/bin/startlxde 1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;También podemos borrar una alternativa:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# update-alternatives --remove x-session-manager /usr/bin/lxde&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570404401678257802-1051742506377512034?l=enavas.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlgoDeLinux/~4/S8DOzfg5-dk" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/AlgoDeLinux/~3/S8DOzfg5-dk/update-alternatives-configurar.html</link><author>noreply@blogger.com (Esteban M. Navas)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://enavas.blogspot.com/2009/03/update-alternatives-configurar.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570404401678257802.post-1320409194782814740</guid><pubDate>Fri, 20 Feb 2009 23:06:00 +0000</pubDate><atom:updated>2009-02-21T00:36:02.352+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">software</category><title>Acceso a máquinas remotas vía ssh sin contraseña</title><description>A veces, trabajando como administrador, resulta un poco tedioso tener que teclear la contraseña cada vez que nos conectamos a una máquina remota en la que tenemos que trabajar, más aún si tenemos muchos equipos que controlar.&lt;br /&gt;&lt;br /&gt;Para conseguir conectarnos vía ssh a estas máquinas, sin que se nos pida la contraseña, podemos crear una clave pública y otra privada con &lt;span style="font-weight: bold;"&gt;ssh-keygen&lt;/span&gt;. Una vez creadas, no tendremos más que añadir la clave pública al fichero &lt;span style="font-weight: bold;"&gt;authorized_keys&lt;/span&gt; del usuario con el que nos conectamos a la máquina remota.&lt;br /&gt;&lt;br /&gt;Veamos paso a paso cómo hacerlo:&lt;br /&gt;&lt;br /&gt;Primero, generamos en nuestra máquina un par de claves (privada y pública) mediante &lt;span style="font-weight: bold;"&gt;ssh-keygen&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# ssh-keygen -t rsa&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;En el directorio .ssh de nuestro home se creará la clave privada (id_rsa) y la pública (id_rsa.pub). Por ejemplo, si mi usuario es adrian, la clave privada se encontrará almacenada en /home/adrian/.ssh/id_rsa y la clave pública en /home/adrian/.ssh/id_rsa.pub&lt;br /&gt;&lt;br /&gt;ssh-keygen nos pedirá una frase de paso. La dejaremos en blanco para que no nos la pida al conectarnos al equipo remoto.&lt;br /&gt;&lt;br /&gt;Una vez que hemos generado nuestra clave pública y privada, añadimos nuestra clave pública al fichero &lt;span style="font-weight: bold;"&gt;~/.ssh/authorized_keys&lt;/span&gt; del usuario que va a tener acceso sin clave en la máquina remota.&lt;br /&gt;&lt;br /&gt;Para hacerlo, primero copiamos el fichero id_rsa.pub al home del usuario remoto con el que queremos acceder sin contraseña. Por ejemplo:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# scp /home/adrian/.ssh/id_rsa.pub usuario@servidor:~/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Después nos conectamos a la máquina remota:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# ssh usuario@servidor&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y añadimos el contenido del fichero id_rsa.pub al fichero authorized_keys del usuario con el que accedemos en la máquina remota:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# cat ~/id_rsa.pub &gt;&gt; ~/.ssh/authorized_keys&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y ya está. A partir de ahora, cada vez que nos conectemos a la máquina remota, tendremos acceso sin tener que teclear la password.&lt;br /&gt;&lt;br /&gt;Por cierto, si tenemos muchas máquinas que administrar, podemos usar una máquina de pasarela.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570404401678257802-1320409194782814740?l=enavas.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlgoDeLinux/~4/VB_-X1n88-I" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/AlgoDeLinux/~3/VB_-X1n88-I/acceso-maquinas-remotas-via-ssh-sin.html</link><author>noreply@blogger.com (Esteban M. Navas)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://enavas.blogspot.com/2009/02/acceso-maquinas-remotas-via-ssh-sin.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570404401678257802.post-4202592987728671619</guid><pubDate>Fri, 13 Feb 2009 17:20:00 +0000</pubDate><atom:updated>2009-02-13T20:48:04.008+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">software</category><title>Ahorrar recursos en el servidor NFS con autofs</title><description>Un buen cambio que se ha hecho en nuestros centros, entre otras muchas cosas, ha sido montar &lt;span style="font-weight: bold;"&gt;autofs&lt;/span&gt; en los clientes NFS, con lo que se va a reducir de una manera importante la carga de trabajo del servidor.&lt;br /&gt;&lt;br /&gt;Si tenemos un servidor NFS y montamos el home de los usuarios en el archivo fstab, estaremos estableciendo una conexión por máquina con el servidor, cada vez que la máquina cliente arranque. Si tenemos pocos usuarios en el sistema no hay problemas, pero si tenemos muchos, el servidor nfs tendrá una carga mayor de trabajo cuanto mayor sea el número de máquinas encendidas.&lt;br /&gt;&lt;br /&gt;Para mejorar el rendimiento de nuestro sistema y hacer que las conexiones nfs de los clientes se establezcan tan sólo cuando un usuario las necesite, podemos contar con una utilidad llamada &lt;span style="font-weight: bold;"&gt;automount&lt;/span&gt; que se encargará de montar y desmontar sistemas de archivos nfs automáticamente, ahorrando recursos.&lt;br /&gt;&lt;br /&gt;Podemos ejecutar el comando automount para especificar los montajes. No obstante, es más recomendable especificar los montajes que deben hacerse en una serie de ficheros que usa autofs.&lt;br /&gt;&lt;br /&gt;Para instalar autofs no tenemos más que hacer un:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# apt-get install autofs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Al instalarlo, se crearán los siguientes archivos de configuración:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;/etc/auto.master&lt;/li&gt;&lt;li&gt;/etc/auto.misc&lt;/li&gt;&lt;li&gt;/etc/auto.net&lt;/li&gt;&lt;li&gt;/etc/auto.smb&lt;/li&gt;&lt;li&gt;/etc/default/autofs&lt;/li&gt;&lt;/ul&gt;Se arrancará automounter, cargando asó el módulo del kernel que se encargará de los montajes: &lt;span style="font-weight: bold;"&gt;autofs4&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El archivo &lt;span style="font-weight: bold;"&gt;/etc/auto.master&lt;/span&gt; es el principal fichero de automount. Contiene una serie de líneas que se refieren a cada punto de montaje, con una estructura como la siguiente:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;punto_de_montaje&gt;&lt;/punto_de_montaje&gt;&lt;/span&gt;&lt;br /&gt;Si nos fijamos en el fichero auto.master nada más instalar autofs, veremos que aparecen unas líneas comentadas.  Por ejemplo:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;/misc /etc/auto.misc --timeout=60&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La línea anterior no se va a ejecutar puesto que está comentada, pero quiere decir: Todo lo que está en auto.misc hay que montarlo en /misc y desmontarlo si no se usa cuando lleve sin usarse 60 segundos.&lt;br /&gt;&lt;br /&gt;Otro ejemplo típico e interesante: Podemos querer que el directorio home se automonte para los usuarios. Entonces, añadiremos una línea como la siguiente al fichero /etc/auto.master:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;/home /etc/auto.home&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Luego, crearemos el fichero /etc/auto.home con la cadena de montaje. Por ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;* -fstype=nfs4,intr,rsize=0192,wsize=8192 servidor:/&lt;span style="font-style: italic;"&gt;home&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Esta línea hace que si cualquier usuario intenta acceder bajo el directorio local /home se produzca un montaje del servidor servidor:/home en /home.&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Por c&lt;/span&gt;&lt;span&gt;ierto&lt;/span&gt;&lt;span&gt;, se me olvidaba: Como autofs se instala como demonio, podemos iniciarlo, pararlo, reiniciarlo... con:&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;# /etc/init.d/autofs {start|stop|restart|reload|status|getmounts|active}&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570404401678257802-4202592987728671619?l=enavas.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlgoDeLinux/~4/H_0MYQJl99k" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/AlgoDeLinux/~3/H_0MYQJl99k/ahorrar-recursos-en-el-servidor-nfs-con.html</link><author>noreply@blogger.com (Esteban M. Navas)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://enavas.blogspot.com/2009/02/ahorrar-recursos-en-el-servidor-nfs-con.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570404401678257802.post-7897777178157253910</guid><pubDate>Thu, 12 Feb 2009 20:48:00 +0000</pubDate><atom:updated>2009-02-12T22:08:30.154+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">software</category><title>unalz: Una herramienta linux para descomprimir ficheros .alz</title><description>ALZip es una herramienta que mucha gente ha usado en windows durante tiempo para comprimir/descomprimir archivos. Esta herramienta ha sido gratuita, excepto para uso comercial hasta antes del 1 de Diciembre de 2008. Pero, para nuevas versiones a partir del 1 de Diciembre de 2008, la empresa cambió la licencia, dejando  de ser gratuita y pasando a ser una herramienta de pago para todo uso, ya sea personal o comercial.&lt;br /&gt;&lt;br /&gt;Para los que usamos linux, hay una utilidad que nos permite descomprimir los archivos .alz: &lt;span style="font-weight: bold;"&gt;unalz&lt;/span&gt;. Por cierto, es una herramienta de línea de comando que tendremos que usar desde un terminal.&lt;br /&gt;&lt;br /&gt;A mí me ha sido muy útil cuando me han enviado algún fichero comprimido en este formato.&lt;br /&gt;&lt;br /&gt;Veamos algunos ejemplos de uso:&lt;br /&gt;&lt;br /&gt;Si queremos descomprimir un archivo, el comando a ejecutar será algo así:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# unalz ficherocomprimido.alz&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Si el fichero a comprimir tiene password, ejecutaremos el comando de la siguiente manera:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# unalz -pwd passworddelarchivo ficherocomprimido.alz&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Si tan sólo queremos listar los ficheros que contiene el fichero comprimido:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# unalz -l ficherocomprimido.alz&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y si  queremos especificar un directorio destino:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# unalz -d directoriodestino ficherocomprimido.alz&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Éstas son las opciones más comunes. No obstante, hay algunas opciones más que podéis consultar con &lt;span style="font-weight: bold;"&gt;man&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570404401678257802-7897777178157253910?l=enavas.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlgoDeLinux/~4/ZkVgDZU40bI" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/AlgoDeLinux/~3/ZkVgDZU40bI/unalz-una-herramienta-linux-para.html</link><author>noreply@blogger.com (Esteban M. Navas)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://enavas.blogspot.com/2009/02/unalz-una-herramienta-linux-para.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570404401678257802.post-3586900414851880432</guid><pubDate>Wed, 11 Feb 2009 20:27:00 +0000</pubDate><atom:updated>2009-02-11T21:40:36.719+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">software</category><category domain="http://www.blogger.com/atom/ns#">windows</category><title>Dalle: Una herramienta multiplataforma para partir/unir archivos</title><description>Ayer necesitaba unir una serie de archivos y no me servía el hacha de linux (&lt;span style="font-weight: bold;"&gt;hoz&lt;/span&gt;). Buscando un poco por ahí, encontré Dalle, una herramienta multiplataforma compatible con los siguientes formatos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Astrotite&lt;/li&gt;&lt;li&gt;Axman 3&lt;/li&gt;&lt;li&gt;Easy File Splitter&lt;/li&gt;&lt;li&gt;File Splitter&lt;/li&gt;&lt;li&gt;Genérico&lt;/li&gt;&lt;li&gt;Hacha (1, 2 y Pro)&lt;/li&gt;&lt;li&gt;KamaleoN (1 y 2)&lt;/li&gt;&lt;li&gt;MaxSplitter&lt;/li&gt;&lt;li&gt;SplitFile&lt;/li&gt;&lt;li&gt;Zip&lt;/li&gt;&lt;/ul&gt;La página del proyecto es: &lt;a href="http://dalle.sourceforge.net/"&gt;http://dalle.sourceforge.net&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Para descargarlo: &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=95720"&gt;http://sourceforge.net/project/showfiles.php?group_id=95720&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Como no es algo que use habitualmente, no necesito instalarlo. Así que descargué la versión ejecutable desde aquí: &lt;a href="http://downloads.sourceforge.net/dalle/dalle-bin-0.7.8.zip?modtime=1206388293&amp;amp;big_mirror=0"&gt;http://downloads.sourceforge.net/dalle/dalle-bin-0.7.8.zip?modtime=1206388293&amp;amp;big_mirror=0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Descomprimí el archivo:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# unzip dalle-bin-0.7.8.zip&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Entré en el directorio que se crea al descomprimir:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# cd dalle-bin-0.7.8&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y ejecuté dalle-gtk:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; # ./dalle-gtk.exe &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Por cierto, este conjunto de aplicaciones están escritas en C. Para ejecutarlas deberemos tener instalado mono.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570404401678257802-3586900414851880432?l=enavas.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlgoDeLinux/~4/Dro3t8gLSOY" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/AlgoDeLinux/~3/Dro3t8gLSOY/dalle-una-herramienta-multiplataforma.html</link><author>noreply@blogger.com (Esteban M. Navas)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://enavas.blogspot.com/2009/02/dalle-una-herramienta-multiplataforma.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570404401678257802.post-2824099962964800021</guid><pubDate>Wed, 11 Feb 2009 10:55:00 +0000</pubDate><atom:updated>2009-02-11T12:55:19.510+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">software</category><category domain="http://www.blogger.com/atom/ns#">hardware</category><title>minicom: Acceso a switches, routers... por el puerto de consola</title><description>&lt;span style="font-weight: bold;"&gt;minicom&lt;/span&gt; es una herramienta muy útil que nos permite conectarnos por el puerto serie/usb a un switch, un router, etc... para configurar el dispositivo a través del puerto de consola.&lt;br /&gt;&lt;br /&gt;El caso es que, hoy en día, la mayoría de dispositivos ya incorporan un interfaz accesible vía web, pero, en ocasiones, por las circunstancias que sean, no tenemos más remedio que acudir a la consola. Por ejemplo: Hoy mismo estaba haciendo pruebas de configuración de uno de los switches 3com que tengo que preparar, y como me llaman muchas veces, al volver, había reiniciado el switch y no recordaba la configuración de red que le había puesto, por lo que ya no podía acceder vía web. Para poder volver a entrar he usado minicom y he restaurado la configuración de red a través del puerto de consola.&lt;br /&gt;&lt;br /&gt;Una cosa a tener en cuenta para usar el puerto de consola, es que la mayoría de cables son serie y, si queremos utilizar un portátil para configurar el dispositivo, como los portátiles ya no suelen tener puerto serie, tendremos que usar un adaptador usb-serial.&lt;br /&gt;&lt;br /&gt;Por cierto, si vamos a usar el &lt;span style="font-weight: bold;"&gt;cable usb-serial&lt;/span&gt;, podemos comprobar si se ha cargado el módulo necesario con el comando: lsusb.&lt;br /&gt;&lt;br /&gt;Para instalar minicom, no tenemos más que hacer un:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# apt-get install minicom&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una vez instalado, lo lanzamos directamente desde un terminal:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# minicom&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Al ejecutarlo nos aparecerá una salida como la siguiente:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Welcome to minicom 2.3&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;OPCIONES: I18n &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Compilado en Feb 24 2008, 16:35:15.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Port /dev/ttyS0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;               Presione CTRL-A Z para obtener ayuda sobre teclas especiales              &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Pulsamos Enter y nos pedirá login.&lt;br /&gt;&lt;br /&gt;Introducimos el login y nos pedirá el password.&lt;br /&gt;&lt;br /&gt;Introducimos el password y ya veremos el menú de configuración del dispositivo.&lt;br /&gt;&lt;br /&gt;Ahora bien, como tendremos que configurar puerto, verlocidad, paridad, control de flujo..., lo mejor es que la primera vez lo lancemos con el parámetro -s (de setup):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# minicom -s&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Nos aparecerá un menú de configuración de minicom. Vamos a "Configuración de la puerta Serial", indicamos la configuración que deseamos para conectar. Por ejemplo: En los switches que estoy configurando, me indica que debo configurar la aplicación de emulación de terminal con los siguientes valores: 38,400 baud, 8 data bits, no parity and 1 stop bit. Flow control should be disabled. Pues nada, vamos pulsando las letras de las opciones y vamos configurando los valores. Al final, veremos que nos queda algo así:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;A - Dispositivo Serial : /dev/ttyS0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;B - Localización del Archivo de Bloqueo : /var/lock&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;C - Programa de Acceso :&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;D - Programa de Salida :&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;E - Bps/Paridad/Bits : 38400 8N1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;F - Control de Flujo por Hardware: No&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;G - Control de Flujo por Software: No&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una vez configurado, guardamos los ajustes y en sucesivas ocasiones lo lanzamos sin -s.&lt;br /&gt;&lt;br /&gt;Por cierto, si usamos un puerto usb, lanzamos minicom especificando el puerto:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;minicom -o /dev/ttyUSB0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Al ejecutarlo nos aparecerá una salida como la siguiente:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Welcome to minicom 2.3&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;OPCIONES: I18n &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Compilado en Feb 24 2008, 16:35:15.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Port /dev/ttyUSB0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;               Presione CTRL-A Z para obtener ayuda sobre teclas especiales              &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y ya podremos instroducir login y password para acceder.&lt;br /&gt;&lt;br /&gt;Una última cuestión sobre combinación de teclas. Pulsando:&lt;br /&gt;- Ctrl+A, Z accedemos a la ayuda. (Ctrl+A,soltamos,Z)&lt;br /&gt;- Ctrl+A, Q salimos. (Ctrl+A,soltamos,Q)&lt;br /&gt;&lt;br /&gt;Ah, se me olvidaba: A los administradores nos encanta trabajar desde terminales, sobre todo, porque en muchos casos no hay más remedio y es preferible estar acostumbrado.&lt;br /&gt;Para aquellos que prefieran usar una aplicación de emulación de terminal en modo gráfico (tipo Hyperterminal) pueden instalar &lt;span style="font-weight: bold;"&gt;gtkterm&lt;/span&gt; o &lt;span style="font-weight: bold;"&gt;cutecom&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570404401678257802-2824099962964800021?l=enavas.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlgoDeLinux/~4/lREVzyFHNNk" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/AlgoDeLinux/~3/lREVzyFHNNk/minicom-acceso-switches-routers-por-el.html</link><author>noreply@blogger.com (Esteban M. Navas)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://enavas.blogspot.com/2009/02/minicom-acceso-switches-routers-por-el.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570404401678257802.post-2968388337975522066</guid><pubDate>Fri, 30 Jan 2009 11:47:00 +0000</pubDate><atom:updated>2009-01-30T13:38:32.494+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">eeePC</category><category domain="http://www.blogger.com/atom/ns#">linux</category><title>Ampliar la RAM del eeePC 701 a 2GB</title><description>El eeePC 701 viene de serie con un módulo RAM de 512 MB (por lo que he podido probar, más que suficiente para el sistema operativo tan ligero que tiene) y un SO linux llamado Xandros, que está basado en Debian.&lt;br /&gt;&lt;br /&gt;Pues bien, en la serie 700 del eeePC, el kernel del Xandros está compilado con un restricción que no nos permite instalar más de 1GB de memoria. Es decir, que si le queremos ampliar la RAM, y queremos montar más de 1GB, no nos reconocerá más que 1GB.&lt;br /&gt;&lt;br /&gt;Por cierto, tan sólo tiene una ranura para la memoria RAM (lógico, porque con lo pequeño que es...), con lo que, si queréis ampliar la memoria, tendréis que quitar el módulo y colocar otro de mayor tamaño en su lugar.&lt;br /&gt;&lt;br /&gt;Yo le he instalado los 2GB de RAM y la verdad es que no he notado un gran cambio. Va igual de bien que cuando tenía sólo 512MB. Y, a lo mejor, con 1GB hubiera tenido más que suficiente. Claro, que tampoco he usado más que las aplicaciones que venían instaladas.&lt;br /&gt;&lt;br /&gt;Para que nos reconozca la memoria y conservar el Xandros, tenemos dos opciones:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Recompilar el kernel y eliminar dicha restricción.&lt;/li&gt;&lt;li&gt;O bajarnos un kernel ya precompilado por alguien que ya la ha eliminado.&lt;/li&gt;&lt;/ul&gt;La opción más entretenida es recompilar el kernel, pero, para no complicarse, lo más fácil es bajárselo. Un enlace para descargarlo: &lt;a href="http://www.mediafire.com/?rz3jjey7x30"&gt;http://www.mediafire.com/?rz3jjey7x30&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Para montarlo, debemos saber que el eeePC contiene 4 particiones en su disco SDD:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;La primera partición (/dev/sda1) es de tipo ext2 y contiene el sistema operativo montado como sólo lectura.&lt;/li&gt;&lt;li&gt;La segunda partición (/dev/sda2) se monta sobre la primera mediante unionfs/aufs (unionfs en los equipos de la serie 700 y aufs en equipos posteriores como los de la serie 900).&lt;/li&gt;&lt;li&gt;Las particiones tercera (/dev/sda3) y cuarta (/dev/sda4) son de tipo FAT y no se usan.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;El hecho de montar la primera partición como sólo lectura y la segunda sobre ella, sirve para permitir tener un sistema recuperable. Los cambios se guardan sobre la segunda partición, de tal manera que, en cualquier momento, podremos restaurar el sistema operativo como venía de fábrica. La desventaja: Que se ocupa más espacio. Si tenemos una aplicación que viene de fábrica, y la actualizamos, en la primera partición se encontrará la copia que viene de fábrica y la más reciente quedará en la segunda partición. Con lo que tenemos redundancia de software ocupando espacio. Ésto está hecho para que el usuario pueda recuperar fácilmente su sistema ante un fallo.&lt;br /&gt;&lt;br /&gt;Para cambiar el kernel yo he usado un system rescue cd que tengo montado en un pendrive.&lt;br /&gt;Cómo lo hice: Conecté el pendrive antes de encender el eeePC y lo encendí, pulsando ESC después de encenderlo para que me permitiera elegir el disposivo de arranque. Una vez elegido el arranque desde USB, se inició el system rescue.&lt;br /&gt;&lt;br /&gt;Una vez arrancado el system rescue, monté la partición /dev/sda1 en /mnt/custom:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# mount /dev/sda1 /mnt/custom&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Después, cambié al directorio /mnt/custom/boot/grub:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# cd /mnt/custom/boot/grub&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hice una copia de seguridad del menu.lst, por si acaso:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# cp /mnt/custom/boot/grub/menu.lst /mnt/custom/boot/grub/menu.lst.original&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Copié el kernel, que, antes había pasado al pendrive, en el directorio /mnt/custom/boot/&lt;br /&gt;&lt;br /&gt;Modifiqué el fichero /mnt/custom/boot/grub/menu.lst, añadiendo una entrada nueva para arrancar el nuevo kernel:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;title   Xandros 2GB kernel&lt;span style="font-family: monospace;"&gt;&lt;br /&gt;&lt;/span&gt;root    (hd0,0)&lt;span style="font-family: monospace;"&gt;&lt;br /&gt;&lt;/span&gt;kernel  /boot/vmlinuz-2.6.21.4-eeepc-2GB quiet rw vga=785 irqpoll i8042.noloop=1 root=/dev/sda1&lt;span style="font-family: monospace;"&gt;&lt;br /&gt;&lt;/span&gt;initrd  /boot/initramfs-eeepc.img&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una vez añadida la entrada, guardamos el menu.lst, desmontamos el pendrive, reiniciamos y listo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570404401678257802-2968388337975522066?l=enavas.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlgoDeLinux/~4/GblB_ZvtOtM" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/AlgoDeLinux/~3/GblB_ZvtOtM/ampliar-la-ram-del-eeepc-701-2gb.html</link><author>noreply@blogger.com (Esteban M. Navas)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://enavas.blogspot.com/2009/01/ampliar-la-ram-del-eeepc-701-2gb.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570404401678257802.post-8490868865061392588</guid><pubDate>Sat, 20 Dec 2008 20:56:00 +0000</pubDate><atom:updated>2008-12-20T22:49:39.425+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">software</category><title>Discos de arranque con Freedos</title><description>A veces necesitamos un floppy autoarrancable con formato DOS, para actualizar, por ejemplo, la BIOS de nuestro equipo, o para arrancar alguna aplicación DOS que haga algo en el proceso de inicio de nuestra máquina.&lt;br /&gt;&lt;br /&gt;Como no uso windows, no puedo crear un disco de inicio, así que recurro a FreeDOS, un sistema operativo compatible DOS, que me permite disponer de un floppy bootable sin la necesidad de recurrir a versiones propietarias de DOS. Todo lo que necesitamos es una imagen de disquete con el kernel FreeDOS. En &lt;a href="http://www.fdos.org/bootdisks/"&gt;http://www.fdos.org/bootdisks/&lt;/a&gt; encontraremos varias imágenes que se adaptarán a nuestras necesidades.&lt;br /&gt;Desde allí podemos bajar una imagen de floppy con el sistema operativo FreeDOS completo, o una imagen OEM que tan sólo contiene el kernel y el command.com, y que nos deja más espacio para añadir todo lo que necesitemos al floppy, como por ejemplo, una utilidad para flashear nuestra BIOS.&lt;br /&gt;&lt;br /&gt;Las imágenes de disquete de esta página se encuentran disponibles en dos formatos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;En formato &lt;span style="font-weight: bold;"&gt;.imz&lt;/span&gt;, comprimidas con pkzip, que podemos descomprimir con &lt;a name="diskImages" id="diskImages"&gt; unzip, winzip, u otra herramienta similar.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a name="diskImages" id="diskImages"&gt;&lt;/a&gt;En formato &lt;span style="font-weight: bold;"&gt;.gz&lt;/span&gt;, comprimidas con gzip y que podemos descomprimir usando &lt;a name="diskImages" id="diskImages"&gt;gzip -d, winzip, u otra herramienta similar.&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Podéis descargar una imagen OEM de la siguiente manera:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# wget http://www.fdos.org/bootdisks/autogen/FDOEM.144.imz&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y descomprimirla con unzip:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# unzip FDOEM.144.imz&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una vez descargada, obtendremos un archivo llamado: &lt;span style="font-weight: bold;"&gt;FDSTD.144&lt;/span&gt;&lt;br /&gt;Si queremos personalizarlo, para añadir cosas al disquete, creamos una carpeta temporal:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# mkdir /mnt/floppy&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# mount -o loop FDSTD.144 /mnt/floppy&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y copiamos al directorio lo que necesitemos para personalizar el disquete.&lt;br /&gt;&lt;br /&gt;Una vez copiado lo que sea, desmontamos el disco y listo. Ya tendremos nuestra imagen de disquete personalizado.&lt;br /&gt;&lt;br /&gt;Si no tenemos floppy, podemos crear una iso del floppy y grabarlo en un CD:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# mkisofs -o bootcd.iso -b FDOEM.144 FDOEM.144&lt;/span&gt;&lt;code style="font-weight: bold;"&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570404401678257802-8490868865061392588?l=enavas.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlgoDeLinux/~4/leNTW2iAm6k" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/AlgoDeLinux/~3/leNTW2iAm6k/discos-de-arranque-con-freedos.html</link><author>noreply@blogger.com (Esteban M. Navas)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://enavas.blogspot.com/2008/12/discos-de-arranque-con-freedos.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570404401678257802.post-9160566150725779372</guid><pubDate>Fri, 19 Dec 2008 20:27:00 +0000</pubDate><atom:updated>2008-12-19T23:02:11.032+01:00</atom:updated><title>ms-sys: Una herramienta para crear registros de arranque compatibles con Microsoft</title><description>&lt;span style="font-weight: bold;"&gt;ms-sys&lt;/span&gt; es una de esas herramientas que no usamos habitualmente, pero que nos viene muy bien tener a mano a aquellos que trabajamos con sistemas Linux. Por ejemplo, cuando tenemos que crear un floppy de arranque para actualizar la bios del equipo.&lt;br /&gt;&lt;br /&gt;Podemos usar ms-sys para crear sectores de arranque Microsoft.&lt;br /&gt;&lt;br /&gt;Para que os hagáis una idea, esta utilidad es capaz de hacer lo mismo que el comando&lt;br /&gt;"fdisk /mbr" en windows. Así que, con esta utilidad puedo reestablecer el MBR de una máquina windows sin necesidad de usar windows.&lt;br /&gt;&lt;br /&gt;También es capaz de establecer el sector de arranque a un floppy para convertirlo en un disquete de arranque. O a una partición FAT para que ésta sea arrancable. Lo que no hace es conpiar ningún sistema de ficheros. Tan sólo escribe el sector de arranque. Con lo que, si queremos que el disquete arranque, tendremos que copiarle los ficheros de sistema.&lt;br /&gt;&lt;br /&gt;Modo de uso:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    ms-sys [opciones] [dispositivo]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Pego a continuación la lista de opciones que podemos utilizar con ms-sys (sacada de la ayuda):&lt;br /&gt;&lt;br /&gt;-1, --fat12     Write a FAT12 floppy boot record to device&lt;br /&gt;-2, --fat32nt   Write a FAT32 partition NT boot record to device&lt;br /&gt;-3, --fat32     Write a FAT32 partition DOS boot record to device&lt;br /&gt;-4, --fat32free Write a FAT32 partition FreeDOS boot record to device&lt;br /&gt;-5, --fat16free Write a FAT16 partition FreeDOS boot record to device&lt;br /&gt;-6, --fat16     Write a FAT16 partition DOS boot record to device&lt;br /&gt;-l, --wipelabel Reset partition disk label in boot record&lt;br /&gt;-p, --partition Write partition info (hidden sectors, heads and drive id) to boot record&lt;br /&gt;-m, --mbr       Write a Windows 2000/XP/2003 MBR to device&lt;br /&gt;-9, --mbr95b    Write a Windows 95B/98/98SE/ME MBR to device&lt;br /&gt;-d, --mbrdos    Write a DOS/Windows NT MBR to device&lt;br /&gt;-s, --mbrsyslinux    Write a public domain syslinux MBR to device&lt;br /&gt;-z, --mbrzero   Write an empty (zeroed) MBR to device&lt;br /&gt;-f, --force     Force writing of boot record&lt;br /&gt;-h, --help      Display this help and exit&lt;br /&gt;-v, --version   Show program version&lt;br /&gt;-w, --write     Write automatically selected boot record to device&lt;br /&gt;&lt;br /&gt;Default         Inspect current boot record&lt;br /&gt;&lt;br /&gt;Podemos descargar ms-sys desde el siguiente enlace: &lt;a href="http://ms-sys.sourceforge.net/"&gt;http://ms-sys.sourceforge.net/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Instalarlo es sencillo: Primero descargamos el código fuente de la aplicación. Una vez descargado, lo extraemos:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# tar xfv ms-sys*.tgz&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(En las instrucciones dice que hay que descomprimir usando tar -xzvf, pero debe ser una errata porque no está comprimido con gzip. Al menos el fichero que yo he descargado)&lt;br /&gt;&lt;br /&gt;Una vez extraído el código fuente, entramos dentro del directorio que se nos ha creado al extraer:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# cd ms-sys&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Compilamos:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# make&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;E instalamos:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# make install&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ejemplos de uso:&lt;br /&gt;&lt;br /&gt;Si queremos escribir el MBR de un disquete, no tenemos más que hacer:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# ms-sys -w /dev/fd0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Si lo que queremos es escribir el MBR de un disco duro:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# ms-sys -w /dev/hda&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Si lo que queremos es hacer arrancable una partición FAT:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# ms-sys -w /dev/hdaX&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;donde X será el número de partición.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570404401678257802-9160566150725779372?l=enavas.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlgoDeLinux/~4/cI6P7OsbTGw" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/AlgoDeLinux/~3/cI6P7OsbTGw/ms-sys-una-herramienta-para-crear.html</link><author>noreply@blogger.com (Esteban M. Navas)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://enavas.blogspot.com/2008/12/ms-sys-una-herramienta-para-crear.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570404401678257802.post-6703952270865918618</guid><pubDate>Tue, 16 Dec 2008 17:45:00 +0000</pubDate><atom:updated>2008-12-16T23:13:22.347+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">software</category><title>Compartir archivos entre máquinas Linux vía NFS</title><description>&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;¿Qué es NFS?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;NFS&lt;/span&gt; (Network File Sistem o Sistema de Ficheros de Red) es una solución ofrecida por los sistemas operativos UNIX/Linux para compartir archivos en redes TCP/IP. Fue desarrollado por SUN Microsystems bajo licencia GPL, lo que facilitó que se convirtiera en un estándar a la hora de convertir archivos en red.&lt;br /&gt;&lt;br /&gt;NFS nos permite montar una partición de una máquina remota en un directorio de nuestra máquina como si fuera una partición local.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Veamos qué necesitamos instalar.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Si queremos que nuestra máquina pueda utilizar recursos compartidos por un servidor nfs, instalaremos los paquetes &lt;span style="font-weight: bold;"&gt;nfs-common&lt;/span&gt; y &lt;span style="font-weight: bold;"&gt;portmap&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Y si lo que queremos es que nuestra máquina pueda realizar ambas funciones: compartir sus recursos y conectarse a otros compartidos, instalaremos los paquetes: &lt;span style="font-weight: bold;"&gt;nfs-kernel-server&lt;/span&gt; y &lt;span style="font-weight: bold;"&gt;portmap&lt;/span&gt;. En este caso, también necesitamos el paquete nfs-common, pero como es una dependencia del paquete nfs-kernel-server, al instalar nfs-kernel-server se instalará también nfs-common.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Lo primero: El portmap.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Como en todos los casos necesitamos &lt;span style="font-weight: bold;"&gt;portmap&lt;/span&gt;, lo primero que hacemos es comprobar si está corriendo.&lt;br /&gt;&lt;br /&gt;Sin entrar en muchos detalles, podemos decir que &lt;span style="font-weight: bold;"&gt;portmap&lt;/span&gt; es el mapeador de puertos de linux. Este mapeador se encarga de gestionar la asignación entre aplicaciones y puertos.&lt;br /&gt;Lo normal es que el portmap se encuentre ya instalado.&lt;br /&gt;&lt;br /&gt;Para saber si tenemos el portmap instalado y corriendo, no tenemos más que hacer un:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# ps aux | grep portmap&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Si está corriendo, la salida del comando anterior será más o menos como la siguiente:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;daemon    4204  0.0  0.0   1912   528 ?        Ss   16:31   0:00 /sbin/portmap&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Si no está corriendo, a lo mejor es porque no está instalado. Así podemos comprobar si está instalado:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# dpkg -l | grep portmap&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Si el comando anterior no nos devuelve nada, es porque no está instalado. En ese caso, lo instalamos:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# apt-get install portmap&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Si queremos que nuestro equipo pueda compartir recursos. Servidor NFS.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;1.- Instalamos nfs-kernel-server.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;Una vez que tengamos portmap funcionando, lo que haremos será instalar el paquete &lt;span style="font-weight: bold;"&gt;nfs-kernel-server&lt;/span&gt;. Como ya comentamos antes, al instalarlo, también se instalará el &lt;span style="font-weight: bold;"&gt;nfs-common&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# apt-get install nfs-kernel-server&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una vez instalado, podemos comprobar si NFS está en marcha haciendo una consulta al portmap, pidiéndole que nos indique qué servicios tiene en marcha:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# rpcinfo -p&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El comando nos mostrará todos los servicios que están en marcha, entre ellos el nfs. Como la salida es bastante extensa, os muestro tan sólo las líneas correspondientes al nfs que está corriendo en mi máquina:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    100003    2   tcp   2049  nfs&lt;br /&gt;    100003    3   tcp   2049  nfs&lt;br /&gt;    100003    4   tcp   2049  nfs&lt;br /&gt;    100003    2   udp  2049  nfs&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    100003    3   udp  2049  nfs&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    100003    4   udp  2049  nfs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Si no aparece, debemos comprobar si hay algún problema con los paquetes instalados.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;2.- Compartimos directorios&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;Una vez tenemos los servicios en marcha únicamente nos falta determinar qué queremos compartir. Imaginemos que queremos compartir un directorio llamado &lt;span style="font-weight: bold;"&gt;backup&lt;/span&gt; que se encuentra en el directorio &lt;span style="font-weight: bold;"&gt;var&lt;/span&gt; y en el que almacenaremos las copias de seguridad de una máquina remota:&lt;br /&gt;&lt;br /&gt;Para compartir un directorio, debemos editar el archivo &lt;span style="font-weight: bold;"&gt;/etc/exports&lt;/span&gt; e introducir una línea con datos referentes al directorio que queremos compartir, con qué máquinas lo vamos a compartir y las opciones de compartición. Cada línea del /etc/exports tendrá la forma:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;directorioacompartir maquinasconlasquecompartir(opcionesdeexportación)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;- En directorioacompartir especificamos la ruta absoluta del directorio a compartir.&lt;br /&gt;&lt;br /&gt;- En máquinasconlasquecompartir podemos especificar:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Un * para compartir con todo el mundo.&lt;/li&gt;&lt;li&gt;Una dirección IP para compartir con una máquina concreta.&lt;/li&gt;&lt;li&gt;Un rango de direcciones IP con las que compartir, especificando la ip de red y la máscara.&lt;/li&gt;&lt;li&gt;Un wildcard con el que compartiremos con las máquinas de un dominio.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;- En opcionesdeexportación podemos usar muchas opciones:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ro para compartir el directorio en modo sólo lectura.&lt;/li&gt;&lt;li&gt;rw para compartir el directorio en modo lectura/escritura.&lt;/li&gt;&lt;li&gt;root_squash para conseguir que un usuario root del cliente no pueda escribir con permisos de root en el directorio compartido.&lt;/li&gt;&lt;li&gt;no_root_squash hace que se permita que un usuario root del cliente pueda escribir con permisos de root en el directorio compartido.&lt;/li&gt;&lt;li&gt;sync hace que el servidor no atienda peticiones antes de que los cambios hechos por una petición de escritura sean escritos en disco.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;async hace que el servidor atienda peticiones sin comprobar si los cambios hechos por una petición de escritura se han escrito en disco. Es la opción por defecto, si no se especifica nada.&lt;/li&gt;&lt;li&gt;subtree_check si se exporta un subdirectorio (no un sistema de ficheros completo) al producirse una petición de un fichero, el servidor comprueba que el fichero solicitado esté en el árbol de directorios exportado.&lt;/li&gt;&lt;li&gt;no_subtree_check desactiva la comprobación de subtree_check.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Veamos algunos ejemplos de líneas que podemos incluir en /etc/exports:&lt;br /&gt;&lt;br /&gt;/usr/local     192.168.1.0/255.255.255.0(rw,subtree_check)&lt;br /&gt;/var/software 192.168.1.0/24(ro)&lt;br /&gt;/backup 172.19.123.2(rw,no_root_squash,sync)&lt;br /&gt;/tftpboot/boot-image *(rw,no_root_squash,snyc)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;3.- Aumentando un poco la seguridad&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;La única vez que NFS lleva a cabo la autentificación es cuando el cliente intenta montar un recurso compartido NFS. Para limitar el acceso al servicio NFS y aumentar un poco la seguridad, se utilizan los TCP wrappers.&lt;br /&gt;&lt;br /&gt;Los TCP wrappers leen los archivos &lt;span style="font-weight: bold;"&gt;/etc/hosts.allow&lt;/span&gt; y &lt;span style="font-weight: bold;"&gt;/etc/hosts.deny&lt;/span&gt; para determinar si a un cliente particular o red tiene acceso o no al servicio NFS.&lt;br /&gt;&lt;p&gt;Lo primero que se comprueba es si el cliente tiene acceso mediante los TCP wrappers. Una vez que al cliente se le permite acceso gracias a un TCP wrapper, el servidor NFS recurre a su archivo de configuración (&lt;span style="font-weight: bold;"&gt;/etc/exports&lt;/span&gt;), para determinar si el cliente tiene suficientes privilegios para acceder a los sistemas de archivos exportados.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Una vez otorgado el acceso, todas las operaciones de archivos y de directorios están disponibles para el usuario. &lt;/p&gt;Podemos establecer un poco más de seguridad usando &lt;span style="font-weight: bold;"&gt;/etc/hosts.allow&lt;/span&gt; y &lt;span style="font-weight: bold;"&gt;/etc/hosts.deny&lt;/span&gt; para especificar qué ordenadores de la red pueden usar los servicios del servidor nfs.&lt;br /&gt;&lt;br /&gt;Por ejemplo:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;/etc/hosts.deny&lt;/span&gt;&lt;br /&gt;portmap:ALL&lt;br /&gt;lockd:ALL&lt;br /&gt;mountd:ALL&lt;br /&gt;rquotad:ALL&lt;br /&gt;statd:ALL&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/etc/hosts.allow&lt;/span&gt;&lt;br /&gt;portmap:192.168.1.0/255.255.255.0&lt;br /&gt;lockd:192.168.1.0/255.255.255.0&lt;br /&gt;mountd:192.168.1.0/255.255.255.0&lt;br /&gt;rquotad:192.168.1.0/255.255.255.0&lt;br /&gt;statd:192.168.1.0/255.255.255.0&lt;br /&gt;&lt;br /&gt;Suponiendo que nuestra red local es la 192.168.1.0, de este modo, denegamos el acceso a todo el mundo, y luego permitimos el acceso tan sólo a las máquinas de nuestra red.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;4.- Activar la compartición de archivos&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;Cada vez que hagamos cambios en el fichero /etc/exports, debemos hacer que nfs vuelva a cargarlo, con el fin de que se apliquen las restricciones que hay en él. Para ello no tenemos más que ejecutar el siguiente comando:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# exportfs -ra&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y listo. Ya tenemos nuestro servidor nfs funcionando.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Si queremos que nuestro equipo pueda usar recursos nfs de otras máquinas. Cliente NFS.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;1.- Instalamos nfs-common&lt;/span&gt;&lt;br /&gt; &lt;/span&gt;Para poder conectarnos a los recursos nfs de servidores, lo que haremos es configurar el equipo como cliente NFS. Para ello, recordemos que debíamos instalar &lt;span style="font-weight: bold;"&gt;portmap&lt;/span&gt; y &lt;span style="font-weight: bold;"&gt;nfs-common&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Así que, siguiendo las instrucciones del comienzo, comprobamos que tenemos funcionando &lt;span style="font-weight: bold;"&gt;portmap&lt;/span&gt; en el equipo cliente. Una vez comprobado, instalamos nfs-common:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# apt-get install nfs-common&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y ya podemos conectarnos a los recursos de otras máquinas desde un equipo cliente.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;2.- Ver qué recursos compartidos en una máquina&lt;/span&gt;&lt;br /&gt; &lt;/span&gt;Si queremos ver qué directorios tiene compartidos una máquina vía NFS, ejecutamos el comando showmount en la máquina cliente con el parámetro -e:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# showmount -e IPSERVIDOR&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Por ejemplo, si tenemos un servidor NFS cuya IP es 192.168.1.2 y queremos ver, desde nuestra máquina cliente, qué directorios tiene exportados, ejecutaremos el comando:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$ showmount -e 192.168.1.2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;3.- Conectarse a un recurso compartido de un servidor NFS&lt;/span&gt;&lt;br /&gt; &lt;/span&gt;Podemos conectarnos a un directorio compartido en una máquina remota, usando el comando mount:&lt;br /&gt;&lt;br /&gt;# mount IPServidorNFS:/DirectorioCompartido PuntodeMontaje&lt;br /&gt;&lt;br /&gt;&lt;servidor&gt;&lt;directorio compartido=""&gt;&lt;punto de="" montaje=""&gt;Ejemplo: Imaginemos que tenemos un servidor NFS con la siguiente dirección IP: 192.168.1.2 y un directorio compartido: /var/descargas. Supongamos también que en la máquina cliente tenemos un directorio llamado /mnt/nfs donde vamos a montar el directorio de la máquina remota. Montaremos el directorio compartido de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# mount 192.168.1.2:/var/descargas /mnt/nfs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Si hacemos un &lt;span style="font-weight: bold;"&gt;ls /mnt/nfs&lt;/span&gt; veremos que el directorio del servidor se encuentra montado.&lt;br /&gt;&lt;br /&gt;&lt;/punto&gt;&lt;/directorio&gt;&lt;/servidor&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;4.- Conectarse a un recurso compartido cada vez que se inicie la máquina cliente&lt;/span&gt;&lt;br /&gt; &lt;/span&gt;&lt;servidor&gt;&lt;directorio compartido=""&gt;&lt;punto de="" montaje=""&gt;Si queremos que el directorio compartido vía NFS sea montado en la máquina cliente cada vez que ésta arranque, debemos añadir una entrada en el fichero /etc/fstab.&lt;br /&gt;&lt;br /&gt;Imaginemos que tenemos el directorio home compartido en un servidor nfs y queremos montarlo en los clientes. Añadiríamos una línea al fichero fstab de la máquina cliente para montarlo en cada inicio:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;192.168.1.2:/home /home nfs rw,hard,intr 0 0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/punto&gt;&lt;/directorio&gt;&lt;/servidor&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570404401678257802-6703952270865918618?l=enavas.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlgoDeLinux/~4/Cm-Npaov2pQ" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/AlgoDeLinux/~3/Cm-Npaov2pQ/compartir-archivos-entre-mquinas-linux.html</link><author>noreply@blogger.com (Esteban M. Navas)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://enavas.blogspot.com/2008/12/compartir-archivos-entre-mquinas-linux.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570404401678257802.post-3234091180778653871</guid><pubDate>Fri, 12 Dec 2008 00:16:00 +0000</pubDate><atom:updated>2009-02-05T10:13:08.765+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">comandos</category><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">software</category><title>update-rc.d: Actualizando el arranque/parada de servicios</title><description>El comando update-rc.d nos permite automatizar el proceso de creación y borrado de enlaces a los scripts de inicio, con en fin de iniciar/parar servicios.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Eliminar servicios del proceso de arranque:&lt;/span&gt;&lt;br /&gt;&lt;p&gt;Si queremos eliminar servicios del proceso de arranque, no tenemos más que ejecutar el siguiente comando como root:&lt;/p&gt;  &lt;p style="font-weight: bold;"&gt; # update-rc.d -f nombre_proceso remove &lt;/p&gt;Veamos un ejemplo. Supongamos que tenemos el proceso squid y queremos eliminarlo para que no arranque, ejecutaremos el siguiente comando:&lt;br /&gt;&lt;p style="font-weight: bold;"&gt;# update-rc.d -f squid remove&lt;br /&gt;&lt;/p&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Iniciar nuevos servicios en el proceso de arranque:&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:monospace;"&gt;&lt;br /&gt;&lt;/span&gt;Si queremos crear enlaces usando parámetros por defecto, ejecutaremos:&lt;br /&gt;&lt;p style="font-weight: bold;"&gt; # update-rc.d nombre_proceso defaults &lt;/p&gt; Al usar la opción defaults, update-rc.d creará enlaces para arrancar  los  servicios  en los niveles de ejecución 2345 y parar los  servicios en los niveles de ejecución 016. Por  defecto,  todos  los enlaces  tendrán el código de secuencia 20.&lt;br /&gt;&lt;br /&gt;Ejemplo. Si ejecutamos:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# update-rc.d ssh defaults&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Se crearán enlaces para arrancar el servicio ssh en los niveles 2345 y pararlo en los niveles 016.&lt;br /&gt;Lo que sería equivalente a ejecutar:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# update-rc.d ssh start 20 2 3 4 5 . stop 20 0 1 6 .&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;O, si así lo preferimos, podemos especificar los niveles en que arranca un proceso, los niveles en los que para, así como la prioridad.&lt;br /&gt;&lt;br /&gt;Ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# update-rc.d xdm start 20 2 5 . stop 20 0 1 2 6 .&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570404401678257802-3234091180778653871?l=enavas.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlgoDeLinux/~4/JdzG832oMgA" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/AlgoDeLinux/~3/JdzG832oMgA/update-rcd-actualizando-el.html</link><author>noreply@blogger.com (Esteban M. Navas)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://enavas.blogspot.com/2008/12/update-rcd-actualizando-el.html</feedburner:origLink></item></channel></rss>
